trace — Claude Code skill: root-cause tracing through competing
A skill for investigating ambiguous problems: bugs, regressions, latency spikes. Runs parallel tracing lanes, gathers evidence for and against each explanation, ranks them by strength, and proposes the next test that will answer fastest.
npx skills add Yeachan-Heo/oh-my-claudecode --skill trace -a claude-codeWhat trace does
Trace creates a structured lane for answering 'why did this happen.' Instead of jumping to a fix, it restates the observation, generates several competing explanations, spawns tracers in parallel using team mode, gathers evidence for each hypothesis and against it, ranks proofs by strength (from controlled reproductions to intuition), surfaces the critical unknown, and suggests the discriminating probe that collapses uncertainty.
The skill works through Claude's built-in team mode: one lead, multiple agents tracing separate hypotheses. Each lane investigates a competing explanation, not the same one in parallel. Default lanes are three: code-path cause, config or environment cause, measurement or verification-method cause. After evidence gathering, a rebuttal round pits the leading hypothesis against the strongest alternative, and synthesis ranks all versions with explicit critical unknown and best next test.
Fits bugs and regressions where cause is unclear; latency and resource behavior analysis; architecture premortem or postmortem; experimental result tracing; config, routing, or orchestration behavior. Needs multiple evidence sources available: logs, traces, configs, code, artifacts, git history.
What it helps with
- explain why a bug or regression occurred
- find the root cause of latency or unexpected resource spikes
- clarify strange config or routing behavior
- run a premortem or failure analysis on architecture
- trace experiment results to their true causes
Example prompts for the agent
- /oh-my-claudecode:trace why does PDF download freeze the UI when network is fine
- /oh-my-claudecode:trace tests fail on staging but pass on local — what's different
- /oh-my-claudecode:trace latency metric spiked overnight but no code changed
How to install trace
1Skills CLI (Vercel)
npx skills add Yeachan-Heo/oh-my-claudecode --skill trace -a claude-code2Manually: put the files in place
~/.claude/skills/trace/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/trace/
1Skills CLI (Vercel)
npx skills add Yeachan-Heo/oh-my-claudecode --skill trace -a codex2Manually: put the files in place
.agents/skills/trace/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add Yeachan-Heo/oh-my-claudecode --skill trace -a cursor2Manually: put the files in place
.cursor/skills/trace/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install Yeachan-Heo/oh-my-claudecode trace2Manually: put the files in place
.github/skills/trace/SKILL.md1Skills CLI (Vercel)
npx skills add Yeachan-Heo/oh-my-claudecode --skill trace -a gemini-cli2Platform CLI
gemini skills install https://github.com/Yeachan-Heo/oh-my-claudecode --path skills/traceManually: put the files in place
.devin/skills/trace/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add Yeachan-Heo/oh-my-claudecode --skill trace -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about trace
How do I install trace in Claude Code?
Run npx skills add Yeachan-Heo/oh-my-claudecode --skill trace -a claude-code. The skill file will be at ~/.claude/skills/trace/SKILL.md.
What does trace do?
It organises investigation of an ambiguous problem through parallel hypotheses. Spawns multiple tracing lanes in team mode, each investigates one explanation, gathers evidence for and against it, ranks proofs by strength, and proposes the test that will settle the question.
When should I use trace instead of direct debugging?
Use trace when the cause is unclear and multiple explanations compete: could be a code bug, could be config, could be a verification-method flaw. If the answer is already obvious, just fix it.
Source text
SKILL.md · MIT
--- name: trace description: Evidence-driven tracing lane that orchestrates competing tracer hypotheses in Claude built-in team mode argument-hint: "<observation to trace>" agent: tracer level: 2 --- # Trace Skill Use this skill for ambiguous, causal, evidence-heavy questions where the goal is to explain **why** an observed result happened, not to jump directly into fixing or rewriting code. This is the orchestration layer on top of the built-in `tracer` agent. The goal is to make tracing feel like a reusable OMC operating lane: restate the observation, generate competing explanations, gather evidence in parallel, rank the explanations, and propose the next probe that would collapse uncertainty fastest. ## Good entry cases Use `/oh-my-claudecode:trace` when the problem is: - ambiguous - causal - evidence-heavy - best answered by exploring competing explanations in parallel Examples: - runtime bugs and regressions - performance / latency / resource behavior - architecture / premortem / postmortem analysis - scientific or experimental result tracing - config / routing / orchestration behavior explanation - “given this output, trace back the likely causes” ## Core tracing contract Always preserve these distinctions: 1. **Observation** -- what was actually observed 2. **Hypotheses** -- competing explanations 3. **Evidence For** -- what supports each explanation 4. **Evidence Against / Gaps** -- what contradicts it or is still missing 5. **Current Best Explanation** -- the leading explanation right now 6. **Critical Unknown** -- the missing fact keeping the top explanations apart 7. **Discriminating Probe** -- the highest-value next step to collapse uncertainty Do **not** collapse into: - a generic fix-it coding loop - a generic debugger summary - a raw dump of worker output - fake certainty when evidence is incomplete ## Evidence strength hierarchy Treat evidence as ranked, not flat. From strongest to weakest: 1. **Controlled reproductions / direct experiments / uniquely discriminating artifacts** 2. **Primary source artifacts with tight provenance** (trace events, logs, metrics, benchmark outputs, configs, git history, file:line behavior) 3. **Multiple independent sources converging on the same explanation** 4. **Single-source code-path or behavioral inference** 5. **Weak circumstantial clues** (timing, naming, stack order, resemblance to prior bugs) 6. **Intuition / analogy / speculation** Explicitly down-rank hypotheses that depend mostly on lower tiers when stronger contradictory evidence exists. ## Strong falsification / disconfirmation rules Every serious `/trace` run must try to falsify its own favorite explanation. For each top hypothesis: - collect evidence **for** it - collect evidence **against** it - state what distinctive prediction it makes - state what observation would be hard to reconcile with it - identify the cheapest probe that would discriminate it from the next-best alternative Down-rank a hypothesis when: - direct evidence contradicts it - it survives only by adding new unverified assumptions - it makes no distinctive prediction compared with rivals - a stronger alternative explains the same facts with fewer assumptions - its support is mostly circumstantial while the rival has stronger evidence tiers ## Team-mode orchestration shape Use **Claude built-in team mode** for `/trace`. The lead should: 1. Restate the observed result or “why” question precisely 2. Extract the tracing target 3. Generate multiple deliberately different candidate hypotheses 4. Spawn **3 tracer lanes by default** in team mode 5. Assign one tracer worker per lane 6. Instruct each tracer worker to gather evidence **for** and **against** its lane 7. Run a **rebuttal round** between the leading hypothesis and the strongest remaining alternative 8. Detect whether the top lanes genuinely differ or actually converge on the same root cause 9. Merge findings into a ranked synthesis with an explicit critical unknown and discriminating probe Important: workers should pursue deliberately different explanations, not the same explanation in parallel. ## Default hypothesis lanes for v1 Unless the prompt strongly suggests a better partition, use these 3 default lanes: 1. **Code-path / implementation cause** 2. **Config / environment / orchestration cause** 3. **Measurement / artifact / assumption mismatch cause** — covers verification-method defects, not just system defects. Examples: the verification query reuses a single dimensional key across distinct entities, tenants, streams, or groups; the comparison filter shape does not match the schema grain; or the catalog or column name was assumed portable across runtimes without enumeration. This includes multi-entity premise/key-assumption mismatches. For lane 3, cross-entity discrepancies need a premise audit before escalation: enumerate entity dimensions and check whether a zero-row or mismatch result came from applying one key across multiple entities rather than from a system defect; the result may be a verification-methodology defect. These defaults are intentionally broad so the first slice works across bug, performance, architecture, and experiment tracing. ## Mandatory cross-check lenses After the initial evidence pass, pressure-test the leaders with these lenses when relevant: - **Systems lens** -- queues, retries, backpressure, feedback loops, upstream/downstream dependencies, boundary failures, coordination effects - **Premortem lens** -- assume the current best explanation is incomplete or wrong; what failure mode would embarrass the trace later? - **Science lens** -- controls, confounders, measurement bias, alternative variables, falsifiable predictions These lenses are not filler. Use them when they can surface a missed explanation, hidden dependency, or weak inference. ## Worker contract Each worker should be a **`tracer`** lane owner, not a generic executor. Each worker must: - own exactly one hypothesis lane - restate its lane hypothesis explicitly - gather evidence **for** the lane - gather evidence **against** the lane - rank the evidence strength behind its case - call out missing evidence, failed predictions, and remaining uncertainty - name the **critical unknown** for the lane - recommend the best lane-specific **discriminating probe** - avoid collapsing into implementation unless explicitly told to do so Useful evidence sources include: - relevant code, tests, configs, docs, logs, outputs, and benchmark artifacts - existing trace artifacts via `trace_timeline` - existing aggregate trace evidence via `trace_summary` Recommended worker return structure: 1. **Lane** 2. **Hypothesis** 3. **Evidence For** 4. **Evidence Against / Gaps** 5. **Evidence Strength** 6. **Critical Unknown** 7. **Best Discriminating Probe** 8. **Confidence** ## Leader synthesis contract The final `/trace` answer should synthesize, not just concatenate. Return: 1. **Observed Result** 2. **Ranked Hypotheses** 3. **Evidence Summary by Hypothesis** 4. **Evidence Against / Missing Evidence** 5. **Rebuttal Round** 6. **Convergence / Separation Notes** 7. **Most Likely Explanation** 8. **Critical Unknown** 9. **Recommended Discriminating Probe** 10. **Additional Trace Lanes** (optional, only if uncertainty remains high) Preserve a ranked shortlist even if one explanation is currently dominant. ## Rebuttal round and convergence detection Before closing the trace: - let the strongest non-leading lane present its best rebuttal to the current leader - force the leader to answer the rebuttal with evidence, not assertion - if the rebuttal materially weakens the leader, re-rank the table - if two “different” hypotheses reduce to the same underlying mechanism, merge them and say so explicitly - if two hypotheses still imply different next probes, keep them separate even if they sound similar Do not claim convergence just because multiple workers use similar language. Convergence requires either: - the same root causal mechanism, or - independent evidence streams pointing to the same explanation ## Explicit down-ranking guidance The lead should explicitly say why a hypothesis moved down: - contradicted by stronger evidence - lacks the observation it predicted - requires extra ad hoc assumptions - explains fewer facts than the leader - lost the rebuttal round - converged into a stronger parent explanation This is important because `/trace` should teach the reader **why** one explanation outranks another, not just present a final table. ## Suggested lead prompt skeleton Use a team-oriented orchestration prompt along these lines: 1. “Restate the observation exactly.” 2. “Generate 3 deliberately different hypotheses.” 3. “Create one tracer lane per hypothesis using Claude built-in team mode.” 4. “For each lane, gather evidence for and against, rank evidence strength, and name the critical unknown plus best discriminating probe.” 5. “Apply systems, premortem, and science lenses to the leaders if useful.” 6. “Run a rebuttal round between the top two explanations.” 7. “Return a ranked explanation table, convergence notes, the critical unknown, and the single best discriminating probe.” ## Output quality bar Good `/trace` output is: - evidence-backed - concise but rigorous - skeptical of premature certainty - explicit about missing evidence - practical about the next action - explicit about why weaker explanations were down-ranked ## Example final synthesis shape ### Observed Result [What happened] ### Ranked Hypotheses | Rank | Hypothesis | Confidence | Evidence Strength | Why it leads | |------|------------|------------|-------------------|--------------| | 1 | ... | High / Medium / Low | Strong / Moderate / Weak | ... | ### Evidence Summary by Hypothesis - Hypothesis 1: ... - Hypothesis 2: ... - Hypothesis 3: ... ### Evidence Against / Missing Evidence - Hypothesis 1: ... - Hypothesis 2: ... - Hypothesis 3: ... ### Rebuttal Round - Best rebuttal to leader: ... - Why leader held / failed: ... ### Convergence / Separation Notes - ... ### Most Likely Explanation [Current best explanation] ### Critical Unknown [Single missing fact keeping uncertainty open] ### Recommended Discriminating Probe [Single next probe] ### Additional Trace Lanes [Only if uncertainty remains high]
© Yeachan-Heo · MIT · Yeachan-Heo/oh-my-claudecode