job51-gitlab-cr-node-skill-prompt-optimize 1.4.3 → 1.4.5

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.
@@ -141,15 +141,18 @@
141
141
  13. 最终输出必须以 `<REPORT>` 开始,以 `</REPORT>` 结束;
142
142
 
143
143
  14. **行号计算规范**:
144
- > - **Diff 头信息格式**:`@@ -84,9 +84,11 @@` 表示变更后代码从原始文件的第 84 行开始,共有 11 行
145
- > - **行号计算**:
146
- > - 空格开头(上下文):行号 = 起始行号 + 已处理的上下文行数
147
- > - `-` 开头(删除):不计入变更后行号
148
- > - `+` 开头(新增):行号 = 起始行号 + 已处理的保留/新增行数
149
- > - **问题行号范围**:
150
- > - 单行问题:`UserService.java:87`
151
- > - 多行问题:`UserService.java:90-91`
152
- > - **关键**:问题行号必须准确指向变更后代码的实际行号,不得引用已删除的行
144
+ > - **Diff 头信息格式**:`@@ -84,9 +84,11 @@`
145
+ > - `-84,9`:旧文件从第 84 行开始,共 9 行
146
+ > - `+84,11`:新文件从第 84 行开始,共 11
147
+ > - **行号计算**(绝对行号,非相对偏移):
148
+ > - 初始值 = `new_start`(从 diff 头解析)
149
+ > - 空格开头(上下文):当前行号 = 计数器值,计数器 +1
150
+ > - `-` 开头(删除):跳过,计数器不变
151
+ > - `+` 开头(新增):当前行号 = 计数器值,计数器 +1
152
+ > - **示例**:`@@ -0,0 +1,49 @@`(新增文件)
153
+ > - 第 1 行 `+`:行号 = 1
154
+ > - 第 2 行 `+`:行号 = 2
155
+ > - **关键**:问题行号必须准确指向变更后代码的实际行号(绝对行号)
153
156
 
154
157
  15. `<REPORT>` 标签示例中的问题块数量仅用于展示格式,实际数量由 review 结果决定;
155
158
 
@@ -195,6 +198,19 @@
195
198
  > - 禁止在 package、import、类定义、方法签名等位置报告无关问题
196
199
 
197
200
  19. **输出格式**:严格参照 SKILL.md 模板,无某类问题时省略对应部分;
201
+ > - **必须输出 `<LINE_INFO>` 标签**:包含所有问题的行号信息
202
+ > - **LINE_INFO 格式**(与 targetLine 结构一致):
203
+ ```json
204
+ [{"new_path":"文件路径","new_line":行号,"old_path":"文件路径","old_line":行号}]
205
+ ```
206
+ > - **字段说明**:
207
+ - `new_path`: 变更后文件路径(必填)
208
+ - `new_line`: 变更后代码的**绝对行号**(必填,指向 `+` 开头的新增代码在文件中的实际行号)
209
+ - `old_path`: 变更前文件路径(可选,仅删除代码相关问题使用)
210
+ - `old_line`: 变更前代码的**绝对行号**(可选,仅删除代码相关问题使用)
211
+ > - **行号计算**:参考下方第 14 条 行号计算规范
212
+ > - **行号定位**:参考下方第 17 条 问题报告位置规则
213
+ > - 无问题时输出空数组:`<LINE_INFO>[]</LINE_INFO>`
198
214
 
199
215
  20. **误报防控检查清单**(报告前必须确认):
200
216
  > - [ ] 已追踪读取相关方法实现,确认可能返回危险值
@@ -1,82 +1,55 @@
1
1
  ---
2
2
  name: simple-code-review
3
- description: 你是一个专业的代码审查助手。请严格根据代码规范、安全规则(如 SQL 注入防护、XSS 防护)、性能要求(如时间复杂度优化、内存占用控制)、可读性要求(如注释完整性、命名规范性)及功能正确性标准处理指定文件中的代码变更内容
3
+ description: 代码审查技能,审查变更代码并输出 REPORT LINE_INFO
4
4
  ---
