From coding-debugger
Use when the user asks to "debug this", "fix this bug", "investigate error", "diagnose", "root cause", or reports a crash/exception/failure. Memory-first workflow checks past incidents before investigating.
How this skill is triggered — by the user, by Claude, or both
Slash command
/coding-debugger:debugging-memoryThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill integrates Coding Debugger memory into debugging workflows. The core principle: **never solve the same bug twice**.
This skill integrates Coding Debugger memory into debugging workflows. The core principle: never solve the same bug twice.
Before investigating any bug, always check the debugging memory using the debugger search MCP tool:
Use the debugger search tool with the symptom description.
The search returns a verdict with matching incidents and patterns.
Verdict-based decision tree:
Results are returned as compact summaries. Drill into matches on demand:
search MCP tool — returns verdict + compact matchesdetail MCP tool with the ID to load full incident/pattern dataoutcome MCP tool to record whether the fix worked, failed, or was modifiedWhen this skill activates, always announce it to the user:
This ensures users know the debugger is active and working.
When no past solution applies, follow this systematic approach.
For non-trivial issues, load the debug-loop skill instead of the basic steps below. The trigger is the verdict category from memory search, not a numeric confidence score:
KNOWN_FIX → apply the fix directly, skip the loopLIKELY_MATCH → enter debug loop (past incidents exist but need verification against current context)WEAK_SIGNAL → enter debug loop (loosely related, needs fresh investigation)NO_MATCH → enter debug loop (no prior knowledge, full investigation needed)Also enter the debug loop when:
The debug loop provides: causal tree investigation, hypothesis testing, iterative fix-verify-score cycles (up to 5x), fix critique before declaring done, and transparent ✅/⚠️/❓ reporting.
For straightforward bugs where the cause is immediately apparent, use these steps directly:
Establish a reliable reproduction path:
Narrow down the problem space:
Find the root cause:
Implement the solution:
Confirm the fix works:
After fixing a bug, use the debugger store MCP tool to document it for future retrieval.
The store tool accepts:
Claude Code can also directly write incident files to .claude/memory/incidents/ using the Write tool.
Step 1: Generate incident ID
INC_YYYYMMDD_HHMMSS_xxxx
Where xxxx is 4 random alphanumeric characters. Example: INC_20241231_143052_a7b2
Step 2: Write JSON file
.claude/memory/incidents/INC_20241231_143052_a7b2.json
Minimal incident structure:
{
"incident_id": "INC_20241231_143052_a7b2",
"timestamp": 1735654252000,
"symptom": "User-facing description of the bug",
"root_cause": {
"description": "Technical explanation of why the bug occurred",
"file": "path/to/problematic/file.ts",
"category": "logic|config|dependency|performance|react-hooks",
"confidence": 0.85
},
"fix": {
"approach": "What was done to fix it",
"changes": [
{
"file": "path/to/file.ts",
"lines_changed": 10,
"change_type": "modify|add|delete",
"summary": "Brief description of change"
}
]
},
"verification": {
"status": "verified|unverified",
"regression_tests_passed": true,
"success_criteria_met": true
},
"tags": ["relevant", "keywords", "for", "search"],
"files_changed": ["list/of/all/files.ts"],
"quality_score": 0.75
}
Step 3: Ensure directory exists Before writing, create the directory if needed:
mkdir -p .claude/memory/incidents
The memory system scores incidents on:
Target 75%+ quality score for effective future retrieval.
Apply descriptive tags for better searchability:
react, typescript, api, databaselogic, config, dependency, performancecrash, render, timeout, validationWhen the memory system finds a match:
The memory system automatically extracts patterns when 3+ similar incidents exist. Patterns represent reusable solutions with higher reliability than individual incidents.
When a pattern matches:
| Tool | Purpose |
|---|---|
search | Search memory for similar bugs (returns verdict) |
store | Store a new debugging incident |
detail | Get full details of an incident or pattern |
status | Show memory statistics |
list | List recent incidents |
patterns | List known fix patterns |
outcome | Record whether a fix worked |
For complex issues that may span multiple areas (database, frontend, API, performance), use parallel assessment to diagnose all domains simultaneously.
Four specialized assessor agents are available:
| Assessor | Expertise |
|---|---|
database-assessor | Prisma, PostgreSQL, queries, migrations, connection issues |
frontend-assessor | React, hooks, rendering, state, hydration, SSR |
api-assessor | Endpoints, REST/GraphQL, auth, middleware, CORS |
performance-assessor | Latency, memory, CPU, bottlenecks, optimization |
Launch assessors in parallel using the Task tool:
For: "search is slow and returns wrong results"
Launch simultaneously:
- database-assessor (query performance)
- api-assessor (endpoint correctness)
- performance-assessor (latency analysis)
Each assessor returns a JSON assessment with:
confidence: 0-1 scoreprobable_causes: List of likely issuesrecommended_actions: Steps to fixrelated_incidents: Past memory matches| Domain | Trigger Keywords |
|---|---|
| Database | query, schema, migration, prisma, sql, connection, constraint, index |
| Frontend | react, hook, useEffect, render, component, state, hydration, browser |
| API | endpoint, route, request, response, auth, 500, 404, cors, middleware |
| Performance | slow, latency, timeout, memory, leak, cpu, bottleneck, optimization |
After parallel assessments complete:
The debugger can ingest traces from multiple sources to aid diagnosis:
When traces are available:
Traces are summarized to minimize token usage while preserving key diagnostic information.
The memory system uses tiered retrieval to minimize context size:
| Tier | Token Usage | Content |
|---|---|---|
| Summary | ~100 tokens | ID, symptom preview, category |
| Compact | ~200 tokens | Short keys, essential fields |
| Full | ~550 tokens | Complete incident details |
Default budget: 2500 tokens
The system automatically selects the appropriate tier based on available budget.
When debugging involves subagents (your own or from other plugins), follow these guidelines to ensure debugging memory is utilized.
Before spawning debugging-related subagents:
search MCP toolExample subagent prompt with debugging context:
Investigate the database timeout issue.
DEBUGGING MEMORY CONTEXT:
- Found 2 similar incidents: INC_20241215_db_timeout, INC_20241201_pool_exhaust
- Pattern PTN_connection_pool suggests checking pool size and idle timeout
- Previous fix: Increased pool size from 10 to 25 in DATABASE_URL
Start your investigation considering this prior knowledge.
Inform the user when debugging memory cannot be used with subagents:
External MCP tools: "Note: The debugging subagent is using external MCP tools that cannot access local debugging memory. I searched memory beforehand and found [X matching incidents / no matches]."
Third-party agents: "Note: This third-party debugging agent doesn't have access to your project's debugging memory. Consider searching debugging memory first to check for similar past issues."
Sandboxed environments: "Note: The subagent runs in a sandboxed environment without access to debugging memory. I've pre-loaded relevant context from [X] matching incidents."
When using parallel assessment or multiple debugging subagents:
search MCP tool before spawning agentsstore MCP tool to document the combined diagnosissearch tool before investigating any bugstore tool after resolving bugsoutcome tool to improve future verdictsCreates bite-sized, testable implementation plans from specs or requirements, with file structure and task decomposition. Activates before coding multi-step tasks.
npx claudepluginhub tyroneross/claude-code-debugger --plugin claude-code-debugger