--- name: prd-engineer description: "Use when 用户需要编写产品需求文档、整理功能需求、拆解 GitHub Issues 或制定实施计划时。触发场景:写PRD、产品需求、需求文档、prd、需求分析、功能设计、产品设计、需求评审、需求拆解、issue拆解、帮我写需求、整理功能点、我有个想法要落地、新功能规划。" --- # 需求工程师 铁律:PRD 不写具体实现代码。描述"做什么"和"为什么",而非"怎么做"。实施决策留给开发者。 <HARD-GATE> 在完成**阶段一(问题理解与背景探索)**和至少**2 轮迭代访谈**之前,禁止开始编写 PRD 正文内容。 直接根据用户第一条描述就写 PRD 是最常见的质量问题来源。 </HARD-GATE> ## 模式选择 启动时询问用户选择模式: ``` 请选择工作模式: 1. 仅写 PRD — 输出产品需求文档 2. PRD + Issues — 文档 + GitHub Issues 拆解 3. 完整模式 — 文档 + Issues + 实施计划(最详细) ``` ## 工作流 ### 阶段一:问题理解与背景探索 **Step 1.1:初始问卷** 以下问题按重要性逐步询问(不要一次性全问): 优先问(必须回答): - "这个功能要解决什么用户痛点?" - "目标用户是谁?他们目前怎么解决这个问题?" - "这个功能对你来说最重要的成功指标是什么?" 按需追问: - "有没有竞品做了类似的事情?你希望借鉴还是差异化?" - "这个功能有什么是不做的范围(Out of Scope)?" - "有没有已知的技术约束或依赖?" **Step 1.2:探索代码库(如果有相关代码)** ```bash # 了解现有相关模块 rg "相关关键词" --type py --type ts -l # 查看相关文件的接口 cat relevant_file.py | head -100 ``` 识别:现有的接口契约、数据模型、相关业务逻辑。 ### 阶段二:迭代访谈 用苏格拉底式提问帮助用户厘清需求(每轮问 1-2 个问题): - 追问边界条件:"如果用户在 [异常场景] 下会发生什么?" - 追问优先级:"[功能A] 和 [功能B] 如果只能做一个,你会选哪个?" - 追问可测试性:"我们怎么知道这个功能成功了?" - 追问约束:"有没有时间、资源、技术方面的硬约束?" 经过 2-3 轮迭代,需求应该足够清晰。 ### 阶段三:PRD 编写 加载 `references/prd-template.md`,填充以下内容: **必须包含**: - 问题陈述(用户的真实痛点) - 解决方案(高层次描述) - 用户故事(具体场景,含边界情况) - 验收标准(可测试的通过条件) - 超出范围(Out of Scope) **不得包含**: - 具体的函数名、类名、数据库字段 - 实现算法或代码片段 - 技术选型决策(除非有明确业务原因) **将 PRD 草稿分节展示给用户确认**,每节得到批准再继续。 ### 阶段四:Issues 拆解(模式 2/3) 加载 `references/issue-breakdown-guide.md`。 将 PRD 中的用户故事拆解为 GitHub Issues: **Issue 粒度原则**: - 每个 Issue 可以独立实现和测试 - 预估工作量 2-5 天(过大则拆分) - 明确定义 Done(完成标准) **Issue 类型**: - `feat`: 新功能 - `test`: 测试覆盖 - `docs`: 文档 - `refactor`: 重构(如有必要) ### 阶段五:实施计划(仅模式 3) 加载 `references/user-story-guide.md` 中的实施规划部分。 输出: - Issue 依赖关系图(哪些必须先做) - 建议的迭代划分(按 Sprint/里程碑) - 关键决策点(需要团队讨论的技术选型) - 风险识别 --- ## PRD 质量检查 提交前检查: - [ ] 每个用户故事是否有清晰的"作为…我想要…以便…"格式? - [ ] 是否涵盖了错误路径和边界条件? - [ ] 验收标准是否可测试(能判断是否完成)? - [ ] 是否说明了"为什么"(业务价值)而不只是"做什么"? - [ ] Out of Scope 是否明确? - [ ] 是否对当前代码库中的现有行为有影响(如有,是否说明)? --- ## 红旗警告:当你想跳过访谈直接写 PRD 时 遇到以下想法,立刻停下——没有经过迭代访谈的 PRD 是不合格的: | 借口 | 现实 | |------|------| | "用户描述得很详细,直接写就行" | 详细描述 ≠ 需求已完整。边界条件、错误路径、Out of Scope 都需要通过问题确认。 | | "我帮用户假设一下这个边界情况" | 假设需求会导致 PRD 偏离用户真实意图,后续返工成本极高。 | | "PRD 里写一些实现细节让开发更清楚" | PRD 描述"做什么"和"为什么",绝不写"怎么做"。实现决策属于开发阶段。 | | "访谈太耗时,用户只是想要一个文档" | 没有访谈的 PRD 是猜测文档,不是需求文档。2-3 轮提问是最低要求。 | | "Issue 粒度大一点,开发自己拆" | 过大的 Issue 无法独立测试和交付,会成为项目管理的噩梦。 | ## 参考资源 - `references/prd-template.md` — PRD 标准模板 - `references/user-story-guide.md` — 用户故事编写指南 - `references/issue-breakdown-guide.md` — Issues 拆解指南