Give every generated plan a native browser Listen control, so the reader can hear a spoken summary (the Objective plus each step’s title) or the whole plan read aloud — powered entirely by the browser’s built-in speechSynthesis , with no dependency, no CDN, no network, and no audio files.
Read and implement all steps in the plan at docs/plans/add-plan-tts-playback.md — Vocalize plans with a native Listen control. Verify against the plan's Tests, Verification, and Acceptance Criteria before reporting done. If everything passed, mark completion in docs/plans/add-plan-tts-playback.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: Vocalize plans with a native Listen control. The plan at docs/plans/add-plan-tts-playback.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-plan-tts-playback.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-plan-tts-playback.md — Vocalize plans with a native Listen control. Brief subagents with the plan file at docs/plans/add-plan-tts-playback.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-plan-tts-playback.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-plan-tts-playback.html
docs/plans/add-plan-tts-playback.html
docs/plans/add-plan-tts-playback.md
Context
The story behind this plan — what prompted the work and why it matters now.
Plan output is a single self-contained .html file — “no external CSS, no CDN links, no external scripts”. The goal here is text→speech : let a reader press a button and listen to the plan, either a short summary or the full document. The browser already does this natively. window.speechSynthesis (the synthesis half of the Web Speech API) is supported in Chrome, Edge, Safari and Firefox, uses the OS/browser voices (mostly on-device), and needs no library, no CDN, and no network — so it honors the self-contained-HTML rule for free. The plan’s text is already in the DOM, so a Listen button simply gathers the relevant text and calls speechSynthesis.speak() ; pause() , resume() , and cancel() give Play / Pause / Stop with no extra machinery. Per the chosen approach, the “summary” is derived from the DOM (Objective + step titles) — zero new content and no change to how plans are authored; an authored narrative summary is a follow-up in Next Steps.
Files that change
Every file this plan touches, and what happens to each one.
- kit/plugins/plan-agent/
CHANGELOG.mdmodified dated 2.9.0 entryREADME.mdmodified document the Listen feature
kit/plugins/plan-agent/skills/implementation-plan/SKILL.mdmodified document the always-present Listen controlkit/plugins/plan-agent/skills/implementation-plan/reference/SKELETON.htmlmodified Listen control UI + CSS + inline TTS script.claude-plugin/marketplace.jsonmodified bump plan-agent 2.8.4 → 2.9.0tests/plugins/test-tts-playback.shnew smoke test for the Listen controlpath/to/file.extmodified what changes
Steps
The step-by-step work, in order — each step says what to do, why it matters, and how to check it worked.
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 bash tests/plugins/test-tts-playback.sh — it must pass, confirming the .plan-tts control and its speechSynthesis wiring exist and are documented. Then open a freshly generated plan in Chrome and Firefox : confirm the Listen control appears, “summary” speaks the Objective + step titles, “full plan” reads the sections in order (skipping nav, prompts, and code blocks), Pause and Stop work, and the control hides when speechSynthesis is unavailable and in print preview. Finally confirm marketplace.json shows plan-agent at 2.9.0 and the JSON still validates.
Wrapping up
Three gates that must all pass before this plan is marked completed.
Completion Report
No items to report — all requirements met.