thinking-first-principles — Claude Code skill: rebuild from facts
A skill that makes the agent separate real constraints from convention and rebuild the simplest solution. Useful when a task looks too costly or impossible.
npx skills add tjboudreaux/cc-thinking-skills --skill thinking-first-principles -a claude-codeWhat thinking-first-principles does
The skill kicks in when a limit is taken as given: "too expensive", "impossible", "we've always done it this way". The agent breaks the problem down to primitives and rebuilds the simplest thing that fits the real constraints.
It runs as a fixed procedure. First the agent lists every constraint, including the unspoken ones. Each gets a tag: physics or math, regulation or contract, measured fact, or convention and authority. The first three stay binding; the rest are dropped unless someone can back them with evidence. Then comes the rebuild from what's left, a check against real needs, and the cheapest test that would falsify the result.
Inside there is a single SKILL.md with the procedure and a section on when not to use it. A constraint backed by physics, law or measured capacity gets accepted, and you optimize inside it. A proven library or protocol also rules out a rebuild. During an incident you fix the likeliest cause first and save the redesign for afterwards.
What it helps with
- tell real constraints from inherited assumptions
- rebuild a solution once analogy stops working
- check an estimate that rests on vendor pricing instead of a derivation
- cut moving parts out of an architecture at the start
- find a cheap test that would falsify the chosen approach
Example prompts for the agent
- break this constraint down to first principles: what is physics here and what is convention
- we're told this can't be done — check what the ban actually rests on
- rebuild the solution from verified requirements only
How to install thinking-first-principles
1Skills CLI (Vercel)
npx skills add tjboudreaux/cc-thinking-skills --skill thinking-first-principles -a claude-code2Manually: put the files in place
~/.claude/skills/thinking-first-principles/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/thinking-first-principles/
1Skills CLI (Vercel)
npx skills add tjboudreaux/cc-thinking-skills --skill thinking-first-principles -a codex2Manually: put the files in place
.agents/skills/thinking-first-principles/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add tjboudreaux/cc-thinking-skills --skill thinking-first-principles -a cursor2Manually: put the files in place
.cursor/skills/thinking-first-principles/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install tjboudreaux/cc-thinking-skills thinking-first-principles2Manually: put the files in place
.github/skills/thinking-first-principles/SKILL.md1Skills CLI (Vercel)
npx skills add tjboudreaux/cc-thinking-skills --skill thinking-first-principles -a gemini-cli2Platform CLI
gemini skills install https://github.com/tjboudreaux/cc-thinking-skills --path skills/thinking-first-principlesManually: put the files in place
.devin/skills/thinking-first-principles/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add tjboudreaux/cc-thinking-skills --skill thinking-first-principles -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about thinking-first-principles
How do I install thinking-first-principles in Claude?
Run npx skills add tjboudreaux/cc-thinking-skills --skill thinking-first-principles -a claude-code. The skill file lands at ~/.claude/skills/thinking-first-principles/SKILL.md.
What does thinking-first-principles do?
It helps the agent decompose a problem into primitives, drop unsupported assumptions and rebuild a simple solution from what remains. The output covers tagged constraints, discarded conventions, the rebuild and a falsifying test.
When should I not use this skill?
When the constraint is verified physics, regulation or a measured limit, accept it and optimize within. A proven library or protocol also settles the question, and during an incident you fix the likely cause first.
Source text
SKILL.md · MIT
---
name: thinking-first-principles
description: When a constraint is treated as fixed, separate physics from convention, keep only independently supported primitives, and rebuild the simplest solution that satisfies real constraints.
disable-model-invocation: true
---
# First Principles
Strip assumed constraints to independently supported primitives, then rebuild. Escape analogy when convention fails or looks artificially expensive.
## When to Use
- A constraint is treated as fixed ("too expensive," "impossible," "always done this way") without independent support.
- Convention or analogy has failed, stalled, or only yields weak incremental variants.
- Greenfield design where industry defaults may smuggle false requirements.
- Cost or feasibility claims rest on pricing, precedent, or authority rather than physics, math, or measured need.
## When NOT to Use
- The constraint is verified physics, hard regulation, or measured capacity → accept it and optimize within it.
- A proven standard library, protocol, or known-good pattern already fits → use it; do not re-derive.
- Time-critical incidents → act on the most likely cause first; reserve first-principles rebuild for post-incident redesign.
- Incremental polish of a working system with no false-constraint signal → skip.
## Procedure
1. **State the problem and claimed constraints.** List every limit treated as fixed (cost, scale, stack, process, "must use X").
2. **Classify each constraint.** Tag as `physics/math`, `regulation/contract`, `measured fact`, or `convention/analogy/authority`. Keep only the first three as binding unless evidence upgrades a convention.
3. **Decompose to primitives.** Required inputs, conservation/complexity bounds, true non-negotiables. Demand independent support (measurement, derivation, primary requirement)—not vendor pricing or competitor precedent.
4. **Discard unsupported assumptions.** For each convention tag, state a falsifier. Drop or renegotiate anything lacking support.
5. **Rebuild from remaining primitives only.** Simplest solution that satisfies binding constraints and ignores artificial ones. Prefer commodity inputs and fewer moving parts over analogy.
6. **Validate and stop.** Check against real physics, contracts, and measured needs. Define the cheapest kill test. Stop when a coherent rebuild plus discriminating validation exists, or when only verified hard constraints remain.
## Output
Emit a first-principles rebuild:
- `claimed_constraints`: list with classification tags
- `primitives`: independently supported truths only
- `discarded_assumptions`: conventions dropped and why
- `rebuild`: solution derived only from primitives
- `binding_residuals`: real limits that remain
- `kill_test`: cheapest check that would falsify the rebuild
## Verification
- **Independence check:** every primitive must cite measurement, derivation, or primary requirement—not precedent alone.
- **No smuggled analogy:** if the rebuild still depends on "how others do it" without a primitive, strip it.
- **Constraint honesty:** verified physics/regulation must remain; do not wish them away.
- **Over-application guard:** if a standard solution is already optimal under verified constraints, do not rebuild for novelty.
- **Stop:** one decompose → classify → rebuild → kill-test pass; do not recurse without new evidence.
© tjboudreaux · MIT · tjboudreaux/cc-thinking-skills