skills/andurilcode/skills/first-principles-thinking

first-principles-thinking

SKILL.md

First Principles Thinking

Core principle: Strip away assumptions, conventions, and analogies. Reduce everything to the fundamental truths you know to be true, then rebuild from there. Most thinking is by analogy — "we do it this way because that's how it's done." First principles asks: why is it done that way at all?


The Core Process

Step 1: Identify the Current Belief or Solution

State clearly what is currently assumed, accepted, or proposed:

  • What is the existing approach?
  • What problem is it trying to solve?
  • What does everyone in this space assume to be true?

Step 2: Challenge Every Assumption

For each element of the current approach, ask:

  • "Is this actually true, or do we believe it because we've always believed it?"
  • "Is this a constraint of reality, or a constraint of convention?"
  • "What would have to be true for this assumption to be wrong?"

Distinguish between:

  • Physical constraints: Laws of nature, math, physics — these are real
  • Resource constraints: Time, money, people — real but changeable
  • Conventional constraints: "You can't do X" meaning "nobody has done X yet"
  • Inherited assumptions: Decisions made for past conditions that no longer apply

Step 3: Identify the Fundamental Truths

What do you actually know, stripped of convention?

  • What is the core need being served?
  • What are the irreducible requirements?
  • What would this look like if you designed it from zero, knowing only what's physically true?

Step 4: Rebuild From the Ground Up

Starting only from fundamental truths, reconstruct the solution:

  • What's the simplest approach that satisfies the real requirements?
  • What would this look like if invented today, with today's capabilities?
  • What existing constraints can be eliminated now that you're not inheriting them?

Output Format

🏛️ Current Belief / Approach

State what's being questioned:

  • The existing design, strategy, or assumption
  • Why it exists (historical or conventional reason)
  • What problem it was meant to solve

🔬 Assumption Deconstruction

For each major assumption:

Assumption Type Actually true? Evidence
"We need X to do Y" Conventional Maybe not Reason
"This requires Z" Physical Yes Because...
"Users expect A" Inherited Unvalidated Never tested

🧱 Fundamental Truths Identified

What do we actually know, independent of convention?

  • Core need: [The real underlying need being served]
  • Hard constraints: [What is genuinely immovable]
  • Validated facts: [What has been empirically confirmed]

🔨 Rebuilt Solution

Starting from fundamentals:

  • What does the solution look like without inherited assumptions?
  • What changes dramatically?
  • What stays the same (and why — what fundamental truth supports it)?
  • What's now possible that wasn't in the old frame?

⚠️ Assumption Risks

Which surviving assumptions are highest-risk?

  • If any single assumption proves wrong, what breaks?
  • Which assumptions should be validated before committing?

Thinking Triggers

  • "What is this actually trying to accomplish at the most basic level?"
  • "If we were building this today with no legacy, what would we do?"
  • "Is this a law of nature or a law of habit?"
  • "Who decided this was the right way, and what were their constraints?"
  • "What would a brilliant outsider — who doesn't know our conventions — suggest?"
  • "Are we solving the problem, or are we solving our version of the problem?"

Analogy vs. First Principles

Most thinking operates by analogy:

"We do it like company X does it" / "The industry standard is Y" / "That's how it's always been done"

Analogy-based thinking is fast and usually adequate. But it inherits the constraints and mistakes of the original. When something is fundamentally broken or when you need a step-change improvement — not an incremental one — analogy thinking will never get you there.

First principles is slower but the only path to genuinely novel solutions.


Example Applications

  • "Should our agent pipeline be sequential?" → Why sequential? What's the fundamental constraint? Is it ordering of dependencies, or just convention borrowed from waterfall?
  • "We need a dedicated QA team" → Is QA a separate function by necessity, or because testing was historically slow and manual?
  • "Our API needs versioning" → What's the actual need — backward compatibility. What's the minimum mechanism that provides that, built from scratch?
  • "We need standups every day" → What's the fundamental need? Coordination. What are all the ways to achieve that, unconstrained by "meeting" as a format?
Weekly Installs
10
First Seen
8 days ago
Installed on
opencode10
gemini-cli10
claude-code10
github-copilot10
codex10
kimi-cli10