@zhanlucode/zl-darwin-arm64 1.6.4-moma.0

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.
Files changed (91) hide show
  1. package/LICENSE +22 -0
  2. package/bin/rg +0 -0
  3. package/bin/tree-sitter/tree-sitter-bash.wasm +0 -0
  4. package/bin/tree-sitter/tree-sitter-c.wasm +0 -0
  5. package/bin/tree-sitter/tree-sitter-c_sharp.wasm +0 -0
  6. package/bin/tree-sitter/tree-sitter-cpp.wasm +0 -0
  7. package/bin/tree-sitter/tree-sitter-css.wasm +0 -0
  8. package/bin/tree-sitter/tree-sitter-dart.wasm +0 -0
  9. package/bin/tree-sitter/tree-sitter-elisp.wasm +0 -0
  10. package/bin/tree-sitter/tree-sitter-elixir.wasm +0 -0
  11. package/bin/tree-sitter/tree-sitter-elm.wasm +0 -0
  12. package/bin/tree-sitter/tree-sitter-embedded_template.wasm +0 -0
  13. package/bin/tree-sitter/tree-sitter-go.wasm +0 -0
  14. package/bin/tree-sitter/tree-sitter-html.wasm +0 -0
  15. package/bin/tree-sitter/tree-sitter-java.wasm +0 -0
  16. package/bin/tree-sitter/tree-sitter-javascript.wasm +0 -0
  17. package/bin/tree-sitter/tree-sitter-json.wasm +0 -0
  18. package/bin/tree-sitter/tree-sitter-kotlin.wasm +0 -0
  19. package/bin/tree-sitter/tree-sitter-lua.wasm +0 -0
  20. package/bin/tree-sitter/tree-sitter-objc.wasm +0 -0
  21. package/bin/tree-sitter/tree-sitter-ocaml.wasm +0 -0
  22. package/bin/tree-sitter/tree-sitter-php.wasm +0 -0
  23. package/bin/tree-sitter/tree-sitter-python.wasm +0 -0
  24. package/bin/tree-sitter/tree-sitter-ql.wasm +0 -0
  25. package/bin/tree-sitter/tree-sitter-rescript.wasm +0 -0
  26. package/bin/tree-sitter/tree-sitter-ruby.wasm +0 -0
  27. package/bin/tree-sitter/tree-sitter-rust.wasm +0 -0
  28. package/bin/tree-sitter/tree-sitter-scala.wasm +0 -0
  29. package/bin/tree-sitter/tree-sitter-solidity.wasm +0 -0
  30. package/bin/tree-sitter/tree-sitter-swift.wasm +0 -0
  31. package/bin/tree-sitter/tree-sitter-systemrdl.wasm +0 -0
  32. package/bin/tree-sitter/tree-sitter-tlaplus.wasm +0 -0
  33. package/bin/tree-sitter/tree-sitter-toml.wasm +0 -0
  34. package/bin/tree-sitter/tree-sitter-tsx.wasm +0 -0
  35. package/bin/tree-sitter/tree-sitter-typescript.wasm +0 -0
  36. package/bin/tree-sitter/tree-sitter-vue.wasm +0 -0
  37. package/bin/tree-sitter/tree-sitter-yaml.wasm +0 -0
  38. package/bin/tree-sitter/tree-sitter-zig.wasm +0 -0
  39. package/bin/tree-sitter/tree-sitter.wasm +0 -0
  40. package/bin/zhanlu-plugins/bundle-index.json +60 -0
  41. package/bin/zhanlu-plugins/lingji-alpha-assistant/.claude-plugin/plugin.json +42 -0
  42. package/bin/zhanlu-plugins/lingji-alpha-assistant/README.md +29 -0
  43. package/bin/zhanlu-plugins/lingji-alpha-assistant/mcps/sast_fixer_mcp/README.md +10 -0
  44. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-check/SKILL.md +179 -0
  45. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-check/config/gitlab_config.json +5 -0
  46. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-check/prompts/step1_preparation.md +167 -0
  47. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-check/prompts/step2_consistency_check.md +446 -0
  48. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-check/scripts/gitlab_clone.py +213 -0
  49. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-check/scripts/read_excel_requirements.py +144 -0
  50. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-review/GITLAB_USAGE.md +160 -0
  51. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-review/QUICK_REFERENCE.md +149 -0
  52. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-review/README.md +134 -0
  53. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-review/SKILL.md +151 -0
  54. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-review/assets/review_standards.md +144 -0
  55. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-review/prompts/file_review_prompt.md +160 -0
  56. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-review/prompts/output_requirements.md +35 -0
  57. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-review/prompts/step1_project_preprocessing.md +106 -0
  58. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-review/prompts/step2_file_review.md +83 -0
  59. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-review/prompts/step3_report_generation.md +319 -0
  60. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/code-review/scripts/gitlab_clone.py +213 -0
  61. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/manual-test-case-generator/SKILL.md +366 -0
  62. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/manual-test-case-generator/references/generation-rules.md +214 -0
  63. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/manual-test-case-generator/references/query-rules.md +60 -0
  64. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/manual-test-case-generator/references/review-rules.md +117 -0
  65. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/manual-test-case-generator/references/save-rules.md +367 -0
  66. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/quality_scan/SKILL.md +195 -0
  67. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/requirement-analysis/SKILL.md +346 -0
  68. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/requirement-review/SKILL.md +267 -0
  69. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/requirements-gather/SKILL.md +187 -0
  70. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/sast_scan/SKILL.md +312 -0
  71. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/story-decomposer/SKILL.md +77 -0
  72. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/story-decomposer/evals/evals.json +34 -0
  73. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/story-decomposer/references/epic-to-story-methodology.md +122 -0
  74. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/story-decomposer/references/epic-to-story-template.md +93 -0
  75. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/story-decomposer/references/epic-to-story-to-task-template.md +221 -0
  76. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/story-decomposer/references/story-to-task-methodology.md +139 -0
  77. package/bin/zhanlu-plugins/lingji-alpha-assistant/skills/story-decomposer/references/story-to-task-template.md +89 -0
  78. package/bin/zhanlu-plugins/lingji-beta-assistant/.claude-plugin/plugin.json +19 -0
  79. package/bin/zhanlu-plugins/lingji-beta-assistant/README.md +21 -0
  80. package/bin/zhanlu-plugins/lingji-beta-assistant/skills/.gitkeep +1 -0
  81. package/bin/zhanlu-plugins/lingji-beta-assistant/skills/beta-requirement-analysis/SKILL.md +383 -0
  82. package/bin/zhanlu-plugins/lingji-beta-assistant/skills/beta-requirement-decomposer/SKILL.md +348 -0
  83. package/bin/zhanlu-plugins/lingji-beta-assistant/skills/beta-requirement-decomposer/references/epic-to-story-methodology.md +122 -0
  84. package/bin/zhanlu-plugins/lingji-beta-assistant/skills/beta-requirement-decomposer/references/epic-to-story-template.md +93 -0
  85. package/bin/zhanlu-plugins/lingji-beta-assistant/skills/beta-requirement-decomposer/references/epic-to-story-to-task-template.md +221 -0
  86. package/bin/zhanlu-plugins/lingji-beta-assistant/skills/beta-requirement-decomposer/references/story-to-task-methodology.md +139 -0
  87. package/bin/zhanlu-plugins/lingji-beta-assistant/skills/beta-requirement-decomposer/references/story-to-task-template.md +89 -0
  88. package/bin/zhanlu-plugins/lingji-beta-assistant/skills/beta-requirement-review/SKILL.md +350 -0
  89. package/bin/zhanlu-plugins/lingji-beta-assistant/skills/beta-requirements-gather/SKILL.md +244 -0
  90. package/bin/zl +4 -0
  91. package/package.json +18 -0
