Throwaway design probe for logic, state models, UI variations, and affordances before production work. Use when the user wants to prototype, sanity-check a model, make something playable, compare UI directions, or explore a design before ln-spec/ln-plan/ln-scope.
Scanned 9/11/2026
Install to Claude Code
npx -y skills add hashintel/brunch --skill ln-prototype --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Ln Prototype?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/hashintel-ln-prototype)More formats (shields.io, HTML) on the badges page.
---
name: ln-prototype
description: "Throwaway design probe for logic, state models, UI variations, and affordances before production work. Use when the user wants to prototype, sanity-check a model, make something playable, compare UI directions, or explore a design before ln-spec/ln-plan/ln-scope."
argument-hint: "[prototype question or design uncertainty]"
---
# Ln Prototype
A prototype is a disposable answer to one design question. Keep the verdict, not the artifact.
Use `ln-prototype` when the question needs feel, play, or comparison. Use `ln-spike` when the question is technical feasibility or unknown API behavior.
## Input
Prototype question or design uncertainty: $ARGUMENTS
Orient first:
1. Read `memory/SPEC.md` if present; use its lexicon and live invariants.
2. Read `memory/PLAN.md` if present; identify whether the prototype serves an existing frontier item.
3. Read `HANDOFF.md` if present.
4. Inspect nearby code only enough to place the prototype where it is understandable and runnable.
Write a 2-4 bullet orientation note: question, prototype branch, nearest seam/page/module, answer-capture path.
## Choose one branch
Ask if ambiguous and the user is present; otherwise state the assumption.
### Logic prototype
Use for state, transition, reducer, parser, planner, or workflow questions. Build a tiny interactive terminal app or CLI harness around a portable logic module.
Good shapes:
- pure reducer: `(state, action) => state`
- explicit state machine with named states and legal transitions
- small pure functions over plain data
- state-owning module/class only when internal ongoing state is the question
Keep the shell thin. The logic must not know about prompts, terminal escape codes, stdout, or UI widgets.
### UI prototype
Use for layout, interaction, navigation, approval/recovery, inspection, or comparison questions.
Generate several meaningfully different variants in one local route/page/screen, switchable by URL search param or floating switcher. Prefer adapting an existing page over inventing a playground. Variants should differ by design bet, not skin: name the bet each variant tests.
## Prototype discipline
1. **Throwaway from day one.** Name files/routes with `prototype`, `scratch`, or equivalent. Add: `PROTOTYPE — delete or absorb after verdict`.
2. **Near the real seam.** Keep context obvious; avoid public exports unless needed to run it.
3. **One command to run.** Use the repo's task runner and record the exact command.
4. **No persistence by default.** Use memory. If persistence is the question, use clearly wipeable scratch storage.
5. **No production polish.** Skip comprehensive tests, abstractions, analytics, and hardening beyond safe evaluation.
6. **Surface state.** After each logic action or UI variant switch, show relevant inputs, outputs, and state.
7. **One question only.** New questions become follow-up prototypes, spikes, or scope cards.
## Capture the verdict
```md
## Prototype Verdict: [question]
**Branch:** logic | UI
**Command:** [how to run]
**What we tried:** [variants/actions/cases]
**Verdict:** [decision or remaining uncertainty]
**Absorb:** [what production code/spec/plan should inherit]
**Delete:** [prototype files/routes/storage to remove]
```
Durability routing:
- Requirements, assumptions, invariants, or lexicon changed → `ln-spec`.
- Sequencing or frontier changed → `ln-plan`.
- One implementation slice is now obvious → `ln-scope`.
- Human judgment remains pending → record volatile state in `HANDOFF.md`.
Do not create `CONTEXT.md`, ADRs, or alternate planning docs. Canonical docs are `memory/SPEC.md` and `memory/PLAN.md`.
## Cleanup
Finish by stating one of:
- deleted prototype files
- kept prototype temporarily, with reason and deletion trigger
- absorbed prototype into production through a scoped build
If prototype files remain, they must be visibly non-production and easy to find.
## Routing
After the verdict, present these options to the user (use `tool-ask-question`):
| # | Label | Target | Why |
| --- | -------------- | ------------ | --- |
| 1 | Revise spec | `ln-spec` | Prototype changed durable understanding |
| 2 | Revise plan | `ln-plan` | Prototype changed sequencing or frontier shape |
| 3 | Scope a slice | `ln-scope` | Prototype answered enough to build |
| 4 | Spike instead | `ln-spike` | The remaining question is technical feasibility |
| 5 | Back to triage | `ln-consult` | Prototype did not settle direction |
Recommended: **3** when the prototype produced a concrete build direction; **1** when it changed the model.
---
*Adapted from [mattpocock/skills/engineering/prototype](https://github.com/mattpocock/skills/tree/main/skills/engineering/prototype).*
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!