Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Four-phase debugging framework for any technical issue. Use when encountering bugs, errors, or unexpected behavior. Prevents random fix attempts.
.claude/skills/majiayu000-systematic-debugging/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -40% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -4% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 7% | 0% |
| case-03 | ✓→✓ | = Same ✓ | 146% | 0% |
| case-04 | ✓→✓ | = Same ✓ | 63% | 0% |
> From obra/superpowers
NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST
Random fixes create new bugs. Understanding must precede solutions.
Before ANY fix attempt:
If ≥3 fixes fail: STOP and question the architecture
Three consecutive failed fixes signal:
Do NOT attempt more fixes. Reassess the approach.
STOP and restart investigation if you:
markdown## Investigation - [ ] Read full error message/stack trace - [ ] Reproduced issue consistently - [ ] Checked recent changes - [ ] Added diagnostic logging - [ ] Traced data flow ## Analysis - [ ] Found similar working code - [ ] Compared working vs broken - [ ] Understood all dependencies ## Hypothesis - [ ] Formed single specific hypothesis - [ ] Tested with minimal change - [ ] Accepted results honestly ## Fix - [ ] Created failing test case - [ ] Implemented single fix - [ ] Verified fix works - [ ] No regressions
Issue: User login fails silently
Phase 1 - Investigation:
- Error: "null reference at AuthService.validate()"
- Reproduced: happens with specific user emails
- Recent change: added email normalization
Phase 2 - Analysis:
- Working logins use lowercase emails
- Failing logins have mixed case
- Normalization strips @ symbol incorrectly
Phase 3 - Hypothesis:
- "Email normalization regex is wrong"
- Test: log email before/after normalization
- Result: "Test@Example.com" → "testexample.com"
- Confirmed!
Phase 4 - Fix:
- Write test: normalize("Test@Example.com") == "test@example.com"
- Fix regex to preserve @
- Verify: test passes, logins work| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 16,537 | 10,411 | -37% | 1 | 1 | 0% | 2,784 | 1,682 | -40% | 0 | 0 | — |
case-02 | fail→fail | 28,966 | 23,300 | -20% | 1 | 1 | 0% | 5,324 | 5,087 | -4% | 0 | 0 | — |
case-03 | pass→pass | 3,424 | 2,588 | -24% | 1 | 1 | 0% | 549 | 1,349 | +146% | 0 | 0 | — |
case-04 | pass→pass | 5,839 | 4,652 | -20% | 1 | 1 | 0% | 1,055 | 1,715 | +63% | 0 | 0 | — |
case-05 | pass→pass | 8,180 | 5,403 | -34% | 1 | 1 | 0% | 1,595 | 1,938 | +22% | 0 | 0 | — |
case-06 | pass→pass | 13,376 | 10,855 | -19% | 1 | 1 | 0% | 2,010 | 2,519 | +25% | 0 | 0 | — |
case-07 | fail→pass | 16,292 | 9,886 | -39% | 1 | 1 | 0% | 2,511 | 2,423 | -4% | 0 | 0 | — |
case-08 | pass→pass | 8,130 | 3,446 | -58% | 1 | 1 | 0% | 1,209 | 1,393 | +15% | 0 | 0 | — |
case-09 | fail→pass | 14,640 | 9,664 | -34% | 1 | 1 | 0% | 2,135 | 2,293 | +7% | 0 | 0 | — |
case-10 | pass→pass | 12,058 | 11,469 | -5% | 1 | 1 | 0% | 1,836 | 2,760 | +50% | 0 | 0 | — |
case-11 | pass→pass | 17,351 | 12,476 | -28% | 1 | 1 | 0% | 2,613 | 2,769 | +6% | 0 | 0 | — |
case-12 | pass→pass | 9,731 | 3,903 | -60% | 1 | 1 | 0% | 1,519 | 1,551 | +2% | 0 | 0 | — |
case-13 | pass→pass | 19,973 | 16,730 | -16% | 1 | 1 | 0% | 3,052 | 3,558 | +17% | 0 | 0 | — |
case-14 | pass→pass | 12,282 | 6,916 | -44% | 1 | 1 | 0% | 1,734 | 1,937 | +12% | 0 | 0 | — |
case-15 | pass→pass | 14,353 | 10,473 | -27% | 1 | 1 | 0% | 2,077 | 2,421 | +17% | 0 | 0 | — |
case-16 | pass→pass | 17,018 | 13,447 | -21% | 1 | 1 | 0% | 2,668 | 2,986 | +12% | 0 | 0 | — |
case-17 | pass→pass | 12,379 | 6,572 | -47% | 1 | 1 | 0% | 1,742 | 1,875 | +8% | 0 | 0 | — |
case-18 | pass→pass | 12,661 | 7,346 | -42% | 1 | 1 | 0% | 1,833 | 1,995 | +9% | 0 | 0 | — |
case-19 | pass→pass | 14,148 | 14,251 | +1% | 1 | 1 | 0% | 1,960 | 2,880 | +47% | 0 | 0 | — |
case-20 | pass→pass | 13,868 | 8,954 | -35% | 1 | 1 | 0% | 2,100 | 2,292 | +9% | 0 | 0 | — |
case-21 | pass→pass | 16,288 | 13,402 | -18% | 1 | 1 | 0% | 2,483 | 2,812 | +13% | 0 | 0 | — |
case-22 | pass→pass | 14,803 | 7,812 | -47% | 1 | 1 | 0% | 2,119 | 2,056 | -3% | 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.