prototype

작성자: mattpocock

디자인을 확정하기 전에 일회용 프로토타입을 만들어 검토합니다. 상태나 비즈니스 로직을 확인할 수 있는 실행 가능한 터미널 앱과, 하나의 경로에서 전환 가능한 여러 개의 완전히 다른 UI 변형이라는 두 가지 분기로 나뉩니다. 사용자가 프로토타입을 만들고, 데이터 모델이나 상태 머신을 검증하며, UI를 목업하고, 디자인 옵션을 탐색하려 하거나, "이걸 프로토타입으로 만들어 봐", "한번 가지고 놀게 해줘", "몇 가지 디자인을 시도해 봐"라고 말할 때 사용합니다.

npx skills add https://github.com/mattpocock/skills --skill prototype

Prototype

A prototype is throwaway code that answers a question. The question decides the shape.

Pick a branch

Identify which question is being answered — from the user's prompt, the surrounding code, or by asking if the user is around:

  • "Does this logic / state model feel right?"LOGIC.md. Build a tiny interactive terminal 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.

Rules that apply to both

  1. Throwaway from day one, and clearly marked as such. Locate the prototype code close to where it will actually be used (next to the module or page it's prototyping for) so context is obvious — but name it so a casual reader can see it's a prototype, not production. For throwaway UI routes, obey whatever routing convention the project already uses; don't invent a new top-level structure.
  2. One command to run. Whatever the project's existing task runner supports — pnpm <name>, python <path>, bun <path>, etc. The user must be able to start it without thinking.
  3. No persistence by default. State lives in memory. Persistence is the thing the prototype is checking, not something it should depend on. If the question explicitly involves a database, hit a scratch DB or a local file with a clear "PROTOTYPE — wipe me" name.
  4. Skip the polish. No tests, no error handling beyond what makes the prototype runnable, no abstractions. The point is to learn something fast.
  5. Surface the state. After every action (logic) or on every variant switch (UI), print or render the full relevant state so the user can see what changed.
  6. Capture it when done. Fold any validated decision into the real code, then capture the prototype itself as a primary source: commit it to a throwaway branch, out of main, and leave a context pointer to that branch on the implementation issue. Capture the answer too — the verdict and the question it settled — in the issue or a commit. The main branch keeps only the validated decision.

mattpocock의 다른 스킬

improve-codebase-architecture
mattpocock
코드베이스에서 심화 개선 기회를 찾되, CONTEXT.md의 도메인 언어와 docs/adr/의 결정 사항을 참고합니다. 사용자가 아키텍처를 개선하거나, 리팩토링 기회를 찾거나, 강하게 결합된 모듈을 통합하거나, 코드베이스를 더 테스트 가능하고 AI가 탐색하기 쉽게 만들고자 할 때 사용합니다.
developmentcode-reviewapi
tdd
mattpocock
레드-그린-리팩터 루프를 사용한 테스트 주도 개발. 사용자가 TDD로 기능을 구축하거나 버그를 수정하려 할 때, "레드-그린-리팩터"를 언급할 때, 통합 테스트를 원할 때, 또는 테스트 우선 개발을 요청할 때 사용합니다.
developmenttesting
handoff
mattpocock
현재 대화를 다른 에이전트가 이어받을 수 있도록 핸드오프 문서로 압축합니다.
communicationproject-managementdocument
triage
mattpocock
트라이지 역할에 의해 구동되는 상태 머신을 통해 이슈를 분류합니다. 사용자가 이슈를 생성하거나, 이슈를 분류하고, 들어오는 버그나 기능 요청을 검토하고, AFK 에이전트를 위해 이슈를 준비하거나, 이슈 워크플로를 관리하려는 경우 사용합니다.
developmentproject-managementcommunication
obsidian-vault
mattpocock
Obsidian 볼트에서 위키링크와 인덱스 노트를 사용하여 노트를 검색, 생성 및 관리합니다. 사용자가 Obsidian에서 노트를 찾거나, 생성하거나, 정리하려 할 때 사용하세요.
productivitydocument
edit-article
mattpocock
기사 초안의 섹션을 재구성하고, 명확성을 높이며, 문장을 간결하게 다듬어 편집하고 개선합니다. 사용자가 기사 초안을 편집, 수정 또는 개선하려 할 때 사용하세요.
documentcreative
writing-great-skills
mattpocock
스킬을 잘 작성하고 편집하기 위한 참고 자료 — 스킬을 예측 가능하게 만드는 어휘와 원칙.
documentdevelopment
implement
mattpocock
PRD 또는 이슈 세트를 기반으로 작업을 구현합니다.
developmentcode-reviewproject-management