Finds the root cause of a bug, test failure, or unexpected behavior before proposing any fix. Use this whenever something is broken and the cause is not yet proven — a failing test, a production error, intermittent behavior, or a symptom that appeared after a change. Also use when a fix has been attempted and did not work, or when the same bug keeps coming back.
npx skills add https://github.com/cbrock84/headcount --skill systematic-debugging
No fix before the cause is proven. A change that makes a symptom disappear without an
explanation has not fixed anything — it has moved the failure somewhere you are not looking.
it is fixed. Intermittent means you have not found the variable yet — order, timing, state,
environment, data.
the search space with each step rather than reading everything.
hypothesis. "Something is wrong with caching" is not.
you have found *a* bug, not *the* bug.
step people skip, and it is the one that proves causation rather than coincidence.
race, ordering dependency, or shared-state leak.
knowing what threw it.
State the reproduction, the proven cause, the fix, and the verification that the fix addresses that
cause specifically. Name anything you ruled out and how.
Take cbrock84/systematic-debugging from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.