@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
package/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Kilo Code
4
+ Copyright (c) 2025 opencode
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ of this software and associated documentation files (the "Software"), to deal
8
+ in the Software without restriction, including without limitation the rights
9
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the Software is
11
+ furnished to do so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in all
14
+ copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ SOFTWARE.
package/bin/rg ADDED
Binary file
Binary file
@@ -0,0 +1,60 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "deliveryProfile": "default",
4
+ "sourceCommit": "unknown",
5
+ "profileDigest": "37a8eec1ce19687d132fe29051dca629d164e2c4958ba141d5f4133a33f0688f",
6
+ "plugins": [
7
+ {
8
+ "id": "lingji-alpha-assistant",
9
+ "name": "灵畿α助手",
10
+ "namespace": "灵畿α助手",
11
+ "version": "1.0.0",
12
+ "origin": "base",
13
+ "requiredEnv": [
14
+ "ZHANLU_CMDEVOPS_API_KEY"
15
+ ],
16
+ "components": {
17
+ "skills": [
18
+ "灵畿α助手:code-check",
19
+ "灵畿α助手:code-review",
20
+ "灵畿α助手:manual-test-case-generator",
21
+ "灵畿α助手:quality_scan",
22
+ "灵畿α助手:requirement-analysis",
23
+ "灵畿α助手:requirement-review",
24
+ "灵畿α助手:requirements-gather",
25
+ "灵畿α助手:sast_scan",
26
+ "灵畿α助手:story-decomposer"
27
+ ],
28
+ "agents": [],
29
+ "commands": [],
30
+ "mcpServers": [
31
+ "灵畿α助手:cmdevops-ct",
32
+ "灵畿α助手:cmdevops-quality",
33
+ "灵畿α助手:cmdevops-req",
34
+ "灵畿α助手:sast-fixer"
35
+ ]
36
+ }
37
+ },
38
+ {
39
+ "id": "lingji-beta-assistant",
40
+ "name": "灵畿β助手",
41
+ "namespace": "灵畿β助手",
42
+ "version": "1.0.0",
43
+ "origin": "base",
44
+ "requiredEnv": [],
45
+ "components": {
46
+ "skills": [
47
+ "灵畿β助手:beta-requirement-analysis",
48
+ "灵畿β助手:beta-requirement-decomposer",
49
+ "灵畿β助手:beta-requirement-review",
50
+ "灵畿β助手:beta-requirements-gather"
51
+ ],
52
+ "agents": [],
53
+ "commands": [],
54
+ "mcpServers": [
55
+ "灵畿β助手:lingji-beta"
56
+ ]
57
+ }
58
+ }
59
+ ]
60
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "灵畿α助手",
3
+ "namespace": "灵畿α助手",
4
+ "version": "1.0.0",
5
+ "description": "灵畿α助手 — 支持需求工程、手工测试用例生成与入库、代码评审、安全扫描与质量扫描报告分析修复",
6
+ "author": { "name": "Zhanlu" },
7
+
8
+ "skills": "skills/",
9
+
10
+ "mcp_servers": {
11
+ "cmdevops-req": {
12
+ "url": "http://openapi-ai.4c.hq.cmcc:80/mcp-cmdevops-req",
13
+ "headers": {
14
+ "apiKey": "${ENV:ZHANLU_CMDEVOPS_API_KEY}"
15
+ },
16
+ "oauth": false,
17
+ "timeout": 30000
18
+ },
19
+ "sast-fixer": {
20
+ "command": "node",
21
+ "args": ["${ZHANLU_PLUGIN_ROOT}/mcps/sast_fixer_mcp/dist/index.mjs"]
22
+ },
23
+ "cmdevops-ct": {
24
+ "url": "http://openapi-ai.4c.hq.cmcc:80/mcp-cmdevops-ct",
25
+ "headers": {
26
+ "apiKey": "${ENV:ZHANLU_CMDEVOPS_API_KEY}"
27
+ },
28
+ "oauth": false,
29
+ "timeout": 30000
30
+ },
31
+ "cmdevops-quality": {
32
+ "url": "http://openapi-ai.4c.hq.cmcc:80/mcp-cmdevops-quality",
33
+ "headers": {
34
+ "apiKey": "${ENV:ZHANLU_CMDEVOPS_API_KEY}"
35
+ },
36
+ "oauth": false,
37
+ "timeout": 30000
38
+ }
39
+ },
40
+
41
+ "enabled": false
42
+ }
@@ -0,0 +1,29 @@
1
+ # 灵畿α助手(内置 Plugin)
2
+ 随 Zhanlu CLI 分发的内置插件,提供需求工程、手工测试用例、安全扫描与质量扫描相关 Skill 及 CMDevOps MCP 集成。
3
+
4
+ ## 包含内容
5
+
6
+ | 类型 | 说明 |
7
+ |---|---|
8
+ | **Skills** | `requirement-analysis`、`requirement-review`、`requirements-gather`、`story-decomposer`、`manual-test-case-generator`(手工测试用例生成/查询/入库)、`sast_scan`(四共 SAST 扫描 + 漏洞报告解析修复)、`quality_scan`(基于 `cmdevops-quality` 执行扫描、下载报告、模型分析与修复报告生成)、`code_review`(项目级代码评审)、`req_code_consistency_check`(需求-代码一致性检查) |
9
+ | **MCP** | `cmdevops-req` → `http://openapi-ai.4c.hq.cmcc:80/mcp-cmdevops-req`(`apiKey` 请求头认证);`cmdevops-ct` → `http://openapi-ai.4c.hq.cmcc:80/mcp-cmdevops-ct`(用例库查询与批量创建);`cmdevops-quality` → `http://openapi-ai.4c.hq.cmcc:80/mcp-cmdevops-quality`(`apiKey` 请求头认证);`sast-fixer`(本地内置 TypeScript MCP,主要供 `sast_scan` skill 使用) |
10
+
11
+ Skill 目录名与运行时 ID 一致(如 `skills/sast_scan/` → `灵畿α助手:sast_scan`)。安全扫描与质量扫描已改为 Skill,不再提供独立 Agent。
12
+ ## 品牌用字(写 Skill / 对用户回复时强制)
13
+
14
+ 完整规范见仓库 [`packages/opencode/src/kilocode/brand-naming.md`](../../../brand-naming.md)(与运行时 `ZhanluLanguageReminder`、CI `check-forbidden-strings` 同源)。Skill 与对用户回复只写正确形式,勿罗列近音错写。
15
+
16
+ 正确用字:
17
+ - zhanlu → 湛卢、湛卢 IDE
18
+ - lingji → 灵畿、灵畿平台、灵畿α助手
19
+ - kylin → 麒麟、银河麒麟
20
+ - uos → 统信、统信 UOS
21
+ - 账号登录语义使用「登录」
22
+ ## 覆盖安装
23
+
24
+ 如需修改 MCP `apiKey` 或其它配置,可将本目录复制到:
25
+
26
+ - `~/.zhanlu/plugins/lingji-alpha-assistant/`(全局)
27
+ - `<project>/.zhanlu/plugins/lingji-alpha-assistant/`(项目)
28
+
29
+ 用户目录中的同名插件会覆盖内置版本。
@@ -0,0 +1,10 @@
1
+ # SAST MCP runtime artifact
2
+
3
+ This directory is the bundled plugin runtime target for `sast-fixer`.
4
+
5
+ The TypeScript source lives in `packages/sast-fixer-mcp`. During the opencode CLI
6
+ build, `packages/sast-fixer-mcp/dist/index.mjs` is copied here as
7
+ `dist/index.mjs`, matching the path used by the plugin manifest.
8
+ This runtime directory must stay artifact-only: keep `README.md` and `dist/index.mjs`.
9
+ Do not run package manager commands in this folder, and do not keep `node_modules`
10
+ or source files here.
@@ -0,0 +1,179 @@
1
+ ---
2
+ name: req_code_consistency_check
3
+ description: 用户输入GitLab仓库地址及需求编号,自动完成代码拉取、需求文档获取和需求-代码一致性评审,生成结构化MD报告
4
+ version: 1.0.0
5
+ author: ReqCodeCheck Team
6
+ trigger_words:
7
+ - 需求代码一致性
8
+ - 一致性检查
9
+ - 代码需求一致性检查
10
+ - 需求代码核对
11
+ - 需求评审
12
+ - 需求代码校验
13
+ - 核对需求代码
14
+ - 需求一致性
15
+ instructions: |
16
+ 【强制要求】必须严格按照以下步骤顺序执行,不可跳步或调整顺序:
17
+
18
+ **步骤0**: 输入解析与工作目录创建
19
+ - 解析用户输入,支持以下三种格式:
20
+
21
+ **格式1 - 手动输入需求编号**:
22
+ - GitLab仓库URL + 需求编号列表(逗号或空格分隔)+ [可选:分支名]
23
+ - 示例:`需求代码一致性 https://gitlab.com/group/project.git REQ-001,REQ-002 main`
24
+
25
+ **格式2 - 从 Excel 文件读取(通过 @ 选择文件)**:
26
+ - 用户在输入中通过 `@` 符号附加 Excel 文件
27
+ - 系统检测到 `.xlsx` 或 `.xls` 文件后,自动提取文件路径
28
+ - 调用 `scripts/read_excel_requirements.py` 读取 Excel 文件
29
+ - 自动智能识别包含需求编号的列(优先匹配含"需求"、"编号"等关键词的列)
30
+ - 获取需求编号列表
31
+ - 示例:`对需求编号 @需求编号.xlsx 与项目http://code-cmss.rdcloud.4c.hq.cmcc/osc/CMSS/lvjin-cmss.cmcc/mini-apiserver.git进行一致性检查`
32
+
33
+ **格式3 - 从 Excel 文件读取(直接输入文件路径)**:
34
+ - 用户在输入中直接提供 Excel 文件的完整路径
35
+ - 系统检测到路径中包含 `.xlsx` 或 `.xls` 扩展名
36
+ - 调用 `scripts/read_excel_requirements.py` 读取 Excel 文件
37
+ - 自动智能识别包含需求编号的列
38
+ - 获取需求编号列表
39
+ - 示例:`对需求编号文件 D:\需求编号.xlsx 与项目http://code-cmss.rdcloud.4c.hq.cmcc/osc/CMSS/lvjin-cmss.cmcc/mini-apiserver.git进行一致性检查`
40
+
41
+ - 从GitLab URL提取项目名称
42
+ - 生成工作目录:`D:\ReqCodeCheck_[项目名]_[时间戳]`
43
+ - 创建子目录:`{工作目录}\code\` 和 `{工作目录}\doc\`
44
+ - 输出工作目录路径和需求列表给用户
45
+
46
+ **步骤1**: 代码拉取与需求文档获取
47
+ - 📖 首先读取 `prompts/step1_preparation.md` 获取详细执行指南
48
+ - 调用 `scripts/gitlab_clone.py` 拉取GitLab代码到 `{工作目录}\code\`(仅执行一次)
49
+ - 对于每个需求编号:
50
+ - 调用MCP `cmdevops-req` 获取需求文档
51
+ - 保存为 `{工作目录}\doc\requirement_[需求编号].md`
52
+ - 若某需求获取失败,记录警告但继续处理其他需求
53
+ - 若MCP未安装,提示用户在湛卢Code 插件市场安装后重试 <!-- zhanlu_change -->
54
+ - ✅ 完成后在终端输出: "✅ 步骤1完成:代码与需求文档已准备就绪"
55
+
56
+ **步骤2**: 多需求一致性校验与报告生成
57
+ - 📖 首先读取 `prompts/step2_consistency_check.md` 获取详细执行指南
58
+ - 对于每个需求:
59
+ - 从 `{工作目录}\doc\` 读取对应需求文档
60
+ - 按照6大维度11个评审点逐项校验:
61
+ 1. 核心功能实现完整性(功能点全覆盖、方法/接口匹配)
62
+ 2. 业务逻辑与校验完整性(业务逻辑、参数与数据校验)
63
+ 3. 边界与异常处理合规性(边界场景、异常场景处理)
64
+ 4. 调用与参数传递正确性(服务/接口调用、参数传递)
65
+ 5. 代码结构与实现合理性(代码层级、实现方式)
66
+ 6. 额外功能管控(未定义功能排查)
67
+ - 记录该需求的评审结果和符合度
68
+ - 汇总所有需求的评审结果
69
+ - 生成综合报告 `需求代码一致性评审报告.md`,包含各需求独立章节和汇总对比表格
70
+ - 保存报告到 `{工作目录}\需求代码一致性评审报告.md`
71
+ - ✅ 完成后在终端输出: "✅ 步骤2+3完成:一致性校验与评审报告已生成"
72
+
73
+ ⚠️ **重要提醒**:
74
+ - 每个步骤开始前,必须先读取对应的提示词文件(prompts/step*.md)
75
+ - 严格按照提示词文件中的要求执行,不得跳过任何子步骤
76
+ - 评审标准详见 `prompts/step2_consistency_check.md`
77
+ - 禁止输出任何乱码、不可见字符、问号乱码串、特殊控制符、零宽空格
78
+ - GitLab Token配置:首次使用前需在 `config/gitlab_config.json` 中配置您的GitLab Token
79
+ - 工作目录默认创建在 D盘根目录
80
+ - 支持单个或多个需求编号输入,多个需求用逗号或空格分隔
81
+ ---
82
+
83
+ # 需求代码一致性校验 Skill
84
+
85
+ ## 角色定位
86
+
87
+ 你是拥有10年以上后端开发与架构评审经验的**高级代码评审工程师**,精通需求-代码对齐校验、业务逻辑完整性验证与代码规范审查。本次需基于提供的「需求文档」与「项目代码」,开展需求与代码一致性专项评审。
88
+
89
+ ---
90
+
91
+ ## 评审核心目标
92
+
93
+ 1. 验证代码实现与需求文档的**功能点100%对齐**,无遗漏、无反向实现、无理解偏差
94
+ 2. 核查业务逻辑、边界处理、参数校验等关键环节的完整性与合规性
95
+ 3. 识别超出需求定义的额外功能、不符合架构规范的代码问题
96
+ 4. 按问题严重程度分级输出结论,明确影响范围与可落地的修复建议
97
+
98
+ ---
99
+
100
+ ## 执行流程
101
+
102
+ 本Skill采用四阶段执行流程,每个阶段的详细操作指南请参考对应的提示词文件:
103
+
104
+ ### 第一步:输入解析与工作目录创建
105
+
106
+ 📖 **详细指南**:`prompts/step1_preparation.md`
107
+
108
+ 核心任务:
109
+ - 解析用户输入(GitLab URL + 需求编号列表 + 可选分支名)
110
+ - 从GitLab URL提取项目名称
111
+ - 创建工作目录 `D:\ReqCodeCheck_[项目名]_[时间戳]`
112
+ - 创建代码存放子目录 `code\` 和需求文档子目录 `doc\`
113
+
114
+ ⚠️ 必须严格按照提示词文件中的要求执行,完成后在终端输出完成标记。
115
+
116
+ ---
117
+
118
+ ### 第二步:代码拉取与需求文档获取
119
+
120
+ 📖 **详细指南**:`prompts/step1_preparation.md`
121
+
122
+ 核心任务:
123
+ - 调用GitLab克隆脚本拉取代码到 `{工作目录}\code\`(仅执行一次)
124
+ - 对于每个需求编号:
125
+ - 调用MCP `cmdevops-req` 获取需求文档
126
+ - 保存为 `{工作目录}\doc\requirement_[需求编号].md`
127
+ - 若某需求获取失败,记录警告但继续处理其他需求
128
+
129
+ ⚠️ 若MCP未安装,提示用户在湛卢Code 插件市场安装后重试。 <!-- zhanlu_change -->
130
+
131
+ ---
132
+
133
+ ### 第三步:多需求一致性校验与报告生成
134
+
135
+ 📖 **详细指南**:`prompts/step2_consistency_check.md`
136
+
137
+ 核心任务:
138
+ - 对于每个需求:
139
+ - 从 `{工作目录}\doc\` 读取对应需求文档
140
+ - 按6大维度11个评审点逐项校验
141
+ - 记录该需求的评审结果和符合度
142
+ - 汇总所有需求的评审结果
143
+ - 生成综合评审报告,包含各需求独立章节和汇总对比表格
144
+ - 保存报告到 `{工作目录}\需求代码一致性评审报告.md`
145
+
146
+ ⚠️ 必须严格按照提示词文件中的要求执行,完成后在终端输出完成标记。
147
+
148
+ ---
149
+
150
+ ## 输出要求与使用说明
151
+
152
+ 📖 **详细说明**:`prompts/step2_consistency_check.md`(包含完整的报告生成模板)
153
+
154
+ **核心要求**:
155
+ 1. 客观准确:每个问题需给出明确判定依据
156
+ 2. 建设性:提供可落地的修改方案
157
+ 3. 风险分级:清晰区分严重问题与一般性问题
158
+ 4. 报告保存:必须保存为 `需求代码一致性评审报告.md`
159
+ 5. 禁止输出任何乱码、不可见字符、特殊控制符、零宽空格
160
+
161
+ **触发方式**:
162
+ - 说出触发词:"需求代码一致性"、"需求代码核对"、"需求评审"等
163
+ - 指定格式(手动输入):`需求代码一致性 <GitLab仓库URL> <需求编号列表> [分支名]`
164
+ - 指定格式(@选择文件):`需求代码一致性 <GitLab仓库URL> @<Excel文件路径> [分支名]`
165
+ - 指定格式(直接路径):`需求代码一致性 <GitLab仓库URL> <Excel文件完整路径> [分支名]`
166
+ - 示例:
167
+ - 单个需求:`需求代码一致性 https://gitlab.com/group/project.git REQ-2024-001 main`
168
+ - 多个需求:`需求代码一致性 https://gitlab.com/group/project.git REQ-2024-001,REQ-2024-002,REQ-2024-003 main`
169
+ - @选择文件:`对需求编号 @需求编号.xlsx 与项目http://code-cmss.rdcloud.4c.hq.cmcc/osc/CMSS/lvjin-cmss.cmcc/mini-apiserver.git进行一致性检查`
170
+ - 直接路径:`对需求编号文件 D:\需求编号.xlsx 与项目http://code-cmss.rdcloud.4c.hq.cmcc/osc/CMSS/lvjin-cmss.cmcc/mini-apiserver.git进行一致性检查`
171
+
172
+ **注意事项**:
173
+ - 工作目录默认创建在 D盘根目录
174
+ - 代码存放在 `{工作目录}\code\` 目录
175
+ - 需求文档存放在 `{工作目录}\doc\` 目录
176
+ - 评审结果仅供参考,最终修复决策需结合业务实际情况
177
+ - 支持单个或多个需求编号,多个需求用逗号或空格分隔
178
+ - 支持三种方式提供需求编号:手动输入、@符号选择Excel文件、直接输入Excel文件路径
179
+ - Excel 文件会自动智能识别需求编号列(支持常见列名如"需求编号"、"Requirement ID"等)
@@ -0,0 +1,5 @@
1
+ {
2
+ "gitlab_token": "",
3
+ "default_branch": "main",
4
+ "git_path": "git"
5
+ }
@@ -0,0 +1,167 @@
1
+ # 步骤1:代码拉取与需求文档获取
2
+
3
+ 本指南详细说明如何完成代码拉取和需求文档获取工作。
4
+
5
+ ## 1.1 解析用户输入
6
+
7
+ 从用户输入中提取以下信息:
8
+ - **GitLab仓库URL**:以 https://gitlab.com/ 或 http://gitlab. 开头的URL
9
+ - **需求编号来源**:支持三种方式
10
+ - 方式1:直接提供需求编号列表(逗号或空格分隔)
11
+ - 方式2:通过 `@` 符号附加 Excel 文件(如 `@需求编号.xlsx`),系统自动读取
12
+ - 方式3:直接输入 Excel 文件的完整路径(如 `D:\需求编号.xlsx`),系统自动识别并读取
13
+ - **分支名**(可选):用户指定则使用,否则使用默认分支(main)
14
+
15
+ 输入格式示例:
16
+ - 单个需求:需求代码一致性检查 https://gitlab.com/group/project.git REQ-2024-001 main
17
+ - 多个需求:需求代码一致性检查 https://gitlab.com/group/project.git REQ-2024-001,REQ-2024-002,REQ-2024-003 main
18
+ - 空格分隔:需求代码一致性检查 https://gitlab.com/group/project.git REQ-2024-001 REQ-2024-002 main
19
+ - Excel文件(@选择):对需求编号 @需求编号.xlsx 与项目http://code-cmss.rdcloud.4c.hq.cmcc/osc/CMSS/lvjin-cmss.cmcc/mini-apiserver.git进行一致性检查
20
+ - Excel文件(直接路径):对需求编号文件 D:\需求编号.xlsx 与项目http://code-cmss.rdcloud.4c.hq.cmcc/osc/CMSS/lvjin-cmss.cmcc/mini-apiserver.git进行一致性检查
21
+
22
+ Excel 文件处理:
23
+ - 当检测到输入中包含 `.xlsx` 或 `.xls` 文件时(通过 `@` 符号或直接路径)
24
+ - 提取 Excel 文件的完整路径
25
+ - 如果是 `@` 符号附加,提取 `@` 后的路径
26
+ - 如果是直接路径,识别路径中的 `.xlsx` 或 `.xls` 文件引用
27
+ - 调用 `scripts/read_excel_requirements.py` 脚本读取需求编号
28
+ - 脚本会智能识别 Excel 中包含需求编号的列
29
+ - 识别策略:
30
+ 1. 优先匹配列名包含"需求"、"编号"、"requirement"、"req"、"id"等关键词的列
31
+ 2. 如果未找到匹配列,默认使用第一列
32
+ - 输出逗号分隔的需求编号列表
33
+
34
+ ## 1.1.1 Excel 文件处理(如适用)
35
+
36
+ 如果用户输入中包含 Excel 文件(通过 `@` 符号或直接路径):
37
+
38
+ 1. 从用户输入中提取 Excel 文件路径
39
+ - 检测输入中的 `.xlsx` 或 `.xls` 文件引用
40
+ - 支持两种形式:
41
+ a. `@` 符号附加:提取 `@` 后的完整路径
42
+ b. 直接路径:识别输入中的文件路径(如 `D:\需求编号.xlsx`)
43
+ - 提取完整的文件路径
44
+
45
+ 2. 验证 Excel 文件路径是否存在
46
+
47
+ 3. 调用脚本读取需求编号:
48
+ ```powershell
49
+ python scripts/read_excel_requirements.py --excel-path "<Excel文件路径>"
50
+ ```
51
+
52
+ 4. 解析脚本输出的需求编号列表(逗号分隔)
53
+
54
+ 5. 如果读取失败,提示用户检查文件路径和文件格式
55
+
56
+ 6. 继续后续步骤,使用读取到的需求编号列表
57
+
58
+ 成功输出示例:
59
+ ✓ 成功读取 Excel 文件
60
+ 文件路径: D:\需求编号.xlsx
61
+ 需求编号: CMSSR2511D2DC03-874,CMSSR2511D2DC03-757,CMSSR2511D2DC03-848
62
+
63
+ 失败处理:
64
+ - 文件不存在:提示用户检查文件路径
65
+ - 文件格式错误:提示用户使用标准的 .xlsx 格式
66
+ - 未找到需求编号列:提示用户确保 Excel 中包含需求编号列
67
+
68
+ ---
69
+
70
+ ## 1.2 创建工作目录
71
+
72
+ 目录命名规则:D:\ReqCodeCheck_[项目名]_[时间戳]
73
+ - 项目名:从GitLab URL中提取(最后一个路径段,去除.git后缀)
74
+ - 时间戳格式:yyyyMMdd_HHmmss
75
+ - 示例:D:\ReqCodeCheck_project_20260518_152000
76
+
77
+ 执行步骤:
78
+ 1. 从GitLab URL提取项目名称
79
+ 2. 生成目录名称
80
+ 3. 使用 PowerShell 创建目录
81
+ 4. 在工作目录下创建 code\ 子目录用于存放代码
82
+ 5. 在工作目录下创建 doc\ 子目录用于存放需求文档
83
+ 6. 终端输出工作目录路径和需求列表
84
+
85
+ ## 1.3 拉取GitLab代码
86
+
87
+ 调用脚本:python scripts/gitlab_clone.py --url <URL> --path <工作目录>\code\ [--branch <分支名>]
88
+
89
+ 脚本说明:
90
+ - 使用 gitlab_clone.py 脚本拉取代码
91
+ - 脚本会自动使用 config/gitlab_config.json 中的GitLab Token进行认证
92
+ - 支持浅克隆(--depth 1)以提高拉取速度
93
+
94
+ 成功输出示例:
95
+ ✓ 代码拉取成功!
96
+ 本地路径: D:\ReqCodeCheck_REQ-2024-001_xxx\code
97
+
98
+ 失败处理:
99
+ - Token无效:提示用户检查 config/gitlab_config.json 中的Token
100
+ - 权限不足:提示用户确认仓库访问权限
101
+ - 网络问题:提示检查网络连接
102
+
103
+ ## 1.4 获取需求文档
104
+
105
+ 调用MCP:使用 MCP 工具调用 cmdevops-req 获取需求文档
106
+
107
+ MCP工具说明:
108
+ - MCP名称:cmdevops-req
109
+ - 工具名称:get_requirement
110
+ - 参数:requirement_id - 需求编号
111
+
112
+ 多需求处理流程:
113
+ 1. 在工作目录下创建 doc\ 子目录(如果尚未创建)
114
+ 2. 对于每个需求编号:
115
+ a. 调用MCP获取该需求的文档内容
116
+ b. 将需求文档保存为:{工作目录}\doc\requirement_[需求编号].md
117
+ c. 若获取失败,记录错误信息但继续处理下一个需求
118
+ 3. 输出已成功获取的需求编号列表
119
+
120
+ 获取成功时:
121
+ - 文档内容应为完整的需求规格说明
122
+
123
+ MCP未安装处理:如果MCP cmdevops-req 未安装或调用失败,显示提示请用户在湛卢IDE插件市场搜索并安装需求管理MCP后重试。
124
+
125
+ ## 1.5 验证准备完成
126
+
127
+ 验证清单:
128
+ - [ ] 工作目录已创建
129
+ - [ ] code\ 子目录已创建
130
+ - [ ] doc\ 子目录已创建
131
+ - [ ] 代码已拉取到 {工作目录}\code\
132
+ - [ ] 所有需求文档已保存到 {工作目录}\doc\(列出成功获取的需求编号列表)
133
+
134
+ 终端输出示例:
135
+ ✅ 步骤1完成:代码与需求文档已准备就绪
136
+ - 工作目录:{工作目录}
137
+ - 代码路径:{工作目录}\code
138
+ - 需求文档目录:{工作目录}\doc
139
+ - 已获取需求:REQ-2024-001, REQ-2024-002, ...
140
+
141
+ ## 1.6 错误处理汇总
142
+
143
+ | 错误场景 | 处理方式 |
144
+ |----------|----------|
145
+ | GitLab Token未配置 | 提示用户配置 config/gitlab_config.json |
146
+ | GitLab Token无效 | 提示用户更换Token |
147
+ | 仓库访问被拒绝 | 提示用户检查仓库权限 |
148
+ | MCP未安装 | 提示用户在插件市场安装 |
149
+ | MCP调用失败 | 提示用户检查MCP配置 |
150
+ | 目录创建失败 | 提示检查D盘权限 |
151
+
152
+ ## 1.7 快速参考
153
+
154
+ 完整执行命令示例:
155
+ 1. 创建工作目录及子目录
156
+ New-Item -ItemType Directory -Path "D:\ReqCodeCheck_project_20260518_152000\code" -Force
157
+ New-Item -ItemType Directory -Path "D:\ReqCodeCheck_project_20260518_152000\doc" -Force
158
+
159
+ 2. 拉取代码
160
+ python scripts/gitlab_clone.py --url "https://gitlab.com/group/project.git" --path "D:\ReqCodeCheck_project_20260518_152000\code" --branch "main"
161
+
162
+ 3. 循环调用MCP获取多个需求文档(伪代码):
163
+ $requirements = @("REQ-2024-001", "REQ-2024-002", "REQ-2024-003")
164
+ foreach ($reqId in $requirements) {
165
+ # 使用 @mcp cmdevops-req get_requirement --requirement_id $reqId
166
+ # 保存结果到 "D:\ReqCodeCheck_project_20260518_152000\doc\requirement_$reqId.md"
167
+ }