Telemetry Inspect
Inspects the OrchestKit telemetry pipeline for the current project — lists all known telemetry files with write counts, sizes, schema status, growth trend, and orphan detection. Use when verifying the observability pipeline is healthy, debugging a missing writer, or auditing which files have schema locks vs. which are drift-vulnerable. Read-only — never modifies telemetry files.
/ork:telemetry-inspect/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
- Writer activity — for each registered telemetry file, recent write count (from mtime scan) and last-write delta
- File health — size (warn at 256 KB, critical at 1 MB), line count, mtime
- Schema lock status — which files have validators in
lib/telemetry-schemas.ts - 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) - Growth trend — bytes per hour since session start (fire alert if > 100 KB/hr)
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)
- List known files — read
lib/telemetry-schemas.ts'sSCHEMA_LOCKEDinventory for the 7 locked paths. Extend with a hardcoded inventory of the other 14 unlocked paths (copy from the skill-localreferences/telemetry-inventory.md). - 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
- Use
- Classify health:
- size > 1 MB → critical
- size > 256 KB → warn
- mtime > 7 days → "no recent writes"
- line count 0 → "no writes"
- Orphan scan —
Bash find .claude/\{telemetry,logs,state,feedback\} -type fcross-check against registered paths. Any on-disk files not in inventory → orphan. - Render report — ASCII table by default, JSON if
--jsonargument passed.
Core logic is deterministic + read-only. Do NOT write to any telemetry file — this skill is an observer.
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
References (1)
Telemetry Inventory
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
- Add the writer (hook) that produces it
- Add an entry to the appropriate section above
- If the file has a stable shape, add a validator to
lib/telemetry-schemas.ts+ promote to Schema-locked table - Update the
SCHEMA_LOCKEDarray export - Add tests to
__tests__/lib/telemetry-schemas.test.ts
Task Dependency Patterns
Task Management patterns with TaskCreate, TaskUpdate, TaskGet, TaskList tools. Decompose complex work into trackable tasks with dependency chains. Use when managing multi-step implementations, coordinating parallel work, or tracking completion status.
Testing E2e
End-to-end testing patterns with Playwright — page objects, AI agent testing, visual regression, accessibility testing with axe-core, and CI integration. Use when writing E2E tests, setting up Playwright, implementing visual regression, or testing accessibility.
Last updated on