
Telemetry Inspect
- 28 installs
- 213 repo stars
- Updated August 4, 2026
- yonatangross/orchestkit
Helps with ai & agent building tasks.
About
telemetry-inspect is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted coding.
- telemetry-inspect
- AI & Agent Building
- AI-coding skill
Telemetry Inspect by the numbers
- 28 all-time installs (skills.sh)
- Ranked #9,505 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/yonatangross/orchestkit --skill telemetry-inspectAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 28 |
|---|---|
| repo stars | ★ 213 |
| Last updated | August 4, 2026 |
| Repository | yonatangross/orchestkit ↗ |
What it does
Helps with ai & agent building tasks.
Files
/ork:telemetry-inspect
One-shot health check for OrchestKit's telemetry pipeline. Reports writer activity, file sizes, schema lock coverage, orphan files, and growth warnings. Use when verifying the pipeline is flowing correctly or debugging a missing writer.
When to use
- Before or after a risky hook refactor, to prove telemetry still writes as expected
- Weekly health check on a long-running project
- When
/ork:analyticsoutput looks suspicious — inspect the underlying data first - When adding a new telemetry file and wanting to confirm it's picked up
- Auditing which files are schema-locked vs. drift-vulnerable
What it checks
1. Writer activity — for each registered telemetry file, recent write count (from mtime scan) and last-write delta 2. File health — size (warn at 256 KB, critical at 1 MB), line count, mtime 3. Schema lock status — which files have validators in lib/telemetry-schemas.ts 4. Orphan detection — files on disk under .claude/{telemetry,logs,state,feedback}/ that aren't in the registry (possible stale writer or new file needing schema) 5. Growth trend — bytes per hour since session start (fire alert if > 100 KB/hr) 6. Coordination layer (M168) — live counts from sessions.db (running sessions, held locks, pending worktree links, skill invocations) plus write throughput from coordination-metrics.jsonl
Usage
/ork:telemetry-inspect
/ork:telemetry-inspect --session sess-abc123
/ork:telemetry-inspect --jsonDefault mode: terminal-friendly ASCII report. --json emits a structured result suitable for piping into another tool or uploading.
Output shape (ASCII mode)
Telemetry Health — 2026-04-23 13:45
────────────────────────────────────
Schema-locked files (7)
.claude/telemetry/pre-compact-decisions.jsonl ◆ 3 lines 1.1 KB ✓ healthy
.claude/telemetry/image-responses.jsonl ◆ 0 lines — ✗ no writes
.claude/logs/decisions.jsonl ◆ 18 lines 12 KB ✓ healthy
.claude/logs/subagent-spawns.jsonl ◆ 6 lines 3 KB ✓ healthy
.claude/state/edit-history.jsonl ◆ 94 lines 412 KB ⚠ rotate
.claude/state/ork-metrics-*.json ◆ (N/A) 2.1 KB ✓ healthy
.claude/feedback/skill-usage.json ◆ (N/A) 1.2 KB ✓ healthy
Unlocked telemetry files (14)
.claude/feedback/changelog-decisions.json ○ 4 KB ✗ no schema
.claude/feedback/code-style-profile.json ○ 8 KB ✗ no schema
(...14 more...)
Orphan files (0)
(none detected)
Summary
Pipeline health: GREEN (21/21 expected writers active)
Schema coverage: 7/21 (33%)
Largest file: edit-history.jsonl (412 KB)
Hotspot: edit-history.jsonl +40 KB/hrImplementation plan (for an agent/LLM running this skill)
1. List known files — read lib/telemetry-schemas.ts's SCHEMA_LOCKED inventory for the 7 locked paths. Extend with a hardcoded inventory of the other 14 unlocked paths (copy from the skill-local references/telemetry-inventory.md). 2. For each file:
- Use
Globto resolve.claude/state/ork-metrics-*.jsonpattern → may be multiple - Use
Readwithlimit: 10to see shape andBash wc -lfor line count - Use
Bash statfor mtime + size
3. Classify health:
- size > 1 MB → critical
- size > 256 KB → warn
- mtime > 7 days → "no recent writes"
- line count 0 → "no writes"
4. Orphan scan — Bash find .claude/{telemetry,logs,state,feedback} -type f cross-check against registered paths. Any on-disk files not in inventory → orphan. 5. Render report — ASCII table by default, JSON if --json argument passed.
Core logic is deterministic + read-only. Do NOT write to any telemetry file — this skill is an observer.
Coordination layer (M168 #1915)
The SQLite coordination layer lives outside `.claude/`, at ~/.local/state/orchestkit/:
| Source | What it tells you |
|---|---|
sessions.db | live session / lock / worktree state (SQLite) |
events.jsonl | coordination event stream (goal_converged, chain_stale, …) |
coordination-metrics.jsonl | sessions.db write throughput counters (#1915) |
Live counts — the DB file is a standard SQLite database; read it with sqlite3 (read-only SELECTs only):
DB="$HOME/.local/state/orchestkit/sessions.db"
[ -f "$DB" ] || echo "coordination layer idle (no multi-session activity yet)"
sqlite3 "$DB" "SELECT COUNT(*) FROM sessions WHERE status='running'" # live sessions
sqlite3 "$DB" "SELECT COUNT(*) FROM locks WHERE expires_at > strftime('%s','now')" # held locks
sqlite3 "$DB" "SELECT COUNT(*) FROM worktree_links WHERE result_status IS NULL" # pending worktrees
sqlite3 "$DB" "SELECT COUNT(*) FROM skill_invocation" # skill invocationsWrite throughput — coordination-metrics.jsonl is append-only {ts, metric, count} lines emitted async by lib/metrics-emitter.ts on every sessions.db write. Event rate ≈ recent sessions_db_write lines:
M="$HOME/.local/state/orchestkit/coordination-metrics.jsonl"
[ -f "$M" ] && tail -200 "$M" | grep -c '"sessions_db_write"'Degrade gracefully: if sqlite3 is absent or the DB / metrics file doesn't exist, report "coordination layer idle" — never error. Like the rest of this skill, these are read-only observations.
Upstream OTel metric notes
When inspecting Claude Code's own OTel metrics (downstream of this skill — claude_code.* in your collector):
- CC 2.1.129+:
claude_code.pull_request.countnow also counts PRs/MRs filed via MCP tools (e.g., GitHub MCPcreate_pull_request), not just shell commands run through the Bash tool. Dashboards built before 2.1.129 will see a step-function increase at the cutover — annotate, don't alert. Seereferences/../monitoring-observability/references/metrics-collection.mdfor the join pattern that distinguishes MCP- from shell-filed PRs. - CC 2.1.161+:
OTEL_RESOURCE_ATTRIBUTESvalues are now attached as labels on all metric datapoints, enabling dimensional slicing (team, repo, environment). Existing dashboards keep working; new dashboards should use label selectors to segment usage. - CC 2.1.145+:
claude_code.toolOTEL spans carryagent_id+parent_agent_id, and background subagent spans nest under the dispatching Agent tool span. Build the trace tree by querying onparent_agent_id— enables per-skill fan-out timing and cost attribution for multi-agent skills (brainstorm,explore,implement); no schema change needed. - CC 2.1.174+:
/usageexposes CC-native per-component attribution — cache misses, long context, subagents, and per-skill/agent/plugin/MCP cost breakdowns over 24h/7d (surfaced first in the VSCode Account & usage dialog). Treat it as a cross-check source in the health report: if ork telemetry shows a skill/agent active but CC attribution shows zero usage for it (or vice versa), flag the divergence as a possible missing writer or stale install rather than trusting either side alone.
Related
lib/telemetry-schemas.ts— source of truth for schema-locked paths/ork:analytics— aggregates data across sessions (different use case)- M121 "Observability Consolidation" milestone
OrchestKit Telemetry File Inventory
Single source of truth listing every known file that OrchestKit hooks write to. The telemetry-inspect skill reads this inventory to distinguish "expected" files from orphans.
Last updated: 2026-04-23 (M121 #1491)
Schema-locked files (7) — validators in src/hooks/src/lib/telemetry-schemas.ts
| Path | Writer | Readers | Schema |
|---|---|---|---|
.claude/telemetry/image-responses.jsonl | posttool/context-crossing-warn | #1479 cache-aware nudge (future) | isValidImageResponseEntry |
.claude/telemetry/pre-compact-decisions.jsonl | lifecycle/pre-compact-task-done-prompt | #1476 outcome tracker (future) | isValidPreCompactDecisionEntry |
.claude/logs/decisions.jsonl | multiple hooks | handoff-writer, decision-history, /ork:analytics | isValidDecisionLogEntry |
.claude/logs/subagent-spawns.jsonl | subagent-start hooks | pre-compact-guard, watchdog, pre-compact-task-done-prompt | isValidSubagentSpawnEntry |
.claude/state/edit-history.jsonl | posttool/write/edit-history-tracker | edit-history-tracker, decision-history | isValidEditHistoryEntry |
.claude/state/ork-metrics-*.json | posttool/metrics-bridge | lifecycle/session-metrics-summary | isValidOrkMetricsSnapshot |
.claude/feedback/skill-usage.json | posttool/skill/skill-usage-optimizer | skill-usage-optimizer | isValidSkillUsageFile |
Unlocked telemetry files (14) — no schema validator yet
.claude/feedback/ (8)
| Path | Writer |
|---|---|
.claude/feedback/changelog-decisions.json | changelog-related hook |
.claude/feedback/code-style-profile.json | posttool/write/code-style-learner |
.claude/feedback/consent-log.json | lifecycle/analytics-consent-check |
.claude/feedback/consent-status.json | lifecycle/analytics-consent-check |
.claude/feedback/dependency-check-cache.json | lifecycle/dependency-version-check |
.claude/feedback/learned-patterns.json | pattern sync |
.claude/feedback/naming-conventions.json | posttool/write/naming-convention-learner |
.claude/feedback/patterns-queue.json | pattern sync |
.claude/feedback/permission-denials.jsonl | permission hooks |
.claude/feedback/sync-config.json | pattern sync |
.claude/logs/ (3)
| Path | Writer |
|---|---|
.claude/logs/agent-state.json | agent state persistence |
.claude/logs/config-audit.jsonl | posttool/config-change/security-auditor |
.claude/logs/config-changes.jsonl | config-change/settings-reload |
.claude/state/ (2)
| Path | Writer |
|---|---|
.claude/state/last-test-run.json | test-aware hooks |
.claude/state/recent-deletes.json | delete-tracking hook |
Directory health budgets
| Directory | Target max total size | Action if exceeded |
|---|---|---|
.claude/telemetry/ | 5 MB | rotate oldest JSONL lines |
.claude/logs/ | 10 MB | archive to .claude/logs/archive/ |
.claude/state/ | 2 MB | truncate; state is ephemeral |
.claude/feedback/ | 5 MB | consolidate patterns |
How to add a new telemetry file
1. Add the writer (hook) that produces it 2. Add an entry to the appropriate section above 3. If the file has a stable shape, add a validator to lib/telemetry-schemas.ts + promote to Schema-locked table 4. Update the SCHEMA_LOCKED array export 5. Add tests to __tests__/lib/telemetry-schemas.test.ts