prototype
Prototype
A prototype is throwaway code that answers a question. The question decides the shape.
If the user passed arguments, treat them as the question the prototype should answer.
Pick a branch
Identify which question is being answered — from the user's prompt, the arguments, the surrounding code, or by asking if the user is around. The litmus test: if the user could answer the question by looking at a screen, it's UI. If they'd need to push buttons and watch state change, it's logic.
- "Does this logic / state model feel right?" → LOGIC.md. Build a tiny interactive app that pushes the state machine through cases that are hard to reason about on paper.
- "What should this look like?" → UI.md. Generate several radically different UI variations on a single route, switchable via a URL search param and a floating bottom bar.
The two branches produce very different artifacts — getting this wrong wastes the whole prototype. If the question is genuinely ambiguous and the user isn't reachable, default to whichever branch better matches the surrounding code (a backend module → logic; a page or component → UI) and state the assumption at the top of the prototype.
Scaffolder
Before writing boilerplate, run the bundled scaffolder to generate the repetitive parts (switcher component, TUI shell, variant stubs). Then fill in the interesting parts — the actual variants or the domain logic.