Agent skill

Enable Project Telemetry

by Eigenwise in Eigenwise/eigenwise-toolshed

Opt the current project into local Claude Code usage telemetry, or verify its setup.

MITAuto-check: warningsDevOps & Cloud

Install Enable Project Telemetry

The automated check flagged lines worth reading first. See the safety section below.

skills CLI
$ npx skills add Eigenwise/eigenwise-toolshed --skill enable-project-telemetry -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Eigenwise/eigenwise-toolshed enable-project-telemetry --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Eigenwise/eigenwise-toolshed.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/observability/skills/enable-project-telemetry .claude/skills/enable-project-telemetry && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
enable-project-telemetry
GitHub stars
277
Token cost
~2.9k tokens
SKILL.md length
1,566 words
Files
2
Skills in repo
14
Repo updated
First seen
Licence
MIT

At a glance

Opt the current project into local Claude Code usage telemetry, or verify its setup.

  • Works in 5 steps: Confirm the user wants the shared local… → Run it from anywhere inside the… → Report every directory the command… → …
  • Check project telemetry
  • SKILL.md covers Enable, Storage pressure, Exhausted outbox recovery and Recover a generated dashboard, plus 2 more sections
  • Calls node

What it does

Enable Project Telemetry is an agent skill from Eigenwise/eigenwise-toolshed. Opt the current project into local Claude Code usage telemetry, or verify its setup. Use to enable, disable, or check project telemetry.

Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `setup-reference.md`).

It sits in DevOps & Cloud, covering Observability. It works with OpenTelemetry. The repository describes itself as: Six Claude Code plugins for the work that keeps coming back: repo maps, conditional rules, ticketed parallel work, extra subscription models, local usage metrics, and guided setup. The licence is MIT.

When your agent uses it

  • Check project telemetry
  • Tasks that involve Observability

Example prompts

  • “/enable-project-telemetry”

Requirements

  • Docker

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Confirm the user wants the shared local observer and Collector, then separately confirm that the current repository should opt in. Say the…
  2. Run it from anywhere inside the repository; it resolves the repository root itself
  3. Report every directory the command printed, and tell the user settings environment changes apply only to
  4. After that new session creates activity, verify honestly
  5. When not-found persists after a restart and real activity, add --audit to the same command. It reads the

What it can do on your machine

Read from SKILL.md and the folder at commit 0140ec1. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • node

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Enable Project Telemetry loads about 2.9k tokens when it runs. Until then it costs about 40 tokens; SKILL.md has 1,566 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~40
When it runs · the whole SKILL.md, loaded when a task matches
~2.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: warnings

The automated check found patterns that need a careful read before installing.

  • WarningContains instruction-override wording (e.g. “without asking the user”)SKILL.md:88
    tion pressure from the health response. Do not tell the user to run `VACUUM`: the managed path compacts reusable pages w

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Eigenwise/eigenwise-toolshed at commit 0140ec1, republished under its MIT licence (© Eigenwise). 1,566 words, ~2,888 tokens.

Download SKILL.mdSave it as .claude/skills/enable-project-telemetry/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
enable-project-telemetry
description
Opt the current project into local Claude Code usage telemetry, or verify its setup. Use to enable, disable, or check project telemetry.

Enable Project Telemetry

Telemetry capture and log export are gated on the canonical repository ID in the local opt-in registry. Installing this plugin at user, project, or local scope does not itself choose every repository. Disabling this repository stops future capture and future export of still-queued log rows while local history is retained. Collector traces and metrics are not covered by this gate. This skill asks for the shared service choice, then writes the current repository's opt-in wiring.

Claude Code reads OTEL_RESOURCE_ATTRIBUTES from the settings of the directory a session started in and does not walk up to the repository root. That is why the enable command writes the env into the repository root and into each subdirectory that has hosted Claude Code sessions, all carrying the repository's project.id. Hook events from linked worktrees resolve to the enclosing main repository identity, but native Claude Code metrics from a linked-worktree-started session need wiring in that exact start directory. Do not promise linked-worktree native coverage from this repository opt-in alone.

Since Claude Code 2.1.282, project and local settings can no longer turn telemetry export on. Claude Code ignores CLAUDE_CODE_ENABLE_TELEMETRY, CLAUDE_CODE_ENHANCED_TELEMETRY_BETA, OTEL_{METRICS,LOGS,TRACES}_EXPORTER and every OTEL_EXPORTER_OTLP_* there; they only count from user settings (~/.claude/settings.json, or $CLAUDE_CONFIG_DIR/settings.json), managed settings, --settings, or the launch environment. OTEL_RESOURCE_ATTRIBUTES is still read from project settings, so the per-directory project.id wiring keeps attributing sessions. On 2.1.282 and later a project is wired only when both hold: project.id in the session directory and export turned on at user level. Before 2.1.282 the project files alone are enough. SessionStart warns when an opted-in machine runs 2.1.282 or later without user-level export; it never writes settings.

