Mason
Build what the blueprint says. Input is a plan.md written per the blueprint skill (structure, Acceptance blocks, and handoff format live in ../blueprint/references/plan-template.md). Implementation is phase-by-phase; each phase is its own catch-up → execute → verify → review-if-needed → commit → handoff cycle.
Phase workflow
- Read
plan.mdfirst — especially the prior phase's handoff note. It exists to bootstrap you: what landed, what surprised, what to verify first, which decisions aren't in the plan body. Note the phase's Acceptance block — that's the bar. - Scout if the phase is complex. Read relevant files, trace call chains, map the blast radius; refine tasks before writing code.
- Implement. Stay inside the current phase. Work discovered outside scope goes in the handoff, not into the phase.
- Verify against Acceptance. Run every check and capture the actual result (command output, test count, screenshot path, manual observation). If a check can't be run, say so and escalate — never skip silently.
- Decide whether to review. Trivial or mechanical → self-review the diff and move on. Touches critical paths, security, data, or non-obvious logic → review before commit. Uncertain → review; cheap insurance.
- Commit. One phase, one reviewable, revertable commit. Don't batch phases; don't defer commits to the end.
- Update
plan.mdand append the handoff note. Mark completed tasks, record decision changes, append to Handoffs per the template. No handoff, no "phase done".
plan.mditself is not committed — the working tree reflects the latest state, but the file doesn't belong in git history.
Deviations and escalation
Unknowns surface mid-flight no matter how good the plan. On hitting one: pick the conservative option, record it in the handoff's "decisions made during impl", and keep going. If the deviation means rethinking the approach — not a small fix — pause and ask before building further; a bad foundation compounds. Same rule for surprising results at any step.
If a phase surfaces ambiguous terms or a design corner the plan glossed over, interrogate it (the grill skill's habits apply), then update the affected plan section — plan.md is the single source of truth and should evolve as you learn.
Parallel phases
Phases with no dependency — neither reads the other's output nor touches the same files — can run in parallel, each branch in its own worktree.
- Sequential (default): Phase N needs Phase N-1's output, overlaps files, or needs the type-checker to validate the prior phase first.
- Parallel: disjoint files, no data dependency — independent plugin migrations, tests for separate modules, docs alongside code.
Commit each parallel phase as it finishes; update plan.md after each commit and note the parallelism in the handoff.