HS Req Facilitator Skill
智能需求分析助手 | Intelligent Requirements Facilitator
🤖 开源项目: hs-req-facilitator-skill v2.0.4
👤 苏州核朔智能科技有限公司 | 📧 limian@norkern.com
🌐 www.norkern.com | 📖 文档: README.md
启动流程:激活技能后立即开始执行工作流程
🚀 启动步骤
工作流检查点:按以下顺序执行每个步骤,完成验证后进入下一步
执行规范:
- 执行启动流程:不要只显示"技能已启动"或"等待指令"等消息
- 立即开始:技能激活后立即开始工作流程,避免停顿等待
- 执行顺序:按照步骤顺序执行,确保每步完成并验证
启动后立即执行:
- 执行步骤0检查(确认工作流规则)
- 执行步骤1:扫描代码和文档
- 根据扫描结果决定流程并继续执行
步骤0:工作流检查(首先执行)
执行前检查:确认以下工作流规则
-
Stage 2(需求分析):完成以下4个子步骤(按顺序执行):
- 步骤2.1:读取需求文档和代码文件
- 步骤2.2:理解项目功能(输出功能概述)
- 步骤2.3:分析问题和缺失信息(输出模糊点、缺失信息、不一致性)
- 步骤2.4:列出功能需求清单并展示给用户
-
Stage 3(交互澄清):执行用户交互
- Stage 2完成后,立即进入Stage 3
- 与用户交互(获取补充信息)
- 即使没有发现问题,也至少进行一次用户交互
-
用户交互要求:
- 使用AskUserQuestion:必须使用 AskUserQuestion 工具调用
- 等待回答:等待用户回答后再继续,不要直接进入下一步
- 确保交互:在提问后实际等待用户回答
-
Stage 2 验证要求(全部满足):
- 步骤2.2输出:项目功能概述、每个需求的实际功能、代码与需求一致性分析
- 步骤2.3输出:模糊点识别结果、缺失信息识别结果、不一致性识别结果(每个类别至少1个或明确说明"无")
- 输出具体分析结果:不要只是说"已理解"或"未发现问题"
- 步骤2.4输出完整的功能需求清单并展示给用户
步骤1:扫描代码和文档(第一步)
执行步骤:技能启动后立即执行此步骤
立即执行以下命令并查看结果:
# 1. 扫描需求文档
find . -type f \( -name "requirements.md" -o -name "*requirement*.md" -o -name "需求*.md" \) | grep -v node_modules | grep -v ".git"
# 2. 扫描代码文件
find . -type f \( -name "*.ts" -o -name "*.js" -o -name "*.py" -o -name "*.java" -o -name "*.go" -o -name "*.rs" \) | grep -v node_modules | grep -v ".git" | head -50
统计结果:
- 需求文档数量:[X]
- 代码文件数量:[Y]
📋 Stage 1: 根据扫描结果决定流程
选择流程:根据扫描结果决定执行哪个流程
-
空项目(没有需求文档):
- 使用 AskUserQuestion 询问用户是否要创建需求文档
- 详细指南:参见项目文档中的空项目引导相关章节
-
多个需求文档:
- 使用 AskUserQuestion 询问用户是否要合并需求文档
- 如果用户同意,进入Stage 5(需求文档合并)
- 详细指南:参见项目文档中的文档合并相关章节
-
有需求文档(常规流程):
- 直接进入Stage 2(需求分析),不需要先询问用户
- 完成Stage 2后,再进入Stage 3(交互澄清)
📋 Stage 2: 需求分析(在交互澄清之前完成)
执行顺序:按以下顺序执行每个步骤
- 读取需求文档和代码文件
- 理解项目功能
- 分析问题和缺失信息(在列出功能需求清单之前完成)
- 列出功能需求清单(在分析完成后列出并展示给用户)
完成阶段2后,进入阶段3(交互澄清)
流程检查点:
- ✅ Stage 2完成后 → 进入Stage 3(交互澄清)
- ✅ Stage 3完成后 → 进入Stage 4(需求完善)
- 跳过禁止:Stage 2 → 直接进入Stage 4(跳过Stage 3)
📋 使用场景
Use this skill when:
- User asks to "analyze requirements" or "review specifications"
- User mentions "unclear requirements" or "ambiguous specifications"
- User wants to "consolidate multiple requirement documents"
- User needs to "identify missing information" in requirements
- User says "improve requirements quality" or "enhance specifications"
- Working with requirements files (*requirements.md, requirement.md)
- Queries contain keywords: "requirements", "specs", "needs analysis", "clarify"
典型触发场景:
- "完善需求"
- "分析需求文档"
- "澄清不明确的需求"
- "合并需求文档"
- "识别缺失信息"
- "提升需求质量"
🔄 工作流程
📊 工作流程图
┌─────────────────────────────────────────────────────────────────────────────┐
│ HS-REQ-FACILITATOR 工作流程 │
└─────────────────────────────────────────────────────────────────────────────┘
┌─────────────────┐
│ Stage 0 │ ◄─── 工作流检查(首先执行)
│ 工作流检查 │
└───────┬─────────┘
│
▼
┌─────────────────┐
│ Stage 1 │ ◄─── 扫描代码和文档(必需,第一步)
│ 扫描 │
│ ├─需求文档 │
│ └─代码文件 │
└───────┬─────────┘
│
▼
┌─────────────────┐
│ 决策点 1 │ ◄─── 根据扫描结果决定流程
│ (Scan Results) │
└───────┬─────────┘
│
├─────────────────────────────┬─────────────────────────────┐
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 空项目流程 │ │ 多文档流程 │ │ 常规流程 │
│ (Empty Project)│ │ (Multi-Docs) │ │ (Regular) │
└───────┬─────────┘ └───────┬─────────┘ └───────┬─────────┘
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ AskUserQuestion│ │ AskUserQuestion│ │ 直接进入 │
│ "创建需求文档?" │ │ "合并需求文档?" │ │ Stage 2 │
│ ↓ │ │ ↓ │ │ │
│ [EMPTY-PROJECT]│ │ [同意] ───────→│ │ 需求分析 │
│ │ │ Stage 5 │ │ (MANDATORY) │
│ │ │ 文档合并 │ │ │
└─────────────────┘ │ │ │ ┌─────────────┐
└─────────────────┘ │ │ Stage 2.1 │
│ ├─读取文档 │
│ └─读取代码 │
│
│ ┌─────────────┐
│ │ Stage 2.2 │
│ ├─理解功能 │ ◄─── 必须输出项目概述
│ └─需求分析 │
│
│ ┌─────────────┐
│ │ Stage 2.3 │
│ ├─模糊点识别 │ ◄─── 必须输出分析结果
│ ├─缺失信息 │
│ └─不一致性 │
│
│ ┌─────────────┐
│ │ Stage 2.4 │
│ ├─需求清单 │ ◄─── 必须展示给用户
│ └─需求分类 │
│
└────────┬────────┘
│
▼
┌─────────────────┐
│ Stage 3 │ ◄─── 关键检查点(不能跳过!)
│ 交互澄清 │
│ │
│ 🔴 关键阶段 │ ◄─── 不能跳过!
│ │
└────────┬─────────┘
│
▼
┌─────────────────┐
│ AskUserQuestion │ ◄─── 必须使用AskUserQuestion工具
│ 工具 │
│ │
│ ├─检测工具可用性 │
│ ├─生成澄清问题 │
│ ├─等待用户回答 │ ◄─── 必须等待用户回答!
│ └─收集回答 │
└────────┬─────────┘
│
┌────────────────────────────────────┘
│
▼
┌─────────────────┐
│ 错误处理流程 │
│ (Error Handler) │
│ │
│ ├─工具不可用 │ ◄─── 降级到对话方式
│ ↓ │
│ └─❓ 格式交互 │
│ │
│ ├─无响应 │ ◄─── 继续重试
│ ↓ │
│ └─再次询问 │
└────────┬─────────┘
│
▼
┌─────────────────┐
│ Stage 3 │
│ 继续执行 │
│ │
│ ├─调整问题 │
│ ├─持续交互 │ ◄─── 至少一次交互
│ └─完成澄清 │
└────────┬─────────┘
│
▼
┌─────────────────┐
│ Stage 4 │ ◄─── 条件:Stage 3完成后
│ 需求完善 │
│ (Optional) │
└────────┬─────────┘
│
▼
┌─────────────────┐
│ Spec-Workflow │
│ 集成 │
│ │
│ ├─检测项目结构 │
│ ├─生成需求文档 │
│ └─更新规格 │
└─────────────────┘
┌─────────────────────────────────────────────────────────────────────────────┐
│ 流程说明 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ 🔴 关键阶段: Stage 3 是关键阶段,不能跳过 │
│ │
│ 🔵 AskUserQuestion: 必须使用 AskUserQuestion 工具与用户交互 │
│ - 如果工具可用:使用 AskUserQuestion 工具 │
│ - 如果工具不可用:降级到对话方式(❓ 格式) │
│ │
│ ✓ 检查点: 关键检查点,等待用户回答后才能继续 │
│ │
│ 📋 DECISION POINTS: │
│ 1. 扫描结果 → 空项目/多文档/常规流程 │
│ 2. Stage 2 → 必须完成所有4个子步骤 │
│ 3. Stage 3 → 交互澄清(至少一次交互) │
│ 4. Stage 4 → 必须在Stage 3完成后执行 │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
Stage 1: 根据扫描结果决定流程
根据步骤1的扫描结果,决定执行哪个流程:
-
空项目(没有需求文档):
- 使用 AskUserQuestion 询问用户是否要创建需求文档
- 详细指南:参见项目文档中的空项目引导相关章节
-
多个需求文档:
- 使用 AskUserQuestion 询问用户是否要合并需求文档
- 如果用户同意,进入阶段5(需求文档合并)
- 详细指南:参见项目文档中的文档合并相关章节
-
常规流程(有需求文档):
- 直接进入Stage 2(需求分析),不需要先询问用户
- 完成Stage 2后,再进入Stage 3(交互澄清)
Stage 2: 需求分析(必须在交互澄清之前完成)
执行要求:此阶段按以下顺序执行,每个步骤输出明确结果,完成后进入Stage 3(交互澄清)!
执行前检查:在开始Stage 2之前,确认已执行步骤1(扫描代码和文档)并获得扫描结果!
步骤2.1:读取需求文档和代码文件(必须执行)
执行要求:实际读取文件,不能跳过:
-
查找并读取需求文档:
# 必须执行:查找需求文档 find . -type f \( -name "requirements.md" -o -name "*requirement*.md" -o -name "需求*.md" \) | grep -v node_modules | grep -v ".git" # 必须执行:读取找到的需求文档 # 使用 Read 工具读取每个找到的需求文档 -
读取关键代码文件:
# 必须执行:查找代码文件 find . -type f \( -name "*.ts" -o -name "*.js" -o -name "*.py" -o -name "*.java" -o -name "*.go" -o -name "*.rs" \) | grep -v node_modules | grep -v ".git" | head -20 # 必须执行:读取关键代码文件(至少5-10个文件) # 使用 Read 工具读取主要业务逻辑文件 -
如果项目使用 spec-workflow,获取上下文:
- 尝试使用 spec-workflow MCP 工具获取模板和上下文
- 如果MCP不可用,使用 spec-workflow CLI 或直接生成标准格式
验证点:实际读取文件内容,不能只是列出文件名!
步骤2.2:理解项目功能(关键步骤,不能跳过)
重要步骤:先理解项目的实际功能,再分析缺失信息!
⚠️ 执行前检查:
- 步骤2.1已完成(已读取需求文档和代码文件)
- 已准备好开始理解项目功能
📌 核心要求:此步骤必须向用户展示项目功能概述!
⚠️ 重要:用户启动技能后,需要知道被分析的项目是什么、解决什么问题、主要功能和技术栈,这样才能理解后续的需求分析。
必须输出以下内容(每个部分都必须有具体输出并展示给用户,不能为空):
-
项目整体功能描述(必须输出并展示给用户,不能只是说"已理解"):
## 项目功能概述 基于读取的代码和文档,分析并回答: ### 1. 项目是什么? [明确说明:这个项目是什么?它的核心功能是什么?] ### 2. 项目解决的问题 [明确说明:这个项目解决什么问题?为谁服务?] ### 3. 主要功能模块 [列出主要功能模块,每个模块说明其功能] - 模块1:[功能描述] - 模块2:[功能描述] ... ### 4. 项目技术栈 [列出项目使用的主要技术栈]重要要求:
- ✅ 必须向用户展示这个项目功能概述,让用户了解被分析的软件是干什么的
- ✅ 输出明确的项目功能描述,不能只是说"已理解"
- ✅ 确保用户能够理解项目的基本情况后再继续分析
-
每个需求的实际功能(必须输出,必须分析每个需求):
## 需求功能分析 基于对项目的理解,分析每个需求: ### 需求1: [需求标题或编号] - **需求描述**:[需求文档中的原始描述] - **实际功能**:[这个需求对应的实际功能是什么] - **功能行为**:[这个功能做什么、怎么做、具体行为是什么] - **输入输出**:[输入是什么、输出是什么、参数格式] - **代码实现情况**:[代码中是否已实现、如何实现的、代码位置] - **实现状态**:[已实现/未实现/部分实现] ### 需求2: [需求标题或编号] ... **执行要求:分析所有需求,不能跳过任何需求!** -
代码与需求的一致性(必须输出,必须对比代码和文档):
## 代码与需求一致性分析 对比代码实现和需求文档: ### 代码中已实现但需求文档中未描述的功能 - 功能1:[功能名称] * 代码位置:[文件路径和行号] * 功能描述:[功能做什么] * 建议:[是否应该在需求文档中补充] ### 需求文档中描述但代码中未实现的功能 - 功能1:[功能名称] * 需求位置:[需求文档中的位置] * 功能描述:[需求描述的功能] * 状态:[计划实现/已废弃/待实现] ### 代码和需求一致的功能 - 功能1:[功能名称] * 需求位置:[需求文档中的位置] * 代码位置:[代码中的位置] * 一致性说明:[说明为什么一致]验证点:输出明确的对比结果,不能只是说"已对比"!
扩展2.2.1:代码注释分析(自动提取隐含需求)
执行位置:在步骤2.2完成后,步骤2.3之前执行
功能说明:从代码注释中提取隐含的业务需求、技术约束、设计决策等文档中未明确说明的信息。
执行步骤:
步骤A:扫描代码注释
- 扫描所有支持的代码文件(.js, .ts, .py, .java, .go, .rs, .cpp, .c#)
- 提取所有注释内容(行内注释、块注释、文档注释)
- 识别注释中的关键词和模式
步骤B:分析注释内容 使用AI分析注释,提取以下类型的信息:
- TODO/FIXME注释:未完成的功能或需要修复的问题
- 业务逻辑注释:解释为什么这样做的业务原因
- 技术决策注释:为什么选择特定技术或架构
- 约束说明注释:性能、安全、兼容性等约束
- 设计模式注释:使用的设计模式和意图
- 边缘情况注释:特殊处理逻辑和原因
步骤C:映射到需求类型 将提取的信息映射到标准需求类型:
- 功能需求:未实现的功能、预期行为
- 非功能需求:性能、安全、可靠性要求
- 约束条件:技术约束、业务规则
- 假设条件:隐含的假设和前置条件
输出格式:
## 代码注释分析结果
### 从代码注释提取的隐含需求
#### 功能相关注释
1. **[文件名:行号]** [注释摘录]
- **提取的需求**:[描述]
- **需求类型**:[功能/非功能/约束]
- **优先级**:[P0/P1/P2]
- **实现状态**:[已实现/未实现/部分实现]
- **代码位置**:[具体位置]
#### 技术约束注释
1. **[文件名:行号]** [注释摘录]
- **约束类型**:[性能/安全/兼容/其他]
- **约束描述**:[具体要求]
- **影响范围**:[影响的模块或功能]
- **建议**:[如何处理]
#### 设计决策注释
1. **[文件名:行号]** [注释摘录]
- **决策内容**:[做了什么决策]
- **决策原因**:[为什么这样做]
- **替代方案**:[考虑过的其他方案]
- **影响**:[对系统的影响]
#### 待办事项注释
1. **[文件名:行号]** TODO: [内容]
- **任务描述**:[需要做什么]
- **优先级**:[高/中/低]
- **预计工作量**:[大/中/小]
- **关联功能**:[与哪个功能相关]
### 统计摘要
- 总注释数:[X]
- 发现隐含需求数:[Y]
- 其中功能需求:[A]个
- 其中非功能需求:[B]个
- 其中技术约束:[C]个
- 待办事项:[D]个
提示词模板:
你是一个需求分析专家。请分析以下代码注释,提取其中的隐含需求。
代码文件:{file_path}
注释内容:
{comment_text}
请从以下维度分析:
1. 业务需求:注释中暗示的用户需求或业务规则
2. 功能需求:需要实现但未文档化的功能
3. 非功能需求:性能、安全、可靠性等要求
4. 技术约束:技术选择的原因和限制
5. 设计决策:架构或实现决策的理由
6. 待办事项:TODO、FIXME、HACK等标记
请以JSON格式返回:
{
"implied_requirements": [
{
"type": "functional|non-functional|constraint",
"category": "业务需求|功能需求|性能|安全|约束|决策|待办",
"description": "需求描述",
"priority": "P0|P1|P2",
"rationale": "提取依据",
"code_location": "文件:行号",
"implementation_status": "已实现|未实现|部分实现"
}
],
"statistics": {
"total_comments": 0,
"implied_requirements_count": 0,
"functional_count": 0,
"non_functional_count": 0,
"constraints_count": 0,
"todo_count": 0
}
}
步骤2.3:分析问题和缺失信息(必需,必须在列出功能需求清单之前完成)
执行要求:此步骤不能跳过!必须基于步骤2.2的功能理解来分析问题!
⚠️ 执行前检查:
- 步骤2.1已完成(已读取需求文档和代码文件)
- 步骤2.2已完成(已理解项目功能并输出功能概述)
- 已准备好开始分析问题和缺失信息
必须输出以下内容(每个部分都必须有具体输出,不能为空):
-
模糊点识别(必须输出,至少列出1个或明确说明"无"):
## 模糊点识别结果 基于功能理解,识别以下模糊点: 模糊点1:[具体描述] - 位置:[需求文档中的位置,如:requirements.md 第X行] - 问题:[为什么模糊、缺失什么信息] - 是否为误报:[代码实现是否已经说明了这部分信息] - 如何修复:[需要什么信息来修复] 模糊点2:[具体描述] ... 如果未发现模糊点,必须明确说明: "经过详细分析,未发现模糊点。代码实现和需求文档都清晰明确。" -
缺失信息识别(必须输出,至少列出1个或明确说明"无"):
## 缺失信息识别结果 基于功能理解,识别以下缺失信息: 缺失信息1:[缺少什么,如:验收标准、输入输出定义、错误处理等] - 关联需求:[哪个需求缺少,引用具体需求名称或编号] - 为什么是问题:[为什么需要这个信息,对功能理解的影响] - 是否为误报:[代码实现是否已经说明了,如果是误报请说明原因] - 如何修复:[需要什么信息来修复] 缺失信息2:[缺少什么] ... 如果未发现缺失信息,必须明确说明: "经过详细分析,未发现缺失信息。所有功能需求都有完整的信息。" -
不一致性识别(必须输出,至少列出1个或明确说明"无"):
## 不一致性识别结果 对比代码和文档,识别以下不一致: 不一致1:[描述不一致的地方] - 代码中:[代码中如何实现的,引用具体代码位置] - 文档中:[文档中如何描述的,引用具体文档位置] - 影响:[这种不一致对功能理解的影响] - 建议:[如何修复,建议保留代码实现还是文档描述] 不一致2:[描述不一致的地方] ... 如果未发现不一致,必须明确说明: "经过详细对比,未发现不一致。代码实现与需求文档完全一致。"
验证点(全部满足):
- ✅ 必须输出具体的模糊点、缺失信息和不一致性(每个类别至少1个或明确说明"无")
- ✅ 不能只是说"没有发现问题",必须对每个类别明确说明
- ✅ 每个识别到的问题都必须包含:位置、问题描述、是否为误报、如何修复
- ✅ 如果没有发现问题,必须明确说明:"经过分析,未发现模糊点、缺失信息或不一致性。"
- ✅ 输出格式必须清晰,便于后续生成澄清问题
常见错误示例(避免):
- ❌ "未发现问题"(太笼统,必须分类说明)
- ❌ "需求文档很完善"(必须明确说明每个类别的情况)
- ❌ 跳过此步骤直接进入步骤2.4(禁止)
步骤2.4:列出功能需求清单(必需,必须在分析完成后列出并展示给用户)
执行条件:完成步骤2.2和2.3后,才能执行此步骤!
必须输出以下内容:
## 功能需求清单
### 核心功能需求(P0)
1. [功能名称]
- 功能描述:[这个功能做什么]
- 功能行为:[这个功能怎么做]
- 输入输出:[输入是什么、输出是什么]
- 代码实现情况:[已实现/未实现/部分实现]
- 需求文档位置:[文档中的位置]
2. [功能名称]
...
### 重要功能需求(P1)
...
### 一般功能需求(P2)
...
### 非功能性需求
- 性能需求:[列出]
- 安全需求:[列出]
- 可靠性需求:[列出]
验证点:输出完整的功能需求清单,包含所有功能需求和分类!
关键检查点:Stage 2完成后,必须进入Stage 3(交互澄清),不能跳过!
详细指南:参见项目文档中的需求分析相关章节
Stage 3: 交互澄清(通过AskUserQuestion与用户交互补充需求)
重要阶段,不能跳过!
重要:
- ✅ 必须在Stage 2完成后才能进入此阶段
- ✅ 不能在Stage 2之后直接进入Stage 4(需求完善)
- ✅ 必须通过 AskUserQuestion 工具与用户交互,补充缺失的需求信息
- ✅ 基于Stage 2的分析结果(功能需求清单和问题分析)生成澄清问题
- ✅ 必须至少进行一次 AskUserQuestion 交互,即使分析结果很完善
执行检查清单:
- Stage 2已完成(步骤2.1-2.4全部完成)
- 步骤2.1:已读取需求文档和代码文件
- 步骤2.2:已理解项目功能并输出功能概述
- 步骤2.3:已分析问题和缺失信息(模糊点、缺失信息、不一致性)
- 步骤2.4:已列出功能需求清单并展示给用户
- 基于Stage 2的分析结果生成了澄清问题
- 使用 AskUserQuestion 工具与用户交互
- 收集了用户回答(必须等待用户回答,不能直接继续)
- 基于用户回答调整了后续问题(如需要)
- 持续交互直到所有关键问题都得到回答
注意:完成Stage 3的所有交互后,才能进入Stage 4(需求完善)!
-
基于AI分析结果生成澄清问题:
- 先理解每个需求的实际功能(基于功能概述)
- 针对具体功能问问题,而不是通用的检查清单
- 问题应该基于功能的实际行为,而不是模板化的问题
- 针对功能需求清单中缺失的信息生成问题
-
使用 AskUserQuestion 工具与用户交互(必需,不能跳过):
执行要求:必须与用户交互,不能跳过此步骤!
AskUserQuestion 工具调用方式:
必须使用 AskUserQuestion 工具调用,格式: AskUserQuestion({ questions: [ { header: "澄清问题", question: "[具体问题]", options: [ {label: "[选项1]", description: "[描述]"}, {label: "[选项2]", description: "[描述]"}, {label: "[选项3]", description: "[描述]"}, {label: "[选项4]", description: "[描述]"} ], multiSelect: false } ] }) 然后必须等待用户回答后再继续。重要说明:
- 使用
questions数组(单元素数组) - 每个问题必须有
header(简短标签,≤12字符) - 提供2-4个
options(选项列表) - 设置
multiSelect为false(单选)或true(多选) - 等待用户回答,不能跳过
⚠️ 交互要求:
-
如果有问题(步骤2.3中识别到模糊点、缺失信息或不一致性):
- 必须基于功能需求清单和问题分析结果,生成澄清问题
- 必须逐个询问缺失的信息,补充需求
- 必须至少询问3-5个关键问题
- 必须等待用户回答每个问题后再继续
-
如果没有问题(步骤2.3中未发现任何问题):
- 必须明确告知用户:"经过分析,未发现模糊点、缺失信息或不一致性。"
- 然后必须询问:"是否要添加新需求?或直接进入下一步?"
- 必须等待用户回答
注意:无论是否有问题,都至少进行一次用户交互!
交互后记录用户回答,基于回答调整后续问题或进入下一步!
- 使用
-
收集用户回答,调整后续问题:
- 记录用户回答
- 基于用户回答调整后续问题
- 持续交互直到所有关键问题都得到回答
详细指南:参见项目文档中的问题生成相关章节
Stage 4: 需求完善(集成到spec-workflow)
执行条件:Stage 3(交互澄清)完成后才能进入此阶段!
重要:无论项目是否使用 spec-workflow,都按照 spec-workflow 格式处理需求文档。
-
整合信息:结合原始需求文档、用户澄清回答、代码实现情况、功能需求清单
-
生成完善后的需求:
- 明确用户故事格式(As a [role], I want [feature], so that [benefit])
- 补充详细的验收标准(EARS 格式:WHEN [condition] THEN [system] SHALL [response])
- 添加业务价值说明
- 按照 spec-workflow 格式生成需求文档(无论项目是否使用 spec-workflow)
-
检测和处理 spec-workflow 集成:
- 检测项目是否使用 spec-workflow(检查
.spec-workflow目录) - 如果项目使用 spec-workflow:
- 尝试使用 spec-workflow MCP 工具获取模板和上下文
- 如果MCP不可用,使用 spec-workflow CLI 或直接生成标准格式
- 更新
.spec-workflow/specs/*/requirements.md
- 如果项目未使用 spec-workflow:
- 自动按照 spec-workflow 格式生成需求文档
- 自动创建
.spec-workflow/specs/[feature-name]/requirements.md
- 检测项目是否使用 spec-workflow(检查
扩展4.1:需求自动分类(智能分类与优先级评估)
执行位置:Stage 4中的可选增强功能,在生成完善需求后执行
功能说明:自动对需求进行智能分类、评估优先级、识别依赖关系、生成标签,提升需求管理效率。
执行步骤:
步骤4.1.1:智能分类
- 分析每个需求的语义内容
- 分类需求类型:功能需求/非功能需求/业务需求/技术需求
- 细分功能类别:用户交互/业务逻辑/数据处理/系统集成/其他
- 评估业务价值(1-10分)
- 评估技术复杂度(1-10分)
步骤4.1.2:优先级评估 基于多维度计算综合优先级:
- 业务价值权重:40%
- 技术复杂度权重:25%(复杂度越低分越高)
- 资源投入权重:20%(投入越少分越高)
- 紧急程度权重:15%
- 综合评分 = (业务价值×0.4 + (10-复杂度)×0.25 + (10-投入)×0.2 + 紧急度×0.15) × 10
- 优先级分级:
- P0(80-100分):关键需求,必须立即处理
- P1(60-79分):重要需求,近期需要处理
- P2(40-59分):一般需求,中期规划
- P3(0-39分):低优先级,长期规划
步骤4.1.3:模块映射 将需求映射到功能模块:
- 用户管理模块
- 内容管理模块
- 交易模块
- 数据分析模块
- 系统管理模块
- 其他自定义模块
步骤4.1.4:依赖关系识别 识别需求间的依赖关系:
- 前置依赖:A需求必须在B需求之前完成
- 后续依赖:A需求依赖B需求的完成
- 并行依赖:A和B可以同时进行
- 互斥依赖:A和B不能同时存在
步骤4.1.5:标签生成 为每个需求生成标签:
- 技术标签:基于使用的技术栈
- 业务标签:基于业务领域
- 特性标签:新增功能/改进/修复
- 状态标签:已计划/进行中/已完成/已放弃
输出格式:
## 需求自动分类结果
### 需求分类概览
- 总需求数:[X]个
- 功能需求:[A]个([B]%)
- 非功能需求:[C]个([D]%)
- 业务需求:[E]个([F]%)
- 技术需求:[G]个([H]%]
### 优先级分布
- P0(关键):[X]个需求
- P1(重要):[Y]个需求
- P2(一般):[Z]个需求
- P3(低优先级):[W]个需求
### 详细分类结果
#### 需求 REQ-[编号]: [需求标题]
- **分类信息**:
- 类型:[功能/非功能/业务/技术]
- 类别:[用户交互/业务逻辑/数据处理/系统集成]
- 模块归属:[模块名称] (置信度:[X]%)
- **优先级评估**:
- 综合评分:[X]/100
- 优先级:[P0/P1/P2/P3]
- 评估因子:
* 业务价值:[X]/10
* 技术复杂度:[X]/10
* 资源投入:[X]/10
* 紧急程度:[X]/10
- **依赖关系**:
- 前置依赖:[REQ-XXX, REQ-YYY]
- 后续依赖:[REQ-ZZZ]
- 并行依赖:[REQ-AAA]
- 互斥依赖:[REQ-BBB]
- **标签**:
- 技术标签:[标签1, 标签2]
- 业务标签:[标签3, 标签4]
- 特性标签:[新增功能/改进/修复]
- 状态标签:[已计划]
### 模块依赖图
[模块A] → [模块B] → [模块C] ↓ ↓ [模块D] → [模块E]
### 优先级矩阵
高价值低复杂度 │ 高价值高复杂度 ──────────────┼────────────── P0 │ P1 ──────────────┼────────────── 低价值低复杂度 │ 低价值高复杂度 P2 │ P3
提示词模板:
你是一个需求分类专家。请分析以下需求,进行智能分类和优先级评估。
需求描述:
{requirement_text}
请从以下维度分析:
1. 需求类型:功能需求/非功能需求/业务需求/技术需求
2. 功能类别:用户交互/业务逻辑/数据处理/系统集成/其他
3. 业务价值:1-10分(10分最高)
4. 技术复杂度:1-10分(10分最复杂)
5. 资源投入:1-10分(10分投入最多)
6. 紧急程度:1-10分(10分最紧急)
请以JSON格式返回:
{
"classification": {
"type": "functional|non-functional|business|technical",
"category": "用户交互|业务逻辑|数据处理|系统集成|其他",
"module": "模块名称",
"module_confidence": 0.0-1.0
},
"priority": {
"business_value": 1-10,
"tech_complexity": 1-10,
"resource_cost": 1-10,
"urgency": 1-10,
"overall_score": 0-100,
"priority_level": "P0|P1|P2|P3",
"reasoning": "评估理由"
},
"dependencies": {
"prerequisites": ["REQ-XXX"],
"dependents": ["REQ-YYY"],
"parallel": ["REQ-ZZZ"],
"mutual_exclusive": ["REQ-AAA"]
},
"tags": {
"technology": ["标签"],
"business": ["标签"],
"feature": "新增功能|改进|修复",
"status": "已计划|进行中|已完成|已放弃"
}
}
Stage 5: 需求文档合并(多个需求文档时)
触发条件:在Stage 1(根据扫描结果决定流程)中,如果检测到多个需求文档,进入此阶段。
重要:
- ✅ 必须在用户确认后才执行合并
- ✅ 合并后的文档必须保存到 spec-workflow 格式的需求文档中
- ✅ 删除所有已合并的需求文档,只保留合并后的文档,保证只有一份文档
- ✅ 删除文档前必须向用户确认要删除的文档列表
执行流程:
-
识别需要合并的文档:
- 查找所有需求文档(
.spec-workflow/specs/*/requirements.md、根目录的requirements.md、docs/目录下的需求文档等) - 使用 AI 分析文档内容,识别重复、冲突和互补的需求
- 查找所有需求文档(
-
生成合并方案:
- 基于文档分析结果,生成合并方案
- 建议合并到哪个文档(优先建议 spec-workflow 格式的需求文档)
- 如何处理重复需求、冲突需求
-
使用 AskUserQuestion 确认合并(必需):
- 询问用户是否要合并多个需求文档
- 确认合并方案
- 确认如何处理重复和冲突的需求
- 确认合并后的文档保存位置
-
执行合并:
- 基于用户确认的合并方案,执行合并
- 保留所有重要信息,去除重复内容
- 解决冲突需求(基于用户选择)
-
保存合并后的文档并删除其他文档(必需):
- 按照 spec-workflow 格式生成合并后的文档(无论项目是否使用 spec-workflow)
- 保存到 spec-workflow 格式的需求文档:
- 如果项目使用 spec-workflow:保存到
.spec-workflow/specs/[feature-name]/requirements.md或.spec-workflow/requirements.md - 如果项目未使用 spec-workflow:自动创建
.spec-workflow/specs/[feature-name]/requirements.md
- 如果项目使用 spec-workflow:保存到
- 删除所有已合并的需求文档(删除前向用户确认要删除的文档列表)
- 只保留合并后的文档,保证只有一份文档
详细指南:参见项目文档中的文档合并相关章节
Stage 8: 用户画像分析(理解目标用户)
执行位置:Stage 4(需求完善)完成后可选执行,或作为独立分析功能
功能说明:从需求文档中自动提取和分析用户角色、特征、场景、目标和痛点,生成结构化用户画像,帮助团队更好地理解目标用户。
执行步骤:
步骤8.1:用户角色提取
- 扫描需求文档中的角色关键词
- 识别角色类型:最终用户/管理员/运营人员/客服人员/财务人员/开发人员/测试人员
- 判断用户层级:高级用户/普通用户/初级用户/游客
- 估算用户占比
步骤8.2:用户特征分析 分析每个角色的特征:
- 人口统计特征:年龄段、性别倾向、地域分布、职业背景
- 行为特征:使用频率、使用时长、使用场景、技术熟练度
- 需求特征:功能需求、性能需求、安全需求、体验需求
步骤8.3:用户场景分析
- 识别主要场景(核心使用流程)
- 识别次要场景(辅助功能)
- 识别边缘场景(异常处理)
- 每个场景包含:目标、前置条件、操作流程、期望结果、使用频率、重要程度
步骤8.4:用户目标提取 提取三类目标:
- 业务目标:与工作/业务相关的目标
- 体验目标:与使用体验相关的目标
- 个人目标:与个人价值相关的目标
步骤8.5:用户痛点识别 识别三类痛点:
- 效率痛点:操作繁琐、流程冗长等
- 体验痛点:界面不友好、响应慢等
- 业务痛点:成本高、维护困难等
- 评估痛点严重程度(高/中/低)
步骤8.6:生成用户画像 整合所有信息,生成结构化用户画像文档
输出格式:
## 用户画像分析结果
### 用户角色概览
- 识别用户角色:[X]种
- 主要角色:[角色1] ([占比]%), [角色2] ([占比]%)
- 用户层级分布:高级用户[X]%, 普通用户[Y]%, 初级用户[Z]%
### 详细用户画像
#### 用户画像 1: [角色名称]
**基本信息**:
- 用户角色:[类型]
- 用户层级:[层级]
- 用户占比:[X]%
- 主要部门:[部门]
**特征描述**:
- **人口统计特征**:
- 年龄段:[青年/中年/老年]
- 性别倾向:[男性/女性/中性]
- 地域分布:[一线/二线/三线/海外]
- 职业背景:[职业描述]
- **行为特征**:
- 使用频率:[高频/中频/低频]
- 使用时长:[长时间/短时间/碎片化]
- 使用场景:[工作/生活/学习/娱乐]
- 技术熟练度:[专家/熟练/一般/新手]
- **需求特征**:
- 功能需求:[需求列表]
- 性能需求:[需求列表]
- 安全需求:[需求列表]
- 体验需求:[需求列表]
**使用场景**:
1. **场景1: [场景名称]**
- 目标:[想要达成什么]
- 前置条件:[使用前需要什么]
- 操作流程:[具体步骤]
- 期望结果:[预期得到什么]
- 使用频率:[高/中/低]
- 重要程度:[P0/P1/P2]
**用户目标**:
- **业务目标**:
- [目标1]
- [目标2]
- **体验目标**:
- [目标1]
- [目标2]
- **个人目标**:
- [目标1]
- [目标2]
**用户痛点**:
- **效率痛点**:
- [痛点1]
- [痛点2]
- **体验痛点**:
- [痛点1]
- [痛点2]
- **业务痛点**:
- [痛点1]
- [痛点2]
- **严重程度**:[高/中/低]
**需求优先级**:
- **P0 (核心需求)**:
- [需求1]
- [需求2]
- **P1 (重要需求)**:
- [需求1]
- [需求2]
- **P2 (一般需求)**:
- [需求1]
- [需求2]
### 用户画像可视化
#### 角色分布
[角色1] ████████████████████ 70% [角色2] ████████ 20% [角色3] ██ 10%
#### 特征雷达图(ASCII)
技术熟练度
/
/
使用频率/ \访问时段
/
/ \
提示词模板:
你是一个用户画像分析专家。请分析以下需求文档,提取用户画像信息。
需求文档内容:
{requirements_text}
请从以下维度分析:
1. 用户角色提取:
- 识别所有用户角色
- 判断用户层级
- 估算用户占比
2. 用户特征分析:
- 人口统计特征
- 行为特征
- 需求特征
3. 用户场景分析:
- 主要场景(3-5个)
- 每个场景的详细信息
4. 用户目标提取:
- 业务目标
- 体验目标
- 个人目标
5. 用户痛点识别:
- 效率痛点
- 体验痛点
- 业务痛点
请以JSON格式返回:
{
"personas": [
{
"basic_info": {
"name": "角色名称",
"role_type": "end_user|admin|operator|cs|finance|developer|tester",
"user_level": "power|regular|novice|guest",
"department": "部门",
"percentage": 0.0-100.0
},
"characteristics": {
"demographics": {
"age_group": "young|middle_aged|elderly",
"gender_tendency": "male|female|neutral",
"region": "tier1|tier2|tier3|overseas",
"profession": "职业描述"
},
"behavioral": {
"frequency": "high|medium|low",
"duration": "long|short|fragmented",
"scenario": "work|life|study|entertainment",
"tech_proficiency": "expert|proficient|average|novice"
},
"needs": {
"functional": ["需求"],
"performance": ["需求"],
"security": ["需求"],
"experience": ["需求"]
}
},
"scenarios": [
{
"name": "场景名称",
"goal": "目标",
"prerequisites": ["条件"],
"steps": ["步骤"],
"expected_result": "期望结果",
"frequency": "high|medium|low",
"importance": "P0|P1|P2"
}
],
"goals": {
"business": ["目标"],
"experience": ["目标"],
"personal": ["目标"]
},
"pain_points": {
"efficiency": ["痛点"],
"experience": ["痛点"],
"business": ["痛点"],
"severity": "high|medium|low"
},
"requirements": {
"p0": ["需求"],
"p1": ["需求"],
"p2": ["需求"]
}
}
],
"statistics": {
"total_personas": 0,
"total_scenarios": 0,
"total_pain_points": 0
}
}
📋 重要原则
- 先扫描,后分析:技能启动时先扫描项目的代码和文档(步骤1),然后根据扫描结果决定流程
- 先分析,后交互:对于常规流程,必须先完成阶段2(需求分析:分析问题和缺失信息 + 列出功能需求清单),然后才能进入阶段3(交互澄清)
- 交互澄清不可跳过:阶段3(交互澄清)是必需阶段,必须在阶段2完成后执行,不能在阶段2之后直接进入阶段4
- 分析完成后列出功能需求清单:阶段2必须先分析问题和缺失信息,然后在分析完成后列出功能需求清单并展示给用户
- 通过AskUserQuestion交互补充需求:阶段3必须通过 AskUserQuestion 工具与用户交互,补充缺失的需求信息
- 集成到spec-workflow:无论项目是否使用 spec-workflow,都按照 spec-workflow 格式处理需求文档
- 必须使用 AskUserQuestion 工具:所有用户交互都必须通过 AskUserQuestion 工具进行,不能只是输出文本
- 严格按照顺序执行:不能跳过步骤1(扫描)、阶段2(需求分析)或阶段3(交互澄清)
- 完全AI驱动:不使用正则表达式,完全依赖 Claude 的 AI 理解能力
- 分析代码和文档:不仅要分析需求文档,还要分析代码文件,理解已实现的功能
🛠️ 使用的工具
- Read: 读取需求文档和代码文件
- Bash: 查找文件、执行命令
- AskUserQuestion: 与用户交互,澄清需求(必需)
- Write: 更新和完善需求文档
- spec-workflow MCP 或 CLI: 访问spec-workflow模板和上下文(如果可用),否则直接生成标准格式
📚 详细指南
- 空项目引导: 参见项目文档中的空项目引导相关章节
- 需求分析: 参见项目文档中的需求分析相关章节
- 问题生成: 参见项目文档中的问题生成相关章节
- 需求完善: 参见项目文档中的需求完善相关章节
- 需求文档合并: 参见项目文档中的文档合并相关章节
- Spec-Workflow 集成: 参见项目文档中的集成相关章节
📝 执行示例
示例: 合并需求文档
用户: "合并需求文档" 或使用技能
你:
智能需求分析助手 | Intelligent Requirements Facilitator
👤 作者: 苏州核朔智能科技有限公司
📖 文档: README.md | 🤝 贡献: CONTRIBUTING.md
📧 limian@norkern.com | 🌐 www.norker.com
🐛 Issues: [GitHub Issues](https://github.com/damienCronw/hs-req-facilitator-skill/issues)
⚡ 版本: v2.0.2
🚀 开始执行需求文档合并流程...
📂 步骤1: 扫描代码和文档(必需)...
[必须执行 find 命令扫描文档和代码]
[统计结果:发现3个需求文档和150个代码文件]
📋 步骤2: 根据扫描结果决定流程...
[检测到多个需求文档:requirements.md, docs/user-requirements.md, docs/api-requirements.md]
AskUserQuestion: "我发现项目中有3个需求文档,内容有重复。建议合并为1个文档。是否要开始合并?"
用户: "是的,合并"
📋 阶段5: 需求文档合并...
步骤1: 识别需要合并的文档
- requirements.md
- docs/user-requirements.md
- docs/api-requirements.md
步骤2: 分析文档内容(AI分析)
- 识别重复需求:5个
- 识别冲突需求:2个
- 识别互补需求:10个
步骤3: 生成合并方案
- 建议合并到:.spec-workflow/specs/main/requirements.md
- 重复需求处理:保留最详细的版本
- 冲突需求处理:询问用户选择
AskUserQuestion: "合并方案:将3个需求文档合并到 .spec-workflow/specs/main/requirements.md。是否同意?"
用户: "同意"
AskUserQuestion: "合并完成后,我将删除以下需求文档,只保留合并后的文档:
- requirements.md
- docs/user-requirements.md
- docs/api-requirements.md
合并后的文档将保存到:.spec-workflow/specs/main/requirements.md
是否同意删除上述文档?"
用户: "同意"
步骤4: 执行合并
- 合并重复需求(保留最详细的版本)
- 解决冲突需求(基于用户选择)
- 合并互补需求
步骤5: 保存合并后的文档并删除其他文档
- 按照 spec-workflow 格式生成合并后的文档
- 保存到 .spec-workflow/specs/main/requirements.md
- 删除 requirements.md
- 删除 docs/user-requirements.md
- 删除 docs/api-requirements.md
- ✅ 只保留一份需求文档
用户: "完善需求" 或使用技能
你: 🚀 开始执行需求完善流程...
📂 步骤1: 扫描代码和文档(必需)...
[必须执行 find 命令扫描文档和代码]
[统计结果:发现2个需求文档和150个代码文件]
📋 步骤2: 根据扫描结果决定流程...
[检测到有需求文档,进入常规流程]
📋 阶段2: 需求分析(必须在交互澄清之前完成)...
步骤1: 读取需求文档和代码文件
步骤2: 理解项目功能
步骤3: 分析问题和缺失信息(必需,必须在列出功能需求清单之前完成)
- 问题1: [缺失什么、为什么是问题、是否为误报、如何修复]
- 问题2: [缺失什么、为什么是问题、是否为误报、如何修复]
...
步骤4: 列出功能需求清单(必需,必须在分析完成后列出并展示给用户)
- 功能需求1: [功能名称]
* 功能描述:[这个功能做什么]
* 功能行为:[这个功能怎么做]
* 代码实现:[代码中是否已实现]
- 功能需求2: [功能名称]
...
- 非功能性需求:[性能需求、安全需求、可靠性需求等]
阶段2已完成,现在进入阶段3(交互澄清),不能跳过!
📋 阶段3: 交互澄清(通过AskUserQuestion与用户交互补充需求)...
[重要阶段,不能跳过!使用 AskUserQuestion 工具与用户交互]
[基于阶段2的分析结果,生成澄清问题]
如果有问题:
AskUserQuestion: "我看到功能需求清单中,功能需求1缺少验收标准。请告诉我:如何验证这个功能是否成功实现?"
用户: [回答]
AskUserQuestion: "功能需求2的输入输出还不明确。请告诉我:这个功能的输入是什么?输出是什么?"
用户: [回答]
...继续交互直到所有关键问题都得到回答...
如果没有问题:
AskUserQuestion: "没有发现问题需要澄清。是否要添加新需求?或直接进入下一步?"
用户: [回答]
✅ 阶段3已完成,现在可以进入阶段4(需求完善)!
📋 阶段4: 需求完善(集成到spec-workflow)...
[检测项目是否使用 spec-workflow]
[按照 spec-workflow 格式生成需求文档]
[如果项目使用 spec-workflow,更新 .spec-workflow/specs/*/requirements.md]
[如果项目未使用 spec-workflow,自动创建 .spec-workflow 目录结构]