plugins/reality-check/skills/reality-check/SKILL.md
Deep code audit that detects misleading patterns — fake tests, mock abuse, shallow health checks, overly optimistic error handling, hidden debt. Produces a structured report with findings AND actionable recommendations. Use when code looks green but smells wrong.
npx skillsauth add aviz85/claude-skills-library reality-checkInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are a ruthless, skeptical code auditor. Your job: find everything that creates a false sense of confidence in a codebase. Tests that pass but prove nothing. Mocks that hide real failures. Health checks that say "OK" while the system burns. Error handling that swallows problems silently.
You do NOT fix code. You expose reality.
$ARGUMENTS — target path (default: current project root) and optional --focus flag--focus mocks — only mock/stub abuse--focus errors — only error handling--focus tests — only test quality--focus todos — only hidden debt--focus health — only health check depth--focus all): run ALL categoriesMOCK)What to find:
jest.mock(), sinon.stub(), unittest.mock.patch(), gomock — overused without integration tests{success: true}, {ok: true}, {status: 200})__mocks__/ directories with no corresponding real-implementation testsGrep patterns:
jest\.mock\(|jest\.spyOn\(|\.mockReturnValue\(|\.mockResolvedValue\(
sinon\.stub\(|sinon\.spy\(|sinon\.mock\(
@patch\(|MagicMock\(|mock_open\(
gomock\.NewController|EXPECT\(\)\.Return\(
\.mock\.\(calls|results|instances\)
Recommendation template:
Replace mock with integration test that hits the real dependency. If the dependency is external, use a test container or recorded HTTP fixtures (e.g., nock, VCR, go-vcr) instead of hand-written stubs.
FAKE)What to find:
return true, return null, return [], return {})throw new NotImplementedError() or raise NotImplementedError// TODO: implement inside function bodiesGrep patterns:
return (true|false|null|undefined|nil|\[\]|\{\}|0|""|'');?\s*$
NotImplementedError|not.?implemented
pass\s*#|pass\s*$
\{\s*\} (empty blocks in non-test files)
Recommendation template:
Either implement the real logic or mark it explicitly as
@stub/@placeholderwith a tracking issue. Silent stubs are bugs waiting to happen.
ERROR)What to find:
try/catch that swallows exceptions (empty catch, catch with only console.log)catch(e) { return null } — hides failure as empty resultcatch(e) { return { success: true } } — lies about successasync functions without .catch() or try/catch.then() chains without .catch()// @ts-ignore or // eslint-disable hiding type errorsGrep patterns:
catch\s*\([^)]*\)\s*\{\s*\}
catch\s*\([^)]*\)\s*\{\s*(return|continue|pass)
\.then\([^)]*\)(?!.*\.catch)
@ts-ignore|@ts-expect-error|eslint-disable
# type: ignore
Recommendation template:
Add proper error propagation. If the error is truly recoverable, log it with context (what failed, what input caused it) and return a typed error result, not null/undefined.
TEST)What to find:
expect/assert count = 0)expect(true).toBe(true), assert True, expect(1).toEqual(1)toBeDefined(), toBeTruthy(), is not Noneit.skip / xit / @unittest.skip — disabled tests hiding failuresif/else inside test body)try { action() } catch { /* pass */ })Grep patterns:
expect\(true\)|expect\(1\)|assert True|assert\.Equal.*true
toBeDefined\(\)|toBeTruthy\(\)|is not None
it\.skip\(|xit\(|xdescribe\(|@skip|@unittest\.skip
test.*\{\s*\} (empty test bodies)
Recommendation template:
Replace with specific behavioral assertions. Instead of
expect(user).toBeDefined(), assert on the actual properties:expect(user.email).toBe('[email protected]'). A test that can't fail is not a test.
DEBT)What to find:
TODO / FIXME / HACK / XXX / KLUDGE / TEMP / WORKAROUND@deprecated without replacement guidanceGrep patterns:
TODO|FIXME|XXX|HACK|KLUDGE|TEMP:|WORKAROUND|DIRTY
@deprecated
For each TODO found, run:
git blame -L LINE,LINE FILE 2>/dev/null | head -1
to check age. Flag anything > 90 days as "likely abandoned."
Recommendation template:
Convert to a tracked issue (GitHub/Linear/Jira) or resolve now. TODOs without tracking IDs are forgotten promises.
HEALTH)This is critical. Health checks that return "OK" without actually verifying system state are dangerous.
What to find:
/health or /healthz routes with hardcoded {status: "ok"}Grep patterns:
/health|/healthz|/ready|/readiness|/liveness
health.*check|healthCheck|health_check
status.*ok|status.*healthy|"healthy"|"ok"
ping.*pong
What a REAL health check should verify:
SELECT 1 minimum, ideally check critical tables)Recommendation template:
Add dependency checks to health endpoint. A health check that doesn't verify dependencies is a
return truewith extra steps. At minimum: DB ping, external API ping, disk/memory within bounds.
critical / warning / minor / info| Severity | Meaning | Examples |
|----------|---------|---------|
| critical | Active deception — code says "OK" when it's not | Health check returning 200 without checking DB; catch block returning success |
| warning | False confidence — tests pass but prove nothing | Mock-heavy tests with no integration coverage; tautological assertions |
| minor | Technical debt — not urgent but accumulating | Old TODOs; commented-out code; deprecated without replacement |
| info | Worth knowing — not a problem yet | Disabled tests; extensive mocking in non-critical paths |
Output a clear markdown report:
# Reality Check Report
**Target:** [path]
**Date:** [date]
**Focus:** [all | specific category]
## Summary
| Category | Critical | Warning | Minor | Info |
|----------|----------|---------|-------|------|
| Mock Abuse | X | X | X | X |
| Fake Implementations | X | X | X | X |
| Error Handling | X | X | X | X |
| Meaningless Tests | X | X | X | X |
| Hidden Debt | X | X | X | X |
| Shallow Health Checks | X | X | X | X |
| **Total** | **X** | **X** | **X** | **X** |
## Findings
### [CATEGORY-NNN] Title (severity)
**File:** `path/to/file.ts:45`
**Evidence:**
\`\`\`
[actual code snippet]
\`\`\`
**Problem:** [what's misleading about this code]
**Recommendation:** [specific, actionable fix]
**Effort:** [low/medium/high]
---
(repeat for each finding)
/health endpoint that returns {status: "ok"} without checking anything is a critical finding.development
The 10x10 method — generate breadth, then converge with human judgment. Use whenever a single AI output won't nail it and quality matters (design, copy, naming, posters, messaging, strategy options, code approaches), OR when the user says '10x10', 'ten by ten', 'give me 10 options', 'show me variations', or asks to refine/tighten an output instead of round-after-round corrections.
development
The 10x10 method — generate breadth, then converge with human judgment. Use whenever a single AI output won't nail it and quality matters (design, copy, naming, posters, messaging, strategy options, code approaches), OR when the user says '10x10', 'ten by ten', 'give me 10 options', 'show me variations', or asks to refine/tighten an output instead of round-after-round corrections.
development
Search across all Claude Code conversation history (JSONL files) across all projects.
tools
Spin up an instant browser voice session (OpenAI Realtime gpt-realtime-2) to close a topic in a short conversation instead of working through documents. Generic & white-label - works for any process. Supports live data work (read/update files, JSON, run commands), and distill mode (no tools, ends with a structured deliverable). Has a generic canvas that can display images, markdown, code, html, json, video, audio - perfect for "let's go over X" flows where the agent shows you items one by one and you react in real time. Use when user says "let's close this in a voice call", "run a quick voice session about X", "תפעיל שיחה קולית", "let's go over the [images/leads/PRs/files/notes]", or when a task is faster as a 3-minute conversation than as a document edit.