@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.
- 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 +18 -0
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Excel 需求编号读取脚本(跨平台版)
|
|
4
|
+
用法: python read_excel_requirements.py --excel-path <path>
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import argparse
|
|
8
|
+
import os
|
|
9
|
+
import sys
|
|
10
|
+
from pathlib import Path
|
|
11
|
+
|
|
12
|
+
if sys.platform == "win32":
|
|
13
|
+
import io
|
|
14
|
+
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
|
|
15
|
+
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding="utf-8", errors="replace")
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def validate_excel_path(excel_path: str) -> bool:
|
|
19
|
+
if not Path(excel_path).exists():
|
|
20
|
+
print(f"[ERROR] Excel 文件不存在: {excel_path}")
|
|
21
|
+
return False
|
|
22
|
+
|
|
23
|
+
ext = Path(excel_path).suffix.lower()
|
|
24
|
+
if ext not in (".xlsx", ".xls"):
|
|
25
|
+
print(f"[ERROR] 不支持的文件格式: {ext}")
|
|
26
|
+
print("请使用 .xlsx 或 .xls 格式")
|
|
27
|
+
return False
|
|
28
|
+
|
|
29
|
+
return True
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def read_requirements(excel_path: str) -> list[str]:
|
|
33
|
+
try:
|
|
34
|
+
import openpyxl
|
|
35
|
+
except ImportError:
|
|
36
|
+
print("[ERROR] 缺少 openpyxl 库,请运行: pip install openpyxl")
|
|
37
|
+
sys.exit(1)
|
|
38
|
+
|
|
39
|
+
wb = openpyxl.load_workbook(excel_path)
|
|
40
|
+
ws = wb.active
|
|
41
|
+
|
|
42
|
+
rows = list(ws.iter_rows(values_only=True))
|
|
43
|
+
|
|
44
|
+
if not rows:
|
|
45
|
+
print("[ERROR] Excel 文件为空")
|
|
46
|
+
sys.exit(1)
|
|
47
|
+
|
|
48
|
+
header_row = rows[0]
|
|
49
|
+
|
|
50
|
+
requirement_col_index = None
|
|
51
|
+
keywords = ['requirement', 'req', 'id', 'number', 'no', '需求', '编号']
|
|
52
|
+
for idx, cell in enumerate(header_row):
|
|
53
|
+
if cell and any(kw in str(cell).lower() for kw in keywords):
|
|
54
|
+
requirement_col_index = idx
|
|
55
|
+
break
|
|
56
|
+
|
|
57
|
+
if requirement_col_index is None:
|
|
58
|
+
requirement_col_index = 0
|
|
59
|
+
|
|
60
|
+
requirements = []
|
|
61
|
+
for row in rows[1:]:
|
|
62
|
+
if row and len(row) > requirement_col_index:
|
|
63
|
+
value = row[requirement_col_index]
|
|
64
|
+
if value and str(value).strip():
|
|
65
|
+
req_id = str(value).strip()
|
|
66
|
+
if req_id and req_id != str(header_row[requirement_col_index]):
|
|
67
|
+
requirements.append(req_id)
|
|
68
|
+
|
|
69
|
+
return requirements
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def main():
|
|
73
|
+
parser = argparse.ArgumentParser(
|
|
74
|
+
description="Excel 需求编号读取工具(跨平台版)",
|
|
75
|
+
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
76
|
+
epilog="""
|
|
77
|
+
示例:
|
|
78
|
+
python read_excel_requirements.py --excel-path "D:\\需求编号.xlsx"
|
|
79
|
+
python read_excel_requirements.py -e "C:\\data\\requirements.xls"
|
|
80
|
+
"""
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
parser.add_argument(
|
|
84
|
+
"-e", "--excel-path",
|
|
85
|
+
required=True,
|
|
86
|
+
help="Excel 文件路径(.xlsx 或 .xls)"
|
|
87
|
+
)
|
|
88
|
+
|
|
89
|
+
args = parser.parse_args()
|
|
90
|
+
|
|
91
|
+
print("=" * 40)
|
|
92
|
+
print(" Excel 需求编号读取工具")
|
|
93
|
+
print("=" * 40)
|
|
94
|
+
print("")
|
|
95
|
+
|
|
96
|
+
if not validate_excel_path(args.excel_path):
|
|
97
|
+
sys.exit(1)
|
|
98
|
+
|
|
99
|
+
print("正在读取 Excel 文件...")
|
|
100
|
+
print(f" 文件路径: {args.excel_path}")
|
|
101
|
+
print("")
|
|
102
|
+
|
|
103
|
+
try:
|
|
104
|
+
requirements = read_requirements(args.excel_path)
|
|
105
|
+
except Exception as e:
|
|
106
|
+
print("")
|
|
107
|
+
print("=" * 40)
|
|
108
|
+
print(" [FAILED] 读取 Excel 文件失败")
|
|
109
|
+
print("=" * 40)
|
|
110
|
+
print("")
|
|
111
|
+
print(f"错误信息: {e}")
|
|
112
|
+
print("")
|
|
113
|
+
sys.exit(1)
|
|
114
|
+
|
|
115
|
+
if not requirements:
|
|
116
|
+
print("")
|
|
117
|
+
print("=" * 40)
|
|
118
|
+
print(" [FAILED] 未找到需求编号")
|
|
119
|
+
print("=" * 40)
|
|
120
|
+
print("")
|
|
121
|
+
print("建议: 确保 Excel 文件中包含需求编号列")
|
|
122
|
+
print(" 列名应包含关键词: 需求、编号、requirement、req、id、number、no")
|
|
123
|
+
print("")
|
|
124
|
+
sys.exit(1)
|
|
125
|
+
|
|
126
|
+
result = ','.join(requirements)
|
|
127
|
+
|
|
128
|
+
print("")
|
|
129
|
+
print("=" * 40)
|
|
130
|
+
print(" [SUCCESS] Excel 文件读取成功!")
|
|
131
|
+
print("=" * 40)
|
|
132
|
+
print("")
|
|
133
|
+
print(f"文件路径: {args.excel_path}")
|
|
134
|
+
print(f"需求编号数量: {len(requirements)}")
|
|
135
|
+
print("需求编号列表:")
|
|
136
|
+
for req in requirements:
|
|
137
|
+
print(f" - {req}")
|
|
138
|
+
print("")
|
|
139
|
+
print(result)
|
|
140
|
+
print("")
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
if __name__ == "__main__":
|
|
144
|
+
main()
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# GitLab 代码评审使用指南
|
|
2
|
+
|
|
3
|
+
## 📋 目录
|
|
4
|
+
- [首次配置](#首次配置)
|
|
5
|
+
- [使用方式](#使用方式)
|
|
6
|
+
- [常见问题](#常见问题)
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 首次配置
|
|
11
|
+
|
|
12
|
+
### 1. 获取 GitLab Personal Access Token
|
|
13
|
+
|
|
14
|
+
1. 登录您的 GitLab 账户
|
|
15
|
+
2. 点击右上角头像 → **Preferences** → **Access Tokens**
|
|
16
|
+
3. 点击 **Add new token**
|
|
17
|
+
4. 填写以下信息:
|
|
18
|
+
- **Token name**: 例如 "Code Review Skill"
|
|
19
|
+
- **Expiration date**: 设置过期时间(建议至少 90 天)
|
|
20
|
+
- **Scopes**: 勾选 `read_api` 和 `read_repository`
|
|
21
|
+
5. 点击 **Create personal access token**
|
|
22
|
+
6. **立即复制并保存 Token**(只显示一次)
|
|
23
|
+
|
|
24
|
+
### 2. 配置 Token
|
|
25
|
+
|
|
26
|
+
打开 `config/gitlab_config.json` 文件:
|
|
27
|
+
|
|
28
|
+
```json
|
|
29
|
+
{
|
|
30
|
+
"gitlab_token": "YOUR_GITLAB_TOKEN_HERE",
|
|
31
|
+
"default_branch": "main",
|
|
32
|
+
"git_path": "git"
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
将 `YOUR_GITLAB_TOKEN_HERE` 替换为您刚才复制的 Token:
|
|
37
|
+
|
|
38
|
+
```json
|
|
39
|
+
{
|
|
40
|
+
"gitlab_token": "glpat-xxxxxxxxxxxxxxxxxxxx",
|
|
41
|
+
"default_branch": "main",
|
|
42
|
+
"git_path": "git"
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
保存文件即可。
|
|
47
|
+
|
|
48
|
+
> ⚠️ **安全提醒**:
|
|
49
|
+
> - Token 以明文存储,请妥善保管
|
|
50
|
+
> - 不要将配置文件提交到版本控制系统
|
|
51
|
+
> - 定期更换 Token
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 使用方式
|
|
56
|
+
|
|
57
|
+
### 方式一:GitLab 远程仓库评审
|
|
58
|
+
|
|
59
|
+
**基本语法**:
|
|
60
|
+
```
|
|
61
|
+
评审 GitLab <GitLab仓库URL> <本地保存路径>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**示例**:
|
|
65
|
+
|
|
66
|
+
1. **评审公开仓库**:
|
|
67
|
+
```
|
|
68
|
+
评审 GitLab https://gitlab.com/group/project.git D:\code\review\project
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
2. **评审私有仓库**:
|
|
72
|
+
```
|
|
73
|
+
评审 GitLab https://gitlab.company.com/team/backend.git D:\code\backend
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
3. **指定分支**(可选,默认使用 main/master):
|
|
77
|
+
```
|
|
78
|
+
评审 GitLab https://gitlab.com/group/project.git D:\code\review --branch develop
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**执行流程**:
|
|
82
|
+
1. 自动从 GitLab 拉取代码到指定路径
|
|
83
|
+
2. 对拉取的代码执行完整的三步评审流程
|
|
84
|
+
3. 生成评审报告并保存到项目根目录
|
|
85
|
+
|
|
86
|
+
### 方式二:本地项目评审(原有功能)
|
|
87
|
+
|
|
88
|
+
**基本语法**:
|
|
89
|
+
```
|
|
90
|
+
项目级代码评审 @<本地项目路径>
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**示例**:
|
|
94
|
+
```
|
|
95
|
+
项目级代码评审 @D:\workspace\myproject
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
或直接在聊天中提及项目:
|
|
99
|
+
```
|
|
100
|
+
代码评审 @D:\workspace\myproject
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## 常见问题
|
|
106
|
+
|
|
107
|
+
### Q1: Token 配置后仍然提示未配置?
|
|
108
|
+
|
|
109
|
+
**A**: 检查以下几点:
|
|
110
|
+
1. 确认 `config/gitlab_config.json` 文件存在且格式正确
|
|
111
|
+
2. 确认 Token 没有多余的空格或引号
|
|
112
|
+
3. 重启 Lingma IDE 使配置生效
|
|
113
|
+
|
|
114
|
+
### Q2: 拉取代码失败,提示认证错误?
|
|
115
|
+
|
|
116
|
+
**A**:
|
|
117
|
+
1. 确认 Token 有效且未过期
|
|
118
|
+
2. 确认 Token 具有 `read_repository` 权限
|
|
119
|
+
3. 尝试在浏览器中访问该仓库,确认有访问权限
|
|
120
|
+
4. 如果是企业版 GitLab,确认 URL 地址正确
|
|
121
|
+
|
|
122
|
+
### Q3: 可以评审 GitHub 仓库吗?
|
|
123
|
+
|
|
124
|
+
**A**: 当前版本仅支持 GitLab。如需支持 GitHub,需要额外开发相应的拉取脚本。
|
|
125
|
+
|
|
126
|
+
### Q4: 拉取的代码会保留多久?
|
|
127
|
+
|
|
128
|
+
**A**: 代码会永久保存在您指定的路径下,除非您手动删除。建议定期清理不再需要的代码。
|
|
129
|
+
|
|
130
|
+
### Q5: 如何更新已拉取的代码?
|
|
131
|
+
|
|
132
|
+
**A**: 目前需要手动删除旧代码后重新拉取,或者进入目录执行 `git pull`。未来版本可能会增加自动更新功能。
|
|
133
|
+
|
|
134
|
+
### Q6: 评审大型仓库会很慢吗?
|
|
135
|
+
|
|
136
|
+
**A**:
|
|
137
|
+
- 代码拉取使用浅克隆(--depth 1),速度较快
|
|
138
|
+
- 评审时间取决于项目大小,大型项目(>500 文件)会自动优化,只深度评审核心文件
|
|
139
|
+
- 建议优先评审 P0 核心文件
|
|
140
|
+
|
|
141
|
+
### Q7: Token 泄露了怎么办?
|
|
142
|
+
|
|
143
|
+
**A**:
|
|
144
|
+
1. 立即在 GitLab 中撤销该 Token
|
|
145
|
+
2. 生成新的 Token 并更新配置
|
|
146
|
+
3. 检查是否有未授权的访问记录
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## 技术支持
|
|
151
|
+
|
|
152
|
+
如遇到其他问题,请:
|
|
153
|
+
1. 查看 `README.md` 获取详细文档
|
|
154
|
+
2. 查看 `QUICK_REFERENCE.md` 获取快速参考
|
|
155
|
+
3. 联系项目维护团队
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
**最后更新**: 2026-05-12
|
|
160
|
+
**版本**: v1.5.0
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# 代码评审 Skill - 快速参考
|
|
2
|
+
|
|
3
|
+
## 🚀 快速开始
|
|
4
|
+
|
|
5
|
+
### 触发方式
|
|
6
|
+
在 Lingma IDE 中输入以下任一命令:
|
|
7
|
+
- `项目级代码评审`
|
|
8
|
+
- `代码评审 @项目路径`
|
|
9
|
+
- `评审代码`
|
|
10
|
+
- `评审 GitLab https://gitlab.com/group/project.git D:\code\review` ⭐新增
|
|
11
|
+
|
|
12
|
+
### 评审范围
|
|
13
|
+
自动覆盖 **3大维度 25个评审点**:
|
|
14
|
+
- ✅ 代码质量(22点): 可读性、安全性、性能、并发等
|
|
15
|
+
- ✅ 功能一致性(1点): 需求实现完整性
|
|
16
|
+
- ✅ 架构先进性(2点): 技术栈时效性、扩展性
|
|
17
|
+
|
|
18
|
+
### GitLab 评审特殊说明 ⭐
|
|
19
|
+
- 首次使用需配置 `config/gitlab_config.json` 中的 Token
|
|
20
|
+
- 支持私有仓库评审(需配置有效 Token)
|
|
21
|
+
- 自动拉取指定分支代码(默认 main/master)
|
|
22
|
+
- 支持浅克隆以提高拉取速度
|
|
23
|
+
|
|
24
|
+
### 报告输出
|
|
25
|
+
- **文件名**: `{项目名称}项目级代码评审分析报告.md`
|
|
26
|
+
- **保存位置**: 被评审项目的根目录
|
|
27
|
+
- **格式**: Markdown (.md), UTF-8 编码
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## 📂 目录结构速查
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
code-review-skill/
|
|
35
|
+
├── SKILL.md ← 主入口(包含角色设定和流程)
|
|
36
|
+
├── README.md ← 详细说明
|
|
37
|
+
├── QUICK_REFERENCE.md ← 快速参考
|
|
38
|
+
├── config/ ← 配置文件目录 ⭐新增
|
|
39
|
+
│ └── gitlab_config.json ← GitLab 配置(Token、分支等)
|
|
40
|
+
├── scripts/ ← 脚本目录 ⭐新增
|
|
41
|
+
│ └── gitlab_clone.ps1 ← GitLab 代码拉取脚本
|
|
42
|
+
├── assets/
|
|
43
|
+
│ └── review_standards.md ← 评审标准库 ⭐
|
|
44
|
+
└── prompts/ ← 提示词模块
|
|
45
|
+
├── step1_project_preprocessing.md ← 项目预处理
|
|
46
|
+
├── step2_file_review.md ← 文件评审流程
|
|
47
|
+
├── file_review_prompt.md ← 文件评审详细提示词 ⭐新增
|
|
48
|
+
├── step3_report_generation.md ← 报告模板
|
|
49
|
+
└── output_requirements.md ← 输出要求
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 🛠️ 常用修改场景
|
|
55
|
+
|
|
56
|
+
### 1️⃣ 更新评审规则
|
|
57
|
+
**文件**: `assets/review_standards.md`
|
|
58
|
+
**示例**: 添加新的安全检查项或调整判定标准
|
|
59
|
+
|
|
60
|
+
### 2️⃣ 调整评审流程
|
|
61
|
+
**文件**: `prompts/step*.md`
|
|
62
|
+
- `step1`: 项目预处理(文件过滤、架构分析)
|
|
63
|
+
- `step2`: 文件级评审流程框架
|
|
64
|
+
- `file_review_prompt`: 文件评审详细提示词 ⭐核心
|
|
65
|
+
- `step3`: 报告生成(输出格式)
|
|
66
|
+
|
|
67
|
+
### 3️⃣ 修改报告样式
|
|
68
|
+
**文件**: `prompts/step3_report_generation.md`
|
|
69
|
+
**内容**: Markdown 报告模板
|
|
70
|
+
|
|
71
|
+
### 4️⃣ 更改触发词
|
|
72
|
+
**文件**: `SKILL.md` (顶部 YAML 区域)
|
|
73
|
+
**字段**: `trigger_words`
|
|
74
|
+
|
|
75
|
+
### 5️⃣ 配置 GitLab Token ⭐新增
|
|
76
|
+
**文件**: `config/gitlab_config.json`
|
|
77
|
+
**操作**: 将 `YOUR_GITLAB_TOKEN_HERE` 替换为您的 GitLab Personal Access Token
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## 📊 评审流程概览
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
用户触发
|
|
85
|
+
↓
|
|
86
|
+
[Step 0] 代码准备 ⭐新增
|
|
87
|
+
├─ GitLab URL → 自动拉取代码到本地
|
|
88
|
+
└─ 本地路径 → 直接使用
|
|
89
|
+
↓
|
|
90
|
+
[Step 1] 项目预处理
|
|
91
|
+
├─ 文件过滤(排除非核心文件)
|
|
92
|
+
├─ 架构基线提取(识别技术栈)
|
|
93
|
+
├─ 依赖关系分析(构建DAG)
|
|
94
|
+
└─ 文件优先级划分(P0/P1/P2)
|
|
95
|
+
↓
|
|
96
|
+
[Step 2] 文件级评审 (按 P0→P1 顺序)
|
|
97
|
+
├─ 2.1 上下文检索(最小闭包)
|
|
98
|
+
├─ 2.2 深度评审(25个评审点)
|
|
99
|
+
├─ 2.3 跨文件影响分析
|
|
100
|
+
├─ 2.4 架构合规校验
|
|
101
|
+
└─ 2.5 结果汇总
|
|
102
|
+
↓
|
|
103
|
+
[Step 3] 生成报告
|
|
104
|
+
└─ 结构化 Markdown 报告
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 💡 最佳实践
|
|
110
|
+
|
|
111
|
+
### Token 优化
|
|
112
|
+
- P0 文件: 深度评审(完整上下文)
|
|
113
|
+
- P1 文件: 中度评审(精简上下文)
|
|
114
|
+
- P2 文件: 轻度评审或跳过
|
|
115
|
+
|
|
116
|
+
### 大型项目 (>500文件)
|
|
117
|
+
- 优先评审 P0 核心文件
|
|
118
|
+
- 分批次执行,避免超时
|
|
119
|
+
- 重点关注安全和性能问题
|
|
120
|
+
|
|
121
|
+
### 动态语言 (Python/JS)
|
|
122
|
+
- 部分类型安全问题可能无法检测
|
|
123
|
+
- 建议结合静态分析工具使用
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## 🔧 故障排查
|
|
128
|
+
|
|
129
|
+
### Q: Skill 不生效?
|
|
130
|
+
A: 重启 Lingma IDE,确认文件已安装到正确目录
|
|
131
|
+
|
|
132
|
+
### Q: 评审结果不完整?
|
|
133
|
+
A: 检查项目是否过大,尝试只评审 P0 文件
|
|
134
|
+
|
|
135
|
+
### Q: 如何自定义评审范围?
|
|
136
|
+
A: 在触发时指定: `项目级代码评审 @项目路径 --focus=security`
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## 📞 更多信息
|
|
141
|
+
|
|
142
|
+
- 详细文档: 查看 `README.md`
|
|
143
|
+
- 重构说明: 查看 `REFACTORING_SUMMARY.md`
|
|
144
|
+
- 评审标准: 查看 `assets/review_standards.md`
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
**版本**: v1.5.0 (GitLab 代码拉取功能增强)
|
|
149
|
+
**最后更新**: 2026-05-12
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# 代码评审 Skill 目录结构说明
|
|
2
|
+
|
|
3
|
+
## 📁 目录结构
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
code-review-skill/
|
|
7
|
+
├── SKILL.md # 主 Skill 文件(核心入口,包含角色设定和执行流程)
|
|
8
|
+
├── README.md # 本说明文件
|
|
9
|
+
├── QUICK_REFERENCE.md # 快速参考卡片
|
|
10
|
+
├── config/ # 配置文件目录
|
|
11
|
+
│ └── gitlab_config.json # GitLab 配置(Token、分支等)
|
|
12
|
+
├── scripts/ # 脚本目录
|
|
13
|
+
│ └── gitlab_clone.ps1 # GitLab 代码拉取脚本
|
|
14
|
+
├── assets/ # 静态资源目录
|
|
15
|
+
│ └── review_standards.md # 评审标准库(25个评审点的详细规则)
|
|
16
|
+
└── prompts/ # 提示词模块目录(可独立维护)
|
|
17
|
+
├── step1_project_preprocessing.md # 第一步:项目预处理流程
|
|
18
|
+
├── step2_file_review.md # 第二步:文件级评审流程框架
|
|
19
|
+
├── file_review_prompt.md # 文件级深度评审详细提示词 ⭐
|
|
20
|
+
├── step3_report_generation.md # 第三步:报告生成模板
|
|
21
|
+
└── output_requirements.md # 输出要求与使用说明
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## 📝 文件说明
|
|
25
|
+
|
|
26
|
+
### 核心文件
|
|
27
|
+
|
|
28
|
+
- **SKILL.md**: Skill 的主入口文件,包含元数据(名称、版本、触发词)、角色设定和执行流程框架。
|
|
29
|
+
- **GITLAB_USAGE.md**: GitLab 代码评审使用指南(⭐新增)
|
|
30
|
+
|
|
31
|
+
### 配置文件
|
|
32
|
+
|
|
33
|
+
- **config/gitlab_config.json**: GitLab 配置,包含 Token、默认分支等设置(⭐新增)
|
|
34
|
+
- **scripts/gitlab_clone.ps1**: GitLab 代码拉取脚本(⭐新增)
|
|
35
|
+
|
|
36
|
+
### 评审标准
|
|
37
|
+
|
|
38
|
+
- **assets/review_standards.md**: 存放所有 25 个评审点的详细规则,包括:
|
|
39
|
+
- 评审点描述
|
|
40
|
+
- 一般性问题判定标准
|
|
41
|
+
- 严重问题判定标准
|
|
42
|
+
|
|
43
|
+
> 💡 更新评审规则时,只需修改此文件,无需改动其他文件。
|
|
44
|
+
|
|
45
|
+
### 提示词模块
|
|
46
|
+
|
|
47
|
+
- **prompts/step1_project_preprocessing.md**: 项目预处理的详细步骤(文件过滤、架构分析、依赖图构建、优先级划分)
|
|
48
|
+
- **prompts/step2_file_review.md**: 文件级评审的流程框架,引用 `file_review_prompt.md`
|
|
49
|
+
- **prompts/file_review_prompt.md**: ⭐ 文件级深度评审的详细提示词(243行),包含完整的评审指导、输出格式、评审原则等
|
|
50
|
+
- **prompts/step3_report_generation.md**: 最终报告的 Markdown 模板
|
|
51
|
+
- **prompts/output_requirements.md**: 输出质量要求和使用说明
|
|
52
|
+
|
|
53
|
+
## 🔄 模块化优势
|
|
54
|
+
|
|
55
|
+
### 1. **易于维护**
|
|
56
|
+
- 每个模块职责单一,修改时不影响其他部分
|
|
57
|
+
- 评审标准独立存放,更新规则无需改动流程逻辑
|
|
58
|
+
|
|
59
|
+
### 2. **便于扩展**
|
|
60
|
+
- 新增评审维度:在 `review_standards.md` 中添加即可
|
|
61
|
+
- 调整评审流程:修改对应的 `step*.md` 文件
|
|
62
|
+
- 优化报告格式:仅修改 `step3_report_generation.md`
|
|
63
|
+
|
|
64
|
+
### 3. **清晰可读**
|
|
65
|
+
- 主文件简洁明了,聚焦整体流程
|
|
66
|
+
- 详细内容分散在各模块,避免单文件过长
|
|
67
|
+
- 模块命名直观,快速定位需要修改的内容
|
|
68
|
+
|
|
69
|
+
### 4. **复用性强**
|
|
70
|
+
- 各模块可独立测试和优化
|
|
71
|
+
- 评审标准可在其他项目中复用
|
|
72
|
+
- 提示词模块可根据需要组合使用
|
|
73
|
+
|
|
74
|
+
## 🛠️ 修改指南
|
|
75
|
+
|
|
76
|
+
### 更新评审标准
|
|
77
|
+
编辑 `assets/review_standards.md`,添加或修改评审点规则。
|
|
78
|
+
|
|
79
|
+
### 调整评审流程
|
|
80
|
+
根据要修改的步骤,编辑对应的 `prompts/step*.md` 文件。
|
|
81
|
+
|
|
82
|
+
### 修改报告格式
|
|
83
|
+
编辑 `prompts/step3_report_generation.md` 中的报告模板。
|
|
84
|
+
|
|
85
|
+
### 更改触发词或元数据
|
|
86
|
+
编辑 `SKILL.md` 顶部的 YAML frontmatter 部分。
|
|
87
|
+
|
|
88
|
+
## 📊 报告输出
|
|
89
|
+
|
|
90
|
+
- **文件名**: `{项目名称}项目级代码评审分析报告.md`
|
|
91
|
+
- **保存位置**: 被评审项目的根目录
|
|
92
|
+
- **格式**: Markdown (.md)
|
|
93
|
+
- **编码**: UTF-8
|
|
94
|
+
- **内容**: 包含项目概览、问题清单、改进建议、架构评估等完整评审结果
|
|
95
|
+
|
|
96
|
+
**示例**:
|
|
97
|
+
- 评审 `user-service` 项目 → 生成 `user-service/user-service项目级代码评审分析报告.md`
|
|
98
|
+
- 评审 `order-management` 项目 → 生成 `order-management/order-management项目级代码评审分析报告.md`
|
|
99
|
+
|
|
100
|
+
## 📦 安装与使用
|
|
101
|
+
|
|
102
|
+
### 首次使用配置
|
|
103
|
+
|
|
104
|
+
**GitLab Token 配置**(仅 GitLab 评审需要):
|
|
105
|
+
1. 打开 `config/gitlab_config.json` 文件
|
|
106
|
+
2. 将 `YOUR_GITLAB_TOKEN_HERE` 替换为您的 GitLab Personal Access Token
|
|
107
|
+
3. 保存文件
|
|
108
|
+
|
|
109
|
+
> ⚠️ **安全提醒**:Token 以明文存储,请妥善保管配置文件,不要提交到版本控制系统
|
|
110
|
+
|
|
111
|
+
### 使用方式
|
|
112
|
+
|
|
113
|
+
**方式一:GitLab 远程仓库评审**
|
|
114
|
+
```bash
|
|
115
|
+
评审 GitLab https://gitlab.com/group/project.git D:\code\review
|
|
116
|
+
```
|
|
117
|
+
- 自动从 GitLab 拉取代码到指定路径
|
|
118
|
+
- 然后执行完整的代码评审流程
|
|
119
|
+
- 支持私有仓库(需配置 Token)
|
|
120
|
+
|
|
121
|
+
**方式二:本地项目评审**
|
|
122
|
+
```bash
|
|
123
|
+
项目级代码评审 @D:\workspace\myproject
|
|
124
|
+
```
|
|
125
|
+
- 直接对本地已有项目进行评审
|
|
126
|
+
- 保持原有功能不变
|
|
127
|
+
|
|
128
|
+
### 更多文档
|
|
129
|
+
|
|
130
|
+
- **GitLab 使用指南**: 查看 `GITLAB_USAGE.md` 获取详细的 GitLab Token 配置和使用说明
|
|
131
|
+
- **快速参考**: 查看 `QUICK_REFERENCE.md` 获取常用命令和故障排查
|
|
132
|
+
- **评审标准**: 查看 `assets/review_standards.md` 了解 25 个评审点的详细规则
|
|
133
|
+
|
|
134
|
+
参见主目录下的安装说明文档。
|