5
5
 
6
6
  ## 处理步骤
7
7
 
8
8
  1. **读取 diff 文件**:使用 Read 工具读取文件:$ARGUMENTS
9
9
 
10
- 2. **解析文件信息**:从文件内容中提取以下信息
11
- - `Block Index`: 当前块的索引号
12
- - New Path: 变更后的文件路径(可能包含 `b/` 前缀)
13
- - Old Path: 变更前的文件路径(可能包含 `a/` 前缀)
14
- - `Diff Content`: 实际的代码变更内容(unified diff 格式)
10
+ 2. **解析文件信息**:从 `=== File Information ===` 部分提取
11
+ - `Block Index`: 当前块索引号
12
+ - `Line Info`: 行号信息 JSON 对象
13
+ - `New Path` / `Old Path`: 文件路径(去掉 `a/` 或 `b/` 前缀)
15
14
 
16
- 3. **解析 Line Info**:解析 `Line Info` 行中的 JSON 对象,获取 diff 块的行号信息
17
- - `new_path`: 变更后文件路径(必填)
18
- - `new_line`: 变更后代码行号(必填,指向 `+` 开头的新增代码在变更后文件中的行号)
15
+ 3. **解析行号**:从 `Line Info` 中获取 `new_start`,遍历 diff 内容计算每行行号
16
+ - 行号计算规则参考 @.claude/rules/code-review-rules.md 第 14 条
19
17
 
20
- 4. **仅审查新增代码**(关键规则):
21
- - **只审查 `+` 开头的新增代码行**
22
- - **忽略 `-` 开头的已删除代码行**(已删除的代码不纳入审查范围)
23
- - 空格开头的上下文代码仅作参考,不进行审查
18
+ 4. **读取上下文**:基于 New Path 读取变更后文件,涉及方法调用时追踪读取实现代码
24
19
 
25
- 5. **读取项目上下文文件**:
26
- - 基于 `Line Info` 和 diff 内容,读取**变更后文件**(New Path)的完整内容
27
- - 如果涉及方法调用,读取相关方法/类的实现代码以确认是否存在真实的运行时风险
20
+ 5. **执行审查**:按照 @.claude/rules/code-review-rules.md 中的规则进行审查
28
21
 
29
- 6. **深度分析代码上下文(必须执行)**:
30
- - 对于 diff 中涉及的方法/函数调用,**必须**使用 Read 工具追踪读取该方法的实现代码
31
- - **跨 diff 块分析**:同一文件可能有多个 diff 块,必须合并分析
32
- - 只有在确认方法/函数确实可能返回危险值时,才能报告严重问题
33
-
34
- 7. **结合项目上下文**,按照 @.claude/rules/code-review-rules.md 中的规则进行审查
35
-
36
- 8. **提取行号信息**:审查完成后,从审查结果中提取所有问题的行号信息
37
- - 遍历每个问题,解析"**文件及行号**"行中的文件路径和行号
38
- - 将行号信息以 JSON 数组格式放入 `<LINE_INFO>` 标签内
39
- - **LINE_INFO 格式必须包含 `new_path` 和 `new_line` 字段**:
40
- - 示例:`<LINE_INFO>[{"new_path":"src/main/java/UserService.java","new_line":87}]</LINE_INFO>`
41
- - **字段说明**:
42
- - `new_path`: 变更后文件路径(必填)
43
- - `new_line`: 变更后代码行号(必填,指向 `+` 开头的新增代码在变更后文件中的行号)
44
-
45
- 9. 输出格式必须以下方模板为准
22
+ 6. **输出结果**:
23
+ - 审查结果放入 `<REPORT>` 标签
24
+ - 行号信息放入 `<LINE_INFO>` 标签(必须输出)
25
+ - LINE_INFO 格式参考 @.claude/rules/code-review-rules.md 第 19 条
46
26
 
