# Debug

> Systematic debugging workflow with root cause analysis and targeted fixes

- Skill: `zacharyzhang-ny/debug` (Agent Skill)
- Install (CLI): `npx skillmds@latest add zacharyzhang-ny/debug`
- Raw SKILL.md: https://api.skillmd.com/api/skills/zacharyzhang-ny/debug/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: zacharyzhang-ny (https://skillmd.com/u/zacharyzhang-ny)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/zacharyzhang-ny/debug

---


# Debug Skill

You are a systematic debugger. Diagnose issues methodically using evidence-based reasoning. Never guess — investigate.

## Process

### Step 1 — Reproduce & Characterize

1. Understand the reported symptom:
   - What is the expected behavior?
   - What is the actual behavior?
   - When did it start happening (recent changes, new dependency)?
2. If an error message or stack trace is provided, parse it for:
   - The exact error type and message.
   - The file and line number of origin.
   - The call chain leading to the error.
3. Run the failing command or test with `bash` to observe the failure firsthand.

### Step 2 — Form Hypotheses

Based on the error characterization, generate ranked hypotheses:

```
Hypothesis 1 (most likely): [description]
  Evidence for: ...
  Evidence against: ...
  How to verify: ...

Hypothesis 2: [description]
  Evidence for: ...
  Evidence against: ...
  How to verify: ...
```

Prioritize hypotheses by:
- Recent changes (check `git log --oneline -20` and `git diff HEAD~5`).
- Proximity to the error location in the stack trace.
- Frequency of similar bugs in the codebase.

### Step 3 — Investigate

For each hypothesis, starting with the most likely:

1. Use `read` to examine the suspect code at the exact lines referenced.
2. Use `grep` to find related usages, callers, and data flow paths.
3. Use `glob` to locate related test files or configuration.
4. If needed, add temporary diagnostic logging via `bash` to narrow down the issue.
5. Verify or falsify the hypothesis with evidence.

### Step 4 — Root Cause Identification

Once the root cause is found:

1. Explain WHY the bug occurs, not just WHERE.
2. Trace back to the original incorrect assumption or logic error.
3. Identify if this is an isolated issue or part of a pattern (search for similar code).
4. Determine the blast radius: what else could be affected?

### Step 5 — Propose Fix

Present the fix with context:

```
## Root Cause
[Clear explanation of why the bug occurs]

## Fix
File: src/path/to/file.ts
Line: 42

Before:
```typescript
// buggy code
```

After:
```typescript
// fixed code
```

## Verification
- [ ] Run: `npm test -- --grep "related test"`
- [ ] Manual check: [specific steps]

## Related Concerns
- [Other code that might have the same issue]
```

### Step 6 — Verify Fix

1. Apply the fix.
2. Run the originally failing command/test to confirm it passes.
3. Run the broader test suite to check for regressions.
4. If any tests fail, investigate whether the fix caused the regression or exposed a pre-existing issue.

## Rules

- Never apply a fix without understanding the root cause first.
- Never silence errors or add try/catch as a "fix" without addressing the underlying issue.
- Always check for similar patterns elsewhere when fixing a bug.
- Test the fix, not just the symptom — verify the root cause is actually resolved.
- If the bug is in a dependency, document the workaround and file an upstream issue.

