Think harder.
Process
Check conversation context and skip completed steps.
1. Understand the symptom
- Read the bug report, errors, logs, and surrounding code carefully
- Clarify reproduction steps, expected behavior, and environment when they are unclear
- Separate confirmed facts from working assumptions. List them explicitly:
Fact (confirmed): the server returns 200
Assumption (unconfirmed): the client receives the full HTML body
Misidentifying an assumption as a fact is the most common source of wasted investigation.
2. Build hypotheses
Form 2-4 plausible root-cause hypotheses that are mechanistically distinct — different failure layers (e.g., server render vs. client hydration vs. network layer), not variations of the same idea
Rank them by likelihood
For each hypothesis, state both sides:
Confirm if: [what observation would prove this is the cause]
Eliminate if: [what observation would rule this out]
A hypothesis you can't falsify in both directions is too vague to test.
3. Choose the lightest evidence method
Start with the cheapest source of truth that can kill hypotheses:
- existing logs, traces, stack traces, metrics, and error output
- static code inspection around the suspected path
- config, environment, deploy, cache, queue, and permissions state that could explain the symptom
- targeted reproduction in the relevant environment
Only add new instrumentation when existing evidence is insufficient.
- If you need runtime probes, read
diagnose/references/runtime-debugging.md
- Use
#region agent log / #endregion markers for any instrumentation you add
- Tag each log point with the relevant
hypothesisId
- Log only the minimum fields needed to discriminate between hypotheses; never log secrets, tokens, passwords, cookies, or full sensitive payloads
- If runtime probes require starting the local debug server, ask the user before launching it
- For browser/UI bugs, combine with the
agent-browser skill when reproduction or inspection needs it
4. Gather evidence and iterate
- Use existing logs, traces, failing tests, or artifacts before asking for a fresh reproduction
- When reproduction is needed, ask the user to trigger the bug — tie each request to the hypothesis it tests
- Correlate each finding with the hypothesis it supports or eliminates; narrow based on evidence, not confidence
- If ambiguity remains, refine hypotheses and add narrower probes — but stop and report when another round is unlikely to produce new discriminating evidence
5. Report the diagnosis
Output structured diagnosis:
## Diagnosis: [Issue Title]
### Symptoms
- [What was observed]
### Evidence
- [Finding] — `file:line` or runtime source — hypothesis X
- ...
### Root Cause
[Confirmed or most likely cause, with evidence]
### Hypotheses Tested
| # | Hypothesis | Confirm if | Eliminate if | Result |
|---|-----------|-----------|-------------|--------|
| A | ... | [what observation would prove this] | [what observation would rule this out] | Confirmed/Eliminated/Inconclusive |
### Recommended Next Steps
- [What to do next — usually hand off to `/fix` with this diagnosis]
### Active Instrumentation
- [List files with `#region agent log` blocks still in place, or `None`]
Constraints
- NO fixing — investigation and diagnosis only. "Recommended Next Steps" hands off to
/fix with the diagnosis; it does not prescribe specific parameter values, code snippets, or step-by-step implementation instructions.
- Evidence over assumptions — if the code looks wrong but runtime evidence says otherwise, trust the runtime
- If you add
#region agent log blocks, leave them in place for /fix to verify the repair and call them out in the final report
Bug
$ARGUMENTS
1---2name: diagnose-43description: Investigate unexpected behavior and mysterious bugs. Use when the cause of a problem is unknown and the user needs to understand WHY something is happening — symptoms like: sudden unexplained changes in metrics or behavior, works locally but not in staging/production, inconsistent or intermittent failures, correct code producing wrong results, operations succeeding but having no effect, environment-specific failures, duplicate executions, stale data, or any "why did this change?" or "why is this happening?" situation. Covers infrastructure anomalies (cache hit rates dropping, latency spikes, queue behavior shifts) as well as code bugs. The key signal is confusion about root cause, not a request to implement a known fix. Do NOT use for feature requests, known fixes, planning, or documentation tasks.4---5
6Think harder.
7
8## Process
9
10Check conversation context and skip completed steps.
11
12### 1. Understand the symptom
13- Read the bug report, errors, logs, and surrounding code carefully
14- Clarify reproduction steps, expected behavior, and environment when they are unclear
15- **Separate confirmed facts from working assumptions.** List them explicitly:
16 - `Fact (confirmed):` the server returns 200
17 - `Assumption (unconfirmed):` the client receives the full HTML body
18 Misidentifying an assumption as a fact is the most common source of wasted investigation.
19
20### 2. Build hypotheses
21- Form 2-4 plausible root-cause hypotheses that are **mechanistically distinct** — different failure layers (e.g., server render vs. client hydration vs. network layer), not variations of the same idea
22- Rank them by likelihood
23- For each hypothesis, state both sides:
24 - `Confirm if:` [what observation would prove this is the cause]
25 - `Eliminate if:` [what observation would rule this out]
26
27 A hypothesis you can't falsify in both directions is too vague to test.
28
29### 3. Choose the lightest evidence method
30Start with the cheapest source of truth that can kill hypotheses:
31- existing logs, traces, stack traces, metrics, and error output
32- static code inspection around the suspected path
33- config, environment, deploy, cache, queue, and permissions state that could explain the symptom
34- targeted reproduction in the relevant environment
35
36Only add new instrumentation when existing evidence is insufficient.
37- If you need runtime probes, read `diagnose/references/runtime-debugging.md`
38- Use `#region agent log` / `#endregion` markers for any instrumentation you add
39- Tag each log point with the relevant `hypothesisId`
40- Log only the minimum fields needed to discriminate between hypotheses; never log secrets, tokens, passwords, cookies, or full sensitive payloads
41- If runtime probes require starting the local debug server, ask the user before launching it
42- For browser/UI bugs, combine with the `agent-browser` skill when reproduction or inspection needs it
43
44### 4. Gather evidence and iterate
45- Use existing logs, traces, failing tests, or artifacts before asking for a fresh reproduction
46- When reproduction is needed, ask the user to trigger the bug — tie each request to the hypothesis it tests
47- Correlate each finding with the hypothesis it supports or eliminates; narrow based on evidence, not confidence
48- If ambiguity remains, refine hypotheses and add narrower probes — but stop and report when another round is unlikely to produce new discriminating evidence
49
50### 5. Report the diagnosis
51
52Output structured diagnosis:
53
54```
55## Diagnosis: [Issue Title]
56
57### Symptoms
58- [What was observed]
59
60### Evidence
61- [Finding] — `file:line` or runtime source — hypothesis X
62- ...
63
64### Root Cause
65[Confirmed or most likely cause, with evidence]
66
67### Hypotheses Tested
68| # | Hypothesis | Confirm if | Eliminate if | Result |
69|---|-----------|-----------|-------------|--------|
70| A | ... | [what observation would prove this] | [what observation would rule this out] | Confirmed/Eliminated/Inconclusive |
71
72### Recommended Next Steps
73- [What to do next — usually hand off to `/fix` with this diagnosis]
74
75### Active Instrumentation
76- [List files with `#region agent log` blocks still in place, or `None`]
77```
78
79## Constraints
80
81- NO fixing — investigation and diagnosis only. "Recommended Next Steps" hands off to `/fix` with the diagnosis; it does **not** prescribe specific parameter values, code snippets, or step-by-step implementation instructions.
82- Evidence over assumptions — if the code looks wrong but runtime evidence says otherwise, trust the runtime
83- If you add `#region agent log` blocks, leave them in place for `/fix` to verify the repair and call them out in the final report
84
85## Bug
86
87<bug>$ARGUMENTS</bug>