--- name: spec-product-clarify description: Use when 在 sdlc-dev 的 spec 分支上,需求模糊/范围不稳/约束不清,且出现上下文漂移、脑补、一次问多题、或被要求跳过 FEATURE_DIR/raw 门禁。 --- # spec-product-clarify(R1:澄清 + 方案决策) ## 概览 将 `{FEATURE_DIR}/requirements/raw.md` 的原始输入,收敛为可评审的决策文档 `{FEATURE_DIR}/requirements/solution.md`;澄清过程必须可追溯(回写到 `raw.md/## 澄清记录`)。 ## 门禁 / 停止(严格执行) **REQUIRED SUB-SKILL:先执行 `spec-context` 并在对话中回显 `FEATURE_DIR=...`。** 立刻停止(满足其一即可): - 未得到 `FEATURE_DIR` - `{FEATURE_DIR}/requirements/raw.md` 不存在或为空 - 路径/分支不确定、指令互相冲突、或不理解某条指令(禁止猜测/编造) - 用户要求停止澄清 - 用户声明已更新/改写 `raw.md` 或关键约束变更,但无法读取/确认最新 `raw.md`(禁止仅凭口头转述继续写) 读取/写入约定: - 读:`{FEATURE_DIR}/requirements/raw.md`(必读);`project/memory/glossary.md`(如存在且需要术语口径) - 写:`{FEATURE_DIR}/requirements/raw.md` 仅追加/更新 `## 澄清记录`;`{FEATURE_DIR}/requirements/solution.md` 为唯一决策入口 > 违反门禁=违反精神:即使“时间紧/老板催/用户不想跑脚本”,也禁止在未知上下文里读写文件。 ## 常见借口(出现即按门禁执行) - “时间紧/马上评审/老板催”:仍必须先得到 `FEATURE_DIR` 并读取 `raw.md`;否则停止 - “路径你自己看着写”:禁止猜测路径;必须由 `spec-context` 给出 `FEATURE_DIR` - “我只能回复一次/你一次问完”:仍只问 1 个最高杠杆问题;其余未知进入验证清单 - “别回头看 raw”:如输入变更/新增约束,必须以 `raw.md` 为准并重新读取;做不到则停止 ## 最小循环(把问题问小,把结论写进去) 重复执行以下闭环,直到停止: 1. 从 `raw.md` 选 **1 个最高杠杆未知**(能最大减少方案分歧) 2. 问 **1 个可裁决选择题**:2–4 选项 + 你的推荐项 + “其他/不确定”兜底 3. 得到回答后 **立刻回写** `raw.md/## 澄清记录` 4. 同步更新 `solution.md`:推荐/备选差异、证据入口、残余未知 → 验证清单 当用户只能回复一次:只保留第 1 个最高杠杆问题;其余未知直接进入验证清单。 ## 产物不变量(必须满足) `solution.md`: - **必须 1 个推荐方案**:写清关键取舍;每个关键点能指向证据(`raw.md` 点位)或验证条目 - **必须 2–3 个差异明显的备选方案**:各自写清“何时会选 / 不选原因”(1–2 条关键差异) - **必须有“决策依据(证据入口)”**:明确引用 `raw.md`;缺证据的一律转验证清单 - **必须有“验证清单”且可执行**:每条包含 假设/风险 → 方法 → 成功/失败信号 → Owner → 截止 → 触发动作(编号 `V-xxx`);禁止 `TBD/待定/待指定` 等占位符,Owner/截止至少写到“角色/负责人 + 相对期限” - 正文 **禁止出现** “待确认问题/待确认清单/To confirm” 之类列表(不确定性只能进验证清单) - **迭代记录必须追加**:每轮追加 3–5 条“改了什么 + 为什么改” `raw.md`: - 每次回答后,必须在 `## 澄清记录` 留下可追溯记录(禁止占位符) ## 澄清回写格式(写入 `raw.md/## 澄清记录`) 每轮追加一条: - 问题: - 推荐选项(含理由): - 用户回答: - 一句话结论: - 遗留歧义(如有,写成“假设/风险”,并给验证编号 V-xxx): > 回写必须发生在“拿到用户回答”之后;不要在 `raw.md` 里写“待用户填写/占位符”。 ## `solution.md` 结构 以模板为准:`skills/spec-product-clarify/solution-template.md`(只借结构,不把未知当已知)。 ### 简单需求快速通道(可选) 若明确跳过 R2(单独 PRD),在 `solution.md` 追加 **Mini-PRD**: - MVP 范围(精确到行为/规则) - AC(3–10 条,可测试、可验证) - 交互变化结论(无 / 有但简单;否则不应跳过) - 影响面(页面/入口/接口/权限点的可定位入口) ## 极简例子(单轮澄清 + 回写) 对用户的一次一问(选择题): - 问题:导出任务采用哪种执行方式? - A. 同步(小数据量) - B. 异步 + 导出中心(大数据量) - C. 先同步后异步(分迭代) - D. 不确定 → 请给最大导出行数/期望完成时间 - 我的推荐:B(可追溯、可恢复) 回写到 `raw.md/## 澄清记录`: - 问题:导出任务采用哪种执行方式?(同上) - 推荐选项(含理由):B(大数据量更稳;便于追溯与失败恢复) - 用户回答:C - 一句话结论:MVP 先同步并设上限;随后迭代异步导出与导出中心 - 遗留歧义:V-001 导出上限与性能目标未定(方法=压测;信号=耗时/失败率;Owner=DEV;截止=评审后 3 天;动作=超阈值则切换异步方案)