Read setup-reference.md before the first enable on a machine. It owns the separate shared-service consent question, the setup-observability.js commands that install the pinned Collector and choose a sink, dashboard, and ports, and the deletion rules. Do the shared service setup pass first, then the per-project wiring below.

Enable

Gateway wiring is per-scope. If the gateway is unwired for the current project, invoke /model-gateway:model-gateway and use its env --write-project command to wire this project. Use env --write-user only when machine-wide wiring is wanted. Do not invoke a bare codex-gateway shell command, since the installed plugin command is not on PATH.

  1. Confirm the user wants the shared local observer and Collector, then separately confirm that the current repository should opt in. Say the repository opt-in writes only this repository's .claude/settings.local.json files and adds it to the local project registry. The shared service can send local metadata through the loopback observer and Collector to local Grafana, or to a remote sink only when the user chooses one. Bare setup is SQLite-only with no dashboard; --dashboard explicitly requests the Docker-backed dashboard. Explain that API-equivalent cost estimates are not subscription charges, and models without a published API price remain visible without an invented USD total. The intended telemetry schema excludes prompt or response text, code or file contents, tool inputs or results, raw request bodies, credentials, and environment values. Exporter settings the user provides, including OTLP headers or tokens, are stored locally in %LOCALAPPDATA%\Eigenwise\Workbench\observability.json on Windows, or ~/.local/share/Eigenwise/Workbench/observability.json when LOCALAPPDATA is not set, so an exporter can authenticate.

    Telemetry capture and log export are gated on the canonical repository ID in the local opt-in registry. Installing this plugin at user, project, or local scope does not itself choose every repository. Disabling this repository stops future capture and future export of still-queued log rows while local history is retained. Collector traces and metrics are not covered by this gate.

  2. Run it from anywhere inside the repository; it resolves the repository root itself:

    sh
    node "${CLAUDE_PLUGIN_ROOT}/bin/project-telemetry.js" --project "<absolute-current-project-dir>"

    This creates or merges the env object without dropping unrelated keys. It adds the Claude Code telemetry settings, including OTEL_RESOURCE_ATTRIBUTES with the SHA-256 repository ID as project.id, the sanitized repository basename as project.name, and service.name=claude-code. The registry stores the same sanitized name plus the SHA-256 repository ID used by this plugin's hooks. Re-running enable rewrites this repository's env with those values; it never rewrites any other project's settings. Session-hosting subdirectories are found by encoding each real subdirectory the way Claude Code encodes ~/.claude/projects/ names and keeping the ones that exist there; .claude/worktrees, .git, node_modules, dot-directories, and nested repositories are skipped. On Claude Code 2.1.282 or later the command ends with Nothing exports yet when user-level export is off. Relay that, then ask the user before turning export on: it writes to their user settings and makes every Claude Code session on this machine export to the local Collector. The observer keeps only opted-in projects, but traces and metrics from other projects reach a configured sink or dashboard without the opt-in gate. Only after an explicit yes, run:

    sh
    node "${CLAUDE_PLUGIN_ROOT}/bin/project-telemetry.js" --user-export

    It adds only the missing export variables, never replaces a key the user already set, and prints exactly what it wrote and which existing values it left alone. Report that output verbatim. On a no, say that no claude_code metrics or events will arrive until export is on.

  3. Report every directory the command printed, and tell the user settings environment changes apply only to new Claude Code sessions. Restart every already-running session in those directories before creating activity or running verification. /reload-plugins alone does not apply the new environment. Hook-based linked-worktree attribution can still resolve to the main repository, but native metrics require the exact session-start directory to be wired.

  4. After that new session creates activity, verify honestly:

    sh
    node "${CLAUDE_PLUGIN_ROOT}/bin/verify-project-telemetry.js" --project "<absolute-current-project-dir>"

    found reports that Prometheus returned a claude_code_token_usage_tokens_total metric tagged with this project; it does not report observer health. Read the separate observer=healthy or observer=unavailable field too, because output can be found with observer=unavailable. not-found means the command did not see the metric yet, or no dashboard is configured. Report both fields as returned, and never infer observer health from found alone. If the dashboard is unavailable, keep the observer and SQLite ingestion running; diagnose and report the observer, collector, downstream sink, and dashboard as separate planes.

  5. When not-found persists after a restart and real activity, add --audit to the same command. It reads the installed Claude Code version, where the export variables actually live, and how many claude_code rows the local store received for this project in the window. Each session directory is wired, NO-EXPORT (project.id present but export off for this Claude Code version) or UNWIRED, and verdict= is wired, export-disabled, unwired, no-data (wired, no rows yet) or unconfirmed (no local store). It prints the fix for each gap: --project for unwired directories, --user-export for export, which still needs the user's yes as in step 2. It also names opted-in projects sending observer events with no claude_code_* samples.

