产品经理-随风 · PRD 与验收标准(ym-dev-prd-spec)
管「做成什么样」,不管「业务实际怎么跑」(那是需求调研的事)。核心产出是一份开发照着能干活、测试照着能验证的文档。
> 本技能来自「编程专家团-随风」专家团的 产品经理 角色(Agent ym-product-manager)——把该角色的方法论单独抽出来,装一条就能用,不需要整团。
运行前提
- 依赖:无第三方依赖,纯方法论技能(不联网、不读写用户文件)
- 无运行时配置与本地数据,不读写任何配置文件
- 产出默认写入用户指定的产出目录(运行时产物),用户未指定时落到当前工作区的
output/<需求标识>/下
第 0 步 · 版本自检(每次动手前先跑)
python scripts/sync.py --json
只读比对线上版本:退出码 0 最新 · 10 有新版建议重装 · 20 主版本不同必须重装 · 30 联网失败按旧版继续。
本技能不自动更新自己 —— 换版本只有一条路:用户明确重装(skillhub install ym-dev-prd-spec)。
何时使用
- 调研结论有了,要定型成产品方案
- 需求一堆,要排序决定先做哪个
- 要给功能写可验证的验收标准
- 要判断某个需求该不该做
工作流
第 1 步:先做「值不值得做」的判断
在做任何文档之前,每个需求过一遍这四问:
| 问题 | 不通过的表现 |
|---|---|
| 解决谁的什么问题? | 说不出具体角色,只能说「用户」 |
| 不做会怎样? | 答案是「也没什么影响」 |
| 有没有更省的做法? | 有,但没人提 |
| 做完怎么知道有效? | 给不出观测口径 |
四问里有两问答不上来,这条需求就该进「不做清单」而不是进排期。
第 2 步:定优先级
用价值 × 成本两维判断,不要用「重要紧急」四象限(它会让人把「别人催得急」当成「重要」)。
| 低成本 | 高成本 | |
|---|---|---|
| 高价值 | P0 先做 | P1 拆小后做 |
| 低价值 | P2 顺手做 | P3 不做 |
- P0:不做则系统无法交付或无法使用
- P1:核心流程完整所必需,但可以延后一轮
- P2:体验优化、便利性增强
- P3:明确不做,写进不做清单并说明理由
「高成本 + 低价值」的功能必须显式写进不做清单 —— 否则它会被反复提起。
第 3 步:写功能条目
每个功能一条,必须包含:
F-<编号> <功能名> [P0/P1/P2]
- 使用角色:
- 触发场景:<什么情况下用>
- 主流程:<正常走通的步骤,编号列出>
- 分支与例外:<失败、越权、数据缺失时的表现>
- 验收标准:<可验证、可复现的判定条件>
- 不做范围:<这条功能明确不覆盖什么>
第 4 步:把验收标准写成可测的形式
不合格与合格的对比:
| 不合格 | 合格 |
|---|---|
| 查询速度要快 | 按设备编号查询 10 万条记录,P95 响应 < 2 秒 |
| 界面要友好 | 列表页支持按状态筛选,筛选后结果数正确显示 |
| 要有权限控制 | 普通用户访问管理页返回 403,不进入页面 |
验收标准里出现「良好」「合理」「尽量」「友好」等词,一律重写。
第 5 步:明确不做清单
列出本次明确不做的功能及理由。这一节的价值常被低估 —— 它是防止需求蔓延的唯一手段。
产出模板
# 产品需求文档:<产品/模块名>
**版本**:v1.0 **日期**:YYYY-MM-DD
## 一、背景与目标
- 要解决的问题:
- 目标用户:
- 本期目标(可衡量):
## 二、范围
### 本期做
### 本期不做(及理由)
## 三、功能清单
| 编号 | 功能 | 优先级 | 使用角色 |
|---|---|---|---|
| F-01 | | P0 | |
## 四、功能详述
### F-01 <功能名> [P0]
- 触发场景:
- 主流程:
1.
- 分支与例外:
- 验收标准:
1.
- 不做范围:
## 五、非功能要求
| 类别 | 要求 |
|---|---|
| 性能 | |
| 权限 | |
| 兼容 | |
| 数据留存 | |
## 六、依赖与假设
- 依赖的外部系统:
- 假设成立的前提:
## 七、待确认问题
| 问题 | 影响 | 需要谁确认 |
|---|---|---|
质量自检清单
- [ ] 每条 P0/P1 功能都有验收标准,且标准可复现
- [ ] 验收标准里没有「良好/合理/友好/尽量」这类词
- [ ] 有明确的不做清单
- [ ] 每条功能都写了分支与例外(不只写了主流程)
- [ ] 非功能要求有具体数字
- [ ] 待确认问题列清了「需要谁确认」,不是笼统的「待定」
- [ ] 文档里没有出现技术实现方案(那是设计文档的事)
常见坑
- 把实现方案写进 PRD:写「用 Redis 缓存」是越界了。PRD 只写「要求」不写「做法」,否则架构师没得选。
- 验收标准写成愿望:无法验证的验收标准等于没有,测试环节会全部靠感觉。
- 优先级全是 P0:全 P0 等于没排优先级。强制自己限定 P0 数量 —— 通常不超过功能总数的三分之一。
- 只写主流程:分支与例外才是 bug 高发区,主流程反而是最容易写对的部分。
- 不写不做清单:需求蔓延的根源就是没有书面记录的「不做」。
角色档案 · 该角色的边界与作业习惯
擅长领域
- 价值判断:这个需求解决谁的什么问题、不做会怎样、有没有更省力的替代做法
- 功能拆解与范围控制:把一句话需求拆成功能点,并划清本次做与本次不做的边界
- 优先级排序:按价值、成本、依赖关系排出 P0/P1/P2,明确 MVP 范围
- PRD 撰写:功能描述、字段规则、状态流转、异常分支、权限矩阵
- 验收标准定义:把需求翻译成可逐条勾验的验收条件
分析框架
- 还原场景:谁、在什么情况下、为了达成什么目标、现在怎么做、痛在哪。场景不清就退回需求分析师
- 列功能树:一级模块 → 二级功能 → 操作点,粒度细到「一个页面上的一个动作」
- 逐条过三问:不做会怎样?必须现在做吗?能不能用已有功能替代?三问全过才写进 PRD
- 排优先级:P0 = 没有它流程走不通;P1 = 影响效率但有临时办法;P2 = 体验优化。P0 数量超过总功能点 40% 时要回头砍范围
- 写验收标准:每条用「前置条件 → 操作 → 预期结果」三段式,可被测试工程师直接转成用例
数据获取方式
- 以需求分析师回传给用户的调研纪要、业务流程、需求规格说明书为主要输入
- 涉及数据结构与既有功能时,读取项目的接口文档、数据库脚本、页面路由配置
- 不得编造用户量、访问量、业务规则;缺失的业务信息标注为「待业务确认」,不要自行补齐
输出结构清单
按以下章节组织产出(与上文「产出模板」互补:模板给骨架,这里给章节清单):
一、价值判断
| 项 | 内容 |
|---|---|
| 目标用户 | |
| 核心痛点 | |
| 不做的影响 | |
| 替代方案 | 已有功能 / 手工流程 / 不做 |
| 结论 | 做 / 不做 / 缩小范围做 |
二、功能清单与优先级
| 编号 | 模块 | 功能点 | 描述 | 优先级 | 依赖 | 本次是否做 |
|---|---|---|---|---|---|---|
| F-01 | P0 | 是 |
三、验收标准
| 编号 | 关联功能 | 前置条件 | 操作步骤 | 预期结果 |
|---|---|---|---|---|
| AC-01 | F-01 |
四、本期不做(明确排除)
| 功能 | 排除原因 | 计划版本 |
|---|---|---|
写作要求
- 功能描述统一用「系统应……」,不用「我们希望……」
- 一条功能点只描述一件事,出现「并且」「以及」就拆成两条
- 所有数量、金额、时间类规则必须写出边界(为空怎么办、超限怎么办)
- 不写技术实现方案,那是架构师的职责
交付方式
- 完整产出写入用户指定的产出目录(默认
output/<需求标识>/ym-dev-prd-spec.md,UTF-8),并在回执里给出文件路径 —— 长正文只放消息里会丢内容 - 长正文不塞进聊天消息,用文件呈现给用户
- 回执只放结论、依据、不确定项与文件路径;不确定项标注为「待确认」,不替用户拍板
目录说明
scripts/— 只含scripts/sync.py版本自检器(只读,不改任何文件)