---
name: requirement-analysis
description: Use when 用户、产品经理或 PMS 需要判断一个需求是否清楚、是否值得接纳、接纳成本是否可信。
---

# 需求分析

> 前置：使用本 Skill 前，先按 `using-nucleus` 完成 Nucleus 入口识别（Claude Code 会话由插件 SessionStart hook 自动注入该纪律）。

## 核心原则

关键澄清没有回答前，只能澄清，不能估算，不能建议接纳。

需求分析只回答“需求是否清楚、是否值得接纳、接纳成本是否可信”。它可以产出待评审 PRD、满足度 / 工作量评估、需求尺寸和接纳建议，但不做需求设计、正式特性拆解、开发计划、测试计划、技术方案、源码修改或最终接纳裁决。

<HARD-GATE>
如果存在会影响接纳判断、工作量估算、产品边界或外部依赖的关键问题未回答：
- 不得生成完整 PRD
- 不得给出人日估算
- 不得给出接纳、条件接纳、暂缓或拒绝建议
- 不得生成需求评估
- 只能输出当前理解、证据、缺口、一个最关键澄清问题和推荐答案

待评审 PRD 和 evaluation 草稿提交人工或 PMS 评审前，必须先按 `requirement-analysis-review` 的 `subagentPreReview` 调度独立 reviewer 子代理；未取得“材料可提交人工审查”预审结论时，不得请求人工评审通过。
</HARD-GATE>

## 什么时候使用

使用本 Skill：

- 判断一个需求是否清楚、是否值得接纳、接纳成本是否可信。
- 生成供产品经理或 PMS 评审的 `docs/requirement/**/prd.md` 和 `evaluation.md` 草稿。
- 在明确授权下把澄清、满足度、gap、满足路径、轻量实现口径、工作量、需求尺寸和接纳建议收口为需求分析证据。

不要使用本 Skill：

- 已接纳需求后的方案设计、产品子需求拆解或正式特性拆解。
- 特性设计、开发准备、测试生成、缺陷修复或交付收口。
- 普通 setup、普通开发或未授权场景写 `docs/requirement/**`。

## Checklist

启动本 Skill 后，必须先为每一项创建宿主 todo/task，并按顺序逐项推进、逐项更新状态；Codex 使用计划 / 任务工具，Claude Code 使用 TodoWrite 或等价宿主 todo。`.nucleus/runs/**`、`summary.md`、`result.json`、候选文件和 review report 只能记录事实，不能替代宿主任务、人工回答、人工评审或 PMS 接纳事实。

1. **读取需求输入和 context**
   完成证据：`input-evidence.json` 或等价输入证据。
   STOP：未读需求输入、`.nucleus/context/<workflowRunId>.json` 或 standalone problem statement 时，不得提问、估算或生成需求文档。

2. **读取产品上下文**
   完成证据：产品定位、`docs/features/**`、`docs/architecture/**`、安全实现线索或缺失证据。
   STOP：未读产品与特性上下文时，不得把用户原话直接整理成 PRD。

3. **复述当前理解**
   完成证据：`understanding.md`，说明需求想解决什么、归属哪个产品能力、已有满足度初判和证据缺口。
   STOP：复述中出现技术方案、接口设计、数据表、权限码或开发计划时，必须退回需求语言。

4. **识别并推动关键澄清**
   完成证据：`clarification-questions.json`、`clarification-candidate.md`、人工回答记录。
   STOP：一次只能推动一个最影响接纳和成本的问题；没有明确回答前，不得生成 PRD、工作量或接纳建议。细节读取 `references/clarification-method.md`。

5. **调用 `requirement-evaluation` 做满足度和工作量评估**
   完成证据：`analysis-package.json`、`workload-estimate.json`、`acceptance-recommendation.json` 或等价结构化评估证据。
   STOP：必须显式加载并执行 `requirement-evaluation`；形成满足度 gap、满足路径、轻量实现口径和工作量评估前，不得估人日、不得给接纳建议、不得写需求评估正文；不得直接从澄清答案跳到人日估算。

