Empty catch finder
A collection of custom Claude Code Skills to supercharge your development workflow.From the repository description
npx -y skills add dcs-soni/skills --skill empty-catch-finderAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 2 commands, including `python scripts/find_empty_catches.py <directory>` and 1 more.
SKILL.md
3.8 KB, 849 tokens by cl100k_base, as published. Nobody here has run it
Empty Catch Block Finder
Detect silent error handlers that cause mysterious production failures.
Why This Matters
Empty catch blocks are silent killers:
try {
await saveOrder(order);
} catch (e) {
// Silent failure - order lost, no evidence
}
This skill finds them before they cause production incidents.
Quick Start
Empty Catch Analysis:
- [ ] Step 1: Scan for empty catch blocks
- [ ] Step 2: Assess risk level
- [ ] Step 3: Generate fix suggestions
Workflow
Step 1: Scan for Empty Catches
Find all empty/silent catch blocks:
python scripts/find_empty_catches.py <directory>
Detects:
catch (e) {}- completely emptycatch (e) { /* comment */ }- only commentsexcept: pass- Python silent passif err != nil { }- Go ignored errorscatch { return; }- silent returns
Step 2: Assess Risk Level
Each catch is categorized by risk:
| Risk | Pattern | Why Dangerous |
|---|---|---|
| π΄ Critical | Empty catch in async/database code | Data loss, corruption |
| π High | Empty catch in API handlers | Silent failures to users |
| π‘ Medium | Empty catch in utilities | Hidden bugs |
| π’ Low | Empty catch in tests/scripts | Usually intentional |
Step 3: Generate Fix Suggestions
Get suggested fixes:
python scripts/generate_fixes.py <directory> --output fixes.md
Fix patterns:
// β Before: Silent failure
catch (e) {}
// β
After: Logged + handled
catch (e) {
logger.error('Order save failed', { error: e, orderId: order.id });
throw new OrderSaveError('Failed to save order', { cause: e });
}
Utility Scripts
| Script | Purpose |
|---|---|
find_empty_catches.py | Find empty catch blocks |
generate_fixes.py | Suggest proper error handling |
Language Support
| Language | Patterns Detected |
|---|---|
| JavaScript/TypeScript | catch (e) {}, catch {} |
| Python | except: pass, except Exception: ... |
| Java | catch (Exception e) {} |
| Go | if err != nil { } (empty body) |
| C# | catch (Exception) {} |
See PATTERNS.md for full pattern reference.
Example
User: "Find silent error handlers in my codebase"
Output:
Found 8 empty catch blocks
π΄ CRITICAL (2)
src/services/payment.ts:45
catch (e) {} // In async payment processing!
src/db/users.ts:112
catch (e) { return null; } // Hides DB errors
π HIGH (3)
src/api/orders.ts:78
catch (error) { /* TODO: handle */ }
...
Integration with Linting
After fixing, prevent new empty catches:
ESLint:
{ "rules": { "no-empty": ["error", { "allowEmptyCatch": false }] } }
Python (Ruff):
[tool.ruff]
select = ["E722"] # bare-except
Related Skills
- incident-response-helper β Debug issues caused by silent failures
- stale-todo-finder β Find
// TODO: handle errorcomments
What ships with it: 4 files
18.1 KB alongside SKILL.md, 2 of them executable
scripts/
- find_empty_catches.pyruns8.0 KB
- generate_fixes.pyruns6.7 KB
- PATTERNS.md2.2 KB
- README.md1.1 KB