Find empty catch blocks, swallowed errors, silent fallbacks, missing logging. Use for thorough reviews or standalone audit.
Finds empty catch blocks, swallowed errors, and silent fallbacks that hide problems from users and developers.
/plugin marketplace add GGPrompts/TabzBeads/plugin install tools@tabz-beadsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
Specialized reviewer for error handling. Zero tolerance for silent failures.
/code-review:silent-failures # Audit uncommitted changes
/code-review:silent-failures src/api # Audit specific directory
Find all error handling in the diff:
# Get changed files
git diff --name-only HEAD
# In each file, find:
# - try-catch blocks
# - .catch() handlers
# - error callbacks
# - fallback/default values on failure
# - optional chaining that might hide errors
For every error handling location, check:
Red flags to find:
| Pattern | Severity | Issue |
|---|---|---|
| Empty catch block | CRITICAL | catch(e) {} - error completely hidden |
| Catch with only log | HIGH | catch(e) { log(e) } - continues silently |
| Return null on error | HIGH | catch(e) { return null } - caller won't know |
| Optional chain overuse | MEDIUM | foo?.bar?.baz hiding operation failures |
| Fallback without log | HIGH | Silent degradation, hard to debug |
| Retry without notify | MEDIUM | User doesn't know retries are happening |
| Generic error message | MEDIUM | "Something went wrong" - not actionable |
Rate each issue 0-100:
| Score | Meaning |
|---|---|
| 0-25 | Might be intentional, can't verify |
| 26-50 | Probably an issue but low impact |
| 51-79 | Real issue, moderate impact |
| 80-89 | Verified silent failure, will cause debugging pain |
| 90-100 | Critical - error completely hidden, data could be lost |
Only report issues with confidence ≥80.
Return JSON:
{
"scope": "error-handling",
"files_checked": ["src/api.ts", "src/hooks/useData.ts"],
"issues": [
{
"severity": "critical",
"file": "src/api.ts",
"line": 45,
"pattern": "empty-catch",
"code": "catch(e) { /* TODO */ }",
"issue": "Error completely swallowed. Any failure in fetchUser() will silently return undefined.",
"hidden_errors": ["Network failures", "Auth errors", "Rate limits", "Server errors"],
"user_impact": "User sees blank screen with no explanation. Support gets no logs.",
"confidence": 95,
"suggestion": "Log error with context, show user-friendly message, or propagate to error boundary"
},
{
"severity": "high",
"file": "src/hooks/useData.ts",
"line": 23,
"pattern": "silent-fallback",
"code": "const data = response?.data ?? []",
"issue": "Silently falls back to empty array if response is malformed",
"hidden_errors": ["API response format changes", "Partial response failures"],
"user_impact": "User sees empty list instead of error. Thinks feature is working.",
"confidence": 82,
"suggestion": "Validate response structure, throw descriptive error if malformed"
}
],
"passed": false,
"summary": "Found 2 silent failure patterns that will cause debugging nightmares"
}
The main reviewer can spawn this skill for thorough mode:
Task(
subagent_type="code-review:reviewer",
prompt="THOROUGH review - include silent failure audit"
)
Run directly on any codebase:
/code-review:silent-failures # Audit uncommitted changes
/code-review:silent-failures src/api # Audit specific directory
ALWAYS flag (≥90 confidence):
Usually flag (80-89 confidence):
Skip (<80 confidence):
Be thorough and uncompromising about error handling quality:
Remember: Every silent failure you catch prevents hours of debugging frustration.
This skill should be used when the user asks to "create a slash command", "add a command", "write a custom command", "define command arguments", "use command frontmatter", "organize commands", "create command with file references", "interactive command", "use AskUserQuestion in command", or needs guidance on slash command structure, YAML frontmatter fields, dynamic arguments, bash execution in commands, user interaction patterns, or command development best practices for Claude Code.
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.
This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.