大模型应用
在开发大型功能前用 PRODUCT.md 与…
适用于需要书面规格来提升实现质量、减少歧义或便于评审的重大功能开发。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
在开发大型功能前用 PRODUCT.md特定
解决思路
- 评估功能规模、歧义与风险,若规格无法实质提升执行或评审质量则跳过规格,转而专注验证。
- 规格文件通常放在 specs/<linear-ticket-number>/PRODUCT.md 和 specs/<linear-ticket-number>/TECH.md,例如 specs/APP-1234/PRODUCT.md。
- specs/ 目录下只允许以 ticket 命名的目录作为直接子目录,不要创建以工程师命名或功能 slug 命名的子目录。
- 若相关 Linear issue 不存在,先用 Linear MCP 工具创建:用 list_teams 找到合适的团队,用 list_issue_labels 查看预期标签,用 save_issue 以合适的团队和标签创建 issue。
- 若无法从请求和上下文中确定正确的团队或标签,使用 ask_user_question 澄清而不是猜测。
- 规格应主要由 agent 编写而非手写,并提交到源码控制以便评审和与代码保持同步。
- 在实现前先写产品规格:用 write-product-spec 技能创建 PRODUCT.md,描述期望的用户可见行为。
- 产品规格应定义:要解决的问题、期望的用户体验、不变量与边界情况、成功标准、行为如何被验证。
- 若功能有 UI 或交互设计,询问是否有 Figma 稿;若没有稿子,继续但在产品规格中明确说明这一点。
- 在规格中引用 Linear issue(当存在时),因为规格位于 specs/<linear-ticket-number>/... 下,这通常很直接。
- 在实现工作重大或存在歧义时用 write-tech-spec 技能编写技术规格。
- 以下情况优先写技术规格:实现跨越多个子系统、架构或可扩展性重要、存在需要记录的权衡、评审者从评审计划中获益多于评审原始代码。
- 可以在 e2e 原型之后再写技术规格,如果这样能得到更准确的实现计划;当实现细节仍太不确定时不要强行过早写技术规格。
- 规格获批后,用 implement-specs 技能基于获批的 PRODUCT.md 和 TECH.md 进行构建。
- 实现通常可以与产品和技术规格放在同一个 PR 中推送;随着工程师迭代,保持 PRODUCT.md、TECH.md、代码改动和测试在同一 PR 中,使评审反映实际将发布的功能。
- 对于大型功能,实现者可选择提供 PROJECT_LOG.md 跟踪探索路径、检查点和当前实现状态,以及 DECISIONS.md 记录设计与实现中做出的具体产品和技术决策;这些是可选的辅助而非必需产出。
- 实现过程中若与规格不符,更新规格而不是让其过时。
- 当用户可见行为变化、成功标准变化、UX 细节或边界情况变化时更新 PRODUCT.md。
- 当实现方式变化、架构边界移动、风险/依赖/发布细节变化、测试或验证计划变化时更新 TECH.md。
- 提交的规格应描述实际发布的功能而非仅初始意图;尽可能将规格更新与相关代码改动放在同一 PR 中。
- 在认为工作完成前,确保验证能映射回规格,优先使用直接验证产品行为的测试和产物:遵循仓库本地测试约定的单元测试和回归覆盖、关键用户流程的集成测试、适当情况下的 loom 演示或等效功能演示、UI 密集工作时有用的截图或视频。
- 务实高于一切;写规格是为了提升 agent 的输入质量而非走形式。
- 保持产品规格面向行为、实现细节少;保持技术规格面向实现、扎根于当前代码库模式。
- 当规格引用相关代码片段时,尽可能在文件引用中包含所检查的 commit SHA,并将引用链接到精确的 GitHub blob/<sha>/...#Lx-Ly 行。
- 把评审时间用于验证规格和行为,而不是过度纠结代码风格细节。
适用边界 · 注意事项
- 小型、局部的 bug 修复
- 直接的(straightforward)重构
- 歧义很少的狭窄 UI 调整