Skip to content
Back to skills

Debug

ASecurity

Systematic debugging using hypothesis-driven investigation with test, narrow, and resolve loops

  • 2 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added October 26, 2026
researchrustgotestingdebuggingcode-reviewgitapidatabasefrontendperformance

Works with

  • api

Security analysis

A100/100

Scanned October 26, 2026

npx -y skills add nhan03bit/ultrathink --skill debug --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Debug?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Debug
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/nhan03bit-debug/badge)](https://www.skillsdirectory.com/skills/nhan03bit-debug)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: debug
description: Systematic debugging using hypothesis-driven investigation with test, narrow, and resolve loops
layer: hub
category: workflow
triggers:
  - "/debug"
  - "debug this"
  - "why is this broken"
  - "find the bug"
  - "this is not working"
  - "something is wrong with"
inputs:
  - symptom: Description of the observed incorrect behavior
  - expected: What the correct behavior should be (optional but helpful)
  - context: Error messages, stack traces, reproduction steps, recent changes (optional)
outputs:
  - rootCause: Identified root cause with evidence
  - hypothesis log: Record of hypotheses tested and their outcomes
  - fix recommendation: Suggested fix (handed off to fix skill for application)
linksTo:
  - fix
  - scout
  - test
  - code-review
linkedFrom:
  - cook
  - team
  - ship
preferredNextSkills:
  - fix
  - test
fallbackSkills:
  - scout
  - research
riskLevel: low
memoryReadPolicy: selective
memoryWritePolicy: selective
sideEffects:
  - May run test commands to reproduce issues
  - May read many files during investigation
  - Produces hypothesis log in working memory
---

# Debug Skill

## Purpose

Systematically find the root cause of bugs using a disciplined hypothesis-test-narrow loop. This skill treats debugging as a scientific investigation, not a guessing game.

The core principle: **never change code to debug**. Observe, hypothesize, test, narrow. Only hand off to `fix` once the root cause is identified with evidence.

## Workflow

### Phase 1: Symptom Analysis

1. **Capture the symptom precisely**
   - What is the observed behavior? (exact error, incorrect output, crash, hang, etc.)
   - What is the expected behavior?
   - Is it reproducible? (always, sometimes, only under certain conditions)
   - When did it start? (after a specific change, deployment, data change)

2. **Gather initial evidence**
   - Error messages and stack traces (read them carefully -- every line matters)
   - Relevant log output
   - Browser console errors (if frontend)
   - Network requests/responses (if applicable)
   - Recent git changes in the affected area

3. **Classify the bug type** (this guides the investigation strategy)
   - **Crash/Error**: Code throws an exception or returns an error
   - **Wrong Output**: Code runs but produces incorrect results
   - **Performance**: Code is too slow or uses too many resources
   - **Race Condition**: Behavior depends on timing/ordering
   - **State Corruption**: Data gets into an invalid state over time
   - **Integration**: Works in isolation, fails when combined
   - **Environment**: Works in one environment, fails in another

### Phase 2: Hypothesis Generation

4. **Generate 2-5 hypotheses** ranked by likelihood. For each hypothesis:
   - **Statement**: "The bug is caused by [X] because [reasoning]"
   - **Evidence for**: What supports this hypothesis?
   - **Evidence against**: What contradicts this hypothesis?
   - **Test**: How can we confirm or eliminate this hypothesis?
   - **Effort**: How hard is it to test? (prefer easy tests first)

5. **Prioritize hypotheses** using these heuristics:
   - **Recent changes first**: If something just changed, start there
   - **Simple before complex**: Check obvious causes before subtle ones
   - **Cheap tests first**: If two hypotheses are equally likely, test the one that is faster to verify
   - **Follow the error**: Stack traces point at causes; start where they point

### Phase 3: Hypothesis Testing (Loop)

6. **Test the highest-priority hypothesis**
   - Read the relevant code carefully
   - Trace the execution path mentally or with search tools
   - Check variable values, function inputs/outputs, state transitions
   - Run existing tests if they cover the area
   - Use Grep to find related code that might interact

7. **Record the result**
   - **Confirmed**: Evidence strongly supports this as the root cause
   - **Eliminated**: Evidence contradicts this hypothesis
   - **Refined**: Partially correct -- adjust the hypothesis and continue
   - **Inconclusive**: Cannot determine -- need more information

8. **Narrow the search space**
   - Each test should eliminate possibilities, making the remaining search space smaller
   - If a hypothesis is eliminated, what does that tell us? Update remaining hypotheses.
   - If a hypothesis is refined, generate a more specific sub-hypothesis.

9. **Repeat from step 6** until root cause is identified or all hypotheses are exhausted.

### Phase 4: Root Cause Confirmation

10. **State the root cause clearly**
    - What is the exact bug? (the specific line(s), condition, or interaction)
    - Why does it happen? (the causal chain from trigger to symptom)
    - Under what conditions? (always, or only when [condition])

11. **Verify with evidence**
    - Can you trace from root cause to symptom step by step?
    - Does the root cause explain ALL observed symptoms?
    - Does the root cause explain why it worked before (if it did)?

12. **If all hypotheses exhausted without finding root cause**:
    - Generate new hypotheses based on what was learned
    - Escalate scope: look at infrastructure, dependencies, environment
    - Consider invoking `scout` for broader codebase exploration
    - Consider invoking `research` for known issues with the technology

### Phase 5: Handoff

13. **Produce the debug report** using the template below.
14. **Recommend fix approach** -- hand off to `fix` skill for implementation.
15. **Recommend test** -- suggest what test should be written to prevent regression.

## Debug Report Template

```markdown
# Debug Report

## Symptom
**Observed**: [exact behavior]
**Expected**: [correct behavior]
**Reproducibility**: Always | Sometimes | Rare
**First noticed**: [when/context]

## Root Cause
**Location**: [file:line]
**Cause**: [precise description]
**Mechanism**: [how the cause produces the symptom]

## Evidence Chain
1. [observation 1] → indicates [conclusion 1]
2. [observation 2] → confirms [conclusion 2]
3. Therefore: [root cause]

## Hypothesis Log
| # | Hypothesis | Test | Result |
|---|-----------|------|--------|
| H1 | [statement] | [what was checked] | Eliminated: [reason] |
| H2 | [statement] | [what was checked] | Confirmed |

## Recommended Fix
[Description of what should change and why]
**Affected files**: [list]
**Risk**: Low | Medium | High

## Regression Prevention
[What test should be written to catch this if it recurs]
```

## Usage

### With error message
```
/debug TypeError: Cannot read property 'map' of undefined in UserList component
```

### With symptom description
```
/debug The checkout flow completes but the order is not saved to the database
```

### With context
```
/debug Login stopped working after merging PR #42. Users get a 401 even with valid credentials.
```

### Continuing investigation
```
/debug We eliminated the auth middleware hypothesis. What else could cause 401s on the /api/user endpoint?
```

## Examples

### Example: Frontend crash

**Symptom**: "TypeError: Cannot read property 'map' of undefined"
**Hypotheses**:
1. API returns null instead of array (H1 -- test by checking API response)
2. Component renders before data loads (H2 -- test by checking loading state)
3. Data shape changed after API update (H3 -- test by comparing schema)

**Investigation**: Read the component, find it expects `data.items.map(...)`. Check the API endpoint -- it returns `{ items: [...] }` on success but `{ error: "..." }` on failure with no `items` key.
**Root cause**: Missing error handling -- component assumes API always returns items.

### Example: Silent data loss

**Symptom**: "Orders created via API are missing the discount field"
**Hypotheses**:
1. Discount field not included in API request body (H1)
2. Discount field not mapped in ORM model (H2)
3. Database migration did not add the column (H3)

**Investigation**: Check API route -- discount is in the request. Check ORM model -- discount field exists. Check database -- column exists. Check the create function -- found it: the `createOrder` function destructures the input but does not include `discount` in the destructured fields.
**Root cause**: Destructuring omission in `createOrder()` at `src/lib/orders.ts:42`.

## Guidelines

- **Never guess-and-fix** -- Changing code to see if it helps is not debugging; it is gambling. Understand the cause before changing anything.
- **Read error messages fully** -- The answer is often in the error message or stack trace. Read every line.
- **One variable at a time** -- When testing hypotheses, change only one thing. Otherwise you cannot attribute the result.
- **Document as you go** -- Record each hypothesis and result. This prevents circular investigation.
- **Time-box escalation** -- If 3 hypotheses are eliminated with no progress, step back and reconsider the problem framing.
- **Distinguish symptoms from causes** -- "The variable is null" is a symptom. "The function does not handle the empty response case" is a cause.
- **Check the obvious first** -- Typos, missing imports, wrong environment variables, stale cache. Check these before diving deep.
- **Trust the evidence, not your intuition** -- If the evidence says the "impossible" thing is happening, believe the evidence.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.