Blueprint: thorough, validation-first planning
The point is not a longer plan. It is refusing to commit to a plan until the assumptions
under it have been tested against reality — a plan on unverified assumptions is a
confident-looking bug report from the future. /plan says "here's how I'd build it";
/blueprint adds why each load-bearing assumption holds, with the evidence.
Invoke for non-trivial features or refactors where a wrong approach costs hours, changes
crossing component boundaries or touching invariants (data isolation, auth, billing),
anything resting on third-party behaviour you have not personally verified, stated
uncertainty ("would this even work?"), or a previous attempt that failed. Not for typo
fixes, single-file edits, or mechanical renames — this skill is expensive on purpose.
Required references
This file is the skeleton; each reference holds a step's full rules. Read it at that step.
| File |
Read at |
Holds |
references/validation.md |
step 2 |
falsifiable hypothesis, assumption classes, validation per assumption type |
references/cross-validation.md |
step 5 |
spec, architecture, and conventions checks with citations; codebase sweep |
references/plan.md |
step 8.5 |
success-criteria counterfactual, plan structure, definition of done |
references/rationalizations.md |
when tempted to skip a step |
why each shortcut fails |
Principles
- Hypothesis first. Validation needs a target; without one, "research" wanders.
- Cheap experiments beat confident reasoning. A 10-line script that proves an API
behaves as expected outranks a paragraph asserting it.
- Read the source on
HEAD, not from memory. APIs change, specs evolve; verify now.
- Inverted pyramid for the user. Recommendation and blockers first; detail unfolds
below, and the decisions the user still owes close the document.
- Loop until convergent. A refuted assumption sends you back to the hypothesis; never
paper over it.
Workflow
- Understand the problem. Restate it: goal, constraints, non-goals, success criteria —
including what would prove the change doesn't work. Ambiguous or contradictory → ask
the user; never invent answers to plug holes.
- Form a hypothesis. Read
references/validation.md now. A candidate specific
enough to be wrong: the files and flows that change, the APIs it relies on, its 2–4
load-bearing assumptions — and the observation that would prove the shape wrong. If
you cannot write the falsifier, sharpen the hypothesis; note fallbacks if several
approaches are plausible.
- Enumerate load-bearing assumptions — those the plan stops working without. Classify
each Verified (cite
file:line or doc), Plausible, or Risky.
- Validate every unverified one with the cheapest thing that produces evidence: a
script and its output, the library source, the migration files, a read-only query.
Record confirmed / refuted / partial; refuted → back to step 2. Delegate batched
reads to a read-only search subagent when the host has one.
- Cross-validate with product specs. Read
references/cross-validation.md now.
Does the plan satisfy each affected requirement, violate any invariant, miss an
acceptance criterion? A violation means the plan is not ready — or the spec needs a
flagged change before code work.
- Cross-validate with architecture and conventions. Boundaries, security,
scalability and cost, observability, async machinery. Then the discipline check:
enumerate the project's conventions from its own docs on
HEAD — package manager,
task-runner entry points, test framework and mocking policy, lint, migrations, ports —
each cited and linked to the plan step it shapes, or marked "doesn't constrain" with a
reason. Defaults from training data are the modal failure here.
- Sweep the codebase for systemic conflicts no single assumption captures: in-flight
work in the area, shadow duplication, caller-side drift when a contract changes,
missing test infrastructure.
- Loop or commit. Survived → step 8.5. Partially → adjust and re-validate the changed
parts. Broken → back to step 2 with what you learned. Cap at ~3 rounds; then the problem
itself likely needs reframing — surface that.
8.5. Counterfactual. Read
references/plan.md now. Map every step-1 success
criterion to the plan step that satisfies it: Confirmed, Confirmed with gaps
(listed), or Unconfirmed — and unconfirmed means the plan is not ready.
- Write the plan per
plan.md § 9: headline (1–3 sentences), approach summary
(3–10 sentences of prose), out of scope, ordered steps with file paths, assumptions
with evidence, test plan, risks and mitigations, open questions last. The first two
sections let a human accept or reject the shape before reading further; the whole
is as long as it needs to be and no longer.
- Present and gate. Ask open questions and wait. An architectural deviation, spec
change, or risky migration needs explicit approval before implementation — never
proceed on auto mode. Approved → normal implementation rules apply.
Definition of done
Every item in plan.md § Definition of done is answerable with evidence. One you cannot
tick honestly sends you back to the step that produces it; a step you are tempted to skip
sends you to references/rationalizations.md. If validation killed the hypothesis, the
deliverable is the negative result and the reframing — not a salvaged plan.
Related skills
/plan when assumptions are mostly known · /rca when the failure has already happened ·
/examine to review the change once it is built.
1---2name: blueprint3description: Plan a non-trivial code change rigorously — understand the problem, form a hypothesis, validate assumptions through real experiments and doc/code reads, and cross-check the proposed solution against product specs, architecture, and the existing codebase before writing any plan. Use when the user says "/blueprint", "blueprint this", "plan this thoroughly", "deep plan", "I want to be sure before we build this", or for any change where a wrong direction would burn meaningful time, tokens, or compute. Heavier and more deliberate than `/plan`; the goal is the global optimum, not a local one.4---56# Blueprint: thorough, validation-first planning78The point is **not** a longer plan. It is refusing to commit to a plan until the assumptions9under it have been tested against reality — a plan on unverified assumptions is a10confident-looking bug report from the future. `/plan` says "here's how I'd build it";11`/blueprint` adds why each load-bearing assumption holds, with the evidence.1213Invoke for non-trivial features or refactors where a wrong approach costs hours, changes14crossing component boundaries or touching invariants (data isolation, auth, billing),15anything resting on third-party behaviour you have not personally verified, stated16uncertainty ("would this even work?"), or a previous attempt that failed. Not for typo17fixes, single-file edits, or mechanical renames — this skill is expensive on purpose.1819## Required references2021This file is the skeleton; each reference holds a step's full rules. Read it **at that step**.2223| File | Read at | Holds |24|---|---|---|25| `references/validation.md` | step 2 | falsifiable hypothesis, assumption classes, validation per assumption type |26| `references/cross-validation.md` | step 5 | spec, architecture, and conventions checks with citations; codebase sweep |27| `references/plan.md` | step 8.5 | success-criteria counterfactual, plan structure, definition of done |28| `references/rationalizations.md` | when tempted to skip a step | why each shortcut fails |2930## Principles3132- **Hypothesis first.** Validation needs a target; without one, "research" wanders.33- **Cheap experiments beat confident reasoning.** A 10-line script that proves an API34 behaves as expected outranks a paragraph asserting it.35- **Read the source on `HEAD`, not from memory.** APIs change, specs evolve; verify *now*.36- **Inverted pyramid for the user.** Recommendation and blockers first; detail unfolds37 below, and the decisions the user still owes close the document.38- **Loop until convergent.** A refuted assumption sends you back to the hypothesis; never39 paper over it.4041## Workflow42431. **Understand the problem.** Restate it: goal, constraints, non-goals, success criteria —44 including what would prove the change doesn't work. Ambiguous or contradictory → ask45 the user; never invent answers to plug holes.462. **Form a hypothesis.** **Read `references/validation.md` now.** A candidate specific47 enough to be wrong: the files and flows that change, the APIs it relies on, its 2–448 load-bearing assumptions — and the observation that would prove the *shape* wrong. If49 you cannot write the falsifier, sharpen the hypothesis; note fallbacks if several50 approaches are plausible.513. **Enumerate load-bearing assumptions** — those the plan stops working without. Classify52 each **Verified** (cite `file:line` or doc), **Plausible**, or **Risky**.534. **Validate** every unverified one with the cheapest thing that produces evidence: a54 script and its output, the library source, the migration files, a read-only query.55 Record **confirmed / refuted / partial**; refuted → back to step 2. Delegate batched56 reads to a read-only search subagent when the host has one.575. **Cross-validate with product specs.** **Read `references/cross-validation.md` now.**58 Does the plan satisfy each affected requirement, violate any invariant, miss an59 acceptance criterion? A violation means the plan is not ready — or the spec needs a60 flagged change before code work.616. **Cross-validate with architecture and conventions.** Boundaries, security,62 scalability and cost, observability, async machinery. Then the discipline check:63 enumerate the project's conventions from its own docs on `HEAD` — package manager,64 task-runner entry points, test framework and mocking policy, lint, migrations, ports —65 each cited and linked to the plan step it shapes, or marked "doesn't constrain" with a66 reason. Defaults from training data are the modal failure here.677. **Sweep the codebase** for systemic conflicts no single assumption captures: in-flight68 work in the area, shadow duplication, caller-side drift when a contract changes,69 missing test infrastructure.708. **Loop or commit.** Survived → step 8.5. Partially → adjust and re-validate the changed71 parts. Broken → back to step 2 with what you learned. Cap at ~3 rounds; then the problem72 itself likely needs reframing — surface that.738.5. **Counterfactual.** **Read `references/plan.md` now.** Map every step-1 success74 criterion to the plan step that satisfies it: **Confirmed**, **Confirmed with gaps**75 (listed), or **Unconfirmed** — and unconfirmed means the plan is not ready.769. **Write the plan** per `plan.md` § 9: headline (1–3 sentences), approach summary77 (3–10 sentences of prose), out of scope, ordered steps with file paths, assumptions78 with evidence, test plan, risks and mitigations, open questions last. The first two79 sections let a human accept or reject the shape before reading further; the whole80 is as long as it needs to be and no longer.8110. **Present and gate.** Ask open questions and wait. An architectural deviation, spec82 change, or risky migration needs explicit approval before implementation — never83 proceed on auto mode. Approved → normal implementation rules apply.8485## Definition of done8687Every item in `plan.md` § Definition of done is answerable with evidence. One you cannot88tick honestly sends you back to the step that produces it; a step you are tempted to skip89sends you to `references/rationalizations.md`. If validation killed the hypothesis, the90deliverable is the negative result and the reframing — not a salvaged plan.9192## Related skills9394`/plan` when assumptions are mostly known · `/rca` when the failure has already happened ·95`/examine` to review the change once it is built.