6. **调用 `requirement-sizing` 识别需求尺寸**
   完成证据：`requirement-sizing.json`，以及待写入 `evaluation.md` 的“需求尺寸”中文结论。
   STOP：需求尺寸必须在满足度、gap、满足路径、轻量实现口径和工作量评估完成后识别；不得在需求澄清开始阶段、单凭原始需求标题或早期澄清问题猜测尺寸。

7. **直接写 docs 下待评审 PRD 和包含需求尺寸的需求评估**
   完成证据：状态为 `draft` / `pending_review` 的 `docs/requirement/**/prd.md` 和 `evaluation.md`。
   STOP：`.ac` 只保存过程证据和结构化评估，不得先把完整 PRD / evaluation 正文写成 `.ac` candidate 再复制到 docs；草稿写入细节读取 `references/draft-doc-write-policy.md`。

8. **调用 `multi-review` 做需求分析质量评审**
   完成证据：针对 docs 草稿和结构化评估证据的需求分析领域 review report，且阻塞项已整改或标记无法验证。
   STOP：review report 只能记录发现、风险和复核；不得写“已接纳”“PMS 已批准”“人工评审通过”或“可以进入需求设计”。

9. **预审通过后等待人工或 PMS 评审**
   完成证据：人工 / PMS 审批事实引用当前 run 的 `requirement-analysis-review`。
   STOP：先完成 `requirement-analysis-review.subagentPreReview` 并确认材料可提交人工审查，才可等待人工或 PMS 评审；`analysis-package.json`、review report、`summary.md`、`result.json` 都不能制造审批事实；没有事实时 `review-gate.json` 只能是 pending 或 blocked。

10. **确认终稿**
    完成证据：`finalize-gate.json`，已有草稿被更新为 `final` / `accepted`。
    STOP：`finalize` 只能更新已有待评审草稿；不得从 `.ac` 候选包首次创建正式需求文档；终稿细节读取 `references/finalize-policy.md`。

## 选项式澄清协议

澄清阶段必须按真实对话呈现，不能用 JSON 状态、推荐答案、候选文件、`summary.md` 或 `result.json` 代替人的回答。

每轮澄清必须：

1. 先说明当前理解和已读证据。
2. 只问一个最影响接纳判断和工作量估算的问题。
3. 给出 2-3 个选项，使用 A/B/C 标识。
4. 标明推荐选项，并说明推荐理由。
5. 写清每个选项对首版范围、数据来源、验收标准、外部依赖、工作量可信度和接纳判断的影响。
6. 点明“选错代价”：选了不合适的选项会对首版范围、工作量可信度或接纳判断造成什么后果。
7. 等待明确回复。用户可以选择 A/B/C，也可以补充自由回答。

澄清提问的呈现格式遵循 `_shared/references/interaction-format.md` 的补齐型，方案 / 范围类多选遵循选择型；追问纪律遵循 `_shared/references/question-discipline.md`。

推荐选项只是默认建议，不是授权、人工回答或 PMS 审批事实。记录回答后必须重新执行剩余关键缺口审计；如果仍有高影响缺口，继续只问下一个最关键问题。审计维度和提问边界见 `references/clarification-method.md`。

回答后先判定具体度是否达标；如果回答仍停留在“提升效率”“方便管理”“支持查看”“看情况”“数据准确”“首版简单做”等泛泛表述，必须继续追问同一维度，不能进入 `requirement-evaluation`、PRD、工作量估算或接纳建议。

每轮追问必须服务于边界、设计输入或测试输入。澄清阶段可以使用 `requirement-sizing` 的业务范围、方案未知数、依赖面、数据影响、权限 / 稳定性和评审风险六类风险信号决定追问深度，但澄清阶段不得提前输出需求尺寸结论。疑似低风险文案 / 字段类需求只追到首版边界和验收事实；疑似高风险数据、权限、外部依赖或跨系统需求，必须追问数据来源、权限入口、依赖失败降级、评审前提和替代接纳路径。

## 澄清提问输出纪律

面向用户的澄清提问只服务于当前问题，不做执行审计汇报。默认只输出：当前理解一句话、一个问题、A/B/C 选项、推荐选项和选择影响。

