Execute a phased implementation plan from a design document using rwl (ralph-wiggum-loop). Reads per-phase model annotations from the design doc and runs rwl once per phase with the appropriate model. Use this skill whenever the user wants to execute a design doc with rwl, says "rwl a plan", "execute this plan", "implement this design doc", or references a design doc for implementation. Prefer this over /how-to-execute-a-plan when the project has rwl installed.
Execute a design document phase-by-phase using rwl run. Each phase gets its own rwl invocation with the model specified in the design doc's **Model:** annotation. Progress resets between phases so each starts clean.
The old approach (/how-to-execute-a-plan) runs all phases inside a single Claude conversation. As context grows, quality degrades. RWL solves this: every iteration starts fresh, reads progress from disk, does one small thing, and exits. This skill adds phase-level orchestration on top, reading model annotations from the design doc and calling rwl once per phase with the right -M flag.
/create-design-doc)**Model:** annotations (sonnet or opus). If missing, default to opus.rwl installed and on PATHotto configured (.otto.yml exists) for CI validationRead the design doc. Extract the ordered list of phases and their model annotations. Each phase heading looks like:
#### Phase N: <name>
**Model:** sonnet
Build and print the execution plan:
Phase 1: Scaffold CLI structure - Model: sonnet
Phase 2: Core algorithm - Model: opus
Phase 3: Tests and cleanup - Model: sonnet
rwl init
Creates .rwl/ if it doesn't exist.
Loop through each phase sequentially. For each phase:
Clear progress - remove .rwl/progress.txt so rwl starts fresh for this phase:
rkvr rmrf .rwl/progress.txt
Run rwl with the phase's model in the background:
rwl run --plan <path-to-design-doc> -M <model>
Run via the Bash tool with run_in_background: true.
Check the outcome when the background task completes:
.rwl/progress.txt to diagnose. Report to user and stop.Report phase result before moving on:
Phase 1 (sonnet): complete in 4 iterations
Phase 2 (opus): complete in 8 iterations
If any phase fails, stop execution and report which phase failed and why. Do not continue to subsequent phases.
Only after ALL phases complete successfully:
**Status:** Draft to **Status:** Implementedgit add docs/design/<design-doc>.md
git commit -m "docs: mark <feature> design doc as implemented"
/bump (default patch; use minor/major for breaking changes)git push && git push --tags
cargo install --path .
rwl's prompt template tells the LLM to read progress.txt and the plan file. When progress.txt is cleared between phases, the LLM starts from the beginning of the plan but sees the already-committed code from prior phases in the repo. It naturally picks up the next incomplete phase because earlier phases already exist as code.
If rwl is re-doing work from a previous phase, leave progress.txt intact instead of clearing it. The accumulated context helps the LLM understand what's already done. Try clearing first (cleaner), fall back to preserving if needed.
otto ci yourself - rwl handles validation.rwl/progress.txt| Tool | Role |
|---|---|
rwl | Execution engine - iteration, validation, progress, commits |
otto ci | External validation (invoked by rwl) |
/create-design-doc | Creates the design doc with per-phase model annotations |
/how-to-execute-a-plan | Alternative executor (single conversation, no rwl) |
/bump | Version bumping during finalization |