Point finalize-plan and the implementation-plan status/checkbox gates at the Markdown spec — checkbox flips plus frontmatter edits plus a re-render via build-plan-html.mjs — and retire the byte-for-byte frozen-string contracts that HTML surgery depended on (Phase 3 of the plan-generation-from-markdown proposal).
Completing a plan used to mean careful find-and-replace surgery on 84 KB of HTML. Now every status flip and checkbox tick is a one-line Markdown edit and the renderer redraws the page — cheaper, safer, and impossible to get half-right.
Read and implement all steps in the plan at docs/plans/make-plan-status-flows-md-first.md — Make plan status and checkbox flows Markdown-first. Verify against the plan's Tests, Verification, and Acceptance Criteria before reporting done. If everything passed, mark completion in docs/plans/make-plan-status-flows-md-first.md — tick each step's [x] marker and each criterion's - [x], set status: completed — and re-render the HTML from the spec. If any check failed, leave status: in-progress and say which.
More ways to run this plan — goal & workflow prompts, file path
Achieve this goal: Make plan status and checkbox flows Markdown-first. The plan at docs/plans/make-plan-status-flows-md-first.md describes one approach — use it as reference, but optimize for the outcome. Fan out across parallel subagents where that serves the outcome. Verify against the plan's Tests, Verification, and Acceptance Criteria before reporting done. If everything passed, mark completion in docs/plans/make-plan-status-flows-md-first.md — tick each step's [x] marker and each criterion's - [x], set status: completed — and re-render the HTML from the spec. If any check failed, leave status: in-progress and say which.
Run a workflow to implement the plan at docs/plans/make-plan-status-flows-md-first.md — Make plan status and checkbox flows Markdown-first. Brief subagents with the plan file at docs/plans/make-plan-status-flows-md-first.md. Reserve a final verification phase for the lead agent, not a subagent. Verify against the plan's Tests, Verification, and Acceptance Criteria before reporting done. If everything passed, mark completion in docs/plans/make-plan-status-flows-md-first.md — tick each step's [x] marker and each criterion's - [x], set status: completed — and re-render the HTML from the spec. If any check failed, leave status: in-progress and say which.
make-plan-status-flows-md-first.html
docs/plans/make-plan-status-flows-md-first.html
docs/plans/make-plan-status-flows-md-first.md
Context
The story behind this plan — what prompted the work and why it matters now.
Phases 1–2 made the Markdown spec the authored source of truth and shipped the deterministic renderer, but progress state still lived in the HTML only: finalize-plan did literal find/replace on the todo step chip and the report-empty sentence, and re-rendering a spec reset all progress. That kept three frozen strings pinned byte-for-byte and made every status edit an attribute-surgery exercise. Carrying state in the spec's checkbox syntax (as the proposal specifies) makes re-rendering lossless and lets the renderer derive every completion representation mechanically.
Files that change
Every file this plan touches, and what happens to each one.
- scripts/lib/
plan-spec.mjsmodified parse checkbox state and the Completion Report section into a progress keyplan-shell.mjsmodified progress-aware criteria/progress/completion blocks; frozen strings demoted to internal
scripts/build-plan-html.mjsmodified wire progress through rendering; derive cc1–cc3, all-complete, report listkit/plugins/plan-agent/scripts/build-plan-html.mjsmodified byte-identical bundled copy- kit/plugins/plan-agent/scripts/lib/
plan-spec.mjsmodified byte-identical bundled copyplan-shell.mjsmodified byte-identical bundled copy
kit/plugins/plan-agent/skills/finalize-plan/SKILL.mdmodified spec mode edits the md and re-renders; legacy mode keeps HTML editskit/plugins/plan-agent/skills/implementation-plan/SKILL.mdmodified Step 6 and Step 8 gates flip state in the speckit/plugins/plan-agent/skills/implementation-plan/guidelines/section-catalog.mdmodified checkbox syntax and Completion Report sectionkit/plugins/plan-agent/skills/implementation-plan/reference/SKELETON.mdmodified criteria start as unchecked checkbox bullets- kit/plugins/plan-agent/
README.mdmodified md-first finalize-plan and pipeline docsCHANGELOG.mdmodified 2.20.0 entry
.claude-plugin/marketplace.jsonmodified plan-agent 2.19.0 → 2.20.0- tests/plugins/
test-build-plan-html.mjsmodified progress-state tests replace the byte-for-byte frozen-string pintest-finalize-all-flag.shmodified pins the md/html argument hint and the spec-mode contract
Steps
The step-by-step work, in order — each step says what to do, why it matters, and how to check it worked.
- [x] criteria bullets, [x] step markers, and a ## Completion Report section into a separate progress return key
Tests
The tests that prove the change does what it promises.
Definition of done
The plan counts as done when every statement below is true — check each one off as you verify it.
Final check
One last pass to confirm the whole change works end to end.
Run node tests/plugins/test-build-plan-html.mjs, node tests/plugins/test-extract-plan-spec.mjs, node tests/plugins/test-backfill-digest.mjs, and bash tests/plugins/test-finalize-all-flag.sh — all green. Then exercise the flow end to end exactly as a tool would: flip a criterion bullet in this very spec, re-render with node scripts/build-plan-html.mjs, and confirm the rendered HTML's checkbox, progress bar, and completion checklist follow the Markdown.
Wrapping up
Three gates that must all pass before this plan is marked completed.
Completion Report
- Legacy plans without a sibling spec
- still finalized via direct HTML edits by design; Phase 4 backfill will retire that path