The decoupling is the idea: markers and annotations live in data attributes and sibling Markdown files rather than inside the mock, so the same pages stay a working prototype while carrying the explanation a reviewer needs. Because navigation comes from the folder structure, organising the files is organising the deck. Fetch the spec before generation rather than after — the attributes it defines are what the viewer reads, and a prototype written without them loses the navigation and the markers.
A prototyping harness for HTML pages an assistant writes. It supplies the conventions the pages should follow, then runs a local web server that presents them with navigation, element markers and page annotations layered on top.
- The spec the assistant needs before it writes anything: how navigation levels, page names, ordering, markers and page notes are declared
- A navigation tree derived from the prototype's own directory structure, with each page's name taken from its data-nav-name attribute and its position from data-nav-seq
- Markers on UI elements from a data-marker attribute — drawn automatically and revealed on hover, so an explanation rides on the element instead of sitting in a separate document
- Page annotations in Markdown, named after the page file, for what a static mock cannot show: interaction intent, drag behaviour, design reasoning
- Initialisation that takes the prototype root and the port, and installs whatever the web service needs — repeatable when either changes
- A background web server started and stopped on demand, viewed in the browser on the port you set
Node.js and nothing to authorize; it runs as npx -y @llxxbb/mcp-prototype. The order matters: read the spec, write the prototype to it, initialise with the root path and port, then start. First initialisation installs the packages the web service needs, which can take a while. The server runs in the background once started, so calling start again spawns another instance rather than reusing it — stop it when you are done. Pages get a base href and an injection script added, so relative references in the HTML need to hold up under that base.
One command — npx -y @llxxbb/mcp-prototype
