End-to-end project planning toolkit: converts requirements into structured phased implementation plans, groups phases into dependency-ordered waves for parallel subagent execution, executes wave plans by spawning parallel agents with correct model tiers, and decomposes large branches into focused pull requests.
74
93%
Does it follow best practices?
Impact
—
No eval scenarios have been run
Passed
No known issues
Execute a wave document by spawning parallel agents per wave, pausing at merge gates, and verifying each wave before advancing.
.context/plans/<slug>.mdwave-execution-planner (or follows the same format)wave-execution-planner (Mode A) firstwave-execution-planner (Mode B) insteadAsk for the plan slug if not provided. Load .context/plans/<slug>.md.
Read the full document. Identify all waves in order and their current status. Skip waves already marked — DONE.
Repeat steps 2a–2g for every wave that is not — DONE, in order.
Read the > Gate: blockquote at the top of the wave. If it requires a prior wave to be verified, confirm that wave's Verification: checklist is fully ticked ([x]). If not, stop and report the unmet gate to the user.
Parse the wave table or inline task list. For each row / item capture:
— branch.Model column value, or — model: suffix on inline tasks. Default: standard if absent.Writes column or — writes: annotation is present, capture it. Otherwise derive from the phase file, or leave unspecified and let the agent determine scope from the focus.Read references/model-map.yaml. For each extracted model tier value, look up the
corresponding concrete model ID. If a tier is absent from the map, use the standard entry.
Carry the resolved model ID (not the tier name) forward to step 2d.
Read references/per-agent-template.md.
For each phase, fill the template slots with the values from step 2b. Append the model-tier addition from references/model-tier-guide.md matching the phase's model value.
Do not paraphrase the focus / task description. Copy it verbatim.
If the phase links to a phase file, read that file and include its full content under "Your task" rather than only the Focus cell value.
Send a single response containing one Agent tool call per unblocked phase.
Each call must set:
subagent_type: "general-purpose"model: the resolved model ID from step 2b.5 (e.g. "haiku" for a fast-tier phase)isolation: "worktree" for all phases that commit to a branch (omit for phases that commit directly to main)description: "Wave N: <branch>"prompt: the filled per-agent prompt from step 2cDo not proceed until every agent in the wave has returned.
After all agents complete, report to the user:
"Wave N agents done. Please merge the following branches to
mainbefore I continue: [list branches]Then run the Verification checklist for this wave (copied below) and reply 'verified' when all checks pass."
Copy the wave's Verification: checklist verbatim into your message so the user can run each item.
Wait for the user to reply before continuing.
After the user confirms verification:
wave-execution-planner Mode B on the wave document to tick the verification checkboxes and mark the wave — DONE.After all waves are done:
**Status** field is set to Complete.WHY: Information loss — the verbatim focus or phase file contains constraints, tool names, and scope boundaries that summaries drop.
BAD Summarise "Triage Mem0, Zep, MemoryOS, Letta via tessl__triage-tool" as "triage memory tools".
GOOD Copy the full text verbatim into the per-agent prompt.
model parameter on Agent callsWHY: Omitting it silently defaults to the orchestrator's model. For fast-tier mechanical tasks, this wastes significant cost with no quality benefit.
BAD Agent(subagent_type="general-purpose", prompt=...) with no model.
GOOD Agent(model="haiku", ...) — resolved from the fast tier in model-map.yaml.
WHY: Consolidation agents read files written by prior waves. Unmerged branches mean stale reads and incorrect output that is hard to detect.
BAD Proceed to Wave N+1 as soon as Wave N agents return their results. GOOD STOP, ask the user to merge and verify, confirm gate before advancing.
WHY: Defeats the parallelism that wave planning was designed to achieve.
BAD Spawn one agent, wait for it, then spawn the next. GOOD Send a single response with all parallel agents in one message.
WHY: A phase that needs a prior branch merged will read stale state and produce incorrect output.
BAD Spawn feat/synthesis before feat/rubric is merged (it's in the Blocked on note).
GOOD Check each phase's gate / blocked-on annotation; skip and report blocked phases.
wave-execution-planner skill (wave-execution-planner/references/wave-format.md)wave-execution-planner skill (wave-execution-planner/references/status-tracking.md); used in step 2g