--- name: prototype description: 快速验证设计的一次性原型。区分两条分支——逻辑/状态模型用终端交互 App,UI 布局用多变体路由切换。当用户想原型验证、检验数据模型或状态机、探索多种 UI 方案时触发。触发词:原型、prototype、验证方案、快速试验、让我玩一玩、试几个设计。 --- # 原型(Prototype) 原型是**回答一个问题的一次性代码**。问题决定形态,答完即删。 ## 选分支 根据用户提示、周边代码、或直接询问来判断问题属于哪类: - **"这段逻辑/状态模型的设计感觉对吗?"** → [references/LOGIC.md](references/LOGIC.md)。构建一个微型终端交互 App,手动驱动状态机穿越难以凭空推理的边界 Case。 - **"这个界面应该长什么样?"** → [references/UI.md](references/UI.md)。在单个路由上生成几个差异显著的 UI 变体,通过浮动底栏切换。 分支错误会浪费整个原型。若问题确实模糊且用户不在线,则默认按周边代码选择(后端模块→逻辑;页面/组件→UI),并在原型顶部声明该假设。 ## 两条分支通用规则 1. **从第一天起就是一次性代码,且明确标记。** 将原型代码放在它实际服务的模块或页面旁边,名称中包含 `prototype` 以示一次性身份。 2. **一条命令即可运行。** 使用项目现有任务管理器(`pnpm <name>`、`python <path>` 等),用户不需要记路径。 3. **默认不持久化。** 状态存内存。若问题本身涉及数据库,使用临时 DB 或带有 "PROTOTYPE — wipe me" 标记的本地文件。 4. **跳过打磨。** 不写测试、不做错误处理(仅保留让原型能运行的最低限度)、不做抽象。目标是快速学到东西然后删掉它。 5. **暴露状态。** 每次操作后(逻辑)或每次切换变体后(UI),打印或渲染完整的相关状态。 6. **完成后删除或吸收。** 原型回答完问题后,要么删除,要么将经过验证的决策折叠进真实代码——不要让它在仓库里腐烂。 ## 完成时 原型唯一值得保留的是**答案**。将其记录在某个持久化位置(commit message、ADR、issue,或原型旁边的 `NOTES.md`),连同它所回答的问题一并保存。若用户在场,几句对话即可;若不在,留好占位符供后续填写,然后删除原型。 ## 详细指南 - 逻辑原型:[references/LOGIC.md](references/LOGIC.md) - UI 原型:[references/UI.md](references/UI.md)