🎯

sanity-check

🎯Skill

from elliotjlt/claude-skill-potions

VibeIndex|
What it does

Validates key assumptions before proposing solutions by systematically checking code, logs, and system state to prevent building on incorrect premises.

πŸ“¦

Part of

elliotjlt/claude-skill-potions(26 items)

sanity-check

Installation

git cloneClone repository
git clone https://github.com/ElliotJLT/Claude-Skill-Potions.git ~/.claude/skills
git cloneClone repository
git clone https://github.com/ElliotJLT/Claude-Skill-Potions.git .claude-skills
ConfigurationMCP configuration (may be incomplete)
{ "hooks": { "UserPromptSubmit": [ { "hooks": [ { ...
πŸ“– Extracted from docs: elliotjlt/claude-skill-potions
1Installs
-
AddedFeb 4, 2026

Skill Details

SKILL.md

|

Overview

# Sanity Check

Claude confidently builds on assumptions that turn out to be wrong. "The auth

middleware probably checks X" becomes a 50-line solution for a problem that

doesn't exist. This skill forces verification of key assumptions before

building on them.

When To Activate

  • Using words like "probably", "likely", "I assume", "should be"
  • Explaining how code works without reading it
  • Diagnosing a bug without reproducing it
  • Making claims about what exists or doesn't exist
  • Building a solution based on inferred behavior
  • User asks "why is X happening?" and you're about to guess

Instructions

Identify Your Assumptions

Before proposing a solution, list what you're assuming:

```markdown

Assumptions

  1. [The function X exists and does Y]
  2. [The error is caused by Z]
  3. [This file is imported by W]
  4. [The config value is set to V]

```

Verify Before Building

For each assumption, verify it:

| Assumption | Verification | Status |

|------------|--------------|--------|

| Function X does Y | Read the function | Verified / Wrong |

| Error caused by Z | Check error logs | Verified / Wrong |

| File imported by W | Grep for imports | Verified / Wrong |

Stop if any key assumption is wrong. Don't patch - reassess.

Types of Assumptions

Existence assumptions:

  • "There's probably a config file for this"
  • "The API endpoint likely exists"
  • Verify: find, grep, ls

Behavior assumptions:

  • "This function probably validates input"
  • "The middleware likely checks auth"
  • Verify: Read the actual code

Causation assumptions:

  • "The error is probably from X"
  • "This is likely failing because Y"
  • Verify: Reproduce, check logs, trace execution

State assumptions:

  • "The database probably has this column"
  • "The env var is likely set"
  • Verify: Check schema, check actual values

The Assumption Cascade

```

Wrong assumption: "Auth is handled by middleware"

↓

Build solution: "Just call the protected endpoint"

↓

Solution fails: "Auth not working"

↓

Wrong diagnosis: "Middleware must be misconfigured"

↓

Deeper hole: "Let me fix the middleware..."

↓

Reality: Auth was in the route handler all along

```

Break the cascade early. Verify before building.

Output Format

When working on non-trivial problems:

```markdown

Sanity Check

Key assumptions:

  1. [assumption] β†’ Verified by [how]
  2. [assumption] β†’ Verified by [how]
  3. [assumption] β†’ ⚠️ NOT verified, checking...

Proceeding with: [list verified assumptions]

```

NEVER

  • Say "probably" or "likely" without then verifying
  • Diagnose bugs without reproducing or checking logs
  • Build multi-step solutions on unverified assumptions
  • Explain code behavior without reading the code
  • Assume error messages are accurate (verify root cause)

ALWAYS

  • List assumptions explicitly before building on them
  • Verify existence before assuming something exists
  • Read code before explaining what it does
  • Reproduce issues before diagnosing them
  • Stop and reassess when an assumption proves wrong

Example

User: "The user signup isn't sending confirmation emails"

Bad approach (assumption cascade):

> "The email service probably isn't configured correctly. Let me check

> the SMTP settings... Actually, the email template might be wrong...

> Let me also check if the queue is processing..."

Good approach (sanity check):

```markdown

Sanity Check

Assumptions to verify:

  1. Signup actually triggers email sending
  2. Email sending code exists and is called
  3. Email service is configured
  4. No errors in logs

Verifying #1:

Reading signup handler... Found: sendConfirmationEmail(user) on line 45.

Verified: signup does call email function.

Verifying #2:

Reading sendConfirmationEmail... Found: it calls emailService.send().

But wait - there's a if (config.emailEnabled) check on line 12.

Verifying #3:

Checking config... emailEnabled: false in development.

Root cause found: Emails disabled in config, not a bug.

```

No assumption cascade. Verified each step. Found real cause.

More from this repository10

🎯
pre-mortem🎯Skill

Conducts a proactive risk analysis by imagining potential project failure scenarios and developing preventative strategies.

🎯
eta🎯Skill

Generates data-driven time estimates for coding tasks by analyzing codebase scope, complexity, and potential risks.

🎯
you-sure🎯Skill

Pauses and presents a detailed checklist before executing potentially destructive or high-impact operations, requiring explicit confirmation.

🎯
rubber-duck🎯Skill

Helps users articulate technical problems clearly by asking structured diagnostic questions before proposing solutions.

🎯
battle-plan🎯Skill

Orchestrates a comprehensive planning ritual by sequentially using rubber-duck, pre-mortem, and ETA skills to thoroughly assess and validate development tasks before coding begins.

🎯
pipeline🎯Skill

Sequentially executes multi-stage tasks with strict stage-by-stage progression and checkpoint validation.

🎯
keep-it-simple🎯Skill

Prevents premature complexity by resisting over-engineering and enforcing the Rule of Three before adding abstractions.

🎯
debug-to-fix🎯Skill

Systematically debug issues by clarifying the problem, investigating root causes, implementing fixes, and verifying solutions through a structured, methodical approach.

🎯
fan-out🎯Skill

Distributes and processes a list of inputs across multiple parallel function calls to improve efficiency and throughput.

🎯
dont-be-greedy🎯Skill

Prevents Claude from exploiting loopholes or manipulating instructions by enforcing ethical boundaries and responsible interaction.