Agent Skills / planning set

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.

what the engine is holding, and when 1 · LISTING every skill, every turn 9 names + descriptions 1,591 characters selection happens here, and on nothing else 2 · SKILL.MD one skill, once chosen ≤ 145 lines each 6 fixed sections contracts are copied in, not referenced 3 · DEFERRED only when the situation calls 20 playbooks · 10 reference budgeted / unbudgeted judgement stays; what rots is dated
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-router route

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-frame doc-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-discover full

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-options doc-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-decompose doc-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-estimate doc-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-risk doc-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-review doc-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-replan doc-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).

SkillDoes not doGoes to
planning-routera request whose phase is already obvious that phase directly
planning-routercarrying out the plan once it exists a build skill outside this set
planning-framesurveying what the codebase currently does planning-discover
planning-framechoosing between ways of getting there planning-options
planning-discoverdeciding what the problem is planning-frame
planning-discoverweighing one approach against another planning-options
planning-optionsslicing the approach once it is chosen planning-decompose
planning-optionswhat could go wrong with the chosen one planning-risk
planning-decomposehow long each slice takes planning-estimate
planning-decomposewhich approach is being sliced planning-options
planning-estimatewhat the tasks are in the first place planning-decompose
planning-estimatethe chance that the estimate is wrong for a nameable reason planning-risk
planning-riskwhether the plan as a whole is finished planning-review
planning-riskreacting to something that already went wrong planning-replan
planning-reviewenumerating what could go wrong planning-risk
planning-reviewrevising the plan after work has started planning-replan
planning-replanjudging a plan before any work started planning-review
planning-replana 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.

RoutePatternWhenChainCondition
full-planlinear multi-week or hard to reverse, nothing decided yetplanning-frame planning-discover planning-options planning-decompose planning-estimate planning-risk planning-review gate · the goal fits in one sentence without 'and' before anything else runs
approachlinear the problem is clear, the way to solve it is notplanning-discover planning-options gate · a load-bearing assumption is verified before an approach is chosen
breakdownlinear the approach is decided and the work needs shapeplanning-decompose planning-estimate
state-the-problemreport-only nobody can say in one sentence what this is forplanning-frame stops at · goals, non-goals, measurable criteria, and the open questions. No approach is chosen
find-outreport-only what is actually true hereplanning-discover stops at · verified facts with pointers, falsified assumptions, and unknowns ranked by decision impact
what-could-go-wronglinear the plan exists and nobody has stress-tested itplanning-risk planning-review
course-correctlinear work started and reality divergedplanning-replan planning-decompose gate · the divergence is classified and measured before the plan is rewritten
review-to-readyloop close every blocking finding before work startsplanning-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.

AxisVocabulary
Evidence gradesverified assumed unknown
Residual classesBLOCKED OUT-OF-SCOPE DEFERRED UNVERIFIED
StatusesDONE PARTIAL BLOCKED
Sizing tiersS M L
Route patternslinear loop report-only
Calibrationwithin under over open abandoned
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.

ClassToolsWritesSkills
routeRead, Grep, Glob, Skill no 1
doc-writeRead, Grep, Glob, Write, Edit yes 7
fullRead, 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_lines145
description_chars200
playbook_lines300
playbooks_per_skill8
shared_file_lines115
shared_lines_total610
skills_max11
routes_max12
route_stages_max8
repo_md_lines_total4200

Measured now

skills9 / 11
routes8 / 12
shared contract lines583 / 610
repository markdown3,094 / 4,200
static rules37

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