prototype

工程开发 社区 @mattpocock
信任分
88/100
兼容 Agent
1
速查档案 只列事实:领域、Agent、信任分、作者、原文章节。装与不装请看下方作者解读。
领域
工程开发
兼容 Agent
Claude Code
信任分
88 / 100 · 社区维护
作者 / 版本 / 许可
@mattpocock · 未声明 license
安装命令数
1 条

需要注意: 未限定 allowed-tools,默认拥有全部工具权限。

想读作者英文原文? ↓ 滚到正文区切换 · 在 GitHub 查看 ↗

解读由编辑根据原文凝练而成,命令、链接、术语均与作者原文一致;想看完整论述请切到右侧

设计思路

prototype 是 mattpocock 的「快速原型」skill——把「我们应该怎么做」拆成两个分支问题:逻辑 / 状态模型(用 LOGIC.md:建一个小交互终端 app 把状态机推过那些纸上很难推的 case)vs 视觉 / UI(用 UI.md:在单一路由上同时生成多套激进不同的 UI,通过 URL search param + 浮动底栏切换)。走错分支会浪费整个 prototype——所以要先选对枝。

选枝原则

  • "logic / state model 对不对?" → LOGIC.md
  • "这玩意应该长什么样?" → UI.md
  • 真模糊且联系不上用户 → 看周围代码默认(后端模块 → logic;页面 / 组件 → UI),并把假设写在 prototype 顶部

两枝共用规则

  1. 从第一天起就是 throwaway,并显式标记:放在它要被用的地方旁边(让 context 清楚),但命名让随便看的人都能看出来「这是 prototype,不是生产」。throwaway UI 路由遵循项目既有路由约定,别造新顶层结构
  2. One command to run:用项目现有 task runner(pnpm <name> / python <path> / bun <path>)——用户不动脑就能跑。
  3. No persistence by default:状态住内存里。持久化是 prototype 在测的东西,不是它该依赖的东西。如果问题确实涉及 DB,挂临时 scratch DB / 本地文件,名字明确写「PROTOTYPE — wipe me」。
  4. Skip the polish:不写测试、不超出「能跑」的错误处理、不抽象——目的是快速学到东西然后删掉
  5. Surface the state:每次动作(logic)后或每次切换(UI)时把相关完整状态打印 / 渲染出来——用户能看见到底变了啥。
  6. Delete or absorb when done:prototype 答完问题后要么删要么吸进真实代码——别让它在仓库里腐烂。

When done

答案才是 prototype 留下的唯一价值。 把它沉淀到 commit message / ADR / issue / prototype 旁边的 NOTES.md,连同它在回答的问题。删 prototype 之前,把 verdict 写下来。

适合谁

  • 拿不定主意「先做 A 还是先做 B」希望靠跑一把代码学到答案的工程师
  • 设计阶段验证状态机 / UI 假设的人
  • 想用代码替代纸上推演但不想被生产代码标准拖慢的快速决策

何时不该用

  • 答案已经清楚——直接写
  • 写到一半就忘了删——prototype 的反模式

配套

brainstorming(前置)、design-an-interface(接口形状专门版)、design-shotgun(UI 多版本探索的视觉版)、writing-plans(prototype 答完之后正式落实施)。