From thinking-skills
Tests the simplest hypothesis first when debugging, escalating to complex explanations only when evidence forces it. Includes a trigger-shrink gate for one-step fixes.
How this skill is triggered — by the user, by Claude, or both
Slash command
/thinking-skills:thinking-occams-razorThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Occam's Razor states: among competing hypotheses that fit the evidence equally well, prefer the one with the fewest assumptions. This skill operationalizes that principle for debugging: **test the simplest hypothesis first, and escalate to complex explanations only when evidence forces it.**
Occam's Razor states: among competing hypotheses that fit the evidence equally well, prefer the one with the fewest assumptions. This skill operationalizes that principle for debugging: test the simplest hypothesis first, and escalate to complex explanations only when evidence forces it.
The skill has a trigger-shrink gate: if the simplest hypothesis can be tested in one step, just test it — don't run the full enumeration-and-scoring procedure. Reserve the full procedure for situations where multiple hypotheses genuinely compete and the simplest is not obviously testable.
Core Principle: "Everything should be made as simple as possible, but no simpler." — Einstein
Decision flow:
Multiple explanations exist?
→ No → Use the available explanation
→ Yes → Can the simplest be tested in one step?
→ Yes → JUST TEST IT (trigger-shrink — skip full procedure)
→ No → Do they explain the evidence equally well?
→ No → Prefer the better explanation
→ Yes → RUN FULL OCCAM'S RAZOR PROCEDURE
Before running the full enumeration-and-scoring procedure, ask one question: "Can I test the simplest hypothesis in one step?"
If evidence already points to a specific cause, follow the evidence — don't downgrade to a "simpler" hypothesis it contradicts. For irreducibly complex domains (distributed consensus, concurrency), the simplest model is wrong.
Before running the full procedure, ask: "Can I test the simplest hypothesis in one step?"
List all plausible explanations for the observed behavior:
Bug: Users intermittently can't log in
Hypotheses:
A. Session token expiration edge case
B. Race condition in auth service
C. Database connection pool exhaustion
D. Complex interaction between CDN cache, load balancer, and session service
| Hypothesis | Assumptions |
|---|---|
| A. Token expiration | 1. Token validation has an edge case |
| B. Race condition | 1. Concurrent requests possible, 2. Shared mutable state exists |
| C. DB pool exhaustion | 1. Pool is undersized, 2. Connections are leaking |
| D. Complex interaction | 1. CDN caches auth, 2. LB sticky sessions fail, 3. Session sync delayed |
Count each independent assumption: +1 per assumption, +1 per component involved, +2 per external dependency, +2 for timing-dependent behavior, +3 for rare conditions, +5 for "perfect storm" scenarios.
Ensure simpler hypotheses actually explain the evidence:
Evidence: Failures correlate with high traffic periods
Hypothesis A (token edge case): Doesn't explain traffic correlation ✗
Hypothesis C (DB pool exhaustion): Explains traffic correlation ✓ — fewer assumptions than D
→ PREFERRED by Occam's Razor
Investigate hypotheses from fewest to most assumptions. Do not skip to complex hypotheses until simple ones are ruled out.
When simple explanations are ruled out with evidence, move to more complex ones. Never escalate on intuition alone.
A completed Occam's Razor analysis produces:
For trigger-shrink cases, the output may be a single line: "Tested simplest hypothesis X — confirmed/refuted."
| Anti-Pattern | Symptom | Correction |
|---|---|---|
| Oversimplifying irreducible domains | Applying "simplest" to distributed consensus or security models | "But no simpler" — respect domain complexity |
| Complexity bias | Assuming complex = sophisticated, testing complex hypotheses first | Test fewest-assumption hypotheses first, always |
| Trigger inflation | Running the full enumeration for a one-step test | If the simplest is one-step testable, just test it |
| Ignoring explanatory power | Choosing the simplest hypothesis that doesn't fit the evidence | Fewer assumptions doesn't beat not fitting the data |
| Local simplicity, systemic risk | Choosing a simple local fix that creates fragility elsewhere | Prefer systemic simplicity over local simplicity |
| Ritualistic assumption counting | Spending more time counting assumptions than testing | The point is prioritization, not precision; rough count is enough |
npx claudepluginhub tjboudreaux/cc-thinking-skills --plugin thinking-skillsEnumerates competing falsifiable hypotheses for bug symptoms with multiple plausible causes, then picks the cheapest observation that discriminates between them.
Debug complex issues using competing hypotheses with parallel investigation, evidence collection, and root cause arbitration. Use when bugs have multiple potential causes.
Provides systematic debugging framework for root cause analysis after 2+ failed fixes, complex failures, intermittent bugs, and circular debugging.