Prototype one uncertain decision
Use a prototype to answer a named question, not to start implementation early.
If the decision is already settled, return to the calling workflow and build
the real vertical slice instead.
Use /design-prototype when the question is visual layout, hierarchy or a
user-flow sketch. This skill exercises behavior and contracts; a visual
preview alone does not prove a state machine or failure-handling rule.
Frame the experiment
- State the question, competing hypotheses, and the observation that would
distinguish them. If the choice is user-owned, use
/grilling first.
- Inspect the repository for the current language, framework, test seams, and
existing spike conventions. Do not assume a stack or invent a parallel
project layout.
- Define a strict time, file, and side-effect boundary. Use synthetic data and
do not contact production systems or external services merely to increase
fidelity.
Useful shapes include:
- a small interactive runner for a data model or state machine;
- minimal request, response, and error types for an interface contract;
- a pure function over an ordered event sequence for retry, replay,
idempotency, or partial-failure behavior;
- two or three deliberately different implementations behind the same tiny
interface when the trade-off is the question.
Build for learning
- Keep the experimental shell separate from the behavior under test.
- Make the relevant state, output, and failures visible after each action.
- Provide one documented command that reproduces the experiment.
- Prefer the repository's existing test/runtime tooling; do not add a durable
dependency for a disposable experiment without explicit approval.
- Label every artifact as a prototype and keep it away from production entry
points, deployment inputs, and real data.
Pause when the prototype exposes a new product, architecture, security, or
scope decision. Use /architecture-review for architecture
boundaries, including when the decision depends on Nav or NAIS. Use
/domain-modeling for qualifying durable decisions within the active task's
documented-work boundary; preserve its eligibility and authorization gate.
Close the experiment
Demonstrate the exact command and observations, then record:
- the question answered;
- what the evidence supports and does not support;
- the decision or remaining alternatives;
- which part, if any, is suitable to reimplement in production.
Delete the prototype after the result is captured, unless the user explicitly
chooses to retain it as a clearly marked task artifact. Never promote the
throwaway shell directly to production. Return the conclusion to the calling
workflow so production implementation and verification start from a clean
contract.
1---2name: prototype3description: Build a bounded, runnable throwaway experiment to resolve uncertain behavior or an interface contract. Use for data models, state machines, event flows, retries or failure semantics; use `design-prototype` for visual layouts and user-flow sketches.4---56# Prototype one uncertain decision78Use a prototype to answer a named question, not to start implementation early.9If the decision is already settled, return to the calling workflow and build10the real vertical slice instead.1112Use `/design-prototype` when the question is visual layout, hierarchy or a13user-flow sketch. This skill exercises behavior and contracts; a visual14preview alone does not prove a state machine or failure-handling rule.1516## Frame the experiment17181. State the question, competing hypotheses, and the observation that would19 distinguish them. If the choice is user-owned, use `/grilling` first.202. Inspect the repository for the current language, framework, test seams, and21 existing spike conventions. Do not assume a stack or invent a parallel22 project layout.233. Define a strict time, file, and side-effect boundary. Use synthetic data and24 do not contact production systems or external services merely to increase25 fidelity.2627Useful shapes include:2829- a small interactive runner for a data model or state machine;30- minimal request, response, and error types for an interface contract;31- a pure function over an ordered event sequence for retry, replay,32 idempotency, or partial-failure behavior;33- two or three deliberately different implementations behind the same tiny34 interface when the trade-off is the question.3536## Build for learning3738- Keep the experimental shell separate from the behavior under test.39- Make the relevant state, output, and failures visible after each action.40- Provide one documented command that reproduces the experiment.41- Prefer the repository's existing test/runtime tooling; do not add a durable42 dependency for a disposable experiment without explicit approval.43- Label every artifact as a prototype and keep it away from production entry44 points, deployment inputs, and real data.4546Pause when the prototype exposes a new product, architecture, security, or47scope decision. Use `/architecture-review` for architecture48boundaries, including when the decision depends on Nav or NAIS. Use49`/domain-modeling` for qualifying durable decisions within the active task's50documented-work boundary; preserve its eligibility and authorization gate.5152## Close the experiment5354Demonstrate the exact command and observations, then record:5556- the question answered;57- what the evidence supports and does not support;58- the decision or remaining alternatives;59- which part, if any, is suitable to reimplement in production.6061Delete the prototype after the result is captured, unless the user explicitly62chooses to retain it as a clearly marked task artifact. Never promote the63throwaway shell directly to production. Return the conclusion to the calling64workflow so production implementation and verification start from a clean65contract.