error-debugger — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited error-debugger (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Context-aware debugging that learns from past solutions. When an error occurs:
For ADHD users: Eliminates debugging frustration - instant, actionable fixes. For SDAM users: Recalls past solutions you've already found. For all users: Gets smarter over time as it learns from your codebase.
Extract key information:
{
error_type: "TypeError|ReferenceError|ECONNREFUSED|...",
message: "Cannot read property 'map' of undefined",
stack_trace: [...],
file: "src/components/UserList.jsx",
line: 42,
context: "Rendering user list"
}Query context-manager:
search memories for:
- error_type match
- similar message (fuzzy match)
- same file/component if available
- related tags (if previously tagged)If match found:
🔍 Found similar past error!
📝 3 months ago: TypeError in UserList component
✅ Solution: Added null check before map
⏱️ Fixed in: 5 minutes
🔗 Memory: procedures/{uuid}.md
Applying the same solution...If no match:
🆕 New error - analyzing...
(Will save solution after fix)See reference.md for comprehensive error pattern library.
Quick common patterns:
Format:
🔧 Error Analysis
**Type**: {error_type}
**Location**: {file}:{line}
**Cause**: {root_cause_explanation}
**Fix**:
// ❌ Current code const users = data.users; return users.map(user => <div>{user.name}</div>);
// ✅ Fixed code const users = data?.users || []; return users.map(user => <div>{user.name}</div>);
**Explanation**: Added optional chaining and default empty array to handle case where data or data.users is undefined.
**Prevention**: Always validate API response structure before using.
**Next steps**:
1. Apply the fix
2. Test manually
3. I'll create a regression testAfter fix confirmed working:
# Save to context-manager as PROCEDURE
remember: Fix for TypeError in map operations
Type: PROCEDURE
Tags: error, typescript, array-operations
Content: When getting "Cannot read property 'map' of undefined",
add optional chaining and default empty array:
data?.users || []Memory structure:
# PROCEDURE: Fix TypeError in map operations
**Error Type**: TypeError
**Message Pattern**: Cannot read property 'map' of undefined
**Context**: Array operations on potentially undefined data
## Solution
Use optional chaining and default values:
// Before const items = data.items; return items.map(...)
// After const items = data?.items || []; return items.map(...)
## When to Apply
- API responses that might be undefined
- Props that might not be passed
- Array operations on uncertain data
## Tested
✅ Fixed in UserList component (2025-10-17)
✅ Regression test: tests/components/UserList.test.jsx
## Tags
error, typescript, array-operations, undefined-handlingAutomatically invoke testing-builder:
create regression test for this fix:
- Test that component handles undefined data
- Test that component handles empty array
- Test that component works with valid dataCritical principle from self-analysis: Never give up on first obstacle. Try 3 approaches before abandoning a solution path.
When debugging an error, try these tools in sequence:
1. Search Past Solutions (context-manager)
# First approach: Check memory
search memories for error patternIf no past solution found → Continue to next approach
2. GitHub Copilot CLI Search
# Second approach: Search public issues
copilot "Search GitHub for solutions to: $ERROR_MESSAGE"If Copilot doesn't find good results → Continue to next approach
3. Web Search with Current Context
# Third approach: Real-time web search
[Use web search for latest Stack Overflow solutions]If web search fails → Then ask user for more context
What happened: Tried GitHub MCP → Got auth error → Immediately gave up
What should have happened:
gh CLI → Check if authenticatedOutcome: The gh CLI WAS authenticated and worked perfectly. We gave up too early.
When fixing an error:
// Pattern: Try 3 fix approaches
async function debugError(error) {
// Approach 1: Past solution
const pastFix = await searchMemories(error);
if (pastFix?.success_rate > 80%) {
return applyPastFix(pastFix);
}
// Approach 2: Pattern matching
const commonFix = matchErrorPattern(error);
if (commonFix) {
return applyCommonFix(commonFix);
}
// Approach 3: External search (Copilot/Web)
const externalSolution = await searchExternalSolutions(error);
if (externalSolution) {
return applyExternalSolution(externalSolution);
}
// Only NOW ask for more context
return askUserForMoreContext(error);
}When integrations are available, use them in this order:
For Error Search:
For Solutions:
Track debugging approach success:
{
"error_id": "uuid",
"approaches_tried": [
{"type": "memory_search", "result": "no_match"},
{"type": "copilot_search", "result": "success", "time": "5s"},
{"type": "applied_fix", "verified": true}
],
"total_time": "30s",
"lesson": "Copilot found solution on second try"
}Key insight: Most "failed" approaches are actually "didn't try enough" approaches.
Before analyzing new error:
// Search context-manager
const pastSolutions = searchMemories({
type: 'PROCEDURE',
tags: [errorType, language, framework],
content: errorMessage,
fuzzyMatch: true
});
if (pastSolutions.length > 0) {
// Show user the past solution
// Ask if they want to apply it
// If yes, apply and test
// If no, analyze fresh
}Track which solutions work:
{
solution_id: "uuid",
error_pattern: "TypeError.*map.*undefined",
times_applied: 5,
success_rate: 100%,
last_used: "2025-10-15",
avg_fix_time: "2 minutes"
}Sort solutions by success rate when multiple matches found.
Some errors are project-specific:
// BOOSTBOX-specific
Error: "Boost ID not found"
→ Solution: Check boost exists before processing
// Tool Hub-specific
Error: "Tool not installed"
→ Solution: Run tool installer first
// Save these as PROJECT-specific proceduresAfter providing fix:
Automatically invoke: testing-builder
Create regression test for: {error_scenario}
Ensure test fails without fix, passes with fixQuery for similar errors:
search memories for:
- PROCEDURE type
- Error tag
- Similar message
- Same file/componentSave new solutions:
Save as PROCEDURE:
- Error pattern
- Solution
- Code examples
- Tested timestampFor complex fixes:
If fix requires significant refactoring:
→ Invoke rapid-prototyper
→ Create isolated example showing fix
→ User validates before applying to codebase| Error | Quick Fix | ||
|---|---|---|---|
undefined.map | `data?.array | []` | |
X is not a function | Check function exists | ||
ECONNREFUSED | Check service running | ||
CORS | Configure CORS headers | ||
404 | Verify route exists | ||
500 | Check server logs | ||
Timeout | Increase timeout value | ||
Cannot find module | Install dependency |
~/.claude-memories/procedures/ (Linux/macOS) or %USERPROFILE%\.claude-memories\procedures\ (Windows)✅ Common errors fixed instantly (<30 seconds) ✅ Past solutions automatically recalled ✅ All fixes include code examples ✅ Regression tests created automatically ✅ Solutions saved for future reference ✅ Debugging gets faster over time
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.