@zhanlucode/zl-darwin-arm64 1.5.87028
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/bin/rg +0 -0
- package/bin/tree-sitter/tree-sitter-bash.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-c.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-c_sharp.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-cpp.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-css.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-dart.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-elisp.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-elixir.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-elm.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-embedded_template.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-go.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-html.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-java.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-javascript.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-json.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-kotlin.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-lua.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-objc.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-ocaml.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-php.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-python.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-ql.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-rescript.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-ruby.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-rust.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-scala.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-solidity.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-swift.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-systemrdl.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-tlaplus.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-toml.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-tsx.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-typescript.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-vue.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-yaml.wasm +0 -0
- package/bin/tree-sitter/tree-sitter-zig.wasm +0 -0
- package/bin/tree-sitter/tree-sitter.wasm +0 -0
- package/bin/zhanlu-plugins/bundle-index.json +60 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/.claude-plugin/plugin.json +42 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/README.md +29 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/mcps/sast_fixer_mcp/README.md +10 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-check/SKILL.md +179 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-check/config/gitlab_config.json +5 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-check/prompts/step1_preparation.md +167 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-check/prompts/step2_consistency_check.md +446 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-check/scripts/gitlab_clone.py +213 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-check/scripts/read_excel_requirements.py +144 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-review/GITLAB_USAGE.md +160 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-review/QUICK_REFERENCE.md +149 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-review/README.md +134 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-review/SKILL.md +151 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-review/assets/review_standards.md +144 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-review/prompts/file_review_prompt.md +160 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-review/prompts/output_requirements.md +35 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-review/prompts/step1_project_preprocessing.md +106 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-review/prompts/step2_file_review.md +83 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-review/prompts/step3_report_generation.md +319 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-review/scripts/gitlab_clone.py +213 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/manual-test-case-generator/SKILL.md +366 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/manual-test-case-generator/references/generation-rules.md +214 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/manual-test-case-generator/references/query-rules.md +60 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/manual-test-case-generator/references/review-rules.md +117 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/manual-test-case-generator/references/save-rules.md +367 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/quality_scan/SKILL.md +195 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/requirement-analysis/SKILL.md +346 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/requirement-review/SKILL.md +267 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/requirements-gather/SKILL.md +187 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/sast_scan/SKILL.md +312 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/story-decomposer/SKILL.md +77 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/story-decomposer/evals/evals.json +34 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/story-decomposer/references/epic-to-story-methodology.md +122 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/story-decomposer/references/epic-to-story-template.md +93 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/story-decomposer/references/epic-to-story-to-task-template.md +221 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/story-decomposer/references/story-to-task-methodology.md +139 -0
- package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/story-decomposer/references/story-to-task-template.md +89 -0
- package/bin/zhanlu-plugins/lingji-beta-assistant/.claude-plugin/plugin.json +19 -0
- package/bin/zhanlu-plugins/lingji-beta-assistant/README.md +21 -0
- package/bin/zhanlu-plugins/lingji-beta-assistant/skills/.gitkeep +1 -0
- package/bin/zhanlu-plugins/lingji-beta-assistant/skills/beta-requirement-analysis/SKILL.md +383 -0
- package/bin/zhanlu-plugins/lingji-beta-assistant/skills/beta-requirement-decomposer/SKILL.md +348 -0
- package/bin/zhanlu-plugins/lingji-beta-assistant/skills/beta-requirement-decomposer/references/epic-to-story-methodology.md +122 -0
- package/bin/zhanlu-plugins/lingji-beta-assistant/skills/beta-requirement-decomposer/references/epic-to-story-template.md +93 -0
- package/bin/zhanlu-plugins/lingji-beta-assistant/skills/beta-requirement-decomposer/references/epic-to-story-to-task-template.md +221 -0
- package/bin/zhanlu-plugins/lingji-beta-assistant/skills/beta-requirement-decomposer/references/story-to-task-methodology.md +139 -0
- package/bin/zhanlu-plugins/lingji-beta-assistant/skills/beta-requirement-decomposer/references/story-to-task-template.md +89 -0
- package/bin/zhanlu-plugins/lingji-beta-assistant/skills/beta-requirement-review/SKILL.md +350 -0
- package/bin/zhanlu-plugins/lingji-beta-assistant/skills/beta-requirements-gather/SKILL.md +244 -0
- package/bin/zl +4 -0
- package/package.json +22 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# 灵畿β助手(内置 Plugin)
|
|
2
|
+
|
|
3
|
+
随 Zhanlu CLI 分发的内置插件,提供灵畿β远程 MCP。
|
|
4
|
+
## 品牌用字(强制)
|
|
5
|
+
|
|
6
|
+
完整规范见 [`packages/opencode/src/zhanlu/brand-naming.md`](../../../brand-naming.md)。Skill 与对用户回复只写正确形式,勿罗列近音错写。
|
|
7
|
+
|
|
8
|
+
正确用字:
|
|
9
|
+
- zhanlu → 湛卢、湛卢 IDE
|
|
10
|
+
- lingji → 灵畿、灵畿平台、灵畿β助手
|
|
11
|
+
- kylin → 麒麟、银河麒麟
|
|
12
|
+
- uos → 统信、统信 UOS
|
|
13
|
+
- 账号登录语义使用「登录」
|
|
14
|
+
## 包含内容
|
|
15
|
+
|
|
16
|
+
| 类型 | 内容 |
|
|
17
|
+
|---|---|
|
|
18
|
+
| **Skills** | 暂无 |
|
|
19
|
+
| **MCP** | `lingji-beta` → `http://rdcloud.4c.hq.cmcc/cmdevops-aiplus-agent-gateway/zhanlu-cloud/mcp/sse` |
|
|
20
|
+
|
|
21
|
+
用户目录中的同名插件会覆盖内置版本。
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: beta_requirement_analysis
|
|
3
|
+
description: |
|
|
4
|
+
beta 环境需求分析技能,用于对 beta 环境(演示/测试环境)中负责人为当前用户的"新建/分析"状态初始需求(RR)进行深度分析优化,生成结构化 Markdown 文档并支持回传 lingji-beta 平台。当用户提到"beta环境分析需求""分析beta需求""帮我分析演示项目需求""分析测试环境需求"等表述时触发。即使用户没有明确说"beta",但明确指定演示项目、beta 环境功能验证测试等测试类项目时,也应使用此 skill。与 `requirement-analysis` 的差异:固定使用 lingji-beta MCP、输出到 prd/analysis/ 目录、文件名带 Beta_ 前缀、将 description 中【需求背景】/【需求价值】/【需求详情】视为三个独立字段分别 AI 扩写、文档头部增加 beta 环境元信息、字段基于实际 beta 数据结构调整、回传时直接用分析补充后的三段内容覆盖原 description。
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# beta 环境需求分析
|
|
8
|
+
|
|
9
|
+
> 对 beta 环境中"新建/分析"状态的初始需求(RR)进行深度分析优化:基于 description 中的【需求背景】/【需求价值】/【需求详情】三段分别进行 AI 扩写,生成结构化分析文档,并支持将扩写结果直接回传 lingji-beta 平台。
|
|
10
|
+
|
|
11
|
+
## 流程
|
|
12
|
+
|
|
13
|
+
**重要:本流程的 10 个步骤是连续执行的,从第 1 步到第 10 步必须依次完成,不要在任意步骤之间停下等待用户输入(第 4 步、第 5 步、第 9 步使用 question 工具与用户交互除外)。特别地,第 1 步身份解析完成后,必须立即继续执行第 2 步及后续步骤,不要停在身份解析结果处。**
|
|
14
|
+
|
|
15
|
+
### 第 1 步:身份解析
|
|
16
|
+
|
|
17
|
+
从本地认证文件读取当前用户身份信息。
|
|
18
|
+
|
|
19
|
+
- **Windows 路径**:`C:\Users\Admin\.local\share\zhanlu\auth_zhanlu.json`
|
|
20
|
+
- **macOS / Linux 路径**:`~/.local/share/zhanlu/auth_zhanlu.json`
|
|
21
|
+
|
|
22
|
+
从 `metadata` 中提取 `email` 与 `userName`,将邮箱后缀统一转换为 `@cmss.cmcc`:
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
zhangsan@cmss.chinamobile.com → zhangsan@cmss.cmcc
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
输出身份检测结果:
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
用户身份:
|
|
32
|
+
- 中文名:任博婕妤
|
|
33
|
+
- 邮箱(需求系统):renbojieyu@cmss.cmcc
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### 第 2 步:提取查询条件
|
|
37
|
+
|
|
38
|
+
从用户请求中提取分析范围条件:
|
|
39
|
+
|
|
40
|
+
| 用户说法 | 含义 |
|
|
41
|
+
| ------------------------------- | ------------------------------------------------------------- |
|
|
42
|
+
| "帮我分析 beta 需求" | 分析我作为负责人的所有 beta 环境"新建/分析"状态初始需求 |
|
|
43
|
+
| "分析演示项目需求" | 分析"演示项目"空间内我作为负责人的"新建/分析"状态初始需求 |
|
|
44
|
+
| "分析 RR20260119400340" | 分析指定需求 Key(按 number 精确匹配) |
|
|
45
|
+
| "分析一致性相关的需求" | 按标题关键词模糊匹配我作为负责人的"新建/分析"状态需求 |
|
|
46
|
+
|
|
47
|
+
**模糊匹配规则:**
|
|
48
|
+
- 项目名:支持 `getProjectList` 返回值中的部分匹配
|
|
49
|
+
- 需求 Key:精确匹配 `number` 字段
|
|
50
|
+
- 标题关键词:在 `listWorkItems` 返回结果中按 `title` 字段做客户端 `contains` 匹配
|
|
51
|
+
|
|
52
|
+
**默认查询状态:** 新建(Start / Committed)、分析(Analyse)。
|
|
53
|
+
|
|
54
|
+
### 第 3 步:调用 lingji-beta MCP 拉取需求
|
|
55
|
+
|
|
56
|
+
固定使用 lingji-beta MCP 工具链:
|
|
57
|
+
|
|
58
|
+
- `lingji-beta__getProjectList` — 解析项目名 → projectId
|
|
59
|
+
- `lingji-beta__listWorkItems` — 按 projectId + issueType=RR 拉取初始需求列表
|
|
60
|
+
- `lingji-beta__getWorkItemDetail` — **单条详情,包含 description、子工作项、关联关系**(生成文档前必须调用)
|
|
61
|
+
|
|
62
|
+
**查询参数(listWorkItems):**
|
|
63
|
+
- `projectId`: 项目 ID(必填)
|
|
64
|
+
- `issueType`: `RR`
|
|
65
|
+
|
|
66
|
+
**默认过滤:**
|
|
67
|
+
- `status.code` ∈ {`Start`, `Analyse`}(客户端过滤)
|
|
68
|
+
- `assignee.user_name` 等于当前用户邮箱(客户端过滤)
|
|
69
|
+
|
|
70
|
+
> ⚠️ 列表接口不返回 `description`,分析文档生成前必须对每条候选需求调用 `getWorkItemDetail` 获取完整 `description`(含 `【需求背景】`、`【需求价值】`、`【需求详情】` 三个小节)。
|
|
71
|
+
|
|
72
|
+
### 第 4 步:IDE 交互 — 确认分析范围
|
|
73
|
+
|
|
74
|
+
将查询到的需求按项目分组,展示给用户确认:
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
📋 beta 环境需求分析范围确认
|
|
78
|
+
|
|
79
|
+
项目:演示项目(e13a682906ef49518812e2b95318d87b)
|
|
80
|
+
待分析需求:1 条
|
|
81
|
+
1. RR20260616628399 | 需求代码一致性分析 | 状态:分析 | 优先级:高
|
|
82
|
+
|
|
83
|
+
以上是否为您要分析的需求?如需调整范围,请告知。
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
使用 `question` 工具让用户确认,选项包括:
|
|
87
|
+
- 确认,继续分析
|
|
88
|
+
- 调整范围(用户可说明增减哪些需求)
|
|
89
|
+
|
|
90
|
+
### 第 5 步:确认文档保存路径
|
|
91
|
+
|
|
92
|
+
用户确认分析范围后,询问文档保存路径:
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
请确认 beta 环境需求分析文档保存路径:
|
|
96
|
+
- 默认路径:当前项目 prd/analysis/ 目录下
|
|
97
|
+
- 文件名格式:Beta_{需求Key}_{需求标题}.md
|
|
98
|
+
例:Beta_RR20260616628399_需求代码一致性分析.md
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
使用 `question` 工具让用户选择:
|
|
102
|
+
- 使用默认路径(prd/analysis/)
|
|
103
|
+
- 自定义路径(用户输入)
|
|
104
|
+
|
|
105
|
+
### 第 6 步:逐条分析需求
|
|
106
|
+
|
|
107
|
+
对每条需求进行深度分析优化。**核心原则:description 中的 `【需求背景】`、`【需求价值】`、`【需求详情】` 三个小节视为三个独立分析字段,分别进行 AI 扩写/补充,扩写后的内容直接回传平台。**
|
|
108
|
+
|
|
109
|
+
#### 6.1 业务背景(对应【需求背景】)
|
|
110
|
+
|
|
111
|
+
1. 提取 `description` 中 `【需求背景】` 小节内容作为"原始字段"
|
|
112
|
+
2. 基于"需求标题 + 【需求价值】 + 【需求详情】"进行 AI 扩写,输出"分析补充"内容
|
|
113
|
+
3. 扩写方向:
|
|
114
|
+
- **需求来源**:需求由谁提出、解决什么业务场景下的什么问题
|
|
115
|
+
- **当前痛点**:当前流程/系统中存在的具体痛点(至少 2-3 个)
|
|
116
|
+
- **预期价值**:需求落地后能带来的具体收益(量化或可衡量的指标)
|
|
117
|
+
4. 若原始【需求背景】已有完整内容,分析补充部分应在原文基础上延伸,不重复原文表述
|
|
118
|
+
|
|
119
|
+
#### 6.2 需求描述(对应【需求详情】)
|
|
120
|
+
|
|
121
|
+
1. 提取 `description` 中 `【需求详情】` 小节内容作为"原始字段"
|
|
122
|
+
2. 基于"需求标题 + 【需求背景】 + 【需求价值】"进行 AI 扩写,输出"分析补充"内容
|
|
123
|
+
3. 扩写方向:
|
|
124
|
+
- **核心功能范围**:明确包含哪些功能点,边界是什么
|
|
125
|
+
- **关键交互流程**:用户/系统的主要操作流程
|
|
126
|
+
- **输入输出**:明确数据来源、格式、输出形式
|
|
127
|
+
- **关键约束**:性能/并发/兼容性/安全等非功能性约束
|
|
128
|
+
4. 扩写时按"1. 2. 3."编号组织,每条功能点一行,便于后续回传
|
|
129
|
+
|
|
130
|
+
#### 6.3 验收标准(新生成字段)
|
|
131
|
+
|
|
132
|
+
由于 beta 环境 `description` 中**没有独立的验收标准字段**,需基于【需求详情】内容推导完整的验收条目:
|
|
133
|
+
|
|
134
|
+
- 每条验收标准格式:**操作场景 + 预期结果**(参考引用文档的 9 条标准格式)
|
|
135
|
+
- 覆盖维度:
|
|
136
|
+
1. 核心功能验证(每个核心功能点对应 1-2 条)
|
|
137
|
+
2. 异常/边界场景验证
|
|
138
|
+
3. 数据准确性验证(量化指标,如准确率 ≥ X%)
|
|
139
|
+
4. 性能验证(如响应时间 ≤ X 秒)
|
|
140
|
+
5. 安全/权限验证
|
|
141
|
+
6. 集成/依赖验证
|
|
142
|
+
- 若【需求详情】信息不足无法推导具体指标,标注"待确认"
|
|
143
|
+
|
|
144
|
+
#### 6.4 可行性分析评估
|
|
145
|
+
|
|
146
|
+
| 维度 | 评估内容 |
|
|
147
|
+
| ------------ | ------------------------------------------------------------ |
|
|
148
|
+
| 技术可行性 | 评估技术实现路径,识别技术风险和难点 |
|
|
149
|
+
| 时间可行性 | 评估计划时间是否充足(参考 `plan_end_date` / `plan_iteration`)|
|
|
150
|
+
| 依赖识别 | 识别外部系统/接口/数据依赖(参考 `rr2ir` / `rr2us` / `link`) |
|
|
151
|
+
| 结论 | 可行 / 需求不可行(需说明原因) |
|
|
152
|
+
|
|
153
|
+
### 第 7 步:生成需求分析文档
|
|
154
|
+
|
|
155
|
+
按照以下模板为每条需求生成独立的 Markdown 文档,并**必须使用 `write` 工具将文档写入第 5 步确认的文件路径**。不要仅在对话中展示文档内容,必须将完整内容写入文件。如果目录不存在,需先创建目录。
|
|
156
|
+
|
|
157
|
+
**文件名格式:** `Beta_{需求Key}_{需求标题}.md`(文件名中的特殊字符 `/\\:*?"<>|` 用下划线替代)
|
|
158
|
+
|
|
159
|
+
#### 单个需求文档模板
|
|
160
|
+
|
|
161
|
+
```markdown
|
|
162
|
+
# {需求标题}
|
|
163
|
+
|
|
164
|
+
## beta 环境元信息
|
|
165
|
+
|
|
166
|
+
| 字段 | 值 |
|
|
167
|
+
|---|---|
|
|
168
|
+
| 环境标识 | beta |
|
|
169
|
+
| 拉取时间 | 2026-06-16 17:30 |
|
|
170
|
+
| 拉取人 | 任博婕妤 (renbojieyu@cmss.cmcc) |
|
|
171
|
+
| MCP 来源 | lingji-beta |
|
|
172
|
+
|
|
173
|
+
## 项目信息
|
|
174
|
+
|
|
175
|
+
- **空间名称**: [domain_id.name]
|
|
176
|
+
- **项目编码**: [projectId]
|
|
177
|
+
- **项目名称**: [project.title]
|
|
178
|
+
- **产品名称**: [project.title]
|
|
179
|
+
|
|
180
|
+
## 需求字段
|
|
181
|
+
|
|
182
|
+
| 字段 | 值 |
|
|
183
|
+
|------|-----|
|
|
184
|
+
| 需求Key | [number] |
|
|
185
|
+
| 标题 | [title] |
|
|
186
|
+
| 类型 | [category + type,如"RR-初始需求"] |
|
|
187
|
+
| 状态 | [status.display_value] |
|
|
188
|
+
| 状态停留天数 | [stay_days] |
|
|
189
|
+
| 优先级 | [priority.display_value] |
|
|
190
|
+
| 负责人 | [assignee.nick_name + 邮箱] |
|
|
191
|
+
| 提出人 | [submitted_by[0].nick_name + 邮箱] |
|
|
192
|
+
| 承接人 | [recipient[0].nick_name + 邮箱] |
|
|
193
|
+
| 创建人 | [created_by.nick_name + 邮箱] |
|
|
194
|
+
| 业务域 | [business_domain.display_value] |
|
|
195
|
+
| 故事点 | [story_point.display_value] |
|
|
196
|
+
| 计划工时(人天) | [workload_man_day] |
|
|
197
|
+
| 计划开始时间 | [plan_start_date] |
|
|
198
|
+
| 计划结束时间 | [plan_end_date] |
|
|
199
|
+
| 期望完成时间 | [expect_delivery_time] |
|
|
200
|
+
| 关联迭代 | [plan_iteration.title] |
|
|
201
|
+
| 父需求 | [parent_id 对应的 number] |
|
|
202
|
+
| 关联需求 | [rr2ir / rr2us / link] |
|
|
203
|
+
| 子需求 | [child_issues 中各 number + title] |
|
|
204
|
+
| 创建时间 | [created_date] |
|
|
205
|
+
| 最近修改时间 | [modified_date] |
|
|
206
|
+
| 需求描述 | [description 去除 HTML 标签后保留换行] |
|
|
207
|
+
| 需求 URL | [如无则填"未提供"] |
|
|
208
|
+
|
|
209
|
+
## 需求内容
|
|
210
|
+
|
|
211
|
+
### 业务背景
|
|
212
|
+
|
|
213
|
+
(原始字段:[从 description 中提取的【需求背景】原始内容])
|
|
214
|
+
|
|
215
|
+
(分析补充)
|
|
216
|
+
|
|
217
|
+
[AI 扩写后的业务背景。包含"需求来源 / 当前痛点 / 预期价值"三段。]
|
|
218
|
+
|
|
219
|
+
### 需求描述
|
|
220
|
+
|
|
221
|
+
(原始字段:[从 description 中提取的【需求详情】原始内容])
|
|
222
|
+
|
|
223
|
+
(分析补充)
|
|
224
|
+
|
|
225
|
+
[AI 扩写后的需求描述。包含"核心功能 / 关键流程 / 输入输出 / 关键约束"四段,按"1. 2. 3."编号。]
|
|
226
|
+
|
|
227
|
+
### 验收标准
|
|
228
|
+
|
|
229
|
+
(原始字段:beta 环境无独立验收标准字段,以下为基于【需求详情】推导的新增内容)
|
|
230
|
+
|
|
231
|
+
(分析补充)
|
|
232
|
+
|
|
233
|
+
[1. 核心功能 1 验证:操作场景 + 预期结果]
|
|
234
|
+
|
|
235
|
+
[2. 核心功能 2 验证:操作场景 + 预期结果]
|
|
236
|
+
|
|
237
|
+
[3. 异常场景验证:操作场景 + 预期结果]
|
|
238
|
+
|
|
239
|
+
[4. 数据准确性验证:操作场景 + 量化指标(如准确率≥X%)]
|
|
240
|
+
|
|
241
|
+
[N. 性能/安全/集成验证:操作场景 + 预期结果]
|
|
242
|
+
|
|
243
|
+
## 可行性分析
|
|
244
|
+
|
|
245
|
+
| 字段 | 值 |
|
|
246
|
+
|------|-----|
|
|
247
|
+
| 可行性结论 | 可行 / 需求不可行 |
|
|
248
|
+
| 不可行原因 | [如果结论为"需求不可行",说明原因;否则填"无"] |
|
|
249
|
+
| 技术可行性分析 | [技术实现路径评估] |
|
|
250
|
+
| 时间可行性分析 | [计划时间评估,参考 plan_end_date / plan_iteration] |
|
|
251
|
+
| 外部依赖 | [识别的外部依赖,参考 rr2ir / rr2us / link;无则填"无"] |
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
#### 多个需求文档
|
|
255
|
+
|
|
256
|
+
如果一次分析多条需求,**每个需求生成独立文件**(`Beta_{Key1}_{标题1}.md`、`Beta_{Key2}_{标题2}.md`…),不要将多个需求合并在同一文件中。
|
|
257
|
+
|
|
258
|
+
### 第 8 步:展示执行结果
|
|
259
|
+
|
|
260
|
+
文档生成后,向用户展示:
|
|
261
|
+
|
|
262
|
+
```
|
|
263
|
+
✅ beta 环境需求分析完成
|
|
264
|
+
|
|
265
|
+
📁 文档生成路径:prd/analysis/
|
|
266
|
+
📄 生成文件:
|
|
267
|
+
- Beta_RR20260616628399_需求代码一致性分析.md
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
### 第 9 步:询问是否回传 lingji-beta 平台
|
|
271
|
+
|
|
272
|
+
使用 `question` 工具询问用户是否将分析结果回传 lingji-beta 平台:
|
|
273
|
+
|
|
274
|
+
```
|
|
275
|
+
是否将分析补充结果回传 lingji-beta 平台?
|
|
276
|
+
回传操作将使用 batchUpdateWorkItems 更新每条需求的 description 字段,
|
|
277
|
+
将【需求背景】、【需求价值】、【需求详情】三个小节替换为分析补充后的内容;
|
|
278
|
+
若分析建议调整优先级,同步更新 priority 字段。
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
选项:
|
|
282
|
+
- 确认回传
|
|
283
|
+
- 暂不回传(仅保留本地文档)
|
|
284
|
+
|
|
285
|
+
如果用户选择"暂不回传",流程结束。
|
|
286
|
+
|
|
287
|
+
### 第 10 步:执行需求回传
|
|
288
|
+
|
|
289
|
+
如果用户确认回传,对每条需求调用 `lingji-beta__batchUpdateWorkItems` 更新需求字段。
|
|
290
|
+
|
|
291
|
+
**回传字段策略:**
|
|
292
|
+
|
|
293
|
+
| 字段 | 是否回传 | 回传内容 |
|
|
294
|
+
| ------------- | -------- | -------------------------------------------------------------- |
|
|
295
|
+
| `description` | 是 | 替换为"分析补充后"的【需求背景】+【需求价值】+【需求详情】三段 HTML |
|
|
296
|
+
| `priority` | 按需 | 仅当分析建议调整优先级时回传新值(如"高"→"中") |
|
|
297
|
+
| `title` | 否 | 不修改 |
|
|
298
|
+
| `status` | 否 | 不通过此 skill 修改状态 |
|
|
299
|
+
|
|
300
|
+
**回传 description 拼装规则:**
|
|
301
|
+
|
|
302
|
+
回传内容 = AI 补充后的 `【需求背景】` + AI 补充后的 `【需求价值】` + AI 补充后的 `【需求详情】`,按以下 HTML 格式拼装:
|
|
303
|
+
|
|
304
|
+
```html
|
|
305
|
+
<p><strong>【需求背景】</strong></p>
|
|
306
|
+
<p>{AI 补充后的业务背景内容,多段落用多个 <p> 包裹}</p>
|
|
307
|
+
|
|
308
|
+
<p><strong>【需求价值】</strong></p>
|
|
309
|
+
<p>{AI 补充后的价值内容}</p>
|
|
310
|
+
|
|
311
|
+
<p><strong>【需求详情】</strong></p>
|
|
312
|
+
<p>1. {功能点 1}</p>
|
|
313
|
+
<p>2. {功能点 2}</p>
|
|
314
|
+
<p>3. {功能点 3}</p>
|
|
315
|
+
...
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
**调用参数(batchUpdateWorkItems):**
|
|
319
|
+
- `projectId`: 项目 ID
|
|
320
|
+
- `id`: [需求 ID 数组]
|
|
321
|
+
- `attribute.description`: 上述拼装后的 HTML 字符串
|
|
322
|
+
- `attribute.priority`: 可选,仅当建议调整时传入
|
|
323
|
+
|
|
324
|
+
**注意:**
|
|
325
|
+
- **直接覆盖**原 `description` 的三个小节内容为分析补充后的版本
|
|
326
|
+
- 不在末尾追加【分析备注】段(避免污染原始结构)
|
|
327
|
+
- 仅回传非空字段,若分析建议无变更则跳过该条回传
|
|
328
|
+
- 回传前展示本次回传的字段变化对照(原始 vs 补充)供用户复核
|
|
329
|
+
|
|
330
|
+
#### 10.1 展示回传结果
|
|
331
|
+
|
|
332
|
+
所有需求回传完成后,展示结果:
|
|
333
|
+
|
|
334
|
+
```
|
|
335
|
+
✅ 需求回传完成
|
|
336
|
+
|
|
337
|
+
| 需求 | description 字段更新 | priority 字段更新 |
|
|
338
|
+
|------|---------------------|------------------|
|
|
339
|
+
| RR20260616628399 需求代码一致性分析 | ✅ 已替换三小节 | 未调整 |
|
|
340
|
+
|
|
341
|
+
如果某条需求回传失败,标注失败原因并建议用户手动处理。
|
|
342
|
+
|
|
343
|
+
## 字段映射参考(基于 lingji-beta 实际数据)
|
|
344
|
+
|
|
345
|
+
| 输出文档字段 | MCP 数据字段 | 说明 |
|
|
346
|
+
| -------------------- | ------------------------------------- | ---- |
|
|
347
|
+
| 需求Key | `number` | |
|
|
348
|
+
| 标题 | `title` | |
|
|
349
|
+
| 类型 | `category` + `type` | 例:`RR` + `raw requirement` → "RR-初始需求" |
|
|
350
|
+
| 状态 | `status.display_value` | 初始/分析/规划/实现/交付/验收/完成 |
|
|
351
|
+
| 状态停留天数 | `stay_days` | |
|
|
352
|
+
| 优先级 | `priority.display_value` | 高/中/低 |
|
|
353
|
+
| 负责人 | `assignee.nick_name` + `user_name` | 姓名 + 邮箱 |
|
|
354
|
+
| 提出人 | `submitted_by[0].nick_name` + `user_name` | |
|
|
355
|
+
| 承接人 | `recipient[0].nick_name` + `user_name` | 仅 RR |
|
|
356
|
+
| 业务域 | `business_domain.display_value` | 例:软件 |
|
|
357
|
+
| 计划工时(人天) | `workload_man_day` | |
|
|
358
|
+
| 计划开始时间 | `plan_start_date` | 时间戳转 YYYY-MM-DD |
|
|
359
|
+
| 计划结束时间 | `plan_end_date` | 时间戳转 YYYY-MM-DD |
|
|
360
|
+
| 关联迭代 | `plan_iteration.title` | |
|
|
361
|
+
| 父需求 | `parent_id` → 反查 `number` | |
|
|
362
|
+
| 关联需求 | `rr2ir` / `rr2us` / `link` | |
|
|
363
|
+
| 子需求 | `child_issues[*].number` + `.title` | |
|
|
364
|
+
| 创建时间 | `created_date` | 时间戳转 YYYY-MM-DD HH:mm |
|
|
365
|
+
| 最近修改时间 | `modified_date` | 时间戳转 YYYY-MM-DD HH:mm |
|
|
366
|
+
| 需求描述 | `description`(**仅 getWorkItemDetail 返回**)| 去除 HTML 标签后保留换行 |
|
|
367
|
+
|
|
368
|
+
## 注意事项
|
|
369
|
+
|
|
370
|
+
- 所有字段值为空时标注"未提供"或"未指定",不做臆测
|
|
371
|
+
- **description 字段处理**:生成文档前必须对每条需求调用 `getWorkItemDetail` 获取 `description`;HTML 标签(如 `<p>`、`<span>`、`<br>`)需替换为换行符
|
|
372
|
+
- **三小节分析原则**:将 `【需求背景】`、`【需求价值】`、`【需求详情】` 视为三个独立字段分别进行 AI 扩写/补充
|
|
373
|
+
- 业务背景:扩写"需求来源/当前痛点/预期价值"三段
|
|
374
|
+
- 需求描述:扩写"核心功能/关键流程/输入输出/关键约束"四段(按"1. 2. 3."编号)
|
|
375
|
+
- 验收标准:从【需求详情】推导新条目(9 条标准格式,含量化指标)
|
|
376
|
+
- 扩写需基于原始内容延伸,不引入原始需求未涉及的功能范围
|
|
377
|
+
- 验收标准的推导需与【需求详情】保持一致,不超出需求描述的功能边界
|
|
378
|
+
- 人员名字后跟随的邮箱不要省略
|
|
379
|
+
- 文件名中的特殊字符(`/\\:*?"<>|`)用下划线替代
|
|
380
|
+
- 如果需求量大(>10条),建议分批分析,每批不超过10条
|
|
381
|
+
- **回传策略**:直接覆盖原 `description` 的三个小节为分析补充后的内容(HTML 格式),**不追加**【分析备注】段
|
|
382
|
+
- **类型码映射**:`RR` → 初始需求,`US` → 用户故事,`Task` → 任务
|
|
383
|
+
- **状态码映射**:`Start` → 初始,`Analyse` → 分析,`Plan` → 规划,`Doing` → 实现,`Delivered` → 交付,`Checking` → 验收,`Finish` → 完成
|