@@ -0,0 +1,346 @@
1
+ ---
2
+ name: requirement_analysis
3
+ description: |
4
+ 需求分析技能,用于对研发空间中的新建/分析状态需求进行深度分析优化,生成需求分析文档并回传灵畿平台。当用户提到"帮我分析需求""帮我分析xx空间需求""帮我分析xx版本需求""帮我分析xx、xx需求""需求分析""分析需求"等表述时触发此技能。即使用户没有明确说"分析",但表达了需要对需求进行深化、完善、补充、评估的场景,也应使用此技能。该技能会查询用户作为负责人的新建/分析状态需求,对每条需求进行优化扩写(补充业务背景、完善需求描述、细化验收标准、评估可行性),生成结构化的需求分析 Markdown 文档,并支持将分析结果回传灵畿平台更新需求字段。
5
+ ---
6
+
7
+ # 需求分析
8
+
9
+ 对研发空间中的新建/分析状态初始需求进行深度分析优化,生成结构化需求分析文档,并支持回传灵畿平台。
10
+
11
+
12
+ ## 品牌用字(强制)
13
+
14
+ 完整正确/禁止对照见 `packages/opencode/src/kilocode/brand-naming.md`(运行时每轮也会注入,请勿在本 Skill 正文复述禁止用字以免污染模型上下文)。
15
+
16
+ - 平台名写「灵畿平台」;助手名写「灵畿α助手」
17
+ - 产品名写「湛卢」「湛卢 IDE」
18
+ - 账号登录语义写「登录」
19
+
20
+ 登录失效、回传平台、引导用户重新认证时,一律使用上述正确写法,不得近音替换。
21
+
22
+
23
+ ## 流程
24
+
25
+ **重要:本流程的 10 个步骤是连续执行的,从第 1 步到第 10 步必须依次完成,不要在任意步骤之间停下等待用户输入(第 4 步、第 5 步、第 9 步使用 question 工具与用户交互除外)。特别地,第 1 步身份解析完成后,必须立即继续执行第 2 步及后续步骤,不要停在身份解析结果处。**
26
+
27
+ ### 第 1 步:身份解析
28
+
29
+ 从本地认证文件读取当前用户身份信息。
30
+
31
+ **路径:** C:\Users\Admin\.local\share\zhanlu\auth_zhanlu.json
32
+
33
+ 从 metadata 中提取:
34
+
35
+ | 字段 | 说明 |
36
+ | ------------ | ------------ |
37
+ | `email` | 用户邮箱地址 |
38
+ | `userName` | 用户中文姓名 |
39
+
40
+ 将邮箱后缀统一转换为 `@cmss.cmcc`:
41
+ ```
42
+ zhangsan@cmss.chinamobile.com → zhangsan@cmss.cmcc
43
+ ```
44
+
45
+ 输出身份检测结果:
46
+ ```
47
+ 用户身份:
48
+ - 中文名:张三
49
+ - 邮箱(需求系统):zhangsan@cmss.cmcc
50
+ ```
51
+
52
+ ### 第 2 步:提取查询条件
53
+
54
+ 从用户请求中提取分析范围条件:
55
+
56
+ | 用户说法 | 含义 |
57
+ | -------------------------- | -------------------------------------- |
58
+ | "帮我分析需求" | 分析我作为负责人的所有新建/分析状态需求 |
59
+ | "帮我分析xx空间需求" | 分析指定空间内我作为负责人的新建/分析状态需求 |
60
+ | "帮我分析xx版本需求" | 分析指定版本下我作为负责人的新建/分析状态需求 |
61
+ | "帮我分析xx、xx需求" | 分析指定需求Key或标题的需求 |
62
+
63
+ **模糊匹配规则:**
64
+ - 空间名称:支持部分匹配,如"研发大模型"可匹配"研发大模型关键技术研发"
65
+ - 版本名称:支持部分匹配,如"V2.7"可匹配"V2.7.2版本-V2.7.2"
66
+ - 需求Key/标题:支持部分匹配,如"873"可匹配"CMSSR2511D2DC03-873","一致性"可匹配"需求代码一致性检查"
67
+
68
+ 如果用户指定了多个条件(如"xx空间+xx版本"),取交集。
69
+
70
+ **默认查询状态:** 新建、分析。查询时 `statusName` 传入 `["新建", "分析"]`。
71
+
72
+ **负责人匹配:** 查询条件中需过滤 assignee(负责人)包含当前用户的需求。在调用 MCP 查询时,使用 `values__assignee` 参数传入当前用户邮箱进行过滤。如果通过 MCP 无法直接按 assignee 过滤,则查询后在返回结果中筛选 assignee 包含当前用户邮箱的记录。
73
+
74
+ ### 第 3 步:调用 MCP 拉取需求
75
+
76
+ 调用 `cmdevops-req_list_req_item` 执行需求查询。
77
+
78
+ **查询参数:**
79
+ - `itemTypeName`: ["初始需求"]
80
+ - `statusName`: ["新建", "分析"]
81
+ - `values__assignee`: [当前用户邮箱]
82
+ - `workspaceName`: 如果指定了空间,传入空间名称(支持模糊,可多传几个可能的空间名让 MCP 返回后二次筛选)
83
+ - `key`: 如果指定了需求Key,传入
84
+ - `name`: 如果指定了需求标题关键词,传入
85
+
86
+ 如果一次查询结果不足,可多次分页查询(调整 `from` 参数)直到拉取全部。
87
+
88
+ ### 第 4 步:IDE 交互 — 确认分析范围
89
+
90
+ 将查询到的需求按空间分组,展示给用户确认:
91
+
92
+ ```
93
+ 📋 需求分析范围确认
94
+
95
+ 空间:研发大模型关键技术研发(CMSSR2511D2DC03)
96
+ 待分析需求:3 条
97
+ 1. CMSSR2511D2DC03-873 | 需求代码一致性检查 | 状态:新建
98
+ 2. CMSSR2511D2DC03-889 | AI辅助创建用户故事 | 状态:分析
99
+ 3. CMSSR2511D2DC03-874 | 需求合规性检查 | 状态:新建
100
+
101
+ 以上是否为您要分析的需求?如需调整范围,请告知。
102
+ ```
103
+
104
+ 使用 `question` 工具让用户确认,选项包括:
105
+ - 确认,继续分析
106
+ - 调整范围(用户可说明增减哪些需求)
107
+
108
+ ### 第 5 步:确认文档保存路径
109
+
110
+ 用户确认分析范围后,询问文档保存路径:
111
+
112
+ ```
113
+ 请确认需求分析文档保存路径:
114
+ - 默认路径:当前项目 doc/ 目录下
115
+ - 文件名格式:需求编号+需求标题.md(如 CMSSR2511D2DC03-873_需求代码一致性检查.md)
116
+ ```
117
+
118
+ 使用 `question` 工具让用户选择:
119
+ - 使用默认路径(doc/)
120
+ - 自定义路径(用户输入)
121
+
122
+ ### 第 6 步:逐条分析需求
123
+
124
+ 对每条需求进行深度分析优化,包括以下工作:
125
+
126
+ #### 6.1 业务背景补充
127
+
128
+ 检查需求的 `businessBackground`(业务背景)字段:
129
+ - 如果为空或内容过于简略,基于需求标题和描述推导补充业务背景
130
+ - 补充内容应包含:需求来源、当前痛点、预期价值
131
+ - 如果已有完整业务背景,保留原文不做修改
132
+
133
+ #### 6.2 需求描述完善
134
+
135
+ 检查需求的 `requirement`(需求描述)字段:
136
+ - 如果描述模糊或过于简略,进行扩写和完善
137
+ - 完善方向:明确功能范围、核心交互流程、输入输出、关键约束条件
138
+ - 使用清晰的技术语言,消除模糊表述(如"等""相关"需具体化)
139
+ - 如果已有完整需求描述,在原基础上补充可能遗漏的细节
140
+
141
+ #### 6.3 验收标准细化
142
+
143
+ 检查需求的 `acceptanceCriteria`(验收标准)字段:
144
+ - 如果为空或过于定性,细化为可量化、可验证的验收条目
145
+ - 每条验收标准应包含:具体的操作场景 + 预期结果
146
+ - 覆盖正常路径和主要异常场景
147
+ - 如果已有详细验收标准,检查是否有遗漏的关键场景并补充
148
+
149
+ #### 6.4 可行性分析评估
150
+
151
+ 对需求进行可行性分析:
152
+ - **技术可行性**:评估技术实现路径,识别技术风险和难点
153
+ - **时间可行性**:评估计划时间是否充足
154
+ - **依赖识别**:识别外部系统/接口/数据依赖
155
+ - 给出可行性结论:可行 / 需求不可行(需说明原因)
156
+
157
+ ### 第 7 步:生成需求分析文档
158
+
159
+ 按照以下模板为每条需求生成独立的 Markdown 文档,并**必须使用 `write` 工具将文档写入第 5 步确认的文件路径**。不要仅在对话中展示文档内容,必须将完整内容写入文件。如果目录不存在,需先创建目录。
160
+
161
+ **文件名格式:** `{需求Key}_{需求标题}.md`(文件名中的特殊字符用下划线替代)
162
+
163
+ **文档模板:**
164
+
165
+ 参考 `requirements-gather` 的完整需求字段模板,在文档顶部展示需求的完整字段信息,下方附加分析内容。
166
+
167
+ #### 单个需求文档模板
168
+
169
+ ```markdown
170
+ # {需求标题}
171
+
172
+ ## 项目信息
173
+
174
+ - **空间名称**: [workspace.name]
175
+ - **项目编码**: [projectNo]
176
+ - **项目名称**: [projectName]
177
+ - **产品名称**: [productName]
178
+
179
+ ## 需求字段
180
+
181
+ | 字段 | 值 |
182
+ |------|-----|
183
+ | 需求Key | [需求Key] |
184
+ | 标题 | [需求标题] |
185
+ | 类型 | [itemType.name,如"初始需求"] |
186
+ | 负责人 | [assignee,格式:姓名(邮箱)] |
187
+ | 提出人 | [proposer,格式:姓名(邮箱)] |
188
+ | 优先级 | [priorityName] |
189
+ | 业务背景 | [原始 businessBackground 字段值,如为空填"未提供"] |
190
+ | 需求描述 | [原始 requirement 字段值,如为空填"未提供"] |
191
+ | 验收标准 | [原始 acceptanceCriteria 字段值,如为空填"未提供"] |
192
+ | 计划开始时间 | [plannedStartTime,如为空填"未提供"] |
193
+ | 计划结束时间 | [plannedEndTime,如为空填"未提供"] |
194
+ | 期望完成时间 | [expectedCompletionTime,如为空填"未提供"] |
195
+ | 关联产品/业务平台类型 | [selectProduct,如为空填"未提供"] |
196
+ | 选择对应产品/业务平台 | [productName,如为空填"未提供"] |
197
+ | 关联项目 | [projectName,如为空填"未提供"] |
198
+ | 关联版本 | [associatedVersion,如为空填"未提供"] |
199
+ | 迭代 | [sprint,如为空填"未提供"] |
200
+ | 父需求 | [parentItemKey,如无则填空] |
201
+ | 需求 URL | [detailUrl,如无则填空] |
202
+
203
+ ## 需求内容
204
+
205
+ ### 业务背景
206
+
207
+ (原始字段:[原始 businessBackground 值,如为空则写"空"])
208
+
209
+ (分析补充)
210
+
211
+ [完善后的业务背景内容。如果原始字段为空,标注"(原始字段为空,以下为分析补充)"后写入补充内容;如果原始字段有内容但需要补充,标注"(原始内容)"和"(补充内容)"区分。]
212
+
213
+ ### 需求描述
214
+
215
+ (原始字段:[原始 requirement 值,如为空则写"空"])
216
+
217
+ (分析补充)
218
+
219
+ [完善后的需求描述内容。格式同业务背景的处理方式。]
220
+
221
+ ### 验收标准
222
+
223
+ (原始字段:[原始 acceptanceCriteria 值,如为空则写"空"])
224
+
225
+ (分析补充)
226
+
227
+ [细化后的验收标准内容。格式同业务背景的处理方式。]
228
+
229
+ ## 可行性分析
230
+
231
+ | 字段 | 值 |
232
+ |------|-----|
233
+ | 可行性结论 | 可行 / 需求不可行 |
234
+ | 不可行原因 | [如果结论为"需求不可行",说明原因;如果"可行",填"无"] |
235
+ | 技术可行性分析 | [技术实现路径评估] |
236
+ | 时间可行性分析 | [计划时间评估] |
237
+ | 外部依赖 | [识别的外部依赖,无则填"无"] |
238
+ ```
239
+
240
+ #### 多个需求文档模板
241
+
242
+ 如果一次分析多条需求,**每个需求生成独立文件**,每个文件都使用上述完整模板。不要将多个需求合并在同一文件中。
243
+
244
+ ### 第 8 步:展示执行结果
245
+
246
+ 文档生成后,向用户展示:
247
+
248
+ ```
249
+ ✅ 需求分析完成
250
+
251
+ 📁 文档生成路径:[路径]
252
+ 📄 生成文件:
253
+ - CMSSR2511D2DC03-873_需求代码一致性检查.md
254
+ - CMSSR2511D2DC03-889_AI辅助创建用户故事.md
255
+ - CMSSR2511D2DC03-874_需求合规性检查.md
256
+ ```
257
+
258
+ ### 第 9 步:询问是否回传灵畿平台
259
+
260
+ 使用 `question` 工具询问用户是否将分析结果回传灵畿平台:
261
+
262
+ ```
263
+ 是否将需求分析结果回传灵畿平台?
264
+ 回传操作将更新每条需求的业务背景、需求描述、验收标准等字段。
265
+ ```
266
+
267
+ 选项:
268
+ - 确认回传
269
+ - 暂不回传(仅保留本地文档)
270
+
271
+ 如果用户选择"暂不回传",流程结束。
272
+
273
+ ### 第 10 步:执行需求回传
274
+
275
+ 如果用户确认回传,对每条需求更新需求字段:
276
+
277
+ 调用 `cmdevops-req_update_req_initial_requirement` 更新需求字段:
278
+
279
+ - `objectId`: 需求的 objectId
280
+ - `values` 中需更新的字段:
281
+ - `businessBackground`: 第 7 步文档中的完善后业务背景
282
+ - `requirement`: 第 7 步文档中的完善后需求描述
283
+ - `acceptanceCriteria`: 第 7 步文档中的细化后验收标准
284
+ - `feasibilityAssessment`: 第 7 步文档中的可行性分析结论(如无可行性评估字段,可将此信息写入 notes 字段)
285
+ - `notes`: 追加可行性分析摘要(如"技术可行,无外部依赖"等简要结论)
286
+
287
+ **注意:** 只回传非空的分析内容。如果某个字段在原始需求和本次分析中均无内容,不传入该字段。
288
+
289
+ **回传文本格式规范(重要):**
290
+
291
+ 灵畿平台内部使用富文本格式存储字段内容,直接传入 Markdown 格式文本会导致排版错乱。回传时必须遵循以下格式规范:
292
+
293
+ **禁止使用的格式字符:**
294
+ - 多级标题符号:#、##、###
295
+ - 表格语法:|、:、---
296
+ - 复杂列表符号:-、*、+(用数字点 . 替代)
297
+ - Markdown 链接语法:[text](url)
298
+ - 强制换行符:\n(段落间用句号或分号分隔即可)
299
+
300
+ **推荐使用的格式:**
301
+ 1. 使用简洁段落文本,以句子和逗号、句号为分隔,避免强制换行
302
+ 2. 使用数字编号 1. 2. 3. 作为列表标记,避免使用 - 或 *
303
+ 3. 用中文标点替代:列表分隔使用 、或 ;,避免使用 |
304
+ 4. 段落间用句号 . 或分号 ;分隔
305
+
306
+ **正确格式示例:**
307
+ - businessBackground: "需求来源:用户在使用云硬盘服务时,需要了解历史使用情况以便进行成本分析。当前痛点:云硬盘服务缺少历史使用记录查询功能。预期价值:提供完整的云硬盘使用历史记录查询能力,支持多维度筛选。"
308
+ - requirement: "在云硬盘服务中新增查询历史使用记录功能。核心功能:1.提供统一的API接口,支持分页查询;2.支持按时间范围、云硬盘ID、操作类型筛选;3.返回完整的操作信息;4.记录按操作时间倒序排列。"
309
+ - acceptanceCriteria: "1.基础功能验证:输入有效的云硬盘ID列表,返回对应的历史使用记录。2.时间范围查询:支持按时间范围筛选。3.操作类型筛选:支持按操作类型筛选。4.分页功能:默认20条,最大100条。5.数据准确性:记录按操作时间倒序排列。6.异常处理:输入无效参数时返回错误提示。"
310
+
311
+ **错误格式示例(禁止使用):**
312
+ - "## 需求来源\n用户需要...\n\n## 当前痛点"
313
+ - "- 功能1\n- 功能2\n* 功能3"
314
+ - "| 测试项 | 预期结果 |\n|------|----------|"
315
+
316
+ **文本长度控制:**
317
+ - 单个字段文本建议控制在 2000 字符以内
318
+ - 如分析内容过长,可适当精简后回传
319
+ - 本地文档保留完整分析内容,仅回传精简版本
320
+
321
+ #### 10.1 展示回传结果
322
+
323
+ 所有需求回传完成后,展示结果:
324
+
325
+ ```
326
+ ✅ 需求回传完成
327
+
328
+ | 需求 | 字段更新 |
329
+ |------|----------|
330
+ | CMSSR2511D2DC03-873 需求代码一致性检查 | ✅ 已更新 |
331
+ | CMSSR2511D2DC03-889 AI辅助创建用户故事 | ✅ 已更新 |
332
+ | CMSSR2511D2DC03-874 需求合规性检查 | ✅ 已更新 |
333
+ ```
334
+
335
+ 如果某条需求回传失败,标注失败原因并建议用户手动处理。
336
+
337
+ ## 注意事项
338
+
339
+ - 所有字段值为空时标注"未提供"或"未指定",不做臆测
340
+ - 需求描述的扩写基于原始内容的语义延伸,不引入原始需求未涉及的功能范围
341
+ - 业务背景补充必须基于需求标题和描述推导,不凭空编造业务场景
342
+ - 验收标准的细化需与需求描述保持一致,不超出需求描述的功能边界
343
+ - 时间字段保持原始格式,不做转换
344
+ - 人员名字后跟随邮箱不要省略
345
+ - 如果需求量大(>10条),建议分批分析,每批不超过10条
346
+ - 文件名中的特殊字符(/\\:*?"<>|)用下划线替代
@@ -0,0 +1,267 @@
1
+ ---
2
+ name: requirement_review
3
+ description: |
4
+ 需求审核技能,用于审核研发空间中的需求质量并生成审核意见文档。当用户提到"审核需求""需求审核""帮我审核需求""审核xx空间需求""审核xx版本需求""审核xx需求""检查需求质量""需求评审"等表述时触发此技能。即使用户没有明确说"审核",但表达了检查需求完整性、规范性、质量的意图,也应使用此技能。该技能会查询用户作为负责人的待审核需求,按完整性、清晰性、可测试性、一致性、可行性五个维度逐条审核,生成包含审核意见(通过/不通过)及问题描述的 Markdown 文档,并将文档写入文件。
5
+ ---
6
+
7
+ # 需求审核
8
+
9
+ 对研发空间中的需求进行质量审核,生成包含审核意见的 Markdown 文档。
10
+
11
+ ## 流程
12
+
13
+ **重要:本流程的 8 个步骤是连续执行的,从第 1 步到第 8 步必须依次完成,不要在任意步骤之间停下等待用户输入(第 4 步和第 5 步使用 question 工具与用户交互除外)。特别地,第 1 步身份解析完成后,必须立即继续执行第 2 步及后续步骤,不要停在身份解析结果处。**
14
+
15
+ ### 第 1 步:身份解析
16
+
17
+ 从本地认证文件读取当前用户身份信息。
18
+
19
+ **路径:** `C:\Users\Admin\.local\share\zhanlu\auth_zhanlu.json`
20
+
21
+ 从 `metadata` 中提取:
22
+
23
+ | 字段 | 说明 |
24
+ | ------------ | ------------ |
25
+ | `email` | 用户邮箱地址 |
26
+ | `userName` | 用户中文姓名 |
27
+
28
+ 将邮箱后缀统一转换为 `@cmss.cmcc`:
29
+ ```
30
+ zhangsan@cmss.chinamobile.com → zhangsan@cmss.cmcc
31
+ ```
32
+
33
+ 输出身份检测结果:
34
+ ```
35
+ 用户身份:
36
+ - 中文名:张三
37
+ - 邮箱(需求系统):zhangsan@cmss.cmcc
38
+ ```
39
+
40
+ ### 第 2 步:提取查询条件
41
+
42
+ 从用户请求中提取审核范围条件:
43
+
44
+ | 用户说法 | 含义 |
45
+ | -------------------------- | ---------------------------- |
46
+ | "帮我审核需求" | 审核我作为负责人的所有待审核需求 |
47
+ | "帮我审核xx空间需求" | 审核指定空间内我作为负责人的待审核需求 |
48
+ | "帮我审核xx版本需求" | 审核指定版本下我作为负责人的待审核需求 |
49
+ | "帮我审核xx、xx需求" | 审核指定需求Key或标题的需求 |
50
+
51
+ **模糊匹配规则:**
52
+ - 空间名称:支持部分匹配,如"研发大模型"可匹配"研发大模型关键技术研发"
53
+ - 版本名称:支持部分匹配,如"V2.7"可匹配"V2.7.2版本-V2.7.2"
54
+ - 需求Key/标题:支持部分匹配,如"873"可匹配"CMSSR2511D2DC03-873","一致性"可匹配"需求代码一致性检查"
55
+
56
+ 如果用户指定了多个条件(如"xx空间+xx版本"),取交集。
57
+
58
+ **默认审核状态:** 如果用户未指定状态,默认查询"评审完成"状态的需求(即待审核状态)。如果用户明确指定了状态,按用户指定的状态查询。
59
+
60
+ **负责人匹配:** 查询条件中需过滤 assignee(负责人)包含当前用户的需求。在调用 MCP 查询时,使用 `values__assignee` 参数传入当前用户邮箱进行过滤。如果通过 MCP 无法直接按 assignee 过滤,则查询后在返回结果中筛选 assignee 包含当前用户邮箱的记录。
61
+
62
+ ### 第 3 步:调用 MCP 拉取需求
63
+
64
+ 调用 `cmdevops-req_list_req_item` 执行需求查询。
65
+
66
+ **查询参数:**
67
+ - `itemTypeName`: ["初始需求", "用户故事"]
68
+ - `statusName`: 根据第 2 步确定的状态(默认为 ["评审完成"])
69
+ - `values__assignee`: [当前用户邮箱](按负责人筛选)
70
+ - `workspaceName`: 如果指定了空间,传入空间名称(支持模糊,可多传几个可能的空间名让 MCP 返回后二次筛选)
71
+ - `key`: 如果指定了需求Key,传入
72
+ - `name`: 如果指定了需求标题关键词,传入
73
+
74
+ 如果一次查询结果不足,可多次分页查询(调整 `from` 参数)直到拉取全部。
75
+
76
+ ### 第 4 步:IDE 交互 — 确认审核范围
77
+
78
+ 将查询到的需求按空间分组,展示给用户确认:
79
+
80
+ ```
81
+ 📋 审核需求范围确认
82
+
83
+ 空间:研发大模型关键技术研发(CMSSR2511D2DC03)
84
+ 待审核需求:3 条
85
+ 1. CMSSR2511D2DC03-873 | 需求代码一致性检查
86
+ 2. CMSSR2511D2DC03-889 | AI辅助创建用户故事
87
+ 3. CMSSR2511D2DC03-874 | 需求合规性检查
88
+
89
+ 以上是否为您要审核的需求?如需调整范围,请告知。
90
+ ```
91
+
92
+ 使用 `question` 工具让用户确认,选项包括:
93
+ - 确认,继续审核
94
+ - 调整范围(用户可说明增减哪些需求)
95
+
96
+ ### 第 5 步:确认文档保存路径
97
+
98
+ 用户确认审核范围后,询问文档保存路径:
99
+
100
+ ```
101
+ 请确认审核文档保存路径:
102
+ - 默认路径:当前项目 prd/ 目录下
103
+ - 文件名格式:需求审核_YYYYMMDD.md
104
+ ```
105
+
106
+ 使用 `question` 工具让用户选择:
107
+ - 使用默认路径
108
+ - 自定义路径(用户输入)
109
+
110
+ ### 第 6 步:逐条审核需求
111
+
112
+ 对每条需求按以下五个维度进行审核,每个维度包含具体的检查点:
113
+
114
+ #### 维度一:完整性
115
+
116
+ | 检查点 | 说明 | 判定标准 |
117
+ |--------|------|----------|
118
+ | 业务背景 | 是否说明了需求的来源、痛点和预期价值 | 业务背景字段非空且有实质内容 |
119
+ | 需求描述 | 是否完整描述了功能范围 | 需求描述字段非空,包含功能范围和核心交互 |
120
+ | 验收标准 | 是否覆盖主要功能路径和预期结果 | 验收标准字段非空,包含可验证的结果描述 |
121
+ | 关联信息 | 是否关联了项目、系统、版本 | 项目、系统字段非空;版本字段视情况而定(非强制) |
122
+ | 计划时间 | 是否有合理的计划开始/结束时间 | 计划时间字段非空且结束时间晚于开始时间 |
123
+
124
+ #### 维度二:清晰性
125
+
126
+ | 检查点 | 说明 | 判定标准 |
127
+ |--------|------|----------|
128
+ | 语义明确 | 需求描述是否无歧义,概念是否定义清晰 | 无模糊表述(如"等""相关"无具体指向),关键术语有定义 |
129
+ | 边界清晰 | 功能边界是否明确,输入输出是否清晰 | 明确了做什么和不做什么,输入输出格式有说明 |
130
+ | 量化标准 | 验收标准是否可量化 | 验收标准包含具体的指标或判定条件,而非仅定性描述 |
131
+ | 颗粒度 | 需求拆分颗粒度是否合理 | 单条需求描述的功能范围适中,不过大(跨多个独立功能)也不过小 |
132
+
133
+ #### 维度三:可测试性
134
+
135
+ | 检查点 | 说明 | 判定标准 |
136
+ |--------|------|----------|
137
+ | 验收可验证 | 验收标准是否可直接转化为测试用例 | 每条验收标准可映射到具体的测试操作和预期结果 |
138
+ | 异常场景 | 是否覆盖了异常和边界场景 | 包含输入异常、权限异常、超时/失败等场景的处理说明 |
139
+ | 性能指标 | 对性能/准确性有要求的场景是否定义了指标 | AI类需求需定义准确率、响应时间等;非AI类视情况而定 |
140
+
141
+ #### 维度四:一致性
142
+
143
+ | 检查点 | 说明 | 判定标准 |
144
+ |--------|------|----------|
145
+ | 内部一致 | 需求描述与验收标准是否一致 | 验收标准完整覆盖需求描述中的功能点,无矛盾 |
146
+ | 优先级匹配 | 优先级与业务价值/紧急程度是否匹配 | P0/P1 需求应有充分的业务价值说明 |
147
+ | 外部一致 | 与同空间其他需求是否存在冲突或重叠 | 同空间需求间功能边界不重叠,无矛盾定义 |
148
+
149
+ #### 维度五:可行性
150
+
151
+ | 检查点 | 说明 | 判定标准 |
152
+ |--------|------|----------|
153
+ | 技术可行性 | 是否已做可行性评估 | 可行性评估字段非空且结论为"可行" |
154
+ | 时间可行性 | 计划时间是否充足 | 结束时间与开始时间之间的间隔合理,未出现已过期但仍未推进 |
155
+ | 依赖明确 | 外部依赖是否已识别和说明 | 如依赖其他系统/接口/数据,需明确说明 |
156
+
157
+ #### 审核意见判定规则
158
+
159
+ 每条需求根据五个维度的审核结果,给出整体审核意见:
160
+
161
+ | 审核意见 | 判定条件 |
162
+ |----------|----------|
163
+ | ✅ 通过 | 五个维度均无问题,或仅有低严重度问题 |
164
+ | ⚠️ 有条件通过 | 存在中严重度问题但不影响核心功能理解和测试 |
165
+ | ❌ 不通过 | 存在高严重度问题,影响需求的核心功能定义、可测试性或一致性 |
166
+
167
+ **严重度分级:**
168
+ - **高**:关键信息缺失(业务背景空、验收标准空)、需求描述与验收标准矛盾、核心功能定义不清
169
+ - **中**:边界条件缺失、量化标准不足、异常场景未覆盖
170
+ - **低**:关联版本未填写、计划时间已过期但仍在推进、非核心字段缺失
171
+
172
+ ### 第 7 步:生成审核文档
173
+
174
+ 按照以下模板生成 Markdown 审核文档,并**必须使用 `write` 工具将文档写入第 5 步确认的文件路径**。不要仅在对话中展示文档内容,必须将完整内容写入文件。如果目录不存在,需先创建目录。
175
+
176
+ ```markdown
177
+ # 需求审核报告
178
+
179
+ **审核人**:[用户中文名]([用户邮箱])
180
+ **审核日期**:[YYYY-MM-DD]
181
+ **审核范围**:[空间名称]([空间Key])
182
+
183
+ ---
184
+
185
+ ## 审核概览
186
+
187
+ | 指标 | 数量 |
188
+ |------|------|
189
+ | 审核需求总数 | [N] |
190
+ | ✅ 通过 | [N] |
191
+ | ⚠️ 有条件通过 | [N] |
192
+ | ❌ 不通过 | [N] |
193
+
194
+ ---
195
+
196
+ ## 需求 1:[需求Key] — [需求标题]
197
+
198
+ **审核意见:** ✅ 通过 / ⚠️ 有条件通过 / ❌ 不通过
199
+
200
+ **基本信息:**
201
+
202
+ | 字段 | 值 |
203
+ |------|-----|
204
+ | 需求Key | [填写] |
205
+ | 标题 | [填写] |
206
+ | 类型 | [初始需求/用户故事] |
207
+ | 负责人 | [填写] |
208
+ | 提出人 | [填写] |
209
+ | 优先级 | [填写] |
210
+ | 计划开始时间 | [填写] |
211
+ | 计划结束时间 | [填写] |
212
+
213
+ **审核明细:**
214
+
215
+ | 维度 | 审核结果 | 问题描述 |
216
+ |------|----------|----------|
217
+ | 完整性 | ✅/⚠️/❌ | [问题描述,无问题则填"无"] |
218
+ | 清晰性 | ✅/⚠️/❌ | [问题描述] |
219
+ | 可测试性 | ✅/⚠️/❌ | [问题描述] |
220
+ | 一致性 | ✅/⚠️/❌ | [问题描述] |
221
+ | 可行性 | ✅/⚠️/❌ | [问题描述] |
222
+
223
+ **问题清单:**
224
+
225
+ | 序号 | 严重程度 | 问题描述 | 改进建议 |
226
+ |------|----------|----------|----------|
227
+ | 1 | 高/中/低 | [具体问题描述] | [改进建议] |
228
+
229
+ ---
230
+
231
+ ## 需求 2:[需求Key] — [需求标题]
232
+
233
+ (同上格式)
234
+
235
+ ---
236
+
237
+ ## 共性问题汇总
238
+
239
+ | 共性问题 | 涉及需求 | 建议 |
240
+ |----------|----------|------|
241
+ | [问题描述] | [需求Key列表] | [改进建议] |
242
+ ```
243
+
244
+ ### 第 8 步:展示执行结果
245
+
246
+ 审核文档生成后,向用户展示:
247
+
248
+ ```
249
+ ✅ 需求审核完成
250
+
251
+ 📄 审核文档已生成:[文件路径]
252
+ 📋 审核概览:
253
+ - 审核需求总数:3
254
+ - ✅ 通过:1
255
+ - ⚠️ 有条件通过:1
256
+ - ❌ 不通过:1
257
+ ```
258
+
259
+ ## 注意事项
260
+
261
+ - 所有字段值为空时标注"未提供",不做臆测
262
+ - 审核意见基于需求文档的现有内容判定,不依赖外部知识
263
+ - 时间字段保持原始格式,不做转换
264
+ - 人员名字后跟随邮箱不要省略
265
+ - 如果查询结果为空(无待审核需求),告知用户"当前没有找到您作为负责人的待审核需求",并建议检查空间范围或状态条件
266
+ - 空间、版本、需求名称支持模糊匹配,匹配后需与用户确认
267
+ - 如果需求量较大(>10条),建议分批审核,每批不超过10条