Build Right Prototype
Use this cross-cutting companion to answer one design question. A prototype is
evidence, not product code, customer validation, or permission to implement.
Required Reading
- Read
references/logic.md for state, transition, data-shape, or behavioral
contract questions.
- Read
references/ui.md for layout, hierarchy, or interaction questions.
- Use
assets/templates/prototype-evidence.md for the retained evidence packet.
- Read the target repository's instructions, product authority, execution
rules, and Git state before creating anything.
Workflow
- State exactly one prototype question and one observable success signal.
- Classify the mode as
logic or ui; stop if the question mixes unresolved
concerns that cannot be observed together.
- Inspect repository conventions and
git status --short. Record unrelated
work and do not touch it.
- Create the prototype in a disposable temporary directory or detached
temporary worktree. Never edit the main worktree by default. If neither safe
isolation option is possible, stop and ask.
- Make the prototype runnable with one documented Bun-native command such as
bun run prototype or bun index.ts.
- Run syntax, type, or build smoke verification appropriate to the prototype,
plus the smallest assertion that proves the question's success signal.
- Observe the result. Separate what was demonstrated from what remains
assumed.
- Write
docs/evidence/prototypes/<slug>.md in the target repository using
the evidence template. This retained packet is the only default main
worktree edit.
- Route any production implementation through
$build-right-feature-planning. Never copy, move, or promote prototype code
directly into production.
Safety Contract
- Use fake, local, or read-only data. Never call a production mutation path.
- Do not use live credentials unless the user explicitly authorizes a bounded,
non-mutating proof and repository policy allows it.
- Do not automatically commit, push, merge, publish, deploy, clean up, delete,
or promote.
- Do not automatically abort or resolve an existing Git operation.
- Leave disposal or cleanup as an explicit user choice and report the temporary
path or worktree.
- Label the finding
prototype-evidence when observed and
prototype-assumption when it remains inferred.
Handoff
Prototype evidence may feed $build-right-preflight or
$build-right-feature-planning. It never upgrades itself to customer evidence
or product truth.
User-Visible Status Badge
End every final response with exactly one status badge block:
✅ [DONE] Status: DONE
Decision: <answer to the prototype question>
Next action: <planning handoff or none>
Needs user input: <none | concise ask>
Blocked by: <none | blocker>
Use 🟢 [GREEN] Status: ALL GREEN while proof is safe to continue,
🟡 [YELLOW] Status: NEEDS INPUT for a required user decision,
🟠 [ORANGE] Status: NEEDS WORK for AI-owned proof gaps,
🔵 [BLUE] Status: WAITING EXTERNAL for external evidence, and
🔴 [RED] Status: BLOCKED for unsafe isolation, failed verification, or
conflicting evidence.
1---2name: build-right-prototype3description: Answer one unresolved logic or UI design question with disposable executable evidence. Use for explicit prototype, spike, proof-of-concept, interaction experiment, state-model experiment, or design-experiment requests where observed behavior can reduce uncertainty before production feature planning.4---56# Build Right Prototype78Use this cross-cutting companion to answer one design question. A prototype is9evidence, not product code, customer validation, or permission to implement.1011## Required Reading1213- Read `references/logic.md` for state, transition, data-shape, or behavioral14 contract questions.15- Read `references/ui.md` for layout, hierarchy, or interaction questions.16- Use `assets/templates/prototype-evidence.md` for the retained evidence packet.17- Read the target repository's instructions, product authority, execution18 rules, and Git state before creating anything.1920## Workflow21221. State exactly one prototype question and one observable success signal.232. Classify the mode as `logic` or `ui`; stop if the question mixes unresolved24 concerns that cannot be observed together.253. Inspect repository conventions and `git status --short`. Record unrelated26 work and do not touch it.274. Create the prototype in a disposable temporary directory or detached28 temporary worktree. Never edit the main worktree by default. If neither safe29 isolation option is possible, stop and ask.305. Make the prototype runnable with one documented Bun-native command such as31 `bun run prototype` or `bun index.ts`.326. Run syntax, type, or build smoke verification appropriate to the prototype,33 plus the smallest assertion that proves the question's success signal.347. Observe the result. Separate what was demonstrated from what remains35 assumed.368. Write `docs/evidence/prototypes/<slug>.md` in the target repository using37 the evidence template. This retained packet is the only default main38 worktree edit.399. Route any production implementation through40 `$build-right-feature-planning`. Never copy, move, or promote prototype code41 directly into production.4243## Safety Contract4445- Use fake, local, or read-only data. Never call a production mutation path.46- Do not use live credentials unless the user explicitly authorizes a bounded,47 non-mutating proof and repository policy allows it.48- Do not automatically commit, push, merge, publish, deploy, clean up, delete,49 or promote.50- Do not automatically abort or resolve an existing Git operation.51- Leave disposal or cleanup as an explicit user choice and report the temporary52 path or worktree.53- Label the finding `prototype-evidence` when observed and54 `prototype-assumption` when it remains inferred.5556## Handoff5758Prototype evidence may feed `$build-right-preflight` or59`$build-right-feature-planning`. It never upgrades itself to customer evidence60or product truth.6162## User-Visible Status Badge6364End every final response with exactly one status badge block:6566```text67✅ [DONE] Status: DONE68Decision: <answer to the prototype question>69Next action: <planning handoff or none>70Needs user input: <none | concise ask>71Blocked by: <none | blocker>72```7374Use `🟢 [GREEN] Status: ALL GREEN` while proof is safe to continue,75`🟡 [YELLOW] Status: NEEDS INPUT` for a required user decision,76`🟠 [ORANGE] Status: NEEDS WORK` for AI-owned proof gaps,77`🔵 [BLUE] Status: WAITING EXTERNAL` for external evidence, and78`🔴 [RED] Status: BLOCKED` for unsafe isolation, failed verification, or79conflicting evidence.