Ship a /plan-agent:prototype skill that turns any completed HTML plan — or a raw one-line idea — into a runnable, framework-free static-HTML prototype under docs/prototypes/ , so a developer can click through the real data shapes and core flow — and the idea's actual success signal — and judge the implementation's practicality before writing production code.
Read and implement all steps in the plan at docs/plans/add-prototype-generator-skill.md — Add a static-HTML prototype generator to plan-agent. Verify against the plan's Tests, Verification, and Acceptance Criteria before reporting done. If everything passed, mark completion in docs/plans/add-prototype-generator-skill.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: Add a static-HTML prototype generator to plan-agent. The plan at docs/plans/add-prototype-generator-skill.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-prototype-generator-skill.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-prototype-generator-skill.md — Add a static-HTML prototype generator to plan-agent. Brief subagents with the plan file at docs/plans/add-prototype-generator-skill.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-prototype-generator-skill.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-prototype-generator-skill.html
docs/plans/add-prototype-generator-skill.html
docs/plans/add-prototype-generator-skill.md
Context
The story behind this plan — what prompted the work and why it matters now.
plan-agent already produces detailed, self-contained HTML plans — but there is no cheap way to pressure-test whether a design is actually practical before building it for real. A throwaway static-HTML prototype (vanilla HTML/CSS/JS, a localStorage-backed "database", zero build) lets a developer validate the data model and the core user flow in minutes. The prototype must inherit plan-agent's portability framework — one self-contained file, no CDN, no framework, GitHub-Pages-deployable — so prototypes publish alongside the Plans gallery and Media library. The capability is a single new skill in the plan-agent plugin; it reuses the proven gallery generator ( hooks/build-index.sh ), the docs hub, and the self-contained HTML template style rather than inventing new infrastructure. Because the prototype skeleton is authored once and reused by every future prototype, this plan bakes the load-bearing concerns — output escaping (the prototype is published to a live *.github.io origin), accessibility, and per-prototype storage isolation — into the skeleton itself rather than leaving them to each generation. A reviewing panel (architecture, completeness, testability, risk, conventions, UX, accessibility) shaped this revision; see the Team Review at the foot of the plan.
Files that change
Every file this plan touches, and what happens to each one.
kit/plugins/plan-agent/skills/prototype/SKILL.mdnew the prototype skill (command + ambient)reference/PROTOTYPE-SKELETON.htmlnew self-contained, a11y-baked template- kit/plugins/plan-agent/hooks/
build-prototypes-index.shnew gallery generator, forked from build-index.shhooks.jsonmodified register auto-rebuild on docs/prototypes/
kit/plugins/plan-agent/templates/prototypes-gallery.htmlnew gallery card template (mirrors plans-gallery.html).claude-plugin/plugin.jsonmodified description only — never a version fieldCHANGELOG.mdmodified 2.9.0 entryREADME.mdmodified document the skill + usage.claude-plugin/marketplace.jsonmodified version 2.8.3 → 2.9.0 + descfixtures/plan-agent/sample-prototype.htmlnew fixture the shell/DOM tests consume- plugins/
test-prototype-portability.shnew objective smoke testtest-build-prototypes-index.shnew gallery builder unit testtest-prototype-persistence.mjsnew Node persistence test (no jsdom)
.github/workflows/publish-dist.ymlmodified run the three tests by explicit pathdocs/index.htmlmodified add Prototypes hub carddocs/prototypes/index.htmlnew committed bootstrap gallery (then regenerated)CLAUDE.mdmodified plan-agent plugin table row
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.
Load the plugins locally, then run /plan-agent:prototype docs/plans/<an-existing-plan>.html : confirm a prototype lands in docs/prototypes/ , opens standalone from file:// with working add/edit/delete, form validation that blocks an empty submit, a Reset guarded by a confirm() that reseeds from inline JSON, and a visible summary badge reflecting the idea's success signal. Tab through it: every input has a label, Reset and the primary action are real buttons, focus is visible and lands sensibly after each action, and an aria-live region announces add/update/delete/reset. Feed a hostile value (e.g. "><script> ) into a seed field and the title — confirm it renders inert in both the prototype and the gallery. Generate a second prototype and confirm the two do not share localStorage state (distinct {{STORE_KEY}} ). Confirm the write to docs/prototypes/foo.html rebuilds docs/prototypes/index.html via the new hooks.json entry, leaves docs/plans/index.html untouched, and raises no filename violation. Run /plan-agent:prototype "track gym workouts" and confirm the idea-path interview echoes back the derived model before writing. Run the three tests by their explicit CI paths — they pass. Finally confirm the bumped 2.9.0 exceeds origin/main and the marketplace JSON validates.
Wrapping up
Three gates that must all pass before this plan is marked completed.
Completion Report
No items to report — all requirements met.