plugins/code-analysis/skills/debugger-detective/SKILL.md
⚡ PRIMARY TOOL for: 'why is X broken', 'find bug source', 'root cause analysis', 'trace error', 'debug issue', 'find where X fails'. Uses claudemem v0.3.0 AST with context command for call chain analysis. GREP/FIND/GLOB ARE FORBIDDEN.
npx skillsauth add involvex/involvex-claude-marketplace debugger-detectiveInstall 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.
╔══════════════════════════════════════════════════════════════════════════════╗
║ ║
║ 🧠 THIS SKILL USES claudemem v0.3.0 AST ANALYSIS EXCLUSIVELY ║
║ ║
║ ❌ GREP IS FORBIDDEN ║
║ ❌ FIND IS FORBIDDEN ║
║ ❌ GLOB IS FORBIDDEN ║
║ ║
║ ✅ claudemem --nologo context <name> --raw FOR FULL CALL CHAIN ║
║ ✅ claudemem --nologo callers <name> --raw TO TRACE BACK TO SOURCE ║
║ ✅ claudemem --nologo callees <name> --raw TO TRACE FORWARD ║
║ ║
║ ⭐ v0.3.0: context shows full call chain for root cause analysis ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
Version: 3.3.0 Role: Debugger / Incident Responder Purpose: Bug investigation and root cause analysis using AST call chain tracing with blast radius impact analysis
You are investigating this codebase as a Debugger. Your focus is on:
context is Perfect for DebuggingThe context command shows you:
# Find the function mentioned in error
claudemem --nologo symbol authenticate --raw
# Get full context (callers + callees)
claudemem --nologo context authenticate --raw
# Who called this function? (trace backwards)
claudemem --nologo callers authenticate --raw
# Follow the chain backwards
claudemem --nologo callers LoginController --raw
claudemem --nologo callers handleRequest --raw
# What does this function call? (trace forward)
claudemem --nologo callees authenticate --raw
# Find where state changes happen
claudemem --nologo callees updateSession --raw
# After finding the bug, check what else is affected
IMPACT=$(claudemem --nologo impact buggyFunction --raw)
if [ -z "$IMPACT" ] || echo "$IMPACT" | grep -q "No callers"; then
echo "No static callers - bug is isolated (or dynamically called)"
else
echo "$IMPACT"
echo ""
echo "This shows:"
echo "- Direct callers (immediately affected)"
echo "- Transitive callers (potentially affected)"
echo "- Complete list for testing after fix"
fi
Use for:
Limitations: Event-driven/callback architectures may have callers not visible to static analysis.
# Map error handling code
claudemem --nologo map "throw error exception" --raw
# Find specific error types
claudemem --nologo symbol AuthenticationError --raw
# Who throws this error?
claudemem --nologo callers AuthenticationError --raw
# Find where state changes
claudemem --nologo map "set state update mutate" --raw
# Find the mutation function
claudemem --nologo symbol updateUserState --raw
# Who calls this mutation?
claudemem --nologo callers updateUserState --raw
which claudemem && claudemem --version
# Must be 0.3.0+
Use AskUserQuestion (see ultrathink-detective for template)
# Check claudemem installation and index
claudemem --version && ls -la .claudemem/index.db 2>/dev/null
Before proceeding with investigation, verify the index is current:
# First check if index exists
if [ ! -d ".claudemem" ] || [ ! -f ".claudemem/index.db" ]; then
# Use AskUserQuestion to prompt for index creation
# Options: [1] Create index now (Recommended), [2] Cancel investigation
exit 1
fi
# Count files modified since last index
STALE_COUNT=$(find . -type f \( -name "*.ts" -o -name "*.tsx" -o -name "*.js" -o -name "*.jsx" -o -name "*.py" -o -name "*.go" -o -name "*.rs" \) \
-newer .claudemem/index.db 2>/dev/null | grep -v "node_modules" | grep -v ".git" | grep -v "dist" | grep -v "build" | wc -l)
STALE_COUNT=$((STALE_COUNT + 0)) # Normalize to integer
if [ "$STALE_COUNT" -gt 0 ]; then
# Get index time with explicit platform detection
if [[ "$OSTYPE" == "darwin"* ]]; then
INDEX_TIME=$(stat -f "%Sm" -t "%Y-%m-%d %H:%M" .claudemem/index.db 2>/dev/null)
else
INDEX_TIME=$(stat -c "%y" .claudemem/index.db 2>/dev/null | cut -d'.' -f1)
fi
INDEX_TIME=${INDEX_TIME:-"unknown time"}
# Get sample of stale files
STALE_SAMPLE=$(find . -type f \( -name "*.ts" -o -name "*.tsx" \) \
-newer .claudemem/index.db 2>/dev/null | grep -v "node_modules" | grep -v ".git" | head -5)
# Use AskUserQuestion (see template in ultrathink-detective)
fi
claudemem index
# Find where the error appears
claudemem --nologo map "error message keywords" --raw
# Or find the specific function
claudemem --nologo symbol failingFunction --raw
# Get callers + callees in one command
claudemem --nologo context failingFunction --raw
# For each caller, check if it's the source
claudemem --nologo callers caller1 --raw
claudemem --nologo callers caller2 --raw
# Keep tracing until you find the root
# Once you suspect a root cause, verify the path
claudemem --nologo callees suspectedRoot --raw
# Does it lead to the symptom?
# What else calls the buggy code?
claudemem --nologo callers buggyFunction --raw
# These are all potentially affected
┌─────────────────────────────────────────────────────────┐
│ BUG INVESTIGATION │
├─────────────────────────────────────────────────────────┤
│ Symptom: User sees "undefined" in profile name │
│ Location: src/components/Profile.tsx:45 │
│ Error Type: Data inconsistency / Null reference │
│ Search Method: claudemem v0.3.0 (AST call chain) │
└─────────────────────────────────────────────────────────┘
❌ SYMPTOM: undefined rendered
└── src/components/Profile.tsx:45
└── user.name is undefined
↑ CALLER CHAIN (trace backwards):
└── useUser hook (src/hooks/useUser.ts:23)
↑
└── fetchUser API (src/api/user.ts:67)
↑
└── userMapper (src/mappers/user.ts:12)
↑
🔍 ROOT CAUSE FOUND HERE
🔍 ROOT CAUSE IDENTIFIED:
Location: src/mappers/user.ts:12
Problem: Field name mismatch
API Response: { fullName: "John Doe" }
Mapper Expects: { full_name: "..." }
Result: name = undefined
Evidence:
- callees of fetchUser → userMapper
- callers of userMapper → useUser → Profile
- Complete chain verified via context command
⚠️ OTHER AFFECTED CODE:
claudemem --nologo callers userMapper --raw shows:
- useUser hook (main app)
- useAdmin hook (admin panel)
- tests/user.test.ts
All 3 locations may have the same bug!
# Step 1: Find where undefined is used
claudemem --nologo map "undefined null" --raw
# Step 2: Get context of the failing function
claudemem --nologo context renderProfile --raw
# Step 3: Trace backwards through callers
claudemem --nologo callers getUserData --raw
# Step 4: Find where null was introduced
claudemem --nologo callees fetchUser --raw
# Step 1: Find async operations
claudemem --nologo map "async await promise" --raw
# Step 2: Find shared state
claudemem --nologo symbol sharedState --raw
# Step 3: Who reads it?
claudemem --nologo callers sharedState --raw
# Step 4: Who writes it?
claudemem --nologo callees updateState --raw
# Step 1: Find the function with wrong behavior
claudemem --nologo symbol calculateTotal --raw
# Step 2: What does it depend on?
claudemem --nologo callees calculateTotal --raw
# Step 3: Who provides input?
claudemem --nologo callers calculateTotal --raw
After EVERY claudemem command, validate results:
When tracing call chains:
CONTEXT=$(claudemem --nologo context failingFunction --raw)
EXIT_CODE=$?
# Check for failure
if [ "$EXIT_CODE" -ne 0 ]; then
DIAGNOSIS=$(claudemem status 2>&1)
# Use AskUserQuestion
fi
# Validate all sections present
if ! echo "$CONTEXT" | grep -q "\[symbol\]"; then
# Missing symbol section - function not found
# Use AskUserQuestion: Reindex, Different name, or Cancel
fi
if ! echo "$CONTEXT" | grep -q "\[callers\]"; then
# Missing callers - may be entry point or index issue
# Entry points (API handlers, main) have 0 callers - this is expected
fi
if ! echo "$CONTEXT" | grep -q "\[callees\]"; then
# Missing callees - may be leaf function or index issue
# Leaf functions (console.log, throw) have 0 callees - this is expected
fi
CALLERS=$(claudemem --nologo callers suspectedBug --raw)
# 0 callers could mean:
# 1. Entry point (main, API handler) - expected
# 2. Dead code - use dead-code command (v0.4.0+)
# 3. Dynamically called - check for import(), eval, reflection
if echo "$CALLERS" | grep -qi "error\|not found"; then
# Actual error vs no callers
# Use AskUserQuestion
fi
CRITICAL: Never use grep/find/Glob without explicit user approval.
If claudemem fails or returns irrelevant results:
claudemem status// Fallback options (in order of preference)
AskUserQuestion({
questions: [{
question: "claudemem bug investigation failed or found no call chain. How should I proceed?",
header: "Debugging Issue",
multiSelect: false,
options: [
{ label: "Reindex codebase", description: "Run claudemem index (~1-2 min)" },
{ label: "Try different function name", description: "Search for related functions" },
{ label: "Use grep (not recommended)", description: "Traditional search - loses call chain tracing" },
{ label: "Cancel", description: "Stop investigation" }
]
}]
})
See ultrathink-detective skill for complete Fallback Protocol documentation.
| Anti-Pattern | Why Wrong | Correct Approach |
|--------------|-----------|------------------|
| grep "error" | No call relationships | claudemem --nologo context func --raw |
| Read random files | No direction | Trace callers/callees systematically |
| Fix symptom only | Bug returns | Trace to root cause with callers |
| Skip impact check | Miss related bugs | ALWAYS check all callers |
symbol to find where error appearscontext for callers + callees togethercallers chain to root causecallees to confirm the pathcallers of buggy code may be affectedcontext is your primary tool - Shows full call chaincallers - Find root cause, not just symptomcallees - Confirm the execution pathMaintained by: MadAppGang Plugin: code-analysis v2.7.0 Last Updated: December 2025 (v3.3.0 - Cross-platform compatibility, inline templates, improved validation)
development
Technical SEO audit methodology including crawlability, indexability, and Core Web Vitals analysis. Use when auditing pages or sites for technical SEO issues.
content-media
SERP analysis techniques for intent classification, feature identification, and competitive intelligence. Use when analyzing search results for content strategy.
data-ai
Schema.org markup implementation patterns for rich results. Use when adding structured data to content for enhanced SERP appearances.
development
Correlate content attributes with performance metrics across GA4, GSC, and SE Ranking. Identify what drives performance and build optimization hypotheses.