Radical Simplification — Cognitive Moves for Collapsing Complex Problems
Distillation of the documented working method of mathematicians, physicists, and engineers who consistently turn complex problems into simple solutions. The skill is not a step list — it is a toolbox of cognitive moves, each correcting a specific wrong default a capable model has when faced with complexity. The moves are mostly orthogonal; pick the one that matches the symptom.
This is the thinking layer that sits above refactoring (code-simplifier), metric design (deterministic-metric-design), and reviews (design-review). Those skills apply a methodology to a known shape of artifact. This skill is the methodology itself — how to arrive at the simple shape in the first place.
When to Apply
Use this skill when:
- The user says the problem feels too complicated, that the team is going in circles, or that there must be a simpler way
- A proposed design has accreted parameters, dependencies, or branches and feels overengineered
- A plan has been drafted but unresolved decisions remain, and the agent is about to commit to assumed answers
- A bug investigation has tried several variants of the same approach without progress
- A review surfaces complexity that may be accidental (Brooks) rather than essential
- The agent is asked to find an elegant solution to a hard engineering or product problem
- Forward search has exhausted and the agent needs a different angle (work backwards, invert, transfer from another domain)
- The agent is producing fluent-sounding output but cannot back it up under expansion (Feynman test)
This skill is not for cleaning up code that already does the right thing — that is code-simplifier. Use this when the approach itself is what needs to get simpler.
How to Use
The nine categories are orthogonal cognitive moves. Match the move to the symptom:
| Symptom |
Reach for |
First rule to read |
| Solving feels off — maybe the wrong problem |
Frame |
frame-restate-problem |
| Plan drafted but unresolved decisions remain |
Clarify |
clarify-interview-one-at-a-time |
| Drowning in cases, parameters, branches |
Reduce |
reduce-toy-case-first |
| Parts are tangled; changes ripple |
Decompose |
decomp-orthogonal-axes |
| Forward search is exponential or stuck |
Invert |
invert-work-backwards |
| Missing the structural truth of the system |
Constrain |
constrain-name-the-invariant |
| Stuck inside the current vocabulary |
Transfer |
transfer-cross-domain-analogue |
| The specific problem keeps resisting |
Generalize |
gen-rising-sea |
| Producing fluent output you cannot back up |
Audit |
audit-feynman-technique |
For category overviews and the ordering rationale, see references/_sections.md.
Rule Categories
| # |
Category |
Prefix |
Move |
Rules |
| 1 |
Reframe the Problem |
frame |
Restate, separate essential from accidental, find the decision |
3 |
| 2 |
Clarify Through Interview |
clarify |
One-at-a-time questions with recommended answers; read the source before asking |
2 |
| 3 |
Reduce to the Smallest Case |
reduce |
Toy case, limit cases, Pareto compression |
3 |
| 4 |
Decompose Along Orthogonal Axes |
decomp |
Orthogonal axes, WHAT vs HOW |
2 |
| 5 |
Invert the Search |
invert |
Work backwards, assume failure |
2 |
| 6 |
Constrain with Invariants and Symmetries |
constrain |
Name the invariant, dimensional check |
2 |
| 7 |
Transfer From Another Domain |
transfer |
Cross-domain analogue, vocabulary lock-in |
2 |
| 8 |
Generalize Until the Problem Dissolves |
gen |
Rising sea |
1 |
| 9 |
Audit Your Own Understanding |
audit |
Feynman, name the confusion, Fermi check |
3 |
Quick Reference
1. Reframe the Problem
frame-restate-problem — Restate in your own words before solving; surfaces the wrong-problem case while it is still cheap
frame-essential-vs-accidental — Brooks's distinction: name each piece of complexity as inherent or layered-on
frame-find-decision-point — Find the decision the answer must change; answer that, not the literal question
2. Clarify Through Interview
clarify-interview-one-at-a-time — Walk the design tree one branch at a time; every question paired with your recommended answer so the user reviews a position, not generates one
clarify-prefer-source-over-asking — If a grep, file read, or runtime check would answer it, do that — only ask what the source cannot tell you
3. Reduce to the Smallest Case
reduce-toy-case-first — Solve n=1 fully before generalizing; the structure of the big problem becomes visible
reduce-limit-cases — Probe zero, infinity, empty, identity to expose where the design degrades
reduce-pareto-compress — Design for the 20% of inputs that produce 80% of the result
4. Decompose Along Orthogonal Axes
decomp-orthogonal-axes — Axes are correct when changing one does not force changing another; verbs over today's nouns
decomp-what-vs-how — Write the WHAT before debating the HOW; the spec is the referee
5. Invert the Search
invert-work-backwards — When forward search is exponential, ask what must be true one step before the goal
invert-assume-failure — Write the postmortem before writing the design (Munger's inversion)
6. Constrain with Invariants and Symmetries
constrain-name-the-invariant — The property that does not change is often the answer in disguise
constrain-dimensional-check — Mismatched units, types, or categories are bugs before they are runtime failures
7. Transfer From Another Domain
transfer-cross-domain-analogue — Search for the structural twin in another domain; the twin's solution often transplants
transfer-suspect-vocabulary-lock-in — Suffix accretion (Manager, Helper, Coordinator) signals the original noun is wrong
8. Generalize Until the Problem Dissolves
gen-rising-sea — Grothendieck's rising sea; the more abstract version is sometimes the easier one — but only if it has fewer concepts, not more
9. Audit Your Own Understanding
audit-feynman-technique — Unfold technical shorthand into beginner-vocabulary sentences; the hand-waves are the gaps
audit-name-the-confusion — When stuck, name what you do not know — do not retry variants of the same approach
audit-fermi-sanity-check — Bound the answer order-of-magnitude before producing it; 10× disagreements are the signal
Related Skills
code-simplifier — Refactoring patterns once the right approach is known (this skill ends, that one begins)
deterministic-metric-design — Applies this methodology to the specific problem of inventing metrics
design-review — Applies this methodology to the specific problem of reviewing UI
Authoring Note
These moves are load-bearing, not decorative. The wrong default each rule corrects is named in the rule itself — if a rule restates something a capable model already does correctly, cut it. The coverage of the skill is proven by /dev-skill:eval on real complex-problem prompts, not by hitting a rule count.
1---2name: radical-simplification3description: Cognitive moves for collapsing complexity — reframe, clarify, reduce, decompose, invert, constrain, transfer, generalize, audit — distilled from the working method of mathematicians, physicists, and software engineers known for turning hard problems into simple solutions (Pólya, Feynman, Hamming, Brooks, Knuth, Dijkstra, Lamport, Tao, Grothendieck, Munger, Hofstadter). Use when stuck on a complex problem, when a proposed design feels overengineered, when reviewing code that has accreted accidental complexity, or when the user wants an elegant solution to a hard engineering or product problem. Triggers on phrases like "this feels too complicated", "we are going in circles", "there must be a simpler way", "interview me about this plan", "find the underlying problem", and on stuck-state moments where forward search has run out and the agent needs a different angle.4---5# Radical Simplification — Cognitive Moves for Collapsing Complex Problems
6
7Distillation of the documented working method of mathematicians, physicists, and engineers who consistently turn complex problems into simple solutions. The skill is not a step list — it is a toolbox of **cognitive moves**, each correcting a specific wrong default a capable model has when faced with complexity. The moves are mostly orthogonal; pick the one that matches the symptom.
8
9This is the **thinking layer** that sits above refactoring (`code-simplifier`), metric design (`deterministic-metric-design`), and reviews (`design-review`). Those skills apply a methodology to a known shape of artifact. This skill is the methodology itself — how to arrive at the simple shape in the first place.
10
11## When to Apply
12
13Use this skill when:
14
15- The user says the problem feels too complicated, that the team is going in circles, or that there must be a simpler way
16- A proposed design has accreted parameters, dependencies, or branches and feels overengineered
17- A plan has been drafted but unresolved decisions remain, and the agent is about to commit to assumed answers
18- A bug investigation has tried several variants of the same approach without progress
19- A review surfaces complexity that may be accidental (Brooks) rather than essential
20- The agent is asked to find an elegant solution to a hard engineering or product problem
21- Forward search has exhausted and the agent needs a different angle (work backwards, invert, transfer from another domain)
22- The agent is producing fluent-sounding output but cannot back it up under expansion (Feynman test)
23
24This skill is **not** for cleaning up code that already does the right thing — that is `code-simplifier`. Use this when the *approach itself* is what needs to get simpler.
25
26## How to Use
27
28The nine categories are orthogonal cognitive moves. Match the move to the symptom:
29
30| Symptom | Reach for | First rule to read |
31|---------|-----------|--------------------|
32| Solving feels off — maybe the wrong problem | **Frame** | [`frame-restate-problem`](references/frame-restate-problem.md) |
33| Plan drafted but unresolved decisions remain | **Clarify** | [`clarify-interview-one-at-a-time`](references/clarify-interview-one-at-a-time.md) |
34| Drowning in cases, parameters, branches | **Reduce** | [`reduce-toy-case-first`](references/reduce-toy-case-first.md) |
35| Parts are tangled; changes ripple | **Decompose** | [`decomp-orthogonal-axes`](references/decomp-orthogonal-axes.md) |
36| Forward search is exponential or stuck | **Invert** | [`invert-work-backwards`](references/invert-work-backwards.md) |
37| Missing the structural truth of the system | **Constrain** | [`constrain-name-the-invariant`](references/constrain-name-the-invariant.md) |
38| Stuck inside the current vocabulary | **Transfer** | [`transfer-cross-domain-analogue`](references/transfer-cross-domain-analogue.md) |
39| The specific problem keeps resisting | **Generalize** | [`gen-rising-sea`](references/gen-rising-sea.md) |
40| Producing fluent output you cannot back up | **Audit** | [`audit-feynman-technique`](references/audit-feynman-technique.md) |
41
42For category overviews and the ordering rationale, see [`references/_sections.md`](references/_sections.md).
43
44## Rule Categories
45
46| # | Category | Prefix | Move | Rules |
47|---|----------|--------|------|-------|
48| 1 | Reframe the Problem | `frame` | Restate, separate essential from accidental, find the decision | 3 |
49| 2 | Clarify Through Interview | `clarify` | One-at-a-time questions with recommended answers; read the source before asking | 2 |
50| 3 | Reduce to the Smallest Case | `reduce` | Toy case, limit cases, Pareto compression | 3 |
51| 4 | Decompose Along Orthogonal Axes | `decomp` | Orthogonal axes, WHAT vs HOW | 2 |
52| 5 | Invert the Search | `invert` | Work backwards, assume failure | 2 |
53| 6 | Constrain with Invariants and Symmetries | `constrain` | Name the invariant, dimensional check | 2 |
54| 7 | Transfer From Another Domain | `transfer` | Cross-domain analogue, vocabulary lock-in | 2 |
55| 8 | Generalize Until the Problem Dissolves | `gen` | Rising sea | 1 |
56| 9 | Audit Your Own Understanding | `audit` | Feynman, name the confusion, Fermi check | 3 |
57
58## Quick Reference
59
60### 1. Reframe the Problem
61
62- [`frame-restate-problem`](references/frame-restate-problem.md) — Restate in your own words before solving; surfaces the wrong-problem case while it is still cheap
63- [`frame-essential-vs-accidental`](references/frame-essential-vs-accidental.md) — Brooks's distinction: name each piece of complexity as inherent or layered-on
64- [`frame-find-decision-point`](references/frame-find-decision-point.md) — Find the decision the answer must change; answer that, not the literal question
65
66### 2. Clarify Through Interview
67
68- [`clarify-interview-one-at-a-time`](references/clarify-interview-one-at-a-time.md) — Walk the design tree one branch at a time; every question paired with your recommended answer so the user reviews a position, not generates one
69- [`clarify-prefer-source-over-asking`](references/clarify-prefer-source-over-asking.md) — If a grep, file read, or runtime check would answer it, do that — only ask what the source cannot tell you
70
71### 3. Reduce to the Smallest Case
72
73- [`reduce-toy-case-first`](references/reduce-toy-case-first.md) — Solve n=1 fully before generalizing; the structure of the big problem becomes visible
74- [`reduce-limit-cases`](references/reduce-limit-cases.md) — Probe zero, infinity, empty, identity to expose where the design degrades
75- [`reduce-pareto-compress`](references/reduce-pareto-compress.md) — Design for the 20% of inputs that produce 80% of the result
76
77### 4. Decompose Along Orthogonal Axes
78
79- [`decomp-orthogonal-axes`](references/decomp-orthogonal-axes.md) — Axes are correct when changing one does not force changing another; verbs over today's nouns
80- [`decomp-what-vs-how`](references/decomp-what-vs-how.md) — Write the WHAT before debating the HOW; the spec is the referee
81
82### 5. Invert the Search
83
84- [`invert-work-backwards`](references/invert-work-backwards.md) — When forward search is exponential, ask what must be true one step before the goal
85- [`invert-assume-failure`](references/invert-assume-failure.md) — Write the postmortem before writing the design (Munger's inversion)
86
87### 6. Constrain with Invariants and Symmetries
88
89- [`constrain-name-the-invariant`](references/constrain-name-the-invariant.md) — The property that does not change is often the answer in disguise
90- [`constrain-dimensional-check`](references/constrain-dimensional-check.md) — Mismatched units, types, or categories are bugs before they are runtime failures
91
92### 7. Transfer From Another Domain
93
94- [`transfer-cross-domain-analogue`](references/transfer-cross-domain-analogue.md) — Search for the structural twin in another domain; the twin's solution often transplants
95- [`transfer-suspect-vocabulary-lock-in`](references/transfer-suspect-vocabulary-lock-in.md) — Suffix accretion (`Manager`, `Helper`, `Coordinator`) signals the original noun is wrong
96
97### 8. Generalize Until the Problem Dissolves
98
99- [`gen-rising-sea`](references/gen-rising-sea.md) — Grothendieck's rising sea; the more abstract version is sometimes the easier one — but only if it has *fewer* concepts, not more
100
101### 9. Audit Your Own Understanding
102
103- [`audit-feynman-technique`](references/audit-feynman-technique.md) — Unfold technical shorthand into beginner-vocabulary sentences; the hand-waves are the gaps
104- [`audit-name-the-confusion`](references/audit-name-the-confusion.md) — When stuck, name what you do not know — do not retry variants of the same approach
105- [`audit-fermi-sanity-check`](references/audit-fermi-sanity-check.md) — Bound the answer order-of-magnitude before producing it; 10× disagreements are the signal
106
107## Related Skills
108
109- [`code-simplifier`](../code-simplifier/SKILL.md) — Refactoring patterns once the right approach is known (this skill ends, that one begins)
110- [`deterministic-metric-design`](../deterministic-metric-design/SKILL.md) — Applies this methodology to the specific problem of inventing metrics
111- [`design-review`](../design-review/SKILL.md) — Applies this methodology to the specific problem of reviewing UI
112
113## Authoring Note
114
115These moves are **load-bearing**, not decorative. The wrong default each rule corrects is named in the rule itself — if a rule restates something a capable model already does correctly, cut it. The coverage of the skill is proven by `/dev-skill:eval` on real complex-problem prompts, not by hitting a rule count.