PlanningWhat should we build, before any code exists?
Nine skills over the planning loop — framing the problem, establishing what is true, generating and choosing options, slicing the work, sizing it, finding what could go wrong, judging whether the plan is ready, and deciding what it becomes when reality diverges.
9skills
8routes
20playbooks
10reference
37static rules
1,591listing chars
01What is loaded, and when it is paid for
A skill arrives in three stages and each costs something different. Almost
every design rule in this repository follows from that asymmetry rather than from taste.
Cost is not uniform across the three. Stage 1 is paid on every turn for every
installed skill, which is why a description is budgeted to
200 characters and why boundaries are kept out of it.
Stage 3 is paid only by the run that needs it, which is where anything long or
perishable belongs.
02The 9 skills
Each owns one kind of work and states it in its own Owns section.
The tags under it are the facets recorded in
planning-registry/capabilities.yaml, which is also what the fixtures route
against.
planning-routerroute
Deciding which planning phases a request actually needs and in what order. It dispatches and produces no artifact of its own. The canonical order is frame → discover → options → decompose → estimate → risk → review; the job is to take the shortest path through it that the request needs.
classify
chain-selection
sequencing
fallback
planning-framedoc-write
The problem, stated so it can be argued with — one sentence, with the goals it serves, the goals it explicitly does not, and criteria somebody could measure. It never proposes a solution.
goals
non-goals
success-criteria
constraints
definition-of-done
planning-discoverfull
The gap between what the brief assumed and what is there. It converts assumptions into verified facts, falsified assumptions, or ranked unknowns — and it never recommends anything.
current-state
verification
assumption-testing
constraint-discovery
unknowns
planning-optionsdoc-write
Which approach, and why that one. It generates real alternatives, scores them against the brief's own criteria, and recommends — a scored table with no recommendation is abdication.
candidate-generation
criteria
trade-offs
elimination
decision-record
planning-decomposedoc-write
The shape of the work once the approach is settled — what the tasks are, what each depends on, what order retires the most uncertainty, and where the system stays deployable. It never estimates durations.
slicing
task-shape
dependencies
critical-path
milestones
sequence
planning-estimatedoc-write
How long, expressed as a range with the reasons it is that wide. The drivers of the range are the deliverable; the number is a summary of them.
sizing
ranges
buffer
schedule
range-drivers
breaking-conditions
planning-riskdoc-write
The failure modes of the plan, each with a way to see it coming and something to do about it. The plan is this deliverable's subject, not its client — a risk softened to preserve a plan has been deleted.
pre-mortem
register
likelihood
impact
mitigation
rollback
abort
planning-reviewdoc-write
Whether the plan is ready, as one verdict with the findings behind it. It never rewrites the plan — findings go back to the phase that owns them, and a reviewer who fixes the plan can no longer review it.
readiness-checks
silence-audit
blocking-findings
verdict
shortest-path
planning-replandoc-write
What the plan becomes after reality arrives — measured, classified, and corrected at the smallest surface that fixes it. Stopping stays on the table and is priced like any other option.
divergence-classification
measurement
stop-test
changelog
03Where a skill stops
Boundaries live in one file and never in a description. A description that
named its neighbours would spend listing budget advertising them, and adding a skill would
mean editing every other one — so the cost of an addition would stop being O(1).
Skill
Does not do
Goes to
planning-router
a request whose phase is already obvious
that phase directly
planning-router
carrying out the plan once it exists
a build skill outside this set
planning-frame
surveying what the codebase currently does
planning-discover
planning-frame
choosing between ways of getting there
planning-options
planning-discover
deciding what the problem is
planning-frame
planning-discover
weighing one approach against another
planning-options
planning-options
slicing the approach once it is chosen
planning-decompose
planning-options
what could go wrong with the chosen one
planning-risk
planning-decompose
how long each slice takes
planning-estimate
planning-decompose
which approach is being sliced
planning-options
planning-estimate
what the tasks are in the first place
planning-decompose
planning-estimate
the chance that the estimate is wrong for a nameable reason
planning-risk
planning-risk
whether the plan as a whole is finished
planning-review
planning-risk
reacting to something that already went wrong
planning-replan
planning-review
enumerating what could go wrong
planning-risk
planning-review
revising the plan after work has started
planning-replan
planning-replan
judging a plan before any work started
planning-review
planning-replan
a change in the problem rather than the path
planning-frame
04Chains that recur
A chain of names expresses linear work only. Where a stage repeats until a
condition holds, the entry carries the condition, the judge, and a hard cycle limit —
without all three, “until it looks right” has no stopping rule and the loop ends
when somebody gets tired.
Route
Pattern
When
Chain
Condition
full-plan
linear
multi-week or hard to reverse, nothing decided yet
gate · the goal fits in one sentence without 'and' before anything else runs
approach
linear
the problem is clear, the way to solve it is not
planning-discover → planning-options
gate · a load-bearing assumption is verified before an approach is chosen
breakdown
linear
the approach is decided and the work needs shape
planning-decompose → planning-estimate
—
state-the-problem
report-only
nobody can say in one sentence what this is for
planning-frame
stops at · goals, non-goals, measurable criteria, and the open questions. No approach is chosen
find-out
report-only
what is actually true here
planning-discover
stops at · verified facts with pointers, falsified assumptions, and unknowns ranked by decision impact
what-could-go-wrong
linear
the plan exists and nobody has stress-tested it
planning-risk → planning-review
—
course-correct
linear
work started and reality diverged
planning-replan → planning-decompose
gate · the divergence is classified and measured before the plan is rewritten
review-to-ready
loop
close every blocking finding before work starts
planning-review → planning-replan
oracle · no blocking finding remains, and one full pass adds none
05The mechanism this set has and its siblings do not
Seven sets share one validator and one contract shape. Each declares exactly
one signature mechanism, and that declaration is the whole difference — which is what
keeps 7 copies of the same rules from becoming 7 dialects.
calibration · _planning/CALIBRATION.md
An estimate that is never compared to the outcome is a number, not a forecast. Every estimate records what actually happened — within, under, over, open, abandoned — so the next range is drawn from this team's history rather than from optimism.
within
under
over
open
abandoned
Owed by 3 of 9
planning-estimate
planning-replan
planning-review
A rule states the mechanism
inside every skill through a delivered block. A skill that owes it must also name
its own half in its own words — a rule stated everywhere and owned nowhere is a
ritual.
06What counts as done
Reporting completion without meeting this is reporting a wish. The
vocabulary is fixed in planning-registry/harness.yaml and defined in
_planning/CONTRACT.md; the validator checks the contract actually
defines every word it declares.
Axis
Vocabulary
Evidence grades
verifiedassumedunknown
Residual classes
BLOCKEDOUT-OF-SCOPEDEFERREDUNVERIFIED
Statuses
DONEPARTIALBLOCKED
Sizing tiers
SML
Route patterns
linearloopreport-only
Calibration
withinunderoveropenabandoned
The completion sweep is never omitted. Before reporting, both halves
run and both results are stated: every marker this run introduced appears in the handoff with a
class, and every claim made is a claim at its floor. While either pair disagrees, the status is
not DONE.
07Permission classes
A class is declared once in the registry and the validator checks each
SKILL.md front matter matches it exactly. Where a CLI does not enforce tool
grants, the Never lines are discipline and nothing more — that limit is stated
rather than papered over.
Class
Tools
Writes
Skills
route
Read, Grep, Glob, Skill
no
1
doc-write
Read, Grep, Glob, Write, Edit
yes
7
full
Read, Grep, Glob, Bash, Write, Edit
yes
1
08Budgets, and the rules that decide them
Every threshold is declared in one place and read from there by
planning-tools/validate.py. A number written twice is a number that drifts.
Raising a limit is the last resort — merging, deleting, compressing and relocating come
first.
Declared limits
skill_md_lines
145
description_chars
200
playbook_lines
300
playbooks_per_skill
8
shared_file_lines
115
shared_lines_total
610
skills_max
11
routes_max
12
route_stages_max
8
repo_md_lines_total
4200
Measured now
skills
9 / 11
routes
8 / 12
shared contract lines
583 / 610
repository markdown
3,094 / 4,200
static rules
37
Adding a rule means adding a
deliberate violation and watching it fail. A check only ever seen passing may be checking
nothing.
09Installing it
Each planning-* directory is symlinked individually, so a
skills directory keeps whatever else it already carries and a name already taken by a real
directory is skipped rather than overwritten.
make link # into ~/.claude/skills
make link CLAUDE_DIR=.claude/skills
make check # the rules, then proof the rules still fire
make render # after editing a delivered block
make hooks # run the rules on every commit
Selection happens on the description alone. Every word that selects a
skill appears literally in its description, and a rule checks the registry and the
description still agree.
Contracts are delivered, not referenced. A rule kept only in
_planning/ is read on a minority of launches, so the operative part
is copied verbatim into every skill and a rule fails if any copy has drifted.
Knowledge is split by whether it rots. Playbooks hold judgement and are
budgeted; reference holds what goes stale, carries no line budget, and states what re-checks
it instead of a bare date.
The fixtures do not model how a model chooses. They catch a missing or
duplicated signal. Passing them is not evidence that nothing will be misrouted.