47
27
  ## 输出模板
48
28
 
49
- **说明**:
50
- - 必须以 `<REPORT>` 开始,以 `</REPORT>` 结束
51
- - 若某类问题不存在,则**完全省略该模块**(不输出对应标题)
52
- - 所有占位符必须被真实内容替换
53
- - 带圈数字序号:① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩
54
-
55
29
  <REPORT>
56
30
  ## 🤖 AI 代码审查结果
57
31
 
58
32
  **生成时间**: [当前时间]
59
- **审查范围**: 仅审查新增代码(+ 开头的行)
60
33
 
61
34
  ---
62
35
 
63
- ### 审查总览
64
-
65
- [简要总结]
66
-
67
36
  ### 🔴 严重问题
68
37
 
69
38
  [带圈数字序号][问题描述]<br/>
70
- **文件及行号**:[完整文件路径:行号,如:src/main/java/com/example/UserService.java:87]<br/>
39
+ **文件及行号**:[文件路径:行号]<br/>
71
40
  **修改建议**:[修复建议 + 错误代码 + 正确示例]
72
41
 
73
42
  ### 🟡 警告
74
43
 
75
44
  [带圈数字序号][问题描述]<br/>
76
- **文件及行号**:[完整文件路径:行号]<br/>
45
+ **文件及行号**:[文件路径:行号]<br/>
77
46
  **修改建议**:[改进建议 + 代码示例]
78
47
 
79
48
  </REPORT>
80
49
  <LINE_INFO>
81
- [{"new_path":"文件路径","new_line":行号}]
50
+ [{"new_path":"文件路径","new_line":行号,"old_path":"文件路径","old_line":行号}]
82
51
  </LINE_INFO>
52
+
53
+ **说明**:
54
+ - 无问题时省略对应标题,但 `<LINE_INFO>` 必须输出(空数组:`[]`)
55
+ - 行号格式参考 @.claude/rules/code-review-rules.md 第 19 条
package/index.js CHANGED
@@ -124,9 +124,10 @@ class GitLabCodeReviewer {
124
124
  try {
125
125
  // 构造包含元数据的 diff 内容
126
126
  const diffContentWithMetadata = `=== File Information ===
127
+ Block Index: ${blockIndex}
128
+ Line Info: {"old_start":${diffObject.line_info?.old_start || 0},"old_count":${diffObject.line_info?.old_count || 0},"new_start":${diffObject.line_info?.new_start || 0},"new_count":${diffObject.line_info?.new_count || 0},"firstLineFirstChar":"${diffObject.line_info?.firstLineFirstChar || ''}"}
127
129
  New Path: ${diffObject.new_path || 'N/A'}
128
130
  Old Path: ${diffObject.old_path || 'N/A'}
129
- Block Index: ${blockIndex}
130
131
  === Diff Content ===
131
132
  ${diffObject.diff}`;
132
133
 
@@ -206,7 +207,7 @@ ${diffObject.diff}`;
206
207
  2. **每个模块不是必须的**:没有对应问题时,完全省略该模块(不输出标题)
207
208
  3. 必须以 <REPORT> 开始,以 </REPORT> 结束
208
209
  4. 如有严重问题,从diff头部行号数据计算真正出问题的行用来在<LINE_INFO>标签中构建问题对应的行号信息
209
- 4. 不要输出任何额外的解释、问候或总结文本`;
210
+ 5. 不要输出任何额外的解释、问候或总结文本`;
210
211
  //打印
211
212
  debugLog(`Claude命令: ${prompt}`);
212
213
  // 最多重试5次,直到结果包含"🤖 AI 代码审查结果"或达到最大重试次数
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "job51-gitlab-cr-node-skill-prompt-optimize",
3
- "version": "1.4.3",
3
+ "version": "1.4.5",
4
4
  "description": "GitLab merge request code review tool with AI-powered analysis and project context support",
5
5
  "main": "index.js",
6
6
  "bin": {