templates/.claude/skills/monitoring-setup/SKILL.md
Enable/disable OpenTelemetry console monitoring for Claude Code usage tracking
npx skillsauth add baekenough/oh-my-customcode omcustom:monitoring-setupInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Enable or disable OpenTelemetry console monitoring. When enabled, Claude Code outputs usage metrics (cost, tokens, sessions, LOC, commits, PRs, active time) and events (tool results, API requests) to the terminal.
This skill activates when the user mentions any of:
.claude/settings.local.json (create if not exists)env field with:
{
"env": {
"CLAUDE_CODE_ENABLE_TELEMETRY": "1",
"OTEL_METRICS_EXPORTER": "console",
"OTEL_LOGS_EXPORTER": "console"
}
}
[Done] OpenTelemetry Console Monitoring enabled
Configured in: .claude/settings.local.json
Metrics: sessions, cost, tokens, LOC, commits, PRs, active time
Events: tool results, API requests, tool decisions
Note: Takes effect on next `claude` session restart.
To disable: /monitoring-setup disable
.claude/settings.local.jsonenv:
CLAUDE_CODE_ENABLE_TELEMETRYOTEL_METRICS_EXPORTEROTEL_LOGS_EXPORTERenv object becomes empty, remove env field entirely[Done] OpenTelemetry Monitoring disabled
Removed from: .claude/settings.local.json
Takes effect on next session restart.
.claude/settings.local.json[Monitoring Status]
├── Enabled: Yes/No
├── Metrics exporter: console / otlp / none
├── Logs exporter: console / otlp / none
└── Config: .claude/settings.local.json
settings.local.json is NOT git-tracked (local to user)| Metric | Description | Unit |
|--------|-------------|------|
| claude_code.session.count | CLI sessions started | count |
| claude_code.cost.usage | Session cost | USD |
| claude_code.token.usage | Tokens used (input/output/cache) | tokens |
| claude_code.lines_of_code.count | Code lines modified (added/removed) | count |
| claude_code.commit.count | Git commits created | count |
| claude_code.pull_request.count | Pull requests created | count |
| claude_code.active_time.total | Active usage time | seconds |
| Event | Description |
|-------|-------------|
| claude_code.tool_result | Tool execution results with duration |
| claude_code.api_request | API request details with cost/tokens |
| claude_code.api_error | API error details |
| claude_code.tool_decision | Tool accept/reject decisions |
| claude_code.user_prompt | User prompt metadata (content redacted by default) |
For production monitoring, upgrade from console to OTLP:
# In settings.local.json env:
OTEL_METRICS_EXPORTER=otlp
OTEL_LOGS_EXPORTER=otlp
OTEL_EXPORTER_OTLP_PROTOCOL=grpc
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
| Metric | Description | Unit |
|--------|-------------|------|
| code_edit_tool.decision | Edit tool accept/reject decisions | count |
{
"env": {
"OTEL_METRICS_EXPORTER": "otlp",
"OTEL_LOGS_EXPORTER": "otlp",
"OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",
"OTEL_EXPORTER_OTLP_ENDPOINT": "http://localhost:4317",
"OTEL_RESOURCE_ATTRIBUTES": "service.name=claude-code,service.version=2.1.85"
}
}
| Variable | Description | Default |
|----------|-------------|---------|
| OTEL_LOG_TOOL_DETAILS | Include tool input/output in logs | false |
| OTEL_METRICS_INCLUDE_TOOL_NAME | Include tool name dimension | true |
| OTEL_METRICS_INCLUDE_MODEL | Include model dimension | true |
# Send metrics to both console and OTLP
OTEL_METRICS_EXPORTER=console,otlp
OTEL_LOGS_EXPORTER=console,otlp
OTEL_METRICS_EXPORTER=prometheus
OTEL_EXPORTER_PROMETHEUS_PORT=9464
Environment variables to control data collection and telemetry:
| Variable | Description |
|----------|-------------|
| DISABLE_TELEMETRY | Disable all telemetry collection |
| DISABLE_ERROR_REPORTING | Disable error reporting to Anthropic |
| CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC | Disable non-essential network traffic |
| CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY | Disable feedback survey prompts |
| DO_NOT_TRACK | Standard DNT signal |
{
"env": {
"DISABLE_TELEMETRY": "1",
"DISABLE_ERROR_REPORTING": "1",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
}
}
For deeper payload-level debugging beyond aggregated metrics, Claude Inspector provides MITM proxy inspection of Claude Code HTTP traffic.
| Aspect | OTel Monitoring (this skill) | Claude Inspector | |--------|------------------------------|-----------------| | Layer | Application (hooks, stdout) | HTTP (MITM proxy) | | Metrics | Aggregated (cost, tokens, duration) | Per-request payload breakdown | | Cache visibility | Not available | Prompt Cache hit/miss rates | | Sub-agent view | Summary via hooks | Full parent vs sub-agent context comparison | | Setup | Built-in (hooks + statusline) | External tool (Homebrew on macOS) |
# macOS
brew install kangraemin/tap/claude-inspector
# Run proxy
claude-inspector
Claude Inspector is external to oh-my-customcode and does not require any project configuration changes.
development
Generate and maintain a persistent codebase wiki — LLM-built interlinked markdown knowledge base (Karpathy LLM Wiki pattern)
development
Use the project wiki as RAG knowledge source — search wiki pages to answer codebase questions before exploring raw files
tools
Analyze task trajectories to propose reusable SKILL.md candidates from successful patterns
data-ai
hada.io RSS feed monitoring for AI agent/harness articles with automated /scout analysis