Skip to content
Skills Library
Programming · Analysis

systematic-debugging

/systematic-debugging

Phase-based root cause investigation: reproduce, observe, hypothesize, bisect, verify. TRIGGER when: investigating a bug report, diagnosing unexpected behavior, or doing root cause analysis. SKIP: looking up a known error first (use sofa-search); writing the regression test (use testing-strategy); live-repro watcher (use watch-patterns).

Repository
scaffolding ↗
Licence
MIT
Last repository change
27.10.2026

Assessment and security

90/ 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.
Content25 / 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 27.10.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

Phase-based root cause investigation: reproduce, observe, hypothesize, bisect, verify. TRIGGER when: investigating a bug report, diagnosing unexpected behavior, or doing root cause analysis. SKIP: looking up a known error first (use sofa-search); writing the regression test (use testing-strategy); live-repro watcher (use watch-patterns).

Original author description

Phase-based root cause investigation: reproduce, observe, hypothesize, bisect, verify. TRIGGER when: investigating a bug report, diagnosing unexpected behavior, or doing root cause analysis. SKIP: looking up a known error first (use sofa-search); writing the regression test (use testing-strategy); live-repro watcher (use watch-patterns).

How it works

  1. Purpose
  2. When to Apply
  3. Investigation Phases
  4. Anti-Patterns
  5. Quality Checklist
Original SKILL.md headings · 86 lines, 819 words
SKILL.md preview
---
name: systematic-debugging
description: "Phase-based root cause investigation: reproduce, observe, hypothesize, bisect, verify. TRIGGER when: investigating a bug report, diagnosing unexpected behavior, or doing root cause analysis. SKIP: looking up a known error first (use sofa-search); writing the regression test (use testing-strategy); live-repro watcher (use watch-patterns)."
---

# Systematic Debugging Skill

## Purpose

A repeatable root cause investigation procedure. A bug is not understood until
it can be reproduced on demand and the causal chain is traced back to a fixable
defect. This skill encodes the phase order and the discipline (one variable at a
time, bisect instead of scan, verify by reverting) that keeps an investigation
from turning into guesswork.

## When to Apply

Apply this skill when:

- Investigating a reported bug or unexpected behavior
- Diagnosing a failing test, crash, or incorrect output
- Performing root cause analysis before recommending a fix
- An error message, stack trace, or log output needs to be traced to its origin

Do NOT apply this skill for:

- Writing the regression test that prevents recurrence — use `testing-strategy`
- Constructing the poll/watch loop used to observe a live reproduction — use `watch-patterns`
- Looking up a known/unfamiliar error before investigating from scratch — use `sofa-search`

---

## Investigation Phases

Work the phases in order. Do not skip ahead to a fix before phase 6.

| Phase | Action | Exit Criterion |
|-------|--------|-----------------|
| 1. Reproduce first | Establish a minimal, reliable repro before forming any hypothesis | Bug reproduces on demand, deterministically |
| 2. Observe before theorizing | Read the actual error text, stack trace, and logs verbatim | Symptom described using only observed evidence, zero assumptions |
| 3. Hypothesize | State one falsifiable hypothesis and the prediction that would confirm or refute it | Hypothesis has a concrete, testable prediction |
| 4. Test one variable | Change exactly one thing, run the test, compare to the prediction | Prediction confirmed or refuted; refuted hypotheses are discarded, not recycled |
| 5. Bisect the search space | Narrow via git bisect, binary search on input, or disabling half the config — not linear code reading | Candidate range halves each round |
| 6. Trace backward | Walk the call stack from the crash site back to the original trigger | Triggering call/input identified, not just the frame that crashed |
| 7. Root cause, not proximate cause | Keep asking "why" until the chain reaches something you can actually fix | Chain terminates at a fixable defect (bad state, wrong assumption, missing check) |
| 8. Verify by reverting | Revert the fix and confirm the symptom returns; reapply and confirm it clears | Causation proven in both directions |

### Bisection Techniques by Search Space

| Search space | Technique |
|--------------|-----------|
| Regression across commits | `git bisect` between known-good and known-bad revisions |
| Large/complex input triggers failure | Binary search: halve the input, check which half still fails |
| Behavior depends on config/flags | Disable half the flags/config, narrow to the culprit |
| Unclear which layer owns the bug | Bisect the call stack: instrument the midpoint, check state there |

### Hypothesis Discipline

| Rule | Why |
|------|-----|
| One hypothesis at a time | Multiple simultaneous changes make it impossible to attribute the outcome |
| Prediction must be falsifiable | An untestable hypothesis cannot be confirmed or ruled out |
| Never pattern-match a remembered bug onto new symptoms | Confirmation bias skips the actual evidence in phase 2 |
| A refuted hypothesis is discarded, not adjusted and reused | Adjusting mid-test invalidates the prior result |

---

## Anti-Patterns

| Anti-Pattern | Problem | Instead |
|--------------|---------|---------|
| Forming a hypothesis before reproducing | Guessing wastes cycles on an unconfirmed bug | Reproduce deterministically first |
| Pattern-matching to a remembered similar bug | Misses the actual cause, confirmation bias | Read the actual error/stack/logs fresh (phase 2) |
| Changing multiple things per test | Cannot attribute the result to any one change | Change exactly one variable per test |
| Reading code top-to-bottom to find the defect | Slow, linear, scales poorly | Bisect the search space (phase 5) |
| Stopping investigation at the crash site | Fixes the symptom, not the defect | Trace backward to the original trigger (phase 6) |
| Declaring root cause without reverting the fix | Causation asserted, not proven | Revert, confirm symptom returns, reapply (phase 8) |

---

## Quality Checklist

- [ ] Bug reproduces reliably, and reproduction happened before any hypothesis was formed
- [ ] Investigation cites actual error text/stack/logs, not assumptions or memory of a similar bug
- [ ] Each hypothesis had a falsifiable prediction, and only one variable changed per test
- [ ] The search space was bisected, not scanned linearly
- [ ] The causal chain was traced backward from the symptom through the call stack to the trigger
- [ ] The identified cause is a fixable root cause, not a proximate symptom
- [ ] The fix was verified by reverting it and confirming the symptom returns

Versions

RepositoryScoreLicence
This page · komluk/scaffolding90MIT
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 01fac3edef94 (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

  • 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.
  • 90debugging
    Systematic root-cause debugging: reproduce, investigate, hypothesize, fix with verification. Use when asked to "debug this", "fix this bug", "why is this failing", "troubleshoot", or mentions errors, stack traces, broken tests, flaky tests, regressions, or unexpected behavior.
  • 100debug
    Systematic root-cause debugging — reproduce, isolate, hypothesize, fix with TDD. Use when: bug, error, fix, broken, crash, exception, not working, unexpected behavior, regression.
  • 100debug
    Diagnose a failing test, build, crash, regression, or unexpected behavior without editing source. Reproduce the symptom, test hypotheses, identify the supported root cause, and hand off a repair. Use for /debug, root-cause investigation, or questions about why something is broken.
  • 100bug-investigation-notes
    Keeps structured notes during a bug hunt: symptoms, repro steps, hypotheses with evidence, experiments, root cause, fix, and a regression test. Use when a developer is debugging, chasing a flaky test or production issue, wants to write up a bug they fixed, a postmortem, or a…
  • 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.

Feedback and reports

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