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 @@`
|
|
145
|
-
|
|
146
|
-
> -
|
|
147
|
-
|
|
148
|
-
> -
|
|
149
|
-
|
|
150
|
-
> -
|
|
151
|
-
> -
|
|
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:
|
|
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
|
-
-
|
|
13
|
-
- Old Path
|
|
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.
|
|
17
|
-
-
|
|
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
|
-
-
|
|
31
|
-
-
|
|
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
|
-
**文件及行号**:[
|
|
39
|
+
**文件及行号**:[文件路径:行号]<br/>
|
|
71
40
|
**修改建议**:[修复建议 + 错误代码 + 正确示例]
|
|
72
41
|
|
|
73
42
|
### 🟡 警告
|
|
74
43
|
|
|
75
44
|
[带圈数字序号][问题描述]<br/>
|
|
76
|
-
**文件及行号**:[
|
|
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
|
-
|
|
210
|
+
5. 不要输出任何额外的解释、问候或总结文本`;
|
|
210
211
|
//打印
|
|
211
212
|
debugLog(`Claude命令: ${prompt}`);
|
|
212
213
|
// 最多重试5次,直到结果包含"🤖 AI 代码审查结果"或达到最大重试次数
|
package/package.json
CHANGED