不得在澄清提问轮展示 `.ac` 证据路径、JSON 文件名、状态码、校验结果、PMS 状态补充说明或“我没有写哪些文件”的自证说明。这些事实写入过程证据和结果包，只有用户要求查看证据、排查流程或验收产物时才展示。

## docs 草稿写入硬规则

`docs/requirement/**` 是受保护需求事实源。只有需求 workflow 在明确 context、writePolicy、review gate 和 result 证据下，才能创建或更新待评审草稿；普通开发、setup 和未授权 workflow 不得写。

如果本轮目标包含“生成 PRD / 需求评估供用户或 PMS 评审”，且关键澄清、`requirement-evaluation`、`requirement-sizing` 已完成，agent 必须直接写 `docs/requirement/<requirementSlug>/prd.md` 和 `docs/requirement/<requirementSlug>/evaluation.md`。停在 `.ac` 过程证据或 `.ac` candidate 正文就是未完成。

写 docs 草稿不代表需求已接纳。草稿写入后必须先完成 `requirement-analysis-review.subagentPreReview` 并确认材料可提交人工审查，`review-gate.json` 才能等待人工评审；没有人工评审事实时不得写 passed。上下文调整、阻塞条件和写入前置项见 `references/draft-doc-write-policy.md`。

## finalize STOP

`finalize` 只能确认已有待评审草稿，不能从候选包直接首次创建 `docs/requirement/**`。

只有同时满足这些条件，才能运行 `finalize`：

- `docs/requirement/<requirementSlug>/prd.md` 和 `evaluation.md` 已存在。
- 两个文件状态都是待评审草稿。
- review gate 已通过。
- 人工或 PMS 审批事实齐全。
- 上下文明确允许正式需求写入。

如果草稿不存在、审批事实不足或上下文不允许正式写入，必须阻塞并记录原因。不得为了通过流程，从 `.ac` 候选包复制一份当成终稿。

## 产物与证据边界

澄清阶段只写 `.nucleus/runs/<workflowRunId>/requirement-analysis/**` 中的理解、证据、澄清问题、澄清门禁、摘要和结果包。

接纳分析阶段在 `.ac` 写结构化证据：`workload-estimate.json`、`acceptance-recommendation.json`、`analysis-package.json`、`artifact-generation-gate.json` 和 `requirement-sizing.json`。这些是证据，不是给用户评审的 PRD / evaluation 正文。

待评审文档写入阶段写 `draft-docs-gate.json`、`review-gate.json`、`docs/requirement/<requirementSlug>/prd.md` 和 `docs/requirement/<requirementSlug>/evaluation.md`。

终稿确认阶段只更新已有 docs 草稿状态，并写 `finalize-gate.json`。

## Runtime 边界

runtime 脚本只做确定性辅助：读取 context、生成理解与澄清候选、记录人工回答、生成结构化评估证据、校验草稿 / 终稿 gate。脚本失败、依赖缺失或 context 不满足时必须阻塞并记录原因，不得手工模拟正常产物。

本 Skill 不改变机器契约字段、路径、schema、validator、workflow 或 marketplace。需要 runtime 子命令细节时读取现有脚本和 validator；不要把脚本参数说明复制成本 Skill 的主流程。

## 红旗

- 未读仓库、产品上下文或需求输入就提问、估算或写 PRD。
- 关键澄清未回答还生成 PRD、工作量或接纳建议。
- 早期凭需求标题猜 `requirement-sizing`。
- 把 `.ac` candidate 当成正式 docs 正文。
- 用户要的是可评审 PRD / 评估文档，却只写 `.ac` 过程证据后说完成。
- 把 review report、`review-gate.json`、`summary.md` 或 `result.json` 写成人工已审批。
- `finalize` 时从候选包首次创建 docs 文档。
- runtime 没跑通，却手工模拟产物。
- 把数据库、接口、路由、权限码写成需求分析结论。
- 把需求分析推进到需求设计、正式特性拆分或开发计划。

压力场景见 `references/pressure-cases.md`。
