
Plan
Author a PLAN for a piece of work as a reviewable draft task: a strong 'about', a set of outcomes (what should be created or updated at success), an ordered series of build steps each gated on a concrete static deliverable, and a final verification step that checks the outcomes were kept. The user reviews the draft and activates it to run. Invoke via the start_plan tool. Use for 'plan this', 'make a plan', '/plan'.
Steps
Entry step: frame. Each step names the specialist role it wants; the full working prompt is expandable.
- Frame the goalplannerentry
Write a strong 'about' and set the outcomes on the draft plan.
Show working prompt
You are drafting a PLAN. The plan is a separate **draft task** — its ref is in your task's `craftbookParams.draftRef` (shown in your task description / entry note). Everything you author here targets that draft via the `task` argument. Your next message must START with a tool call — not a description of what you are about to do. Make exactly these two calls, in this order, then stop: 1. `update_task({ task: "<draftRef>", description })` — the job-to-be-done from the user's perspective, 120+ characters. 2. `set_outcomes({ task: "<draftRef>", outcomes: [ ... ] })` — 3–8 concrete, individually-verifiable statements of what gets created or updated. Neither call is optional and prose is not a substitute for either: the gate reads the draft itself and rejects until both landed. **Detail:** 1. **Write a strong "about".** Call `update_task({ task: "<draftRef>", description })` with a clear job-to-be-done from the user's perspective — what success looks like, in 120+ characters. 2. **Set the outcomes.** Call `set_outcomes({ task: "<draftRef>", outcomes: [ ... ] })` with 3–8 concrete, individually-verifiable statements of what should be **created or updated** at completion (e.g. "An index.html with a playable snake game and a game-over/restart screen", "A README documenting how to run it"). When done, call `advance_task_step({ ref, stepId: "frame", next: "outline" })`. The gate rejects until the draft has a real about and at least 3 outcomes — fix what it names and advance again. - Design the build stepsplanner
Add ordered build steps to the draft, each gated on a concrete static deliverable.
Show working prompt
Design the implementation as an ordered series of **build steps** on the draft (`craftbookParams.draftRef`). Each build step must produce a **concrete static file** with an enforced gate. The draft starts with one placeholder step named **"Implement"**. First call `craftbook_read({ task: "<draftRef>" })` and note the actual id of that placeholder step. Then either: - repurpose that exact step with `craftbook_update_step({ task: "<draftRef>", stepId: "<actualId>", name, prompt, suggestedRole })`, then immediately call `set_step_deliverable({ task: "<draftRef>", stepId: "<actualId>", path, kind })`; or - remove that exact step with `craftbook_remove_step({ task: "<draftRef>", stepId: "<actualId>" })` after you have added the real build steps. For each added step, in order: 1. `craftbook_add_step({ task: "<draftRef>", name, prompt, suggestedRole })` — a concrete, instructive step (e.g. name "Build the game", role "developer", a prompt that says exactly what to make). 2. Call `craftbook_read({ task: "<draftRef>" })` and use the actual id of the step you just added. 3. `set_step_deliverable({ task: "<draftRef>", stepId: "<actualId>", path, kind })` — declare the named file it produces and auto-attach the gate. Pick `kind` to match the artifact: `html-page` / `html-game` / `markdown-report` / `code-with-tests` / `json` / etc. Do not invent step ids like `build` unless `craftbook_read` shows that exact id. Do not advance while any build step lacks `advanceWhen`/`gate`. Order the steps so each builds on the last. When every build step has a deliverable, call `advance_task_step({ ref, stepId: "outline", next: "verify-step" })`. The gate lists any step still missing a deliverable. - Add the verification stepplanner
Append a terminal verification step that checks the outcomes were kept.
Show working prompt
Add the final **verification step** to the draft (`craftbookParams.draftRef`): call `add_verification_step({ task: "<draftRef>" })`. This appends a terminal step — gated by `checkOutcomesMet` — that makes the executor confirm each outcome (with evidence) before the task can close. Pass a custom `prompt` only if you need domain-specific verification instructions. Then call `advance_task_step({ ref, stepId: "verify-step", next: "review" })`. The gate rejects until the draft has a terminal step that verifies the outcomes. - Review the planplanner
Sanity-check the whole plan before handing it to the user.
Show working prompt
Final check before handing the plan to the user. `craftbook_read({ task: "<draftRef>" })` and sanity-check: the steps are ordered sensibly, each build step has a deliverable, and the last step verifies the outcomes. Fix anything off with the `craftbook_*` / `set_step_deliverable` tools on the draft. When the plan is solid, call `advance_task_step({ ref, stepId: "review", next: "done" })`. The gate returns a single list of anything still missing (thin about, fewer than 3 outcomes, ungated steps, or no verification step). - Hand off to the userplanner
Summarize the plan and tell the user to review and activate it.
Show working prompt
The plan is ready. Summarize it for the user in your reply: mention the draft task **<draftRef>** by its ref (so it renders as a reviewable plan card), and recap the about, the outcomes, and the build steps. Tell the user they can **review and activate** the plan to run it — or ask you to tweak it first. Then report DONE.
Triggers
Phrases that suggest this craftbook to a crew.
- plan this
- make a plan
- plan for
- /plan
Source
View this craftbook on GitHub · MIT license