Show full SKILL.md (468 more words)Show less

Storage pressure

The observer reserves 128 MiB below its 4 GiB database limit. It prunes expired observations first, then oldest whole days inside the 30-day window only when pressure remains, and records the exact windows and row counts in /health. A health failure of storage_headroom_unrecoverable means no removable data restored that reserve. Explain that committed ingestion still receives its normal acknowledgement, then diagnose disk and retention pressure from the health response. Do not tell the user to run VACUUM: the managed path compacts reusable pages when it can, and the manual prune command checks free space before a full vacuum.

Exhausted outbox recovery

When /health or the outbox view reports exhausted rows, show the user the pre-action pending_count and exhausted_count plus the current health result. Ask for approval before sending POST /v1/outbox/requeue to the local observer. The endpoint resets all exhausted rows in the shared local outbox, so do not offer or imply a project-scoped requeue. After the approved request, read the counts and health again, report the post-action values, and let the normal drainer retry delivery. A requeue does not prove delivery succeeded.

Recover a generated dashboard

If the generated dashboard is stale, reset it with the setup command's --reset-dashboards action. The reset removes generated definitions and records a reset boundary; it does not disable telemetry or delete local history. Create fresh activity, then run setup or let SessionStart reprovision the dashboards. Fully reload the Grafana browser tab after reprovisioning. Grafana's Refresh reruns queries already loaded in the page, so it does not replace stale dashboard definitions. Verify the project after the new activity arrives, and report found or not-found as returned.

Disable

sh
node "${CLAUDE_PLUGIN_ROOT}/bin/project-telemetry.js" --project "<absolute-current-project-dir>" --disable

It unwires the same set enable wired, from wherever in the repository it is run, using each directory's own state file. It restores only env values this flow replaced, preserves later user edits and unrelated settings, and removes the repository from the machine-local opted-in registry. It leaves the shared observer, Collector, and historical local data alone because another opted-in project may still use them. It also leaves the user-level export variables alone for the same reason; if no project stays opted in and the user wants export off, those keys come out of their user settings env. Restart Claude Code in each listed directory for the removed env block to take effect.

Manual scratch-project check

Use this only when validating the flow itself. Set a temporary home and project directory, invoke the enable command from that directory, inspect .claude/settings.local.json for the telemetry block, then run the verify command before any new session activity. Its expected honest result is not-found until a restarted Claude Code session emits telemetry. A scratch directory with no .git above it is its own project, which is what makes it a scratch project rather than part of the surrounding repository.

© Eigenwise, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in plugins/observability/skills/enable-project-telemetry of Eigenwise/eigenwise-toolshed.

  • SKILL.md
  • setup-reference.md

Open the folder on GitHubat commit 0140ec1

Compare with similar skills

Enable Project Telemetry next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Enable Project Telemetry compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Enable Project Telemetry this skillEigenwise/eigenwise-toolshed277—~2.9kAutomated safety check: WarnMIT
Motel Debugkitlangton/motel298—~2.2kAutomated safety check: PassMIT
Tempsgotempsh/temps822—~1.9kAutomated safety check: PassApache-2.0
Axiom Metrics Queryopenclaw/clawhub9.5k—~2.6kAutomated safety check: PassMIT
UModel Root Cause Analysisalibaba/UnifiedModel412—~1.9kAutomated safety check: PassCustom licence
Agent Kill Switchvivekchand/clawmetry424—~1.1kAutomated safety check: PassMIT

Similar skills

  • Motel Debug

    kitlangton/motel

    Debug applications with motel, a local OpenTelemetry ingest and query server.

    298 GitHub stars~2.2k tokensUpdated 1 mo ago
    DevOps & CloudAuto-check passed
  • Temps

    gotempsh/temps

    Manage, deploy, operate, and instrument applications with Temps.

    822 GitHub stars~1.9k tokensUpdated today
    DevOps & CloudAuto-check passed
  • Axiom Metrics Query

    openclaw/clawhub

    Explores and queries OpenTelemetry metrics in Axiom MetricsDB, listing datasets, metrics and tags first and picking the right aggregation for each metric's type.

    9.5k GitHub stars~2.6k tokensUpdated yesterday
    DevOps & CloudAuto-check passed
  • UModel Root Cause Analysis

    alibaba/UnifiedModel

    Investigates a service incident to its root cause by querying a UModel object graph alongside metrics, logs, topology and recent deployments.

    412 GitHub stars~1.9k tokensUpdated 14 days ago
    DevOps & CloudAuto-check passed
  • Agent Kill Switch

    vivekchand/clawmetry

    Give the human an off switch and a cost meter for the coding agents on this machine, using ClawMetry.

    424 GitHub stars~1.1k tokensUpdated today
    DevOps & CloudAuto-check passed
  • Agentmeasure

    roy-tong/AgentMeasure

    Check whether agent telemetry preserves measurement semantics.

    218 GitHub stars~753 tokensUpdated 3 days ago
    DevOps & CloudAuto-check passed

