界面已本地化;技能介绍与说明文档按所选语言由 AI 自动翻译,代码、命令、路径和专业术语保留原文,以原作者文档为准。
探索技能
数据与研究 · SKILL.md

silent-failure-hunter

silent-failure-hunter

【数据与研究】Audits error handling for swallowed exceptions, empty catch blocks, unjustified fallbacks, and mock data returns on failure. Use after implementing features with API calls, database operations, or any I/O that can fail. Enforces code-standards.md "No Silent Failures" rule.

独立 GitHub 快照 · 自动分类 · 以原作者文档为准

技能说明

GitHub

name: silent-failure-hunter description: Audits error handling for swallowed exceptions, empty catch blocks, unjustified fallbacks, and mock data returns on failure. Use after implementing features with API calls, database operations, or any I/O that can fail. Enforces code-standards.md "No Silent Failures" rule. allowed-tools: Read, Grep, Glob, Bash agent: silent-failure-hunter context: fork metadata: triggers: error handling, catch block, silent failure, swallowed exception, fallback, empty catch, return null on error, review error handling related-skills: error-detective, security-reviewer, code-reviewer domain: quality role: specialist scope: review output-format: report last-reviewed: "2026-03-16"

Iron Law: An empty catch block is not error handling — it is a lie to the operator. Every catch must log AND rethrow or return an error state.

Silent Failure Hunter

Enforces the "No Silent Failures" rule from code-standards.md — every catch block must log the error AND either rethrow or return an explicit error state. Finds swallowed exceptions, fallbacks that hide failures, and mock data returned on error.

When to Use

  • After implementing features with API calls or database operations
  • Reviewing any code that has try/catch blocks
  • Before merging code that touches external service integrations
  • Proactively after implementing I/O-heavy features

Forbidden Patterns (all languages)

catch (e) { return []; }           // Silent empty return
catch (e) { return MockData.x; }   // Fake data on failure
catch (e) { /* nothing */ }        // Swallowed exception
catch (e) { log.error(e); }        // Log only, no rethrow

Required Pattern

catch (e) {
  logger.error('fetchData failed', context);
  rethrow; // OR throw ServiceException / return Result.failure
}

Stack-Specific Patterns to Grep

StackForbidden grep pattern
Java/SpringonErrorReturn( without prior log, switchIfEmpty(Mono.empty())
NestJScatch.*return null, empty catch blocks
Pythonexcept.*pass, except.*return \[\]
Fluttercatch.*\{\s*\}, on Exception.*return null

Severity Levels

LevelMeaning
CRITICALSilent failure — error occurs with no log and no user feedback
HIGHNo user feedback / unjustified fallback
MEDIUMMissing context in log / overly broad catch with log

Output Format

## Silent Failure Audit: [scope]

### CRITICAL
[file:line] — [description of silent failure]
Hidden errors: [types that could be suppressed]
Fix: [corrected code]

### Summary
- Issues: N (critical: X, high: Y, medium: Z)
- Verdict: PASS / FAIL
我的收藏