Extract & Audit Error Codes
Cross-language skill for finding, cataloguing, and standardizing error codes and messages in any codebase.
When to use
- "unknown error code" warning appears at runtime
- New error messages need codes assigned
- Error messages are inconsistent or duplicated across modules
- Building or auditing an error registry
Instructions
1. Discover all error definitions
# JavaScript / TypeScript
grep -rn "throw new Error\|createError\|ErrorCode\.\|ERROR_" src/ --include="*.ts" --include="*.js"
# Python
grep -rn "raise \|class.*Error\|class.*Exception" . --include="*.py"
# Go
grep -rn "errors.New\|fmt.Errorf\|var Err" . --include="*.go"
# Rust
grep -rn "Err(\|thiserror\|anyhow" . --include="*.rs"
2. Check for unregistered errors
Compare discovered errors against the error registry file (e.g. errors.json, error_codes.py, errors.go).
Flag any error string not present in the registry.
3. Assign codes to new errors
- Use sequential numeric codes within the module's range (e.g. AUTH_001–AUTH_099)
- Format:
<MODULE>_<NNN>(e.g.GATE_001,HOOK_042) - Add to the registry with: code, message template, severity (info/warn/error/fatal), owner module
4. Report
Output a table:
| Code | Message | Module | Status |
|---|---|---|---|
| GATE_001 | Identity verification failed | identity-gate | registered |
| HOOK_042 | Circuit breaker open | token-budget-guard | NEW — needs code |
5. Verify
Re-run discovery grep after updating the registry to confirm 0 unregistered errors remain.