prototype/SKILL.md
Build a throwaway prototype to flush out a design before committing to it. Routes between two branches — a runnable terminal app for state/business-logic questions, or several radically different UI variations toggleable from one route. Use when the user wants to prototype, sanity-check a data model or state machine, mock up a UI, explore design options, or says "prototype this", "let me play with it", "try a few designs".
npx skillsauth add sanurb/skills prototypeInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
A prototype is throwaway code that answers exactly ONE question. The question decides the shape: state/logic questions get a tiny interactive terminal app over a pure module; visual/layout questions get several radically different UI variants on one route. Pick the right shape, build the smallest thing that lets the user feel the answer, capture the answer, delete the rest.
Classify the question and route to the matching playbook. Getting this wrong wastes the whole prototype.
references/logic.md. Build a tiny TUI over a pure reducer / state machine / function set.references/ui.md. Generate 3 (max 5) radically different variants on one route, switchable via ?variant= and a floating bottom bar.If the question is genuinely ambiguous AND the user is unreachable: default to the branch that matches the surrounding code (backend module → logic; page or component → UI), and write the assumption explicitly at the top of the prototype.
Execute the playbook end-to-end without inventing extra structure.
prototype in the path or filename.pnpm <name>, python <path>, bun <path>, etc).console.log for control flow); the TUI is a thin shell over it. Each frame clears the screen and re-renders fully.Ship the run command and a NOTES.md placeholder, not a write-up.
?variant= keys.NOTES.md next to the prototype with the question already filled in and a blank space for the answer. The user (or you, on the next pass) fills the verdict before the prototype gets deleted or absorbed.The prototype delivers nothing if any of these fails:
NOTES.md).prototype so a casual reader cannot mistake it for production.console.log, prompts, or escape codes inside it. The TUI imports it; nothing flows the other direction.process.env.NODE_ENV !== 'production' or equivalent gate).NOTES.md exists next to the prototype with the question filled in and an empty answer slot.Prototype code at the chosen location, with prototype in the path/filename.
One run command added to the project's existing task runner (package.json scripts, Makefile, justfile, pyproject.toml, etc).
NOTES.md next to the prototype, in this exact shape:
# Prototype: {short name}
## Question
{the one question this prototype answers}
## Answer
{empty — fill in once the prototype has done its job}
Hand-off message to the user: the run command, plus (UI branch only) the URL and the list of ?variant= keys with their named exports. Nothing else — no narration, no plan recap.
development
Sets up an `## Agent skills` block in AGENTS.md/CLAUDE.md and `docs/agents/` so the engineering skills know this repo's issue tracker (GitHub, GitLab, fp, or local markdown), triage label vocabulary, and domain doc layout. Run before first use of `fp-plan`, `fp-implement`, `fp-review`, `to-issues`, `to-prd`, `triage`, `diagnose`, `tdd`, `improve-codebase-architecture`, or `zoom-out` — or if those skills appear to be missing context about the issue tracker, triage labels, or domain docs.
tools
Control herdr (a terminal-native agent multiplexer) from inside it. Manage workspaces and tabs, split panes, spawn sibling agents, read pane output, and wait for state changes — all via CLI commands that talk to the running herdr instance over a local unix socket. Use when running inside herdr (HERDR_ENV=1). Do not use outside herdr.
documentation
Compact the current conversation into a handoff document for another agent to pick up.
testing
Grilling session that challenges your plan against the existing domain model, sharpens terminology, and updates documentation (CONTEXT.md, ADRs) inline as decisions crystallise. Use when user wants to stress-test a plan against their project's language and documented decisions.