More from Eigenwise/eigenwise-toolshed

All 14 skills in this repo
  • Add Rule

    Eigenwise/eigenwise-toolshed

    Create or edit a live-rules instruction in the project's atomic rule set.

    277 GitHub stars~1.9k tokensUpdated 2 days ago
    Auto-check passed
  • Map Codebase

    Eigenwise/eigenwise-toolshed

    Create a self-maintaining codebase map in .claude/.codebase-info/.

    277 GitHub stars~4.2k tokensUpdated 2 days ago
    Auto-check passed
  • Setup

    Eigenwise/eigenwise-toolshed

    Set up a Claude Code workspace for a new or existing project, informed by hindsight from the user's whole session history.

    277 GitHub stars~4.5k tokensUpdated 2 days ago
    Auto-check passed
  • Groom

    Eigenwise/eigenwise-toolshed

    Audit a Sidequest board for completed, stale, duplicate, or superseded tickets, then safely close clear cases.

    277 GitHub stars~3.4k tokensUpdated 2 days ago
    Auto-check passed
  • Manage Rules

    Eigenwise/eigenwise-toolshed

    Inspect, audit, enable, or disable project live-rules. An agent skill from Eigenwise/eigenwise-toolshed.

    277 GitHub stars~2k tokensUpdated 2 days ago
    Auto-check passed
  • Toolshed Doctor

    Eigenwise/eigenwise-toolshed

    Run a read-only health check for Quartermaster and installed Toolshed plugins.

    277 GitHub stars~1.7k tokensUpdated 2 days ago
    Auto-check passed

Works with

Categories

Questions about Enable Project Telemetry

What does Enable Project Telemetry do?

Opt the current project into local Claude Code usage telemetry, or verify its setup. Enable Project Telemetry is an agent skill from Eigenwise/eigenwise-toolshed. Opt the current project into local Claude Code usage telemetry, or verify its setup.

When should I use Enable Project Telemetry?

Enable Project Telemetry fits situations like: check project telemetry; tasks that involve Observability.

How do I install Enable Project Telemetry in Claude Code?

Run `npx skills add Eigenwise/eigenwise-toolshed --skill enable-project-telemetry -a claude-code`. Or copy the skill folder (plugins/observability/skills/enable-project-telemetry in Eigenwise/eigenwise-toolshed) into .claude/skills/enable-project-telemetry in your project. Claude Code loads it when a task matches its description.

How do I install Enable Project Telemetry in Codex?

Run `npx skills add Eigenwise/eigenwise-toolshed --skill enable-project-telemetry -a codex`. Or copy the skill folder (plugins/observability/skills/enable-project-telemetry in Eigenwise/eigenwise-toolshed) into .agents/skills/enable-project-telemetry in your project. Codex loads it when a task matches its description.

Can I use Enable Project Telemetry in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Eigenwise/eigenwise-toolshed --skill enable-project-telemetry -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/enable-project-telemetry, .gemini/skills/enable-project-telemetry, .github/skills/enable-project-telemetry and .opencode/skills/enable-project-telemetry in your project.

What does Enable Project Telemetry need to run?

Going by SKILL.md and its folder, Enable Project Telemetry needs the command-line tools its instructions call (node). Our summary lists: Docker.

Does Enable Project Telemetry access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Enable Project Telemetry safe to install?

Our automated static check of SKILL.md flagged 1 warning(s): contains instruction-override wording (e.g. “without asking the user”). Read the flagged lines before installing; the check is not a guarantee either way.

What licence does Enable Project Telemetry use?

Enable Project Telemetry is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Enable Project Telemetry use?

About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Enable Project Telemetry?

Skills that share tags, products or a category with Enable Project Telemetry: Motel Debug (kitlangton/motel, 298 stars), Temps (gotempsh/temps, 822 stars), Axiom Metrics Query (openclaw/clawhub, 9.5k stars) and UModel Root Cause Analysis (alibaba/UnifiedModel, 412 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Enable Project Telemetry?

Eigenwise (a GitHub user) maintains it in Eigenwise/eigenwise-toolshed, which has 277 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 5, 2026.

Source: Eigenwise/eigenwise-toolshed on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.