
production-investigation
Workflows for investigating production issues in Honeycomb: context priming, broad query, BubbleUp, trace analysis, verification, and chaining results between steps to a root cause. Trigger phrases: "investigate production issue", "debug latency spike", "find root cause", "use BubbleUp", "analyze traces", "debug an outage", "why is my API slow", "errors are increasing", "health check", "SLO burning".
- Installs
- 63
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/honeycombio/agent-skill --skill production-investigation- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads production-investigation automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Honeycomb Production Investigation
Structured workflows for debugging production issues. The MCP tools document their own parameters — this skill focuses on the sequence of tool calls and how to interpret results to reach a root cause.
The Core Analysis Loop
This workflow implements the core analysis loop (Define → Visualize → Investigate → Evaluate) from the observability-fundamentals skill. If BubbleUp returns nothing useful, the issue is often an instrumentation gap — add the missing attributes (see the otel-instrumentation skill) and try again.
Investigation Workflow
Step 1: Orient
get_workspace_context→ environments and datasetsget_slos→ any SLOs in violation? (frames severity)get_triggers→ any alerts firing? (narrows scope)find_queries→ has anyone investigated this before?
Step 2: Characterize the Problem
Run a broad query to see the shape of the issue:
- Latency spike: P99(duration_ms), HEATMAP(duration_ms) grouped by service or route
- Error surge: count failed operation spans (
error=true) by service/route/category, then separately count exception event rows usingevent.name=exceptionandexception.type exists; use sampledtrace.trace_idvalues to drill into representative traces - Unknown: COUNT grouped by service.name to find which service has anomalous volume
Also call get_service_map — it shows P95 durations between services and can immediately reveal which dependency is slow.
Exception data has two query surfaces: operation failures belong on spans (error=true, span
status, low-cardinality exception.slug/error category); full exception diagnostics may belong on
trace-correlated Logs API event rows. Do not assume exception.* exists on the containing span.
When investigating exceptions, discover the dataset schema first, query event.name=exception
with exception.type exists and trace.trace_id exists, take a sample, then pass its
trace.trace_id to get_trace(show_events=true). For legacy span-event exceptions, also check
name=exception and meta.signal_type=trace; Logs API events use event.name/body and
meta.signal_type=log.
If a service uses an exception-promoting LogRecordProcessor, some exception.* fields may also
appear on the containing span. Treat that as an explicit client-side compatibility feature, not a
Honeycomb guarantee: the event row remains authoritative for full diagnostics, and absence of
parent-span fields does not mean the exception event is missing.
Step 3: BubbleUp to Find Differentiators
This is the highest-value step. Once you have a query showing the anomaly:
- Run
run_bubbleupon the query result, selecting the outlier region - BubbleUp compares outlier vs baseline distributions across all columns automatically
- Look for fields where the distributions differ significantly
How to interpret BubbleUp results:
- Categorical fields (dimensions): A value overrepresented in outliers points to a cause (e.g.,
deployment.version=v2.3.1is 90% of slow requests but only 20% of baseline) - Numeric fields (measures): A shifted distribution shows correlated metrics (e.g.,
db.query_durationis much higher in outliers) - Typical root causes surfaced: deployment version, region, user cohort, specific endpoint, feature flag
Step 4: Drill Into Traces
After BubbleUp identifies suspects:
- Add BubbleUp findings as WHERE filters to narrow results
- Pick a representative trace ID
- Call
get_traceto fetch the full trace
What to look for in the trace waterfall:
- Spans with disproportionate duration vs parent (the bottleneck)
- Sequential spans that could be parallelized (N+1 query patterns)
- Error spans — check span events for stack traces
- Gaps between child spans (missing instrumentation or idle wait)
- Service boundaries (where the trace crosses services)
Step 5: Verify Hypothesis
Form a hypothesis from BubbleUp + trace analysis, then confirm:
- Query WITH the suspected cause filtered in
- Query WITHOUT it (as a control)
- If the metrics diverge, you've found it
Step 6: Record Findings
Call create_board with:
- A text panel summarizing the root cause (Markdown)
- The key query run PKs that identified the problem
- Related SLOs if applicable
Investigation Patterns
Latency Spike
HEATMAP first → BubbleUp the slow region → trace a slow request → verify with filtered queries
Error Surge
Count failed operation spans by service/route/category → count Logs API exception events by
event.name=exception and exception.type → sample trace.trace_id → get_trace(show_events=true)
→ verify with filtered queries. Do not use exception.message on the parent span as the only
exception search.
Deployment Regression
P99 grouped by deployment.version → BubbleUp comparing new vs old → trace from new version → verify
Dependency Failure
get_service_map → P99 on the slow dependency → relational query (any.service.name) to measure user impact → trace an affected request
Stay on the Path
If you find yourself reasoning any of these, follow the workflow anyway:
- "The cause is obvious, I can skip BubbleUp" — BubbleUp routinely surfaces causes that seem obvious in hindsight but weren't the first guess. It also catches secondary causes you'd miss entirely.
- "I already know it's a deployment issue" — verify with Step 5. Confirmation bias is strongest during incidents. Query with and without the suspected cause.
- "Traces confirmed it, no need to verify" — a single trace is an anecdote. The verification query proves the pattern holds across all traffic, not just one request.
- "This is a simple issue, the full workflow is overkill" — the workflow takes minutes; a wrong diagnosis during an incident costs hours.
When Results Are Empty or Unclear
- No results: Check field names with
find_columns, expand time range, verify environment/dataset - BubbleUp shows no signal: Try a different time selection, add filters to isolate the anomaly more clearly, or select a different calculation
- Trace missing spans: Sampling, instrumentation gaps, or cross-environment trace split
Additional Resources
Reference Files
${CLAUDE_PLUGIN_ROOT}/skills/production-investigation/references/investigation-playbooks.md— Step-by-step playbooks for latency spikes, error surges, deployment regressions, dependency failures, SLO budget burn, and health checks${CLAUDE_PLUGIN_ROOT}/skills/production-investigation/references/bubbleup-guide.md— Detailed BubbleUp usage: selection types, time specifications, pagination, result interpretation${CLAUDE_PLUGIN_ROOT}/skills/production-investigation/references/trace-exploration.md— Trace structure, get_trace parameters and view modes, waterfall analysis, span events and links
Cross-References
- For the conceptual foundations of the core analysis loop, see the observability-fundamentals skill
- For query construction patterns, see the query-patterns skill
- For SLO/trigger context during investigations, see the slos-and-triggers skill
FAQ
What does the production-investigation skill do?
Workflows for investigating production issues in Honeycomb: context priming, broad query, BubbleUp, trace analysis, verification, and chaining results between steps to a root cause. Trigger phrases: "investigate production issue", "debug latency spike", "find root cause", "use BubbleUp", "analyze traces", "debug an outage", "why is my API slow", "errors are increasing", "health check", "SLO burning".
How do I install production-investigation?
Run npx skills add https://github.com/honeycombio/agent-skill --skill production-investigation in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/production-investigation/ (personal) or .claude/skills/production-investigation/ (project).
Which AI agents can use production-investigation?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is production-investigation safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains production-investigation?
It is published by honeycombio in honeycombio/agent-skill. It has 63 recorded installs.
More from honeycombio/agent-skill
otel-instrumentation
honeycombio/agent-skill
OpenTelemetry SDK setup, custom instrumentation, and sending data to Honeycomb. Trigger phrases: "instrument my app", "add tracing", "set up OpenTelemetry", "configure OTel", "add custom spans", "add attributes to spans", "send traces to Honeycomb", "set up OTLP", "configure sampling", "add span events", "add span links", "set up tracing for [any language]", "configure the OTel Collector".
create-honeycomb-board
honeycombio/agent-skill
Design and create a Honeycomb board (dashboard) with queries and SLOs. Trigger phrases: "make a board", "build a dashboard", "create a Honeycomb board", "make a dashboard in Honeycomb", "set up a board", "dashboard for my service", "visualize service health", "golden signals dashboard", "set up monitoring board".
observability-fundamentals
honeycombio/agent-skill
Open the skill to read its SKILL.md instructions.
otel-migration
honeycombio/agent-skill
Open the skill to read its SKILL.md instructions.
Popular code quality & workflow skills
grill-me
mattpocock/skills
A relentless interview to sharpen a plan or design.
improve-codebase-architecture
mattpocock/skills
Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.
handoff
mattpocock/skills
Compact the current conversation into a handoff document for another agent to pick up.
domain-modeling
mattpocock/skills
Build and sharpen a project's domain model. Use when discussing codebase terminology, writing or editing a GLOSSARY.md, or recording or editing an ADR.
codebase-design
mattpocock/skills
Shared vocabulary for designing deep modules. Use when the user wants to design or improve a module's interface, find deepening opportunities, decide where a seam goes, make code more testable or AI-navigable, or when another skill needs the deep-module vocabulary.
diagnosing-bugs
mattpocock/skills
Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow.