← ClaudeAtlas

debuglisted

Find the actual cause of a failure instead of guessing at fixes. Reproduce, bisect to the smallest failing case, prove the mechanism, then fix once. Auto-triggers on: "why is this failing", "debug this", "this test is flaky", "it works locally", "fix this bug", "this crashes"
Univers42/claude-deal-with-the-devil · ★ 3 · Code & Development · score 69
Install: claude install-skill Univers42/claude-deal-with-the-devil
# Debug The expensive failure mode is changing code until the symptom disappears. That does not remove the bug; it moves it. You are done when you can **explain the mechanism** and **turn the failure on and off on demand**. ## 1. Reproduce — a bug you cannot trigger, you cannot fix - Get the exact command, input, and environment. Run it yourself under `.claude/tools/watch.sh` so a hang is killed with a reason (exit 124), not waited on. - Record the real, complete error: the message, the stack, the exit code. Not a summary. - **Cannot reproduce?** That is the finding. Say so and collect what is missing — version, platform, data, timing, concurrency. Do not "fix" an unreproduced bug. - Flaky? Run it 20 times and report the rate (`3/20`). A rate is a fact; "sometimes" is not, and the rate is how you will know you fixed it. ## 2. Narrow ��� halve the search space, don't tour it Pick the cheapest axis available and bisect it: - **In time** — `git bisect run <cmd>` when it used to work. This is the single highest-value debugging tool and it is consistently the one skipped. - **In input** — delete half the input; still fails? delete half again. Land on the smallest failing case and keep it, it becomes the test. - **In code** — stub, short-circuit or comment out half the path. Which half keeps it? - **In environment** — clean checkout, empty cache, the other machine, the CI container. State what you eliminated at each step. Narrowing without recording the elimination