Motel Debug
kitlangton/motel
Debug applications with motel, a local OpenTelemetry ingest and query server.
Opt the current project into local Claude Code usage telemetry, or verify its setup.
The automated check flagged lines worth reading first. See the safety section below.
$ npx skills add Eigenwise/eigenwise-toolshed --skill enable-project-telemetry -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Eigenwise/eigenwise-toolshed enable-project-telemetry --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "enable-project-telemetry" agent skill from https://github.com/Eigenwise/eigenwise-toolshed/tree/main/plugins/observability/skills/enable-project-telemetry into .claude/skills/enable-project-telemetry/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enable-project-telemetry", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Eigenwise/eigenwise-toolshed/tree/main/plugins/observability/skills/enable-project-telemetryType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Eigenwise/eigenwise-toolshed --skill enable-project-telemetry -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Eigenwise/eigenwise-toolshed enable-project-telemetry --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Eigenwise/eigenwise-toolshed.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/observability/skills/enable-project-telemetry .agents/skills/enable-project-telemetry && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "enable-project-telemetry" agent skill from https://github.com/Eigenwise/eigenwise-toolshed/tree/main/plugins/observability/skills/enable-project-telemetry into .agents/skills/enable-project-telemetry/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enable-project-telemetry", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Eigenwise/eigenwise-toolshed --skill enable-project-telemetry -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Eigenwise/eigenwise-toolshed enable-project-telemetry --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Eigenwise/eigenwise-toolshed.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/observability/skills/enable-project-telemetry .cursor/skills/enable-project-telemetry && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "enable-project-telemetry" agent skill from https://github.com/Eigenwise/eigenwise-toolshed/tree/main/plugins/observability/skills/enable-project-telemetry into .cursor/skills/enable-project-telemetry/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enable-project-telemetry", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Eigenwise/eigenwise-toolshed.git --path plugins/observability/skills/enable-project-telemetry--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Eigenwise/eigenwise-toolshed --skill enable-project-telemetry -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Eigenwise/eigenwise-toolshed enable-project-telemetry --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Eigenwise/eigenwise-toolshed.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/observability/skills/enable-project-telemetry .gemini/skills/enable-project-telemetry && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "enable-project-telemetry" agent skill from https://github.com/Eigenwise/eigenwise-toolshed/tree/main/plugins/observability/skills/enable-project-telemetry into .gemini/skills/enable-project-telemetry/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enable-project-telemetry", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Eigenwise/eigenwise-toolshed enable-project-telemetryInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Eigenwise/eigenwise-toolshed --skill enable-project-telemetry -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Eigenwise/eigenwise-toolshed.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/observability/skills/enable-project-telemetry .github/skills/enable-project-telemetry && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "enable-project-telemetry" agent skill from https://github.com/Eigenwise/eigenwise-toolshed/tree/main/plugins/observability/skills/enable-project-telemetry into .github/skills/enable-project-telemetry/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enable-project-telemetry", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Eigenwise/eigenwise-toolshed --skill enable-project-telemetry -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Eigenwise/eigenwise-toolshed enable-project-telemetry --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Eigenwise/eigenwise-toolshed.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/observability/skills/enable-project-telemetry .opencode/skills/enable-project-telemetry && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "enable-project-telemetry" agent skill from https://github.com/Eigenwise/eigenwise-toolshed/tree/main/plugins/observability/skills/enable-project-telemetry into .opencode/skills/enable-project-telemetry/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enable-project-telemetry", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
enable-project-telemetryOpt 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. 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.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 0140ec1. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
nodeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
The automated check found patterns that need a careful read before installing.
tion pressure from the health response. Do not tell the user to run `VACUUM`: the managed path compacts reusable pages wAutomated 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.
The full file from Eigenwise/eigenwise-toolshed at commit 0140ec1, republished under its MIT licence (© Eigenwise). 1,566 words, ~2,888 tokens.
.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.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.
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.
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.
Run it from anywhere inside the repository; it resolves the repository root itself:
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:
node "${CLAUDE_PLUGIN_ROOT}/bin/project-telemetry.js" --user-exportIt 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.
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.
After that new session creates activity, verify honestly:
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.
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.
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.
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.
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.
node "${CLAUDE_PLUGIN_ROOT}/bin/project-telemetry.js" --project "<absolute-current-project-dir>" --disableIt 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.
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
SKILL.md and 1 other file in plugins/observability/skills/enable-project-telemetry of Eigenwise/eigenwise-toolshed.
Open the folder on GitHubat commit 0140ec1
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Enable Project Telemetry this skillEigenwise/eigenwise-toolshed | 277 | — | ~2.9k | Automated safety check: Warn | MIT | |
| Motel Debugkitlangton/motel | 298 | — | ~2.2k | Automated safety check: Pass | MIT | |
| Tempsgotempsh/temps | 822 | — | ~1.9k | Automated safety check: Pass | Apache-2.0 | |
| Axiom Metrics Queryopenclaw/clawhub | 9.5k | — | ~2.6k | Automated safety check: Pass | MIT | |
| UModel Root Cause Analysisalibaba/UnifiedModel | 412 | — | ~1.9k | Automated safety check: Pass | Custom licence | |
| Agent Kill Switchvivekchand/clawmetry | 424 | — | ~1.1k | Automated safety check: Pass | MIT |
kitlangton/motel
Debug applications with motel, a local OpenTelemetry ingest and query server.
gotempsh/temps
Manage, deploy, operate, and instrument applications with Temps.
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.
alibaba/UnifiedModel
Investigates a service incident to its root cause by querying a UModel object graph alongside metrics, logs, topology and recent deployments.
vivekchand/clawmetry
Give the human an off switch and a cost meter for the coding agents on this machine, using ClawMetry.
roy-tong/AgentMeasure
Check whether agent telemetry preserves measurement semantics.
Eigenwise/eigenwise-toolshed
Create or edit a live-rules instruction in the project's atomic rule set.
Eigenwise/eigenwise-toolshed
Create a self-maintaining codebase map in .claude/.codebase-info/.
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.
Eigenwise/eigenwise-toolshed
Audit a Sidequest board for completed, stale, duplicate, or superseded tickets, then safely close clear cases.
Eigenwise/eigenwise-toolshed
Inspect, audit, enable, or disable project live-rules. An agent skill from Eigenwise/eigenwise-toolshed.
Eigenwise/eigenwise-toolshed
Run a read-only health check for Quartermaster and installed Toolshed plugins.
Works with
Categories
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.
Enable Project Telemetry fits situations like: check project telemetry; tasks that involve Observability.
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.
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.
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.
Going by SKILL.md and its folder, Enable Project Telemetry needs the command-line tools its instructions call (node). Our summary lists: Docker.
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.
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.
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.
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.
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.
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.