关于 gitlab-code-review
gitlab-code-review 是用于审查已配置自托管 GitLab 实例中合并请求的技能,可分析变更、流水线和讨论并生成可执行反馈;发布评论前须先征求确认。
主要功能
- 01获取合并请求详情和差异
- 02检查代码质量、安全性和性能
- 03查看讨论和流水线状态
- 04生成按优先级分类的审查报告
- 05发布评论前征求确认
适用场景
- 01合并前评估合并请求
- 02查找与 GitLab 问题相关的合并请求
- 03检查流水线失败和已有反馈
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ dedalus-erp-pas/ foundation-skills --skill gitlab-code-review安装后在 Claude Code 中输入/gitlab-code-review确认已加载。
详细介绍
GitLab 代码审查
全面审查 GitLab 合并请求,针对代码质量、安全性、性能和最佳实践提供可操作的反馈。
GitLab 实例配置
此技能配置为使用自托管的 GitLab 实例:
- GitLab URL: https://gitlab-erp-pas.dedalus.lan
- 所有项目标识符、URL 和引用都应使用此自托管实例
- 请确保已配置访问此 GitLab 服务器所需的凭据
何时使用此技能
在以下情况下启用此技能:
- 用户输入“review”或“code review”(有无斜杠命令均可)
- 用户输入“review MR-123”或“review !123”以审查特定合并请求
- 用户输入“review ISSUE-ID”(例如,“review #456”)以审查与 GitLab 问题关联的合并请求
- 用户要求审查合并请求
- 合并前分析代码变更
- 评估代码质量
- 检查安全漏洞或性能问题
- 审查合并请求差异
关键规则
重要:审查合并请求前,务必确认 project_id
务必以提问的方式提供建设性反馈,而非发出指令
只审查合并请求引入的变更,不审查无关代码
工作流
1. 确定合并请求
已提供合并请求 IID
如果已提供合并请求 IID(例如,“review !123”或“review MR 123”):
- 从用户输入中提取 MR IID
- 确认项目上下文(如果不明确,则询问用户)
- 使用
glab mr view <iid>获取合并请求详情
已提供 GitLab 问题 ID
如果已提供 GitLab 问题 ID(例如,“review #456”):
- 使用
glab issue view <iid>获取问题详情,了解上下文 - 使用
glab mr list --search "<issue reference>"查找相关合并请求 - 如果找到多个 MR,请用户选择要审查的 MR
- 继续审查选定的 MR
未指定合并请求
如果未指定 MR(例如,只输入“review”):
- 使用
glab mr list --state opened列出最近未关闭的合并请求 - 向用户展示列表
- 请用户选择要审查的 MR
2. 收集合并请求上下文
自托管 GitLab 实例: https://gitlab-erp-pas.dedalus.lan
使用 glab mr view <iid> 获取:
- 标题和说明
- 源分支和目标分支
- 作者信息
- 状态(打开、已合并、已关闭)
- 标签和里程碑
- 审批状态
- 流水线状态
- 用于准确比较差异的
diff_refs(base_sha、head_sha、start_sha)
提取关键信息:
Project: namespace/project
MR: !123 - "Feature: Add user authentication"
Author: @username
Source: feature/auth -> Target: main
Status: Open | Pipeline: Passed | Approvals: 1/2
3. 分析变更
获取文件变更
使用 glab mr diff <iid> 获取:
- 变更文件列表
- 每个文件的新增和删除内容
- 每个文件的差异内容
分页: 如果变更文件较多,差异输出可能很长,请分段审查。
获取详细文件内容
对于复杂变更,使用 git show <ref>:<file_path> 来:
- 查看完整的文件上下文
- 了解周围代码
- 检查是否与现有模式一致
参数:
<ref>:使用源分支或 diff_refs 中的 head_sha<file_path>:文件路径
分析提交
使用 git log --oneline <source_branch> 列出提交,然后使用 git show <sha> 来:
- 了解提交历史
- 审查单个提交的变更
- 检查提交消息质量
4. 检查现有讨论
使用 glab api /projects/:id/merge_requests/:iid/discussions 来:
- 查看已有反馈和讨论
- 避免重复评论
- 了解正在进行的对话
- 检查是否存在未解决的讨论串
5. 检查流水线状态
使用 glab ci list 和 glab ci view <pipeline_id> 来:
- 验证 CI/CD 流水线状态
- 检查失败的作业
- 查看测试结果
如果流水线失败,使用 glab ci trace <job_id> 了解失败原因。
6. 执行全面代码审查
全面审查仅限此合并请求引入的变更。
代码质量评估
- 代码风格和格式的一致性
- 变量和函数的命名规范
- 代码组织和结构
- 是否遵循 DRY(不要重复自己)原则
- 抽象层级是否恰当
技术审查
- 逻辑正确性和边界情况
- 错误处理和验证
- 性能影响
- 安全注意事项(输入验证、SQL 注入、XSS 等)
- 资源管理(内存泄漏、连接处理)
- 适用时的并发问题
最佳实践检查
- 设计模式的使用
- 是否遵循 SOLID 原则
- 对测试覆盖率的影响
- 文档完整性
- API 一致性
- 向后兼容性
依赖项和集成
- 新增的依赖项
- 对现有接口的破坏性更改
- 对系统其他部分的影响
- 数据库迁移要求
7. 生成审查报告
创建一份结构化的代码审查报告,包含:
-
执行摘要:变更的总体概述和整体评估
-
统计信息:
- 变更的文件数、添加/删除的行数
- 已审查的提交数
- 发现的严重问题
-
优点:完成得好的部分
-
按优先级分类的问题:
- 🔴 严重:合并前必须修复(错误、安全问题)
- 🟡 重要:应该处理(性能、可维护性)
- 🟢 建议:锦上添花的改进
-
详细发现:针对每个问题,包含:
- 文件和行号
- 以问题形式提出的关注点
- 说明提问原因的背景信息
- 有帮助时提供代码示例
-
安全审查:具体的安全注意事项
-
性能审查:性能影响
-
测试建议:应添加哪些测试
-
文档需求:应更新哪些文档
8. 在合并请求中添加评论(可选)
重要:添加评论到 MR 前,请先询问用户
如果用户希望直接在 MR 中添加反馈:
一般评论
使用 glab mr note <iid> --message "<comment>" 添加一般评论:
<iid>:MR 内部 ID<comment>:Markdown 格式的评论内容
针对代码行的讨论
使用 glab api POST /projects/:id/merge_requests/:iid/discussions 添加针对特定代码的反馈,并提供:
body:讨论内容position:包含差异位置详情的对象:base_sha:来自 diff_refshead_sha:来自 diff_refsstart_sha:来自 diff_refsnew_path:文件路径new_line:新增代码的行号old_path:文件路径(针对修改)old_line:已删除代码的行号
反馈风格:提问,而非直接指示
所有反馈都应以问题的形式提出,而不是下达指令。 这样有助于促进对话,并尊重作者所掌握的背景信息。
示例
❌ 不要这样写:
- “这里应该使用提前返回”
- “这里需要错误处理”
- “将这段代码提取到单独的函数中”
- “添加空值检查”
✅ 可以这样写:
- “这里能否通过提前返回来简化?”
- “如果这个 API 调用失败会怎样?添加错误处理是否有帮助?”
- “将这段代码提取为独立函数以便复用,是否合适?”
- “是否存在这可能为空的情况?如果存在,我们应该如何处理?”
为什么提问效果更好
- 作者可能掌握你不了解的背景信息
- 提问能引导对方解释,而不是让对方产生防备
- 提问承认审查者的理解可能存在不确定性
- 提问能引发对话,而不是变成待办清单
审查报告模板
# Code Review: !{MR_IID} - {MR_TITLE}
## Executive Summary
{Brief overview of changes and overall assessment}
## Merge Request Details
- **Project**: {project_path}
- **Author**: @{author}
- **Source Branch**: {source_branch} → **Target**: {target_branch}
- **Pipeline Status**: {status}
- **Approvals**: {current}/{required}
## Statistics
| Metric | Count |
|--------|-------|
| Files Changed | {count} |
| Lines Added | +{additions} |
| Lines Removed | -{deletions} |
| Commits | {commit_count} |
## Strengths
- {strength_1}
- {strength_2}
## Issues Found
### 🔴 Critical
{critical_issues_or_none}
### 🟡 Important
{important_issues_or_none}
### 🟢 Suggestions
{suggestions_or_none}
## Security Review
{security_findings}
## Performance Review
{performance_findings}
## Testing Recommendations
- {test_recommendation_1}
- {test_recommendation_2}
## Documentation Needs
- {doc_need_1}
## Verdict
{APPROVED | CHANGES_REQUESTED | NEEDS_DISCUSSION}
示例
示例 1:审查特定合并请求
User: Review !42 in namespace/project
Assistant actions:
1. glab mr view 42 — fetch MR details
2. glab mr diff 42 — get file changes
3. glab api /projects/:id/merge_requests/42/discussions — check existing feedback
4. glab ci list — check CI status
5. Analyze changes and generate report
6. Present review to user
7. Ask if user wants comments added to the MR
示例 2:审查与某个问题相关的 MR
User: Review the MR for issue #123
Assistant actions:
1. glab issue view 123 — fetch issue details
2. glab mr list --search "#123" — find related MRs
3. Present found MRs and ask user to confirm
4. Proceed with code review workflow
示例 3:列出待审查的开放 MR
User: Show me open merge requests to review
Assistant actions:
1. glab mr list --state opened — list open MRs
2. Present list with key details (title, author, pipeline status)
3. Ask user which MR to review
重要注意事项
- 仅审查此合并请求中的更改——不要评论未更改的代码
- 以提问的方式提出反馈,促进交流
- 提供具有建设性且具体的反馈
- 为改进建议提供代码示例
- 肯定良好的实践和改进
- 明确问题优先级(严重 > 重要 > 建议)
- 考虑更改的背景和目的
- 结束审查前检查流水线状态
- 查看现有讨论,避免重复反馈
- 向合并请求添加评论前务必先征求同意
- 如果链接了问题单,请确认审查涵盖验收标准