Skip to content
Back to skills

Pbi Reviewer

ASecurity

需求返讲助手 - 帮助研发人员进行需求评审和返讲文档撰写。 触发关键词: 需求返讲、评审需求、返讲文档、检查需求、需求拆解、PBI评审、需求完整性。 输入: DevOps PBI链接、需求描述、或PBI内容。 输出: 需求返讲文档、检查清单结果、风险点、遗漏项。 适用场景: 收到PM需求后进行评审、检查需求完整性、撰写返讲文档。

  • 17 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added May 30, 2026
developmentjavascriptpythonjavaazuregitapidevops

Works with

  • api
  • mcp

Security analysis

A100/100

Scanned May 30, 2026

npx -y skills add gabrielmoreira/agent-skills-mirror --skill pbi-reviewer --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Pbi Reviewer?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Pbi Reviewer
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/gabrielmoreira-pbi-reviewer/badge)](https://www.skillsdirectory.com/skills/gabrielmoreira-pbi-reviewer)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: pbi-reviewer
description: |
  需求返讲助手 - 帮助研发人员进行需求评审和返讲文档撰写。
  触发关键词: 需求返讲、评审需求、返讲文档、检查需求、需求拆解、PBI评审、需求完整性。
  输入: DevOps PBI链接、需求描述、或PBI内容。
  输出: 需求返讲文档、检查清单结果、风险点、遗漏项。
  适用场景: 收到PM需求后进行评审、检查需求完整性、撰写返讲文档。
---

# 需求返讲助手

帮助研发人员高效完成需求返讲工作,包括需求理解、完整性检查、文档撰写。

---

## 执行声明规范

**AI 在执行此 Skill 时,必须向用户明确告知执行状态:**

### 开始执行时

```markdown
📝 **正在执行: 需求返讲助手** (`#pbi-reviewer`)

✅ 已加载 Skill 指引
⭕ 当前步骤: 步骤1 - 解析需求
```

### 调用其他专家时

```markdown
🔗 **调用领域专家**: `#{{PLATFORM_REPO}}-roi-expert`
   原因: 需求涉及 ROI 测量功能
```

### 每个步骤完成时

```markdown
✅ 步骤1 完成: 解析需求
   提取到 3 个功能点、2 个验收标准
⭕ 当前步骤: 步骤2 - 识别模块
```

### 遇到问题时

```markdown
⚠️ **问题提示**:
   - 未配置需求检查清单,将使用通用检查项
   - 如需自定义检查清单,请在 UI 中配置 `需求检查清单` 路径
```

### 执行完成时

```markdown
✅ **执行完成**: 需求返讲助手

参考来源:
- Skill: `#pbi-reviewer`
- 领域专家: `#{{PLATFORM_REPO}}-roi-expert`, `#{{PLATFORM_REPO}}-layout-expert`
- 检查清单: 通用检查项 / 自定义清单

产出物: 需求返讲文档
```

---

## 适用场景

- 收到PM的PBI需求,需要进行返讲评审
- 检查需求是否有遗漏或理解偏差
- 撰写标准格式的需求返讲文档
- 拆解复杂需求为可执行的开发任务

## 工作流程

```
输入: PBI链接/ID/标题/内容
       ↓
步骤0: 智能解析输入 → 识别PBI来源,自动获取详情
       ↓
步骤1: 解析需求 → 提取功能点、业务场景、验收标准
       ↓
步骤1-B: 🔴 搜索历史PBI → 从 CSV 查找相关/相似 PBI(必须执行)
       ↓
步骤2: 识别模块 → 根据关键词匹配功能模块,调用领域专家
       ↓
步骤3: 应用检查清单 → 逐项检查影响范围
       ↓
步骤4: 生成文档 → 输出标准格式的返讲文档
       ↓
步骤5: 发布文档(默认) → 优先飞书MCP,不可用时降级为本地MD
       ↓
输出: 飞书文档链接 / 本地Markdown + 检查清单 + 风险点
```

## 详细步骤

### 🔴 前置检查:一次性请求拦截(需求返讲 + 设计评审)

> 当用户请求中**同时包含**「需求返讲」和「设计评审/圆桌会议/出设计」关键词时,
> **必须**先拦截,引导用户分步执行。

**检测规则**: 用户输入同时匹配以下两组关键词:
- 组A(需求返讲): `需求返讲` / `评审需求` / `返讲` / `PBI评审`
- 组B(设计评审): `设计评审` / `圆桌会议` / `出设计` / `写设计` / `设计文档`

**匹配到时,使用 `ask_questions` 拦截**:

```
header: "分步确认"
question: "检测到您希望同时进行需求返讲和设计评审。\n\n⚠️ 建议分步执行:先完成需求返讲,与 PM 澄清所有待确认问题后,再启动设计评审。否则设计方案可能因需求理解偏差而返工。\n\n请选择执行方式:"
options:
  - label: "先做需求返讲,稍后再出设计"
    description: "完成返讲后,您可以与 PM 确认问题,再单独启动设计评审"
    recommended: true
  - label: "我已确认需求,直接做完返讲后继续设计"
    description: "跳过中间确认环节,返讲完成后自动启动圆桌会议"
```

- 用户选择「先做需求返讲」→ 只执行需求返讲(步骤0-6),不自动触发圆桌会议
- 用户选择「直接做完返讲后继续设计」→ 执行完需求返讲后,自动加载 `#roundtable-debate` 继续

> 📌 如果用户请求中只提到「需求返讲」,不触发此拦截,直接执行。

---

### 步骤0: 智能解析 PBI 输入 ⭐ 必须执行

> ⚠️ **强制规则**: 如果从用户输入中检测到 PBI ID(数字),**必须先调用 MCP 获取 PBI 详情**,不得跳过!

**支持的输入格式(按优先级):**

| 格式 | 示例 | 解析方式 |
|------|------|----------|
| DevOps 链接 | `https://your-devops-server.example.com/YourProject/_queries/edit/1073716/...` | 从 URL 提取数字 ID |
| 工作项格式 | `Product Backlog Item 1073716: PBI_Func_...` | 提取 "Item" 后的数字 |
| 纯数字 ID | `1073716` | 直接使用 |
| PBI 标题 | `PBI_Func_{{APP_NAME}}_Feature_XXX_功能优化
| 自然语言 | `帮我评价下PBI PBI_Func_{{APP_NAME}}_Feature_XXX_功能优化

**解析正则表达式:**
```javascript
// 1. 从 URL 提取 ID
url.match(/\/_(?:queries|workitems)\/(?:edit\/)?([0-9]+)/)

// 2. 从标准格式提取
text.match(/(?:Product Backlog Item|PBI|Work Item|Bug)\s*#?([0-9]+)/i)

// 3. 纯数字 (5-8位,符合 DevOps ID 范围)
text.match(/\b([0-9]{5,8})\b/)

// 4. PBI 标题 (用于搜索)
text.match(/PBI_[A-Za-z0-9_]+/)
```

**🔴 强制执行:MCP 调用**

当检测到 PBI ID 时,**必须**尝试以下 MCP 工具调用:

```
工具名称: mcp_azuredevops_get_work_item
参数: 
  - id: <提取到的PBI数字ID>
  
示例调用:
  mcp_azuredevops_get_work_item(id=1073716)
```

**⚠️ API 返回内容对比(务必选对工具)**

| API | Description | AcceptanceCriteria | 适用场景 |
|-----|:-----------:|:------------------:|----------|
| `get_work_item` | ✅ 完整返回 | ✅ 完整返回 | 获取单个 PBI 详情(**必须用这个**) |
| `list_work_items` | ❌ 始终为空 | ❌ 始终为空 | 仅用于批量查 ID/Title/State |
| `search_work_items` | ⚠️ 仅摘要 | ❌ 不返回 | 关键词模糊搜索 |

> 🔴 **禁止**:用 `list_work_items`(WIQL)获取单个 PBI 详情。WIQL 不返回 HTML/大文本字段,即使 SELECT 中指定了 `[System.Description]`,返回值也为空。

如果只有标题没有 ID,使用搜索:
```
工具名称: mcp_azuredevops_search_work_items  
参数:
  - query: <PBI标题>
```

**🟡 MCP 不可用时的备选方案**

当 MCP 工具不存在或调用失败时,执行以下备选流程:

```markdown
⚠️ **MCP 状态**: Azure DevOps 工具不可用
   原因: [工具未加载 / 连接失败 / 认证错误]

🔄 **启用备选方案**:
   1. 查询历史 PBI 知识库
   2. 请用户手动提供 PBI 内容
```

**步骤0-B: MCP 不可用时的处理**

> 历史 PBI CSV 搜索已提升为独立步骤(步骤1-B),无论 MCP 是否可用都会自动执行。
> 此处仅需告知用户 MCP 状态,请求粘贴 PBI 完整内容。

**执行流程:**
```markdown
📥 **步骤0: 解析 PBI 输入** (强制)

1️⃣ 识别输入类型:
   - 检测到: [链接/ID/标题/内容]
   - 提取的 ID: [具体数字,如 1073716]

2️⃣ 🔴 尝试调用 MCP 获取详情:
   → 调用 mcp_azuredevops_get_work_item(id=1073716)
   → 如果成功,提取: 标题、描述、验收标准、状态、迭代
   → 如果失败,转到步骤 2-B

2️⃣-B 🟡 MCP 不可用,启用备选:
   → 告知用户 MCP 状态,请求粘贴完整内容
   → 历史 PBI CSV 搜索将在步骤1-B 自动执行

3️⃣ 提取关键信息:
   - System.Title: 标题
   - System.Description: 需求描述 (HTML格式,需解析)
   - Microsoft.VSTS.Common.AcceptanceCriteria: 验收标准
   - System.State: 状态
   - System.IterationPath: 迭代路径

📚 **参考来源声明** (必须输出):
   - MCP DevOps: [成功/不可用]
   - 历史PBI: 将在步骤1-B 填充
```

### 步骤1: 解析需求

**从PBI中提取以下信息**:

1. **基本信息**
   - PBI编号和标题
   - 所属迭代/版本
   - 优先级

2. **功能描述**
   - 业务背景
   - 用户故事
   - 功能点列表

3. **验收标准**
   - 功能验收条件
   - 非功能性要求(性能、兼容性等)

4. **关联信息**
   - 相关PBI链接
   - 设计稿/原型链接
   - 二级链接(如果有)

5. **术语确认** 🔍
   - 对 PBI 描述中出现的技术术语、模块名、组件名
   - 如果 AI 不确定其含义 → `grep_search` 搜索项目代码或查询 expert skill 确认
   - 如果搜索后仍不确定 → 在返讲文档「待确认问题」中标注

### 步骤1-B: 搜索历史 PBI 知识库 🔴 必须执行

> ⚠️ **强制规则**: 无论 MCP 是否可用,此步骤都**必须执行**。这是填充返讲文档 `### 相关PBI` 表格的唯一来源。

**获取 PBI 文件路径**(本地优先):

1. **优先**: 检查 `.github/copilot-resources/data/` 目录下是否有 `*-index.md` 和 `*-detail.md` 文件(CSV 已自动转换为分层 Markdown) → 如果有,直接读取(工作区内文件,无需授权)
2. **降级**: 查看 `.github/copilot-instructions.md` 中「项目文档配置」段落,获取 PBI 索引/详情路径

> 📁 `.github/copilot-resources/` 是工具自动复制的本地副本。PBI 数据已分为**索引文件**(轻量表格,含关键词列)和**详情文件**(完整描述),避免一次性加载过多 token。

**如果已配置 PBI 知识库** — 双路搜索工作流:

```
路径A: read_file 索引文件 → 按标题/关键词匹配
路径B: grep_search 详情文件 → 按描述内容匹配
合并去重 → read_file 按需读取详情片段
```

**路径A — 索引匹配**:

1. 用 `read_file` 读取索引文件(`*-index.md`,~400行,轻量)
2. 索引表列结构:
   - `ID`: PBI 编号
   - `Title`: 标题
   - `State`: 状态
   - `Keywords`: 从描述中自动提取的领域关键词
   - `RefLinks`: 描述中引用的 URL
3. 搜索策略:
   - 按当前 PBI ID 精确匹配(排除自身,查找关联记录)
   - 按标题关键词模糊匹配(提取功能关键词,如 `配准`、`Spectrum`、`CT`)
   - 按 Keywords 列匹配功能模块名(如 `ROI`、`Layout`、`DataLoad`)

**路径B — 详情搜索**(补充路径A遗漏):

1. 从当前 PBI 标题/描述中提取 2-3 个核心功能关键词
2. 用 `grep_search` 在详情文件(`*-detail.md`)中搜索每个关键词
3. 从搜索结果中提取匹配到的 `## PBI-{id}` section 标题

**合并与去重**:

1. 将路径A和路径B的匹配结果合并,按 PBI ID 去重
2. 对路径B新发现的 PBI,用 `read_file` 读取详情文件中对应 section 获取完整描述
3. 返回最相关的 **3-5 条**记录
4. 将结果填充到返讲文档模板的 `### 相关PBI` 表格

**如果未配置 PBI 知识库**:

```markdown
⚠️ 未配置历史 PBI 知识库,跳过历史搜索。
   如需启用,请在 GUI 向导中配置 `PBI CSV 路径`。
```

**输出格式**:

```markdown
✅ 步骤1-B 完成: 搜索历史 PBI
   索引文件: [文件名] | 详情文件: [文件名]
   路径A(索引匹配): X 条 | 路径B(详情搜索): Y 条
   合并去重后: Z 条相关记录
   - PBI-XXXXXX: [标题] (关系: [依赖/关联/相似])
   - PBI-YYYYYY: [标题] (关系: [依赖/关联/相似])
```

**📚 参考来源更新**:
```
- 历史PBI: [索引文件名] + [详情文件名] (Z 条相关记录) / 未配置
```

### 步骤2: 识别功能模块

**根据需求内容的关键词,识别涉及的功能模块并调用对应专家**:

**🔴 扫描 Skills 目录进行专家匹配**

```python
# 扫描 .github/skills/ 目录
for skill_dir in list_dir(".github/skills/"):
    if skill_dir.startswith("_"):  # 跳过 _templates
        continue
    skill_md = read_file(f".github/skills/{skill_dir}/SKILL.md")
    # 解析 frontmatter 的 description,提取触发关键词
    # 与 PBI 内容进行正则匹配
    if keywords_match(pbi_content, skill_description):
        call_expert(skill_name)
        output(f"🔗 调用领域专家: #{skill_name}\n   原因: 匹配关键词")
```

> 💡 每个 SKILL.md 的 description 包含触发关键词,格式如:
> `触发关键词: ROI、轮廓、测量、标注`

**降级策略:关键词未匹配任何 expert 时**

如果 PBI 涉及的功能模块没有对应的 expert skill,执行以下降级:

```python
# 降级:搜索项目代码确认影响范围
if matched_experts == 0:
    # 1. 从 PBI 标题/描述中提取技术关键词
    keywords = extract_technical_keywords(pbi_title, pbi_desc)
    # 2. 搜索项目代码
    for kw in keywords:
        grep_search(kw, includePattern="**/*.cs")
    # 3. 根据搜索结果识别涉及的文件和模块
    output("⚠️ 未找到对应领域专家,基于代码搜索分析影响范围")
```

**平台项目工作区检测**: 当匹配到的关键词涉及平台组件(如 `DataLoad`、`DataSave`、`ROI`、`VOI`、`Layout`、`Volume` 等 平台 平台关键词)时,检查用户是否具备平台代码访问能力:

1. 检查工作区是否包含 `{{PLATFORM_REPO}}` 文件夹
2. 检查 `.github/copilot-instructions.md` 中是否配置了 DevOps MCP 仓库

如果**两者都没有**,使用 `ask_questions` 提示用户:

```
header: "平台项目"
question: "检测到 PBI 可能涉及平台组件(匹配关键词: {关键词}),但工作区未打开平台项目且未配置 DevOps 远程仓库。\n\n后续设计评审阶段需要读取平台源码进行接口分析,建议提前配置。"
options:
  - label: "我来添加平台项目到工作区"
    description: "将 {{PLATFORM_REPO}} 添加到多根工作区"
  - label: "已有 DevOps MCP,继续"
    description: "DevOps MCP 已配置,可远程搜索平台代码"
  - label: "跳过,继续返讲"
    description: "先完成需求返讲,后续设计评审时再处理"
    recommended: true
```

> 📌 此检测为**提示性的**,不阻断需求返讲流程。主要目的是让用户提前知晓,以便在进入设计评审阶段前做好准备。

### 步骤3: 应用检查清单

**根据识别的模块,应用对应的检查清单**:

> 🔴 **全面匹配原则(强制)**
>
> 检查清单是用户最信任的产出物之一,**任何遗漏都可能导致后续分析出现毁灭性错误**。
> 宁可多花资源全面分析,绝不能遗漏。
>
> 1. **穷尽所有章节**: 必须扫描检查清单的**每一个章节**,不能只看"最明显相关"的一两个
> 2. **多维度关键词匹配**: 从 PBI 标题和内容中提取**所有功能关键词**,分别与每个章节匹配
>    - 示例: PBI「保存_VOI轮廓导入导出_ExportFormat」→ 关键词: `保存` + `VOI` + `轮廓` + `导入导出` + `ExportFormat`
>    - 必须匹配: 保存功能章节 ✖ VOI管理章节 ✖ 数据加载章节 ✖ 配准联动章节 ✖ ...
> 3. **每个匹配章节的每一项都要列出**: 不得只挑"高频影响"项,普通项也必须列出并给出判断
> 4. **跨章节关联检查**: 当一个功能点在多个章节出现时(如 VOI 出现在加载/管理/保存多个章节),**每个章节都要检查**
>
> ❗ **反例警示**: PBI"保存_VOI轮廓导入导出_ExportFormat"——如果只检查了「保存功能」章节,而遗漏了「VOI管理」「数据加载」「配准联动」等章节中的 VOI 相关项,就是严重遗漏。
>
> 🔍 **代码验证(可选但推荐)**: 对于“是否影响现有功能”“是否影响其他模块”等检查项,
> 如果仅靠 expert skill 文本描述无法确认,可用 `grep_search` 搜索项目代码中的调用关系来确认实际影响范围。

> **📁 用户配置的文档(本地优先)**
> 
> 🔴 **优先从 `.github/copilot-resources/docs/` 读取**,避免工作区外文件授权弹窗。
> 降级时才从 `.github/copilot-instructions.md` 中的「项目文档配置」段落获取绝对路径。
> 
> | 配置项 | 本地优先路径 | 用途 | 使用时机 |
> |------|----------------|------|----------|
> | 需求检查清单 | `.github/copilot-resources/docs/` | 检查需求完整性 | 步骤3 检查时读取 |
> | 功能模块清单 | `.github/copilot-resources/docs/` | 识别受影响模块 | 步骤2 识别模块时参考 |
> | 功能依赖关系 | `.github/copilot-resources/docs/` | 分析影响范围 | 步骤2/3 分析影响时参考 |
> 
> ⚠️ 如果配置了这些文档,**必须读取并在回复中声明参考了哪些文件**
> 
> 如未配置,使用以下通用检查项:

通用检查项:

#### 功能完整性检查
- [ ] 需求描述是否清晰完整?
- [ ] 是否有遗漏的功能点?
- [ ] 边界条件是否明确?
- [ ] 异常场景是否考虑?

#### 兼容性检查
- [ ] 是否影响现有功能?
- [ ] 是否需要数据迁移?
- [ ] 是否影响其他模块?

#### 非功能性检查
- [ ] 性能要求是否明确?
- [ ] 多模态支持是否考虑?(PT/CT/MR/NM)
- [ ] 多语言是否需要支持?
- [ ] 多分辨率是否需要适配?

#### 配置文件影响检查(FE↔BE 通路)

> 💡 当需求涉及新增功能、新消息通路或新界面组件时,检查是否需要修改运行时 XML 配置文件。
> 配置文件通常位于 `appdata/{appname}/config/` 下。

- [ ] 是否需要新增 Operation/Widget/Model 注册?(`[后端配置文件]`)
- [ ] 是否需要新增 BE→FE 消息路由?(`[前端命令配置]`)
- [ ] Controller 级 Operation 链是否需要修改?(`BE/WorkflowController.xml`)
- [ ] 是否需要新增 Cell 初始化链?(`[前端配置文件]`)
- [ ] 是否需要新增 IoC 容器注册?(`[前端容器配置]`)

### 步骤4: 生成返讲文档

> 💡 **金字塔原则**: 结论先行,先给核心结论,再展开详细分析
>
> **文档结构要求**:
> 1. 摘要先行: 开篇给出需求概要和核心结论
> 2. 支撑论点: 列出主要影响和风险
> 3. 详细展开: 功能拆解、检查清单、计划等
>
> **不进行分步确认**: 直接输出完整文档
>
> **📌 模板填写提示**:
> - `### 相关PBI` 表格数据来自步骤1-B 的 CSV 搜索结果
> - 如果步骤1-B 找到相关记录,**必须**填入表格,不得留空
> - 如果未配置 CSV 或无匹配,填写 "无历史相关PBI" 并注明原因

**使用以下模板生成返讲文档**:

---

## 返讲文档模板

```markdown
# [PBI编号] 需求返讲

## 1. 需求概述

### 1.1 基本信息

| 属性 | 值 |
|------|-----|
| PBI编号 | [填写] |
| 需求标题 | [填写] |
| 所属迭代 | [填写] |
| 优先级 | [填写] |
| 预估工作量 | [填写] |

### 1.2 业务背景

[描述需求的业务背景和用户痛点]

### 1.3 功能点列表

| 序号 | 功能点 | 描述 | 优先级 |
|------|--------|------|--------|
| 1 | [功能点名称] | [简要描述] | P0/P1/P2 |
| 2 | ... | ... | ... |

## 2. 需求理解

### 2.1 用户故事

作为 [用户角色],
我希望 [功能描述],
以便 [业务价值]。

### 2.2 业务流程

```mermaid
flowchart LR
    A[开始] --> B[步骤1]
    B --> C[步骤2]
    C --> D[结束]
```

### 2.3 界面交互

[如有原型图,附上链接或描述关键交互]

## 3. 影响分析

### 3.1 涉及模块

| 模块 | 影响程度 | 说明 |
|------|----------|------|
| [模块名] | 高/中/低 | [影响说明] |

### 3.2 检查清单结果

[根据 docs/需求检查清单.md 逐项检查的结果]

| 检查项 | 结果 | 备注 |
|--------|------|------|
| [检查项] | Y/N/待确认 | [备注] |

### 3.3 依赖关系

- 上游依赖: [列出依赖的模块/功能]
- 下游影响: [列出会影响的模块/功能]

## 4. 风险与问题

### 4.1 识别的风险

| 风险 | 等级 | 缓解措施 |
|------|------|----------|
| [风险描述] | 高/中/低 | [措施] |

### 4.2 待确认问题

<!-- CLARIFICATION_LIST_START -->
| ID | 问题 | 状态 | 负责人 | PM答复 |
|----|------|------|--------|--------|
| Q1 | [问题描述] | 🔴待确认 | [PM/研发] | - |
<!-- CLARIFICATION_LIST_END -->

> 📌 **状态说明**:🔴待确认 → ✅已确认 → ❌已取消。PM答复列填写沟通结果。

## 5. 开发计划

### 5.1 任务拆解

| 任务 | 预估工时 | 依赖 |
|------|----------|------|
| [任务描述] | [X]h | [依赖任务] |

### 5.2 里程碑

| 里程碑 | 日期 | 交付物 |
|--------|------|--------|
| 需求返讲 | [日期] | 返讲文档 |
| 设计评审 | [日期] | 设计文档 |
| 开发完成 | [日期] | 代码提交 |
| 测试完成 | [日期] | 测试报告 |

## 6. 验收标准

### 6.1 功能验收

- [ ] [验收条件1]
- [ ] [验收条件2]

### 6.2 非功能验收

- [ ] 性能: [具体指标]
- [ ] 兼容性: [支持的模态/设备]

---

## 附录

### 相关PBI

| PBI编号 | 标题 | 关系 |
|---------|------|------|
| [编号] | [标题] | 依赖/关联/冲突 |

### 参考资料

- [设计稿链接]
- [原型链接]
- [相关文档]
```

---

## 输出说明

完成需求返讲后,输出以下内容:

1. **返讲文档** - 按上述模板填写的完整文档
2. **检查清单** - 各模块检查项的结果汇总
3. **风险清单** - 识别的风险和待确认问题
4. **遗漏建议** - 可能遗漏的功能点或场景

## 示例

### 输入示例

**方式1: DevOps 链接**
```
帮我做需求返讲: https://your-devops-server.example.com/YourProject/_queries/edit/1073716/?triage=true
```

**方式2: 标准格式**
```
请分析这个 PBI:
Product Backlog Item 1073716: PBI_Func_{{APP_NAME}}_Feature_XXX_功能优化
```

**方式3: 纯 ID**
```
需求返讲 1073716
```

**方式4: PBI 标题**
```
帮我评价下PBI PBI_Func_{{APP_NAME}}_Feature_XXX_功能优化
```

**方式5: 直接粘贴内容**
```
帮我做一下这个PBI的需求返讲:
PBI-123456: VOI分割支持多阈值配置
需求描述: 用户希望在进行PET病灶分割时,能够配置多个阈值策略...
```

### 输出示例(自动获取 PBI 详情)

```markdown
📝 **正在执行: 需求返讲助手** (`#pbi-reviewer`)

✅ 已加载 Skill 指引
⭕ 当前步骤: 步骤0 - 智能解析 PBI 输入

---

📥 **步骤0: 解析 PBI 输入**

1️⃣ 识别输入类型:
   - 检测到: DevOps 链接
   - 提取 ID: 1073716

2️⃣ 获取 PBI 详情:
   🔧 调用 MCP: azureDevOps.get_work_item
   ✅ 获取成功

3️⃣ PBI 基本信息:
   - 标题: PBI_Func_{{APP_NAME}}_Feature_XXX_功能优化
   - 状态: Active
   - 迭代: Sprint 42
   - 优先级: P1

✅ 步骤0 完成
⭕ 当前步骤: 步骤1 - 解析需求

---

# PBI-1073716 需求返讲

## 1. 需求概述
...
```

## 相关资源

### 🔴 文档读取优先级(强制)

> 所有文档必须按以下优先级读取,**禁止跳过本地副本直接读取绝对路径**。

| 优先级 | 路径 | 说明 |
|--------|------|------|
| ➀ 本地副本(优先) | `.github/copilot-resources/docs/` 和 `.github/copilot-resources/data/` | 工具自动复制,工作区内文件,无需授权 |
| ➁ 配置路径(降级) | `.github/copilot-instructions.md` 中的「项目文档配置」表格 | 可能是绝对路径,会触发授权弹窗 |

**具体操作**:
1. 先执行 `list_dir(".github/copilot-resources/")` 检查目录是否存在
2. 如果存在 → 从 `docs/` 读取检查清单/模块清单/依赖关系,从 `data/` 读取 PBI CSV
3. 如果不存在 → 从 copilot-instructions.md 获取路径后读取

### 历史 PBI 知识库

如果配置了 PBI CSV,工具会自动将其转换为分层 Markdown 存放在 `.github/copilot-resources/data/` 下:
- **索引文件** (`*-index.md`): 轻量表格(~400行),含 ID/Title/State/Keywords/RefLinks 列,优先读取
- **详情文件** (`*-detail.md`): 完整内容(~10000行),每个 PBI 一个 `## PBI-{id}` section,按需用 `grep_search` + `read_file` 读取

**双路搜索工作流**: 先读索引匹配 → 再 grep_search 详情补充 → 合并去重 → read_file 读取目标 section

| 索引表列名 | 说明 |
|------|------|
| `ID` | PBI 编号 |
| `Title` | 标题 |
| `State` | 状态 |
| `Keywords` | 从描述中自动提取的领域关键词 |
| `RefLinks` | 描述中引用的 URL |

### 默认资源

- 检查清单: `.github/copilot-resources/docs/` 下的检查清单文件
- 功能模块: `.github/copilot-resources/docs/` 下的模块清单文件
- 依赖关系: `.github/copilot-resources/docs/` 下的依赖关系文件
- 历史PBI: `.github/copilot-resources/data/` 下的 Markdown 文件(从CVS自动转换)
- 专家索引: `#expert-index`

### 📚 参考来源声明模板

执行完成时,**必须**输出以下声明:

```markdown
📚 **参考来源**:
- MCP DevOps: [成功获取 PBI-XXXXXX / 不可用]
- 历史PBI: [索引文件名] + [详情文件名] (X 条相关记录) / 未配置
- 检查清单: [文件路径] / 使用通用检查项
- 功能模块: [文件路径] / 未配置
- 依赖关系: [文件路径] / 未配置
- 领域专家: [调用的专家列表]
```

---

## 步骤5: 发布文档(默认执行)

> ⚙️ **默认策略**: 飞书优先,MCP 不可用时自动降级为本地 Markdown

**执行流程**:

```
生成返讲文档
    │
    ▼
检测飞书 MCP 工具是否可用
    │
    ├── 可用 → 调用 #lark-doc-generator → 输出飞书文档链接
    │
    └── 不可用 → 输出本地 Markdown 文档 + 配置提示
```

### 5.1 飞书 MCP 可用时(默认路径)

```markdown
🔗 **自动调用**: `#lark-doc-generator`
   原因: 默认发布到飞书

⭕ 正在将返讲文档发布到飞书...
```

### 5.2 完整示例

**用户输入**:
```
需求返讲 1073716
```

**AI 执行流程**:
```markdown
📝 **正在执行: 需求返讲助手** (`#pbi-reviewer`)

✅ 步骤0-4 完成: 生成返讲文档
   产出: [PBI-1073716 需求返讲文档]

🔗 **自动调用**: `#lark-doc-generator`
   原因: 默认发布到飞书(飞书优先策略)

---

🚀 **正在执行: 飞书文档生成器** (`#lark-doc-generator`)

✅ 已将文档发布到飞书
📄 飞书文档链接: https://xxx.feishu.cn/docx/xxxxx

---

✅ **执行完成**: 需求返讲助手

参考来源:
- Skill: `#pbi-reviewer` → `#lark-doc-generator`
- MCP DevOps: 成功获取 PBI-1073716
- 飞书文档: 已发布

产出物: 
1. 飞书文档链接(主要)
2. 本地 Markdown 备份
```

### 5.3 飞书 MCP 不可用时(降级路径)

如果飞书 MCP 工具不可用,自动降级为本地 Markdown:

```markdown
⚠️ **飞书 MCP 不可用,已降级为本地 Markdown**

✅ 已生成本地文档: `docs/PBI-1073716-需求返讲.md`

💡 如需发布到飞书,请先配置飞书 MCP:
   1. 运行 `docs/setup-lark-mcp.ps1` 配置飞书 MCP
   2. 或参考 `#lark-mcp-troubleshooting` 排查连接问题
   3. 配置完成后重新执行本命令
```

### 5.4 禁用飞书发布(可选)

如用户明确要求**只生成本地文档**,可跳过飞书发布:

```
需求返讲 1073716 --local-only
需求返讲 1073716,只生成本地文档
```

---

## 步骤6: 产出持久化 + 下一步建议(自动输出)

### 6.0 持久化返讲文档(强制)

> 🔴 **必须在输出返讲文档后,将完整文档写入文件**,供后续对话(如圆桌会议)直接读取。

```python
# 根据 PBI ID 生成文件路径
review_path = f".copilot-temp/pbi-{pbi_id}-review.md"
create_file(review_path, review_document_with_context_summary)
```

> 📌 如果 `.copilot-temp/` 目录不存在,自动创建。该目录已通过 `.git/info/exclude` 排除。

#### 🔴 持久化文件必须包含的内容结构

写入文件的内容必须按以下结构组织,确保新对话能仅通过读取此文件就完全恢复上下文:

```markdown
# PBI {ID} 需求返讲文档

## 上下文摘要(供新对话读取)

| 属性 | 值 |
|------|------|
| PBI ID | {ID} |
| 标题 | {标题} |
| 模块 | {所属功能模块} |
| 涉及平台组件 | {是/否 + 组件名} |
| 创建时间 | {YYYY-MM-DD HH:mm} |
| 待澄清问题数 | {N 个待确认 / M 个已确认} |

### 关键文件路径
- FE: `src/{{PLATFORM_NAMESPACE}}.{Module}/...`
- BE: `src/{{PLATFORM_NS_PREFIX}}{Module}/...`
- 平台: `{{PLATFORM_REPO}}/{Component}/...`

### 关键技术决策
- {决策1}: {简述}
- {决策2}: {简述}

---

## 正文(返讲文档内容)

{完整的返讲文档内容,包含所有分析、检查清单、待澄清问题等}

## CLARIFICATION_LIST

<!-- CLARIFICATION_LIST_START -->
{待确认问题表格}
<!-- CLARIFICATION_LIST_END -->

## 下一步建议
- 用圆桌会议分析 PBI {ID}: `用圆桌会议分析 PBI {ID}`
```

> 🔴 **禁止写入的内容**:
> - 中间搜索过程(grep_search 结果、MCP 调用记录)
> - 文件全文副本(只保留路径,新对话自己读取)
> - 对话中的来回讨论和已淘汰的备选方案
> - 多轮修正中的历史错误版本(只保留最终正确版本)

#### 🔴 修正场景处理

如果用户在文档生成后要求修正(“这里分析不对,应该是XXX”):

1. **修正内容后,必须立即覆写持久化文件**:
   ```python
   # 修正后立即覆写,不是追加
   create_file(f".copilot-temp/pbi-{pbi_id}-review.md", corrected_full_content)
   ```
   修正完成后输出:`📄 返讲文档已更新并重新保存到 .copilot-temp/pbi-{ID}-review.md`

2. **修正超过 3 轮时,建议新开对话**(避免历史错误版本污染上下文)

### 6.1 下一步建议 + 新对话引导

返讲文档生成并发布后,**自动输出以下提示**:

```markdown
---

💡 **下一步 & 对话建议**:
- 产出已保存到: `.copilot-temp/pbi-{ID}-review.md`
- 如需进入设计评审阶段,建议**新开对话**输入:
  `用圆桌会议分析 PBI {ID}`
- 在新对话中,AI 会自动读取本次返讲文档作为设计输入

> ⚠️ 建议先与 PM 确认所有待澄清问题后,再启动设计评审。
```

### 6.2 需求澄清检查(ask_questions 引导)

如果返讲过程中发现了**待确认/待澄清**的问题,**必须**使用 `ask_questions` 对话框提醒用户:

```
header: "需求澄清"
question: "返讲中发现以下待确认问题,建议进入设计阶段前与 PM/相关人士沟通确认:\n\n[列出所有待确认问题,含 ID]\n\n⚠️ 未澄清的问题如果直接进入设计阶段,可能导致设计方案偏离实际需求。"
options:
  - label: "我已了解,稍后去确认"
    description: "记录待确认问题,后续与 PM 沟通后再启动设计评审"
    recommended: true
  - label: "这些问题可以跳过,直接出设计"
    description: "基于当前理解直接进入圆桌会议设计评审"
  - label: "帮我整理澄清沟通要点"
    description: "生成一份可以发给 PM 的问题清单"
  - label: "部分问题已确认,帮我更新状态"
    description: "录入 PM 答复,更新待确认问题的状态"
    allowFreeformInput: true
```

> 🔴 **如果没有待确认问题**,跳过此对话框,直接输出下一步建议。

> 📌 **用户选择“部分问题已确认”时**:根据用户输入的 PM 答复,更新返讲文档中 `CLARIFICATION_LIST` 标记区段内对应行的状态(🔴待确认 → ✅已确认)和 PM答复列,使用 `replace_string_in_file` 更新本地文档。

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.