skills/general/debugging/SKILL.md
--- name: debugging description: A structured 4-step debugging process: reproduce, understand, hypothesize, verify. Use when encountering any bug, test failure, or unexpected behavior before proposing fixes. --- # Debugging > **Think between probes (interleaved thinking).** The four steps below are a reasoning loop, not a checklist to rush. After each log, test run, or doc lookup, reason about what it rules in or out before the next move — each step should narrow the search space. ## The 4-Ste
npx skillsauth add devjarus/coding-agent skills/general/debuggingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Think between probes (interleaved thinking). The four steps below are a reasoning loop, not a checklist to rush. After each log, test run, or doc lookup, reason about what it rules in or out before the next move — each step should narrow the search space.
| Anti-pattern | Why it is harmful | |---|---| | Making random changes until it works | Creates new bugs; you do not understand what you fixed | | Wrapping in try/catch to silence errors | Hides problems; they resurface later in unexpected ways | | "Works on my machine" | Environment differences are bugs too; make them reproducible | | Print-only debugging without forming a hypothesis | Generates noise without narrowing the search space | | Fixing the symptom (e.g., null check) instead of the root cause | The bug reappears in a different form |
testing
Multi-source research method — decompose a question, fan out parallel investigators, interleaved-think each result, verify claims adversarially, synthesize a cited answer. Use for breadth-heavy research, stack comparisons, "which approach wins" questions.
testing
Decide when to use unit vs integration vs e2e tests, and when to mock vs use the real thing per dependency. Dependency injection is the enabler — without it you end up monkey-patching imports. Apply when writing tests of any kind.
development
Test-driven development process — write failing test, implement to pass, refactor. Use when implementing any feature or fixing bugs.
development
Patterns for sharing types, API contracts, and validation schemas between frontend and backend. Use when multiple domains consume the same data shapes to prevent contract drift.