Skip to content
Skills Library
Programming · Analysis

systematic-debugging

/systematic-debugging

Find the root cause of a bug, test failure, crash or unexpected behaviour before changing any code. Use this whenever something does not work as expected, a test fails, an error appears, or an earlier fix did not hold, even when the cause looks obvious, because the obvious cause is often a symptom.

Repository
yaap ↗
Licence
MIT
Last repository change
13.11.2026

Assessment and security

100/ 100Class: good
Format25 / 25
Frontmatter with name and description, valid name, description up to 1,024 characters, name matching the folder.
Discoverability25 / 25
Description explains when to use the skill, has a reasonable length and uses third person.
Content35 / 35
At least 150 words and at most 500 lines, headings, step lists, examples or code.
Hygiene15 / 15
No placeholders such as TODO, no Windows paths, with a licence.
Riskno signals detected in the scan
Files in this package
1
Scripts
0
HTML comments
0
URLs in SKILL.md
0
Deprecation

No signals detected. Repository changed on 13.11.2026, without references to retired models or APIs.

Licence

MIT, open: use and modify while retaining author attribution.

What it does and when to use it

Find the root cause of a bug, test failure, crash or unexpected behaviour before changing any code. Use this whenever something does not work as expected, a test fails, an error appears, or an earlier fix did not hold, even when the cause looks obvious, because the obvious cause is often a symptom.

Original author description

Find the root cause of a bug, test failure, crash or unexpected behaviour before changing any code. Use this whenever something does not work as expected, a test fails, an error appears, or an earlier fix did not hold, even when the cause looks obvious, because the obvious cause is often a symptom.

How it works

  1. 1. Reproduce
  2. 2. Read the evidence
  3. 3. Narrow it down
  4. 4. One hypothesis at a time
  5. 5. Fix the cause
  6. When three fixes failed
  7. In YAAP
  8. Report
Original SKILL.md headings · 63 lines, 499 words
SKILL.md preview
---
name: systematic-debugging
description: Find the root cause of a bug, test failure, crash or unexpected behaviour before changing any code. Use
  this whenever something does not work as expected, a test fails, an error appears, or an earlier fix did not hold,
  even when the cause looks obvious, because the obvious cause is often a symptom.
license: MIT
metadata:
  sources: superpowers/skills/systematic-debugging, wshobson/plugins/developer-essentials/skills/debugging-strategies
---

# Systematic debugging

Fixing a symptom makes the bug come back somewhere else. Find the cause first, then fix it once.

## 1. Reproduce

Make the failure happen on demand: the failing test, the command, the request, the steps in the browser. Write down
the exact command and the exact output. If it cannot be reproduced, collect what is known (logs, the input, the
version, when it started) and say so; do not guess at a fix.

If there is no test that shows the bug, write one now. It fails for the right reason before the fix and passes after
it, and it keeps the bug from returning.

## 2. Read the evidence

Read the whole error and the whole stack trace, from the bottom (where it started) to the top. Read the code at each
line it names. Check what changed recently: `git_diff`, the last commits, a dependency update.

## 3. Narrow it down

- Find the last place where the data is right and the first place where it is wrong. The cause is between them.
- Halve the search: comment out, bisect commits, or shrink the input until the failure only just remains.
- Compare with something that works: a passing test, an older version, a similar function.
- Add temporary logging at the boundaries rather than guessing. Remove it afterwards.

## 4. One hypothesis at a time

State the hypothesis in one sentence ("the date is parsed in local time, so it is off by a day after 23:00"). Test it
with the smallest experiment that could prove it wrong. Change one thing at a time; changing three at once tells you
nothing.

## 5. Fix the cause

Fix it where it starts, not where it shows. Then run the reproducing test, the tests around it and the build, and
read their output.

## When three fixes failed

After three attempts that did not hold, stop fixing. The model of how the code works is wrong. Go back to step 2,
list what you assumed, and check each assumption. Tell the user what you tried and what you learned; a fresh view
(another agent, the user) often sees it at once.

## In YAAP

- YAAP checkpoints every change by itself. Take back a failed experiment with git (`git restore <file>` through
  `run_command`), or ask the user to use *Restore to before this*.
- When `delegate` is available (in a project conversation), hand a wide search ("where is this value set?") to an
  exploring worker, so the conversation stays small. Without it, as in a worker such as the `debugger` agent, search
  with `search` and `find_references` yourself.
- For a web app, run it with `start_process` and look at it in the preview or with `open_browser`.

## Report

End with this shape:

```
Cause: <one sentence>
Evidence: <the command or test, and what it showed before and after>
Fix: <what changed, file and line>
Not verified: <what could not be checked, or "nothing">
```

Versions

RepositoryScoreLicence
This page · jelvodev/yaap100MIT
magnus919/agent-skills100MIT
FrancoStino/opencode-skills-collection100MIT
foryourhealth111-pixel/Vibe-Skills100Apache-2.0
GanyuanRan/Aegis100MIT
rootcastleco/rei-skills100MIT
jkaloger/lazyspec100MIT
innei/ryugi100MIT
yusixian/anjian100MIT

Database snapshot: 13.11.2026 · package version 1e9c773c9854 (SHA-256 digest of the entire package)

Downloads in the last 30 days: 0 · ranking

Report a problem with this skill: harmful content, incorrect descriptions or an author’s removal request.

Similar skills

  • 85vibe-debug
    Find the root cause before changing anything — for a bug, a test failure, a check that went red, or behaviour nobody can explain. Use when the cause is not yet known, when a previous fix did not hold, or when the same symptom has come back.
  • 92debug
    Find the root cause of a bug before you fix it. Read this skill before you fix any bug. Read it also when the fix looks obvious. Use it when the user says "fix", "broken", "not working", "error", "failing", or "bug". Use it also when a test fails unexpectedly during other work.
  • 100root-cause-debugging
    Find the actual cause of a bug, test failure, flaky behaviour, or unexpected output before changing code. Use whenever something is broken, failing, flaky, slow for no clear reason, or a previous fix did not work, and especially when you are tempted to "just try" a change.
  • 100debug-failure
    Find the root cause of an error, crash, failing test, regression or wrong behaviour, then fix it with a regression test. Use this whenever something is broken or behaves unexpectedly and the cause is not already proven, even if a fix seems obvious. Do not guess at fixes.
  • 95argentos-systematic-debugging
    Use when encountering any bug, test failure, or unexpected behavior. 4-phase root cause investigation — NO fixes without understanding the problem first.
  • 95community-systematic-debugging
    Use when encountering any bug, test failure, or unexpected behavior. 4-phase root cause investigation — NO fixes without understanding the problem first.

Feedback and reports

Your message goes to Bartosz Sokoliński. An email address is needed only for a reply. See the privacy policy.