
Debugger
- 698 installs
- 65 repo stars
- Updated June 21, 2026
- charon-fan/agent-playbook
debugger is an agent skill that runs a structured reproduce-isolate-root-cause-fix-verify loop for developers who encounter bugs, errors, or unexpected behavior blocking delivery.
About
debugger is an advanced debugging specialist skill for coding agents that walks developers through a systematic reproduce-isolate-root-cause-fix-verify loop when bugs or unexpected behavior appear. The skill activates on error reports, stack traces, failing tests, or explicit debugging requests and uses Read, Write, Edit, Bash, Grep, and Glob to inspect code and validate fixes. After completion, hooks can trigger self-improving-agent learning and session logging to capture debugging patterns. Developers reach for debugger when ad-hoc guessing stalls and they need a repeatable diagnostic workflow inside their agent session.
- Three-phase process: understand problem, isolate issue, analyze root cause
- Uses git log, logs tail, and env inspection in the gather-context step
- Supports stack-trace analysis, binary-search narrowing, and minimal repro cases
- Allowed tools: Read, Write, Edit, Bash, Grep, Glob
- Background hooks to session-logger and self-improving-agent after completion
Debugger by the numbers
- 698 all-time installs (skills.sh)
- Ranked #59 of 610 Debugging skills by installs in the Skillselion catalog
- Security screen: LOW risk (skills.sh audit)
- Data as of Jul 28, 2026 (Skillselion catalog sync)
npx skills add https://github.com/charon-fan/agent-playbook --skill debuggerAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 698 |
|---|---|
| repo stars | ★ 65 |
| Security audit | 3 / 3 scanners passed |
| Last updated | June 21, 2026 |
| Repository | charon-fan/agent-playbook ↗ |
How do you debug code systematically inside a coding agent?
Run a structured reproduce-isolate-root-cause-fix-verify loop when errors or unexpected behavior block your ship path.
Who is it for?
Developers blocked by runtime errors, failing tests, or unexpected behavior who want a structured debugging loop in their agent.
Skip if: Greenfield feature implementation or architecture planning where no concrete bug or error exists yet.
When should I use this skill?
A user reports a bug, shares a stack trace, mentions debugging, or describes unexpected behavior in running code.
What you get
Reproduced bug report, isolated root cause, applied fix, and verification evidence.
- root cause analysis
- verified bug fix
By the numbers
- Follows a 5-step reproduce-isolate-root-cause-fix-verify loop
- Allows 6 agent tools: Read, Write, Edit, Bash, Grep, Glob
Files
Debugger
An advanced debugging specialist that helps diagnose and resolve code issues systematically.
When This Skill Activates
Activates when you:
- Report an error or bug
- Mention "debug this" or "help debug"
- Describe unexpected behavior
- Ask why something isn't working
Debugging Process
Phase 1: Understand the Problem
1. Reproduce the issue
- What are the exact steps to reproduce?
- What is the expected behavior?
- What is the actual behavior?
- What error messages appear?
2. Gather context
# Check recent changes
git log --oneline -10
# Check error logs
tail -f logs/error.log
# Check environment
env | grep -i debugPhase 2: Isolate the Issue
1. Locate the error source
- Stack trace analysis
- Error code lookup
- Log correlation
2. Narrow down scope
- Binary search (comment out half)
- Minimize reproduction case
- Identify affected components
Phase 3: Analyze the Root Cause
Common Error Categories
| Category | Symptoms | Investigation Steps |
|---|---|---|
| Null/Undefined | "Cannot read X of undefined" | Trace the variable origin |
| Type Errors | "X is not a function" | Check actual vs expected type |
| Async Issues | Race conditions, timing | Check promise handling, async/await |
| State Issues | Stale data, wrong state | Trace state mutations |
| Network | Timeouts, connection refused | Check endpoints, CORS, auth |
| Environment | Works locally, not in prod | Compare env vars, versions |
| Memory | Leaks, OOM | Profile memory usage |
| Concurrency | Deadlocks, race conditions | Check locks, shared state |
Phase 4: Form Hypotheses
For each potential cause: 1. Form a hypothesis 2. Create a test to validate 3. Run the test 4. Confirm or reject
Phase 5: Fix and Verify
1. Implement the fix 2. Add logging if needed 3. Test the fix 4. Add regression test
Debugging Commands
General Debugging
# Find recently modified files
find . -type f -mtime -1 -name "*.js" -o -name "*.ts" -o -name "*.py"
# Grep for error patterns
grep -r "ERROR\|FATAL\|Exception" logs/
# Search for suspicious patterns
grep -r "TODO\|FIXME\|XXX" src/
# Check for console.log left in code
grep -r "console\.log\|debugger" src/Language-Specific
JavaScript/TypeScript:
# Run with debug output
NODE_DEBUG=* node app.js
# Check syntax
node -c file.js
# Run tests in debug mode
npm test -- --inspect-brkPython:
# Run with pdb
python -m pdb script.py
# Check syntax
python -m py_compile script.py
# Verbose mode
python -v script.pyGo:
# Race detection
go run -race main.go
# Debug build
go build -gcflags="-N -l"
# Profile
go test -cpuprofile=cpu.profCommon Debugging Patterns
Pattern 1: Divide and Conquer
# When you don't know where the bug is:
def process():
step1()
step2()
step3()
step4()
# Comment out half:
def process():
step1()
# step2()
# step3()
# step4()
# If bug disappears, uncomment half of commented:
def process():
step1()
step2()
# step3()
# step4()
# Continue until you isolate the bugPattern 2: Add Logging
// Before (mysterious failure):
async function getUser(id: string) {
const user = await db.find(id);
return transform(user);
}
// After (with logging):
async function getUser(id: string) {
console.log('[DEBUG] getUser called with id:', id);
const user = await db.find(id);
console.log('[DEBUG] db.find returned:', user);
const result = transform(user);
console.log('[DEBUG] transform returned:', result);
return result;
}Pattern 3: Minimal Reproduction
// Complex code with bug:
function processBatch(items, options) {
// 100 lines of complex logic
}
// Create minimal reproduction:
function processBatch(items, options) {
console.log('Items:', items.length);
console.log('Options:', options);
// Test with minimal data
return processBatch([items[0]], options);
}Error Message Analysis
Common Error Messages
| Error | Likely Cause | Solution |
|---|---|---|
Cannot read property 'X' of undefined | Accessing property on null/undefined | Add null check, use optional chaining |
X is not a function | Wrong type, shadowing | Check typeof, verify import |
Unexpected token | Syntax error | Check line before error, validate syntax |
Module not found | Import path wrong | Check relative path, verify file exists |
EADDRINUSE | Port already in use | Kill existing process, use different port |
Connection refused | Service not running | Start service, check port |
Timeout | Request too slow | Increase timeout, check network |
Debugging Checklist
- [ ] I can reproduce the issue consistently
- [ ] I have identified the exact error location
- [ ] I understand the root cause
- [ ] I have a proposed fix
- [ ] The fix doesn't break existing functionality
- [ ] I've added a test to prevent regression
Scripts
Generate a debug report:
python scripts/debug_report.py <error-message>References
references/checklist.md- Debugging checklistreferences/patterns.md- Common debugging patternsreferences/errors.md- Error message reference
Debugger
A Claude Code skill for systematic debugging and issue resolution.
Installation
This skill is part of the agent-playbook collection.
Usage
When encountering an error or bug:
You: This function is throwing an error
You: Debug this code
You: Why isn't this working?The skill will: 1. Analyze the error message 2. Trace the root cause 3. Provide debugging steps 4. Suggest fixes
Debugging Process
| Phase | Description |
|---|---|
| Understand | Reproduce and understand the problem |
| Isolate | Narrow down the source of the issue |
| Analyze | Determine root cause |
| Fix | Implement and verify the solution |
Common Error Types
| Error | Cause | Solution |
|---|---|---|
| TypeError | Wrong type, null reference | Add null check, verify type |
| ReferenceError | Variable not defined | Check imports, scope |
| NetworkError | Connection issues | Check endpoint, CORS |
| TimeoutError | Request too slow | Optimize query, increase timeout |
Scripts
Generate debug report:
python scripts/debug_report.py "<error-message>"Resources
Debugging Checklist
- [ ] Reproduce the issue
- [ ] Isolate the failure
- [ ] Identify root cause
- [ ] Implement fix
- [ ] Add regression coverage
Common Error Types
- Null/undefined access
- Race conditions
- Configuration mismatches
- Data shape drift
Debugging Patterns
- Binary search the change set
- Add targeted logging
- Reduce problem scope with minimal repros
#!/usr/bin/env python3
# Template generator for debug report.
from pathlib import Path
import argparse
import textwrap
def write_output(path: Path, content: str, force: bool) -> bool:
if path.exists() and not force:
print(f"{path} already exists (use --force to overwrite)")
return False
path.parent.mkdir(parents=True, exist_ok=True)
path.write_text(content, encoding="utf-8")
return True
def main() -> int:
parser = argparse.ArgumentParser(description="Generate a debug report.")
parser.add_argument("--output", default="debug-report.md", help="Output file path")
parser.add_argument("--name", default="example", help="Issue summary")
parser.add_argument("--owner", default="team", help="Owning team")
parser.add_argument("--force", action="store_true", help="Overwrite existing file")
args = parser.parse_args()
content = textwrap.dedent(
f"""\
# Debug Report
## Summary
{args.name}
## Ownership
- Owner: {args.owner}
- On-call: TBD
## Environment
- Service version:
- Region:
- Traffic level:
## Steps to Reproduce
1. Step one
2. Step two
## Expected vs Actual
- Expected:
- Actual:
## Logs and Evidence
- Attach logs, screenshots, traces
## Root Cause
TBD
## Fix
- Code changes
- Configuration changes
## Regression Tests
- Add or update tests
## Follow-ups
- Monitoring improvements
- Runbook updates
"""
).strip() + "\n"
output = Path(args.output)
if not write_output(output, content, args.force):
return 1
print(f"Wrote {output}")
return 0
if __name__ == "__main__":
raise SystemExit(main())
Related skills
How it compares
Pick this over generic troubleshooting prompts when you need a enforced multi-step diagnostic workflow with verification.
FAQ
What debugging loop does the debugger skill follow?
The debugger skill follows reproduce-isolate-root-cause-fix-verify. Each step narrows the failure until a fix is applied and verified with evidence from the codebase or runtime.
Which tools does the debugger skill use?
The debugger skill uses Read, Write, Edit, Bash, Grep, and Glob to inspect files, run commands, and validate fixes. Hooks can log sessions and feed patterns to self-improving-agent.
Is Debugger safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.