$npx -y skills add Archive228/loopkit --skill systematic-debuggingUse for ANY bug, test failure, crash, or unexpected behavior. Forces
| 1 | # Systematic Debugging |
| 2 | |
| 3 | The single most expensive agent failure: seeing an error and immediately generating a |
| 4 | "fix" based on the error type, without reading what actually happened. Don't. |
| 5 | |
| 6 | ## The loop |
| 7 | |
| 8 | 1. **Read the whole error.** The entire message and stack trace. A TypeError can mean a |
| 9 | hundred different things — the trace tells you which one. Quote the exact line that throws. |
| 10 | |
| 11 | 2. **Reproduce it first.** If you can't reproduce it, you can't verify a fix. Write the |
| 12 | smallest input that triggers it. "I think this fixes it" is gambling, not debugging. |
| 13 | |
| 14 | 3. **Form one hypothesis, name it.** "I think the value is null because the upstream call |
| 15 | returns 204 with no body." State it before you touch anything. |
| 16 | |
| 17 | 4. **Change one thing. Test. Repeat.** If you change three things and it works, you don't |
| 18 | know which one fixed it — and the other two may have added new bugs. |
| 19 | |
| 20 | 5. **Fix the root cause, not the symptom.** A null check that hides a null is not a fix. |
| 21 | Find why it's null. The underlying bug will resurface differently if you only patch the crash. |
| 22 | |
| 23 | ## Stop conditions |
| 24 | |
| 25 | - If 3 hypotheses fail, STOP and report: what you tried, what you saw, what you suspect. |
| 26 | "I've tried X and Y, here's the output, I think it's Z but I'm not sure" beats 20 silent |
| 27 | random attempts. |
| 28 | - Never add a workaround you don't understand. |
| 29 | |
| 30 | ## Output |
| 31 | |
| 32 | End with: the root cause (one sentence), the minimal fix, and the test that now proves it. |