| name | rpiv-loop:create-prd |
| description | 基于对话上下文创建产品需求文档 |
| argument-hint | [功能主题] |
| allowed-tools | Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion |
| version | 2.17.14 |
<rpiv-loop-root> 解析顺序:环境变量 RPIV_LOOP_ROOT -> CLAUDE_PLUGIN_ROOT -> 当前插件根目录;均不存在时停止并请用户配置 RPIV_LOOP_ROOT 或 CLAUDE_PLUGIN_ROOT。
Create PRD: 生成产品需求文档
前置初始化
首次执行前调用(幂等,已存在则静默跳过):
uv run --no-project python <rpiv-loop-root>/tools/ensure_project_dod.py
该脚本若发现 rpiv/dod.yaml 缺失则从 <rpiv-loop-root>/tools/dod_template.yaml 拷贝初始化;已存在则静默跳过。确保项目级 DoD 通用门在后续 RPIV 各阶段可用。
概述
- 基于以下输入生成全面的产品需求文档(PRD)。
- 使用下面定义的结构和章节创建完整、专业的 PRD。
- 针对输出文档架构中需要,但是未获取的内容,采用面试对话的形式和我互动,确保每一个关键细节都得到充分澄清。
输出文件
将 PRD 写入:rpiv/requirements/prd-{kebab-case-feature-name}.md
- 如果
rpiv/requirements/ 目录不存在则创建
{kebab-case-feature-name} 从用户输入或对话上下文中提取功能名称
- 示例:
prd-meeting-analysis.md、prd-user-auth.md
- 每次执行都创建新文件,不覆盖已有的 PRD
文件格式
文件必须包含 YAML frontmatter 和内容:
---
description: "产品需求文档: {feature-name}"
status: pending
product_types: [code]
created_at: {YYYY-MM-DDTHH:MM:SS}
updated_at: {YYYY-MM-DDTHH:MM:SS}
archived_at: null
---
# {PRD 内容}
Frontmatter 字段说明:
description: 文件描述
status: 文件状态,新创建时固定为 pending
product_types: 产物类型列表,枚举 code / skill,可叠加(如 [code, skill])。省略时下游按 [code] 处理,行为与改造前一致
created_at: 创建时间戳,ISO 8601 格式
updated_at: 更新时间戳,创建时与 created_at 相同
archived_at: 归档时间戳,创建时固定为 null
PRD 结构
根据以下结构创建一个结构合理的产品需求文档(PRD)。根据现有信息调整各部分的深度和细节。
必需章节
1. 执行摘要
- 简洁的产品概述(2-3 段)
- 核心价值主张
- MVP 目标声明
2. 使命
3. 目标用户
4. MVP 范围
- 范围内: MVP 的核心功能(使用 ✅ 复选框)
- 范围外: 推迟到未来阶段的功能(使用 ❌ 复选框)
- 按类别分组(核心功能、技术、集成、部署)
5. 用户故事
- 主要用户故事(5-8 个故事),格式:"作为 [用户],我想要 [行动],以便 [收益]"
- 为每个故事包含具体示例
- 如果相关,添加技术用户故事
6. 核心架构与模式
- 高级架构方法
- 目录结构(如果适用)
- 关键设计模式和原则
- 特定技术的模式
7. 工具/功能
- 详细的功能规范
- 如果构建代理:工具设计,包括目的、操作和关键功能
- 如果构建应用:核心功能分解
8. 技术栈
- 后端/前端技术及版本
- 依赖项和库
- 可选依赖项
- 第三方集成
9. 安全与配置
- 身份验证/授权方法
- 配置管理(环境变量、设置)
- 安全范围(范围内和范围外)
- 部署考虑
10. API 规范(如果适用)
11. 成功标准
- MVP 成功定义
- 功能要求(使用 ✅ 复选框)
- 质量指标
- 用户体验目标
12. 实施阶段
- 分解为 3-4 个阶段
- 每个阶段包括:目标、交付物(✅ 复选框)、验证标准
- 现实的时间线估计
13. 未来考虑
14. 风险与缓解措施
15. 附录(如果适用)
条件章节:按产物类型追加
判定本次产物类型并写入 frontmatter product_types(枚举 code / skill,可叠加;从对话上下文判定,不明确时用 AskUserQuestion 询问用户):
- 含
code:按上方必需章节产出,无额外要求
- 含
skill(产物为 SKILL.md / references / 插件技能):追加「触发场景」必需章节——should-trigger 与 should-not-trigger 清单各 8-10 条,外加 description 草案。章节模板与写法规则 Read <rpiv-loop-root>/references/skill-authoring/prd-trigger-scenarios.md
[code, skill]:两者叠加,必需章节与触发场景章节都要有
指令
1. 提取需求
- 审查整个对话历史
- 识别明确的需求和隐含的需求
- 注意技术约束和偏好
- 捕获用户目标和成功标准
2. 综合信息
- 将需求组织到适当的章节
- 在缺少细节的地方填入合理的假设
- 保持各章节的一致性
- 确保技术可行性
3. 编写 PRD
- 使用清晰、专业的语言
- 包含具体示例和细节
- 使用 Markdown 格式(标题、列表、代码块、复选框)
- 在技术章节中添加代码片段(如有帮助)
- 保持执行摘要简洁但全面
4. 质量检查
- ✅ 所有必需章节都存在
- ✅ 用户故事有明确的收益
- ✅ MVP 范围现实且定义明确
- ✅ 技术选择有理由
- ✅ 实施阶段可操作
- ✅ 成功标准可衡量
- ✅ 整个文档术语一致
样式指南
- 语调: 专业、清晰、面向行动
- 格式: 广泛使用 Markdown(标题、列表、代码块、表格)
- 复选框: 使用 ✅ 表示范围内项目,❌ 表示范围外项目
- 具体性: 优先使用具体示例而非抽象描述
- 长度: 全面但可扫描(通常 30-60 个章节的内容)
前置检查
在开始编写 PRD 之前:
-
版本替代检查:检查 rpiv/requirements/ 下是否存在同名特性的旧版本 PRD(如当前要创建 prd-{name}-v2.md,而 prd-{name}.md 已存在)。如果存在旧版本且状态不是 superseded 或 archived:
- 使用 AskUserQuestion 询问用户是否将旧版本标记为
superseded
- 如果确认,更新旧文件 frontmatter:
status: superseded,追加 superseded_by: rpiv/requirements/prd-{new-name}.md,更新 updated_at
-
识别 brainstorm-summary 来源:检查对话上下文中是否引用了 rpiv/brainstorm-summary-*.md 文件。如果有,记录其路径,用于 PRD 完成后回写状态。
-
识别 todo 来源:如果用户通过 --from-todo <path> 参数指定了来源 todo 文件,或对话上下文中明确引用了 rpiv/todo/feature-*.md 文件,记录其路径,用于 PRD 完成后回写状态。
输出确认
创建 PRD 后:
- 确认写入的文件路径
- 提供 PRD 内容的简要摘要
- 突出显示由于缺少信息而做出的任何假设
- 更新上游文件状态:
- 如果在前置检查中识别到 brainstorm-summary 来源文件,将其 status 更新为
completed,更新 updated_at
- 如果识别到 todo 来源文件,将其 status 更新为
completed,更新 updated_at,并在 todo 文件末尾追加 promoted_to: rpiv/requirements/prd-{feature-name}.md
- 建议后续步骤:
- "PRD 已生成。下一步建议:
/clear 后执行 /rpiv-loop:plan-feature {feature-name} 创建实施计划。"
备注
- 如果缺少关键信息,在生成之前询问澄清问题
- 根据可用细节调整章节深度
- 对于高度技术性的产品,强调架构和技术栈
- 对于面向用户的产品,强调用户故事和体验
- 代码产物场景本文件自足,不需要外部引用;skill 产物场景按需加载
references/skill-authoring/