Use when multiple causes could explain a bug โ test the fewest-assumption hypothesis first; escalate to complex only when evidence forces it. Skip the full procedure when one step resolves it.
Installs just this skill. Get the whole plugin for auto-invocation.
โก How it fires
How this skill gets triggered: by you, by Claude, or both.
Fires itselfClaude auto-loads it when your prompt matches the work.
You can call itInvoke it directly when you want it.
Slash command/thinking-occams-razor
๐๏ธ Context preview
The summary Claude sees to decide when to auto-load this skill.
Use when multiple causes could explain a bug โ test the fewest-assumption hypothesis first; escalate to complex only when evidence forces it. Skip the full procedure when one step resolves it.
๐ Stats
Stars863
Forks126
LanguageJavaScript
LicenseMIT
๐ฆ Ships with thinking-skills
</> SKILL.md
thinking-occams-razor.SKILL.md
---name: thinking-occams-razor
description: Use when multiple causes could explain a bug โ test the fewest-assumption hypothesis first; escalate to complex only when evidence forces it. Skip the full procedure when one step resolves it.
---# Occam's Razor
## Overview
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
## When to Use
- Multiple hypotheses could explain a bug and the simplest is NOT obviously testable in one step
- You're about to investigate a complex hypothesis without first testing a simpler one
- Architecture or design decisions where several approaches are viable and differ in complexity
- Root cause analysis where several causes seem plausible
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
```
## When NOT to Use
- **Evidence already points to a specific cause.** Follow the evidence; don't downgrade to a "simpler" hypothesis it contradicts.
- **The domain is irreducibly complex** (distributed consensus, concurrency, security threat models). The simplest model is wrong; don't oversimplify ("but no simpler").
- **Only one plausible explanation exists.** There's nothing to compare โ just test it.
- **"Simple" would mean ignoring a known interaction or skipping a load-bearing safeguard.** Local simplicity that creates systemic risk isn't parsimony.
- **The trigger check resolves it.** If you can test the simplest hypothesis in one step and it's confirmed, you're done โ don't enumerate for completeness.
## Trigger Card
Before running the full enumeration-and-scoring procedure, ask one question: **"Can I test the simplest hypothesis in one step?"**
1. **Identify the simplest hypothesis** โ the one with the fewest assumptions that still explains the evidence.
2. **Can you test it in one step?** โ Yes โ **Just test it.** If confirmed, report and stop. If refuted, move to the next simplest.
3. **If it can't be tested in one step** โ run the full Occam's Razor procedure (enumerate, count assumptions, verify explanatory power, test in order).
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.
## Procedure
### Trigger Check (Fast Path)
Before running the full procedure, ask: **"Can I test the simplest hypothesis in one step?"**
- Yes โ Test it. If confirmed, report and stop. If falsified, move to the next simplest.
- No โ The simplest hypothesis requires non-trivial investigation โ run the full procedure below.
### Full Procedure: When the Trigger Check Doesn't Resolve
#### Step 1: Enumerate Competing Hypotheses
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
```
#### Step 2: Count Assumptions per Hypothesis
| 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 |
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.
#### Step 3: Verify Explanatory Power
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
```
#### Step 4: Test in Order of Fewest Assumptions
Investigate hypotheses from fewest to most assumptions. Do not skip to complex hypotheses until simple ones are ruled out.
#### Step 5: Escalate Complexity Only When Evidence Forces It
When simple explanations are ruled out with evidence, move to more complex ones. Never escalate on intuition alone.
## Output Contract
A completed Occam's Razor analysis produces:
1. **Trigger Check Result** โ whether the simplest hypothesis was testable in one step
2. **Hypothesis Ranking** โ ordered by assumption count, with each hypothesis' assumptions listed
3. **Explanatory Power Check** โ which hypotheses fit the evidence
4. **Test Order and Results** โ which hypotheses were tested, in what order, and the outcome
5. **Conclusion** โ the confirmed hypothesis (or the next to test if unresolved)
For trigger-shrink cases, the output may be a single line: "Tested simplest hypothesis X โ confirmed/refuted."
## Anti-Patterns
| 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 |