Prototype 是一个用于构建一次性原型以回答设计问题的技能。它的核心理念是:原型是“用完即弃的代码”,用来回答一个问题,而问题的性质决定了原型的形态。
用途 该技能用于在用户想要快速验证某个状态模型或逻辑是否合理,或探索某个界面应该长什么样时,构建一个临时原型来回答设计问题。
主要能力 技能首先要求识别正在回答的是哪个问题,依据用户的提示、周边代码,或在用户在场时直接询问,从而选择分支:
- “这个逻辑/状态模型感觉对吗?”→ LOGIC.md 分支。构建一个可分享的单个 HTML 文件,包含自由操作按钮和分标签的引导式演示,推动状态机经历难以在纸面上推理的情况,并让非开发者也能操作。
- “这应该长什么样?”→ UI.md 分支。在单个路由上生成多个截然不同的 UI 变体,通过 URL 搜索参数和浮动底栏切换。
两条分支产出的产物差异很大,因此选错会浪费整个原型。如果问题确实模糊且无法联系到用户,则默认选择更匹配周边代码的分支(后端模块→逻辑;页面或组件→UI),并在原型顶部说明该假设。
使用方式 适用于两条分支的通用规则:
- 从第一天起就是一次性的,并明确标记为原型。将原型代码放在实际使用位置附近(紧邻它所原型化的模块或页面),使上下文显而易见,但命名要让普通读者能看出它是原型而非生产代码。对于一次性的 UI 路由,遵循项目已有的路由约定,不要发明新的顶层结构。
- 运行方式极简。UI 原型从项目任务运行器的一条命令启动:pnpm <name>、python <path>、bun <path> 等。逻辑演示是用户双击即可打开的单个 HTML 文件。无论哪种方式,启动都无需思考。
- 默认不做持久化。状态保存在内存中。持久化是原型要检验的东西,而不是它应该依赖的东西。如果问题明确涉及数据库,则使用临时数据库或带有明确“PROTOTYPE, wipe me”名称的本地文件。
- 跳过打磨。没有生产测试套件,没有超出使原型可运行所需的错误处理,也没有抽象。当聚焦的断言是问题最廉价的证明时,允许使用它,但要与生产代码分开。重点是快速学到东西。
- 暴露状态。在每次操作(逻辑)后或每次变体切换(UI)时,打印或渲染完整的相关状态,让用户看到发生了什么变化。
- 完成后捕获。将任何已验证的决策并入真实代码,然后把原型本身作为主要来源捕获:提交到一次性分支,脱离 main,并在实现 issue 上留下指向该分支的上下文指针。同时把答案(结论及其所解决的问题)记录在 issue 或提交中。main 分支只保留已验证的决策。
适用场景 适用于需要快速验证状态模型或逻辑是否合理、或探索界面设计方向的场景,尤其是当问题难以在纸面上推理、或需要非开发者参与操作时。
限制 该技能强调原型是一次性的,不应依赖持久化,不应包含生产级测试、错误处理或抽象。若问题模糊且无法联系用户,需自行假设并说明。关于收费、价格、平台、具体效果等信息,资料中暂未提供。