Insert a Step 4b — Choose the approach gate into kit/plugins/plan-agent/skills/build-proposal/SKILL.md so that, once research has settled the facts, the skill presents candidate solutions for selection and writes the proposal around the selected one.
build-proposal researches an idea, synthesizes one core finding, and goes straight to per-decision questions, so the proposal it authors is written around an approach the human never chose from a menu. This adds a Step 4b gate that lays out two to four candidate solutions, records the pick as the first locked decision, and authors only the chosen one.
Read and implement all steps in the plan at docs/plans/add-proposal-approach-gate.md — Add the approach gate to build-proposal. Verify against the plan's Tests, Verification, and Acceptance Criteria before reporting done. If everything passed, mark completion in docs/plans/add-proposal-approach-gate.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
Goal: Add the approach gate to build-proposal. The plan at docs/plans/add-proposal-approach-gate.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/add-proposal-approach-gate.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/add-proposal-approach-gate.md — Add the approach gate to build-proposal. Brief subagents with the plan file at docs/plans/add-proposal-approach-gate.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/add-proposal-approach-gate.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.
add-proposal-approach-gate.html
docs/plans/add-proposal-approach-gate.html
docs/plans/add-proposal-approach-gate.md
Context
The story behind this plan — what prompted the work and why it matters now.
build-proposal (plan-agent 9.17.2) runs an 8-step loop: Frame, Confirm the ask (Step 1b gate), Fan out research, Synthesize the core finding, Separate facts from decisions, Resolve decisions, Author, Deepen, Converge. Step 3 collapses the research into a single core finding and an idea-versus-ours Side-by-side table; Step 5 then asks per-decision questions. Nowhere does the human pick between whole approaches, so the proposal that Step 6 authors is built around whichever solution the synthesis happened to favour. The requester's rule is the reverse: present multiple solutions for selection first, then write the proposal from the pick.
Constraints found in the repo:
- tests/plugins/test-build-proposal.sh check 6 asserts exactly eight ### Step [1-8] — headings, so the gate is a lettered sub-step, following the Step 1b precedent, not a ninth step.
- The saved prompt's slots are pinned by tests/plugins/test-write-prompt-proposal-type.sh and tests/plugins/test-proposal-prompt-pipeline.sh. The chosen design (selected by the requester from three alternatives) adds no slot: the pick rides in the existing {{LOCKED_DECISIONS}} and {{COMPARISON_TABLE}} slots, and at Tier 1, which omits both, as the closing line of {{CONTEXT}}. The rejected alternatives were a dedicated OPTIONS_CONSIDERED slot (touches the prompt skill and two slot tests) and folding the menu into Step 5 (buries the approach choice among per-decision questions).
- The baseline keep the current approach is always one candidate, so the menu never collapses to a single option and needs no escape hatch.
- build-feature shares the loop shape but writes feature docs, not proposals. It is out of scope.
- Any edit under kit/plugins/plan-agent/ needs a marketplace.json bump; a new workflow gate is a MINOR bump to 9.18.0.
Files that change
Every file this plan touches, and what happens to each one.
kit/plugins/plan-agent/skills/build-proposal/SKILL.mdmodified Step 4b inserted; Step 3, Step 5, the tier table note, and the guardrail count adjusted- kit/plugins/plan-agent/skills/build-proposal/references/
artifact-shape.mdmodified Side-by-side compares candidates; Locked decisions opens with the pick; Tier 1 noteoperating-principles.mdmodified eleventh principle; AskUserQuestion row names Step 4b
kit/plugins/plan-agent/README.mdmodified build-proposal section: loop bullet and a Step 4b bulletREADME.mdmodified build-proposal row in the plan-agent skill table; generated Plugin Reference Table regenerated for the versiondocs/guides/how-to/plan-agent.mdmodified build-proposal "What happens" bulletkit/plugins/plan-agent/CHANGELOG.mdmodified 9.18.0 entry.claude-plugin/marketplace.jsonmodified plan-agent 9.17.2 to 9.18.0tests/plugins/test-build-proposal.shmodified check 16 pins the gate
Steps
The step-by-step work, in order — each step says what to do, why it matters, and how to check it worked.
### Step 4b — heading between Step 4 and Step 5 whose body names AskUserQuestion, (Recommended), the keep the current approach baseline, and Locked decisions, and that artifact-shape.md and operating-principles.md carry the candidate comparison and the new principle.
bash tests/plugins/test-build-proposal.sh fails on check 16 and only check 16 before the skill is edited.### Step 4b — Choose the approach (the second gate) into SKILL.md after Step 4: one recommendation-first AskUserQuestion with two to four candidates including the baseline, the pick recorded as the first Locked decision naming what it was chosen over, rejected candidates kept in the Side-by-side, Steps 5 and 6 scoped to the pick, the Tier 1 placement rule, and the Other-answer rule.
grep -n "candidate" kit/plugins/plan-agent/skills/build-proposal/SKILL.md hits Step 3, Step 4b, and Step 5, and grep -c "eleven guardrails" returns 1.bash tests/plugins/test-build-proposal.sh check 14 still passes.grep -n "Step 4b" kit/plugins/plan-agent/README.md hits at least twice; grep -n "candidate" README.md docs/guides/how-to/plan-agent.md hits once each.node scripts/build-readme-table.mjs.
git fetch origin && BASE_REF=main node scripts/check-plugin-versions.mjs exits 0; node scripts/build-readme-table.mjs --check exits 0; jq empty .claude-plugin/marketplace.json exits 0.kit/plugins/plan-agent/bin/plan-agent-render docs/plans/add-proposal-approach-gate.md -o docs/plans/add-proposal-approach-gate.html and rebuild the index with bash docs/plans/build-index.sh.
docs/plans/index.html names the plan.Tests
The tests that prove the change does what it promises.
tests/plugins/test-build-proposal.sh (check 16)### Step 4b — heading sits between Step 4 and Step 5; its body names AskUserQuestion, (Recommended), keep the current approach, and Locked decisions; references/artifact-shape.md compares candidates including the baseline; references/operating-principles.md carries Choose the approachbash tests/plugins/test-build-proposal.sh ### Unit Teststests/plugins/test-build-proposal.sh (checks 1 to 15), tests/plugins/test-exitplanmode-guard.sh, tests/plugins/test-description-budget.shtests/plugins/test-write-prompt-proposal-type.sh, tests/plugins/test-proposal-prompt-pipeline.shDefinition 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.
bash tests/run-all.sh passes on this machine, git fetch origin && BASE_REF=main node scripts/check-plugin-versions.mjs exits 0, and bash scripts/verify.sh exits 0 with no stage reported as a silent skip. A read of the edited SKILL.md from Step 3 through Step 6 reads as one flow: candidates drafted, one chosen, remaining decisions resolved, the pick authored.
Wrapping up
Three gates that must all pass before this plan is marked completed.
Completion Report
No items to report — all requirements met.