Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Four-phase debugging methodology with root cause analysis. Use when investigating bugs, fixing test failures, or troubleshooting unexpected behavior. Emphasizes NO FIXES WITHOUT ROOT CAUSE FIRST.
.claude/skills/sickn33-code-showcase-systematic-debugging/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-12 | ✗→✓ | ▲ Improved | 24% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 12% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 19% | 0% |
| case-07 | ✓→✓ | = Same ✓ | 28% | 0% |
| case-01 | ✓→✓ | = Same ✓ | 75% | 0% |
Use this skill when you need four-phase debugging methodology with root cause analysis. Use when investigating bugs, fixing test failures, or troubleshooting unexpected behavior. Emphasizes NO FIXES WITHOUT ROOT CAUSE FIRST.
NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST.
Never apply symptom-focused patches that mask underlying problems. Understand WHY something fails before attempting to fix it.
Before touching any code:
Root Cause Tracing Technique:
1. Observe the symptom - Where does the error manifest?
2. Find immediate cause - Which code directly produces the error?
3. Ask "What called this?" - Map the call chain upward
4. Keep tracing up - Follow invalid data backward through the stack
5. Find original trigger - Where did the problem actually start?Key principle: Never fix problems solely where errors appear—always trace to the original trigger.
Apply the scientific method:
Critical rule: If THREE or more fixes fail consecutively, STOP. This signals architectural problems requiring discussion, not more patches.
Stop immediately if you catch yourself thinking:
Consecutive fixes revealing new problems in different areas indicates architectural issues:
1. Read the FULL error message and stack trace
2. Identify which assertion failed and why
3. Check test setup - is the test environment correct?
4. Check test data - are mocks/fixtures correct?
5. Trace to the source of unexpected value1. Capture the full stack trace
2. Identify the line that throws
3. Check what values are undefined/null
4. Trace backward to find where bad value originated
5. Add validation at the source1. Use git bisect to find the breaking commit
2. Compare the change with previous working version
3. Identify what assumption changed
4. Fix at the source of the assumption violation1. Look for race conditions
2. Check for shared mutable state
3. Examine async operation ordering
4. Look for timing dependencies
5. Add deterministic waits or proper synchronizationBefore claiming a bug is fixed:
Systematic debugging achieves ~95% first-time fix rate vs ~40% with ad-hoc approaches.
Signs you're doing it right:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-07 | pass→pass | 12,389 | 9,647 | -22% | 1 | 1 | 0% | 2,233 | 2,864 | +28% | 0 | 0 | — |
case-01 | pass→pass | 12,560 | 16,502 | +31% | 1 | 1 | 0% | 2,753 | 4,807 | +75% | 0 | 0 | — |
case-02 | pass→pass | 4,375 | 5,840 | +33% | 1 | 1 | 0% | 867 | 2,280 | +163% | 0 | 0 | — |
case-03 | pass→pass | 18,303 | 20,973 | +15% | 1 | 1 | 0% | 3,609 | 4,325 | +20% | 0 | 0 | — |
case-04 | pass→pass | 13,142 | 11,502 | -12% | 1 | 1 | 0% | 2,503 | 3,280 | +31% | 0 | 0 | — |
case-05 | pass→pass | 7,618 | 6,478 | -15% | 1 | 1 | 0% | 1,354 | 2,299 | +70% | 0 | 0 | — |
case-06 | pass→pass | 15,375 | 13,193 | -14% | 1 | 1 | 0% | 2,656 | 3,448 | +30% | 0 | 0 | — |
case-08 | pass→pass | 11,982 | 8,605 | -28% | 1 | 1 | 0% | 2,099 | 2,555 | +22% | 0 | 0 | — |
case-09 | fail→fail | 7,462 | 5,696 | -24% | 1 | 1 | 0% | 1,388 | 2,291 | +65% | 0 | 0 | — |
case-10 | pass→pass | 13,639 | 10,076 | -26% | 1 | 1 | 0% | 2,473 | 3,097 | +25% | 0 | 0 | — |
case-11 | fail→fail | 6,344 | 4,849 | -24% | 1 | 1 | 0% | 1,159 | 2,085 | +80% | 0 | 0 | — |
case-12 | fail→pass | 11,664 | 7,555 | -35% | 1 | 1 | 0% | 1,974 | 2,445 | +24% | 0 | 0 | — |
case-13 | pass→pass | 16,730 | 9,990 | -40% | 1 | 1 | 0% | 2,889 | 3,003 | +4% | 0 | 0 | — |
case-14 | pass→pass | 3,028 | 3,183 | +5% | 1 | 1 | 0% | 487 | 1,762 | +262% | 0 | 0 | — |
case-15 | pass→pass | 13,085 | 11,735 | -10% | 1 | 1 | 0% | 2,340 | 3,329 | +42% | 0 | 0 | — |
case-16 | pass→pass | 11,806 | 5,816 | -51% | 1 | 1 | 0% | 1,825 | 2,214 | +21% | 0 | 0 | — |
case-17 | fail→pass | 17,333 | 13,085 | -25% | 1 | 1 | 0% | 3,157 | 3,528 | +12% | 0 | 0 | — |
case-18 | fail→pass | 11,619 | 8,274 | -29% | 1 | 1 | 0% | 2,320 | 2,763 | +19% | 0 | 0 | — |
case-19 | pass→pass | 6,186 | 5,850 | -5% | 1 | 1 | 0% | 1,205 | 2,272 | +89% | 0 | 0 | — |
case-20 | fail→fail | 12,065 | 6,126 | -49% | 1 | 1 | 0% | 2,196 | 2,329 | +6% | 0 | 0 | — |
case-21 | pass→pass | 7,150 | 5,563 | -22% | 1 | 1 | 0% | 1,296 | 2,181 | +68% | 0 | 0 | — |
case-22 | pass→pass | 6,311 | 4,245 | -33% | 1 | 1 | 0% | 1,132 | 1,951 | +72% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +14 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.