Systematic debugging discipline based on David Agans' nine rules, understand the system, reproduce reliably, bisect the search space, change one variable at a time, keep an audit trail, and never declare a fix done until it's verified against the original failure. Use when the user reports something broken, throwing, failing, or slow, or says "diagnose" / "debug this".
Collected from public GitHub. Every version is saved exactly as it was and never changes. Install it at an exact version with the mdr tool, and every file is checked before it reaches your agent. The main file is checked against the SHA-256 fingerprint recorded here, and the others against the fingerprints GitHub keeps for its source commit. The automatic checks below grade the latest version, and the same checks always give the same file the same grade.
What the file says
# Diagnosing Bugs
Debugging is not guessing with extra steps; it's a search problem, and a search problem has a systematic solution: understand the space you're searching, reproduce the failure on demand, shrink the search space by half at a time, and change exactly one thing per experiment so cause and effect stay unambiguous. Every rule below traces back to Agans' *Debugging: The 9 Indispensable Rules*; treat them as a sequence, not a menu to pick from.
**Redact secrets before showing any command, log, or captured artifact**: same discipline as `secure-coding`'s Phase 3: replace credentials with `<REDACTED>`, quote only the lines carrying real signal from anything with auth headers or full payloads.
## Rule 1: Understand the system
Before touching anything, know the normal path the failing code should take: read `CONTEXT.md` or equivalent domain docs if they exist, trace the flow from entry point to the point of failure, and know what "correct" looks like well enough to recognize it. A theory formed without this is a guess with the system's real shape substituted by an assumed one.
## Rule 2: Make it fail, then look before you theorize
…
The line at the top of this page pins the label git:20260809.2a45dbb, which is what most people want. This one pins the sha256 fingerprint of the contents instead, so it survives a label being moved. Either way the exact version is written to mdr.lock, and mdr install downloads and checks those contents again, so it installs them exactly or stops with an error.
A 17 of 17 checks passed. Fixed automatic checks with no AI involved, so the same checks give the same answer every run.
pass: Frontmatter block present
pass: Frontmatter declares a name
pass: Frontmatter declares a description
pass: Size between 200 bytes and 200 KB (5664 bytes)
pass: No zero-width or bidi control characters
pass: No instruction hidden inside an HTML comment
pass: No link to an exfiltration or paste host
pass: No credential-shaped string
pass: No instruction to send local credentials anywhere
pass: No text hidden with inline styles
pass: No prompt-injection phrasing
pass: No curl or wget piped into a shell
pass: No recursive delete of root, home or parent
pass: No instruction to read or print local credentials
pass: No base64 blob over 200 characters
pass: No link to a raw IP address
pass: No script tag
Source
GitHub
aethrox/doctrine · 19 stars · license MIT · pushed 2026-09-11 · branch main
API
GET https://markdownregistry.com/api/v1/artifacts/art_hcewcjx6k7ob7mex
GET https://markdownregistry.com/api/v1/resolve?ref=aethrox/doctrine/diagnosing-bugs
GET https://markdownregistry.com/api/v1/blob/afdcb7f70093fcc28388d7f10a35b73fdbdb0e157609de3a12c620cbd12810b4
Your AI assistant does the legwork. You hear about the deals worth your word. Hand yours the standing instructions at modelranch.com and it joins the network that reads files like this one.
aethrox/doctrine · skills/api-design-standards/SKILL.md · API design discipline grounded in the Microsoft/Google REST guidelines, resource and URL conventions, a chosen…
aethrox/doctrine · skills/architecture-diagram/SKILL.md · Produce a software architecture diagram at the right level of zoom, using diagram as code so it can be shown inline…
aethrox/doctrine · skills/capacity-estimation/SKILL.md · Turn a vague performance requirement into arithmetic before the architecture is chosen, size concurrency with Little's…
aethrox/doctrine · skills/code-review/SKILL.md · Code review discipline: the approval bar is "improves code health," not "perfect," Fowler's code-smell catalog gives…
aethrox/doctrine · skills/code-style-lint/SKILL.md · Discipline for code style and static analysis, adopt the ecosystem's established formatter as the non-negotiable source…
aethrox/doctrine · skills/codebase-design/SKILL.md · Module design discipline from John Ousterhout's A Philosophy of Software Design, depth as the metric (a lot of…
aethrox/doctrine · skills/dependency-upgrade-management/SKILL.md · Discipline for keeping dependencies current and deprecating capabilities safely, an inventory (SBOM) of what's actually…
aethrox/doctrine · skills/domain-modeling/SKILL.md · Domain-Driven Design discipline, build a ubiquitous language shared by code and conversation, draw explicit bounded…
aethrox/doctrine · skills/explain-plainly/SKILL.md · Default to explaining technical work in plain language for a non-technical audience, using an existing project glossary…
aethrox/doctrine · skills/grilling/SKILL.md · Interview the user relentlessly, in rounds, to close the gap between what's known and what's needed before acting on a…
aethrox/doctrine · skills/handoff/SKILL.md · Hand off in-progress work, an on-call shift, or an open incident to another person or agent using a fixed four-part…
aethrox/doctrine · skills/improve-codebase-architecture/SKILL.md · Scan a codebase (or a named area of one) for architectural friction, classify each finding by how it was incurred, and…
kunolu/640-skills · sbtd-workflow-onboard/assets/external-skills/stable/skills/diagnosing-bugs/SKILL.md · Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports…
mxyhi/ok-skills · diagnosing-bugs/SKILL.md · Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports…
asymmetric-al/core · .agents/skills/diagnosing-bugs/SKILL.md · Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports…
oyadotai/oya-browser · .agents/skills/diagnosing-bugs/SKILL.md · This skill should be used when diagnosing a reported bug, intermittent failure, stuck operation, or performance…
oyadotai/oya-browser · .claude/skills/diagnosing-bugs/SKILL.md · This skill should be used when diagnosing a reported bug, intermittent failure, stuck operation, or performance…
jellydn/my-ai-tools · skills/diagnosing-bugs/SKILL.md · Build a tight, red-capable feedback loop before diagnosing failures, then minimize, test ranked hypotheses, and lock…
jellydn/my-ai-tools · configs/amp/plugins/my-ai-tools-skills/skills/diagnosing-bugs/SKILL.md · Build a tight, red-capable feedback loop before diagnosing failures, then minimize, test ranked hypotheses, and lock…