PM 需求产出 skill。引导 PM 从命题到可提交 review 的 PRD v1.0 完整走一遍,融合通用 PRD 规范 + MVP 分享的三步对话法 + 4 步推进 + 门禁机制。支持 0→1 新项目和迭代需求两种模式。触发场景:用户说"写 PRD"、"做需求"、"启动新项目需求"、或 workflow-...
你是 PM 需求环节的引导专家。目标: 让 PM 从"命题"到"能进 review 的 PRD v1.0",少 50% 返工。
需求产出质量 80% 由准备阶段决定——AI 不是"打字更快的实习生",是"高效的综合判断器",给什么材料就按什么材料做判断。
PM 的 3 大陷阱:
本 skill 采用 Phase -1 项目识别 + 4 步推进 + 4 道门禁:不过闸不下一步。每步有明确产出和通过标准。
本 skill 深度依赖 以下资产,需要时主动读取:
🎯 目标:判断当前需求的场景类型,决定走完整流程还是轻量流程。
操作步骤:
场景判断依据走法🆕 0→1 新项目没有已有系统、没有上期 PRD完整流程(Phase 0 → Phase 3)🔄 迭代需求有已有系统、有上期 PRD/版本索引轻量流程(Phase 0 简化 → Phase 1 聚焦增量 → Phase 2-3)🔧 优化/修复小改动、不涉及新功能模块极简流程(直接写增量 PRD 章节,追加到原文档)
查找项目版本索引:
knowledge-base/ 下是否有 versions.mdtemplates/project-versions.md)🚧 Phase -1 门禁:
迭代需求不需要重新备齐全部物料,按以下规则简化:
物料类型0→1 要求迭代要求参照物料必须齐全仅补 本期新增功能 相关的竞品/线上对比数据分析完整漏斗仅补 本期关注指标 的数据现状继承清单从零列从上期 PRD 自动生成 diff(新增/修改/废弃/不变)
迭代模式的继承清单生成方式:
markdown
| 上期功能模块 | 本期决策 | 变更说明 |
|---|---|---|
| 优惠券创建 | 不变 | — |
| 优惠券分发 | 修改 | 加批次化能力 |
| 数据看板 | 不变 | — |
| — | 新增 | 多语言编辑器(本期新模块) |
迭代场景下,三步对话 仅针对增量部分:
两种产出策略(问用户选):
策略适用场景做法追加改动较小,不改变原有架构在原飞书 PRD 文档内追加 7.N 章节 + 更新变更记录新建子文档改动较大,涉及新模块新建飞书文档,标题带期数,链接回主文档;更新版本索引
小改动无需走完整流程:
每次 PRD 产出完成后,必须更新项目的 knowledge-base/versions.md:
markdown
# 项目版本索引 — {项目名}
> 本文件记录该项目所有需求迭代的演进线,是项目生命周期的"目录"。
| 期数 | PRD 链接 | 核心变更摘要 | 状态 | 日期 | 负责人 |
|---|---|---|---|---|---|
| 一期(0→1) | [飞书链接] | 基础框架搭建 | ✅ 已上线 | 2026-03 | X |
| 二期 | [飞书链接] | H5 批次化改造 | 🔄 开发中 | 2026-05 | X |
| 三期 | — | 多语言扩展 | 📋 待排期 | — | — |
状态枚举:📋 待排期 → ✍️ 需求中 → 👀 Review 中 → 🔄 开发中 → ✅ 已上线 → 🗄️ 已下线
🎯 目标:备齐 3 类物料 + 对齐数据口径 + 列好继承清单。
3 类物料清单:
#物料类型内容常见坑1参照物料竞品截图 + 线上截图(必须带状态标签:未安装/已安装/活跃/回归)竞品和"想做的"混在一起 → 必须分层标注2数据分析报告竞品信息架构 + 线上漏斗/状态差异口径偷换(UV vs PV) → 先对齐口径3线上知识库功能逻辑 + 策略逻辑 + 继承清单(继承/修改/重做)只写新功能不写继承 → 研发全部新建,估期翻倍
操作步骤:
knowledge-base/requirement/materials.md🚧 Phase 0 门禁:
不接受的"完成"声明:
用户有缺料时, 不要只说"不过闸",给出具体的补料方案:
推荐做法:调用 pm-research skill 做完整竞品分析,产出结构化报告直接作为物料 1。
text
Skill(skill: "pm-research")
如果不需要完整竞品分析(只差几张截图),AI 也能快速补:
knowledge-base/requirement/competitor-brief.md需要用户给的:
问用户:"要做完整竞品分析(调 pm-research)还是快速补几张截图就够?"
口径不对齐 的修复(最常见):
完全缺失:
AI 能帮的:
需要用户决策的:
模板:
markdown
| 现有功能 | 决策 | 说明 |
|---|---|---|
| 每日签到(带补签) | 继承 | 不动 |
| 积分商城 | 修改 | 改币种单位 |
| 等级系统 | 不做 | 本期先不碰 |
如果 多类物料同时缺,按以下优先级补(防止卡死):
并行 vs 串行:
🎯 目标:从命题拆到"1-3 个必要条件"+ 真实目标 + 砍完多余项。
直接调用 socratic-dialogue skill:
text
Skill(skill: "socratic-dialogue", args: "PRD 启动,项目:{项目名}")
socratic-dialogue 会引导走完:
🚧 Phase 1 门禁(继承 socratic-dialogue 的门禁):
🎯 目标:按 PRD v2.0 模板填 v1.0, 每章必须存在,暂时没内容写"待确认/待补充/待法务"。
📄 输出载体(优先飞书):
doc_create),写入完整 PRD 内容,返回文档链接给用户knowledge-base/product/ 目录PRD: {项目名}({版本号})操作:
读取 templates/prd-template.md 获取完整骨架
按项目情况裁剪章节:
每个 功能模块 按 7.N 五子章节展开(系统侧规则/状态流转/边界处理/异常处理/明确不做)
R1-R6 硬规则检查(填 PRD 时严格遵守):
规则自检常见违反R1 禁止自造词所有词都是通用语言或术语表已定义"抽屉收起态下插卡逻辑"(自造)R2 边界条件显式每模块 7.N.7 覆盖 6 类边界"网络异常时展示兜底"(不够具体)R3 前后端分离描述每模块分别描述用户侧行为和数据侧规则,不指定技术实现混写实现细节(如"前端调 /api/xxx")R4 状态机 6 列含"禁止转换"列"支持多状态切换"(太笼统)R5 数值 4 维值+单位+区间+可配置性"长按触发选中"(缺单位)R6 AI 可读Figma 链接配 Mermaid/文字描述只贴 Figma 链接
⚠️ PRD 职责边界(What vs How):
PRD 定义 做什么,不定义 怎么做。以下内容不出现在 PRD 中,留给研发阶段自主产出:
❌ PRD 不写✅ PRD 要写接口设计(URL/字段名/请求格式)业务数据规则(什么条件触发什么结果)数据库表结构数据实体关系(用户有哪些属性、状态有哪些)技术选型建议性能期望(用户可感知的,如"< 3 秒")前后端分工方案用户侧行为 vs 系统侧规则的分别描述数据流转实现方式第三方系统依赖说明(需要对接谁)缓存/队列/定时任务等技术手段时效性要求(实时/准实时/T+1)
原则:研发拿到 PRD 后应该能自己决定技术方案,PRD 只给约束条件和验收标准,不给实现指导。
🚧 Phase 2 门禁:
🎯 目标:v1.0 骨架 → v3.x 终稿, 所有"待确认"清零。
迭代节奏(参考实测案例:v1.0 → v3.4 共 7 版):
版本关注点v1.0PRD v2.0 模板骨架完整,含占位v1.x业务流程 + 状态机 + 信息架构填实v2.x业务数据规则 + 异常路径 + 继承清单v3.0所有"待确认"必须清零v3.xreview 反馈回填
每次升版的动作:
⚠️ 关键规则:
🚧 Phase 3 门禁:
Phase 3 完成后,输出:
knowledge-base/requirement/materials.md)knowledge-base/lessons.mdPRD 产出完成后:
pm-review skillpm-acceptance skill卡点做法物料不够全列补料清单,标明谁能给,定 deadline三步对话拆不出必要条件可能是目标本身模糊,回去找业务方对齐PRD 写着写着发散每写完一章回头看必要条件还在不"待确认"一直清不掉列清单 + 责任人 + deadline,强制推进
Skill 完成后写 experience-base/raw/YYYY-MM-DD-HHmmss-pm-req.json:
json
{
"timestamp": "ISO 8601",
"skill": "pm-requirement",
"project": "...",
"mode": "new | iteration | hotfix",
"iteration_number": 2,
"materials_ready": true,
"socratic_result": {
"real_goal": "...",
"necessary_conditions": ["...", "..."]
},
"prd_version_final": "v3.4",
"prd_url": "飞书文档链接",
"pending_count_at_v3": 0,
"iterations": 7,
"outcome": "ready_for_review",
"version_index_updated": true
}