| name | openeuler-pr-review |
| description | This skill should be used when the user asks to "review PR", "openEuler review", "check PR", "PR review", "openeuler PR", "atomgit PR", or discusses openEuler code contribution, pull request analysis, and code review automation. It supports both automated checks and AI-assisted detailed review. |
| version | 1.3.0 |
openEuler PR 审查 Skill
自动审查 openEuler(AtomGit)代码 PR,提供专业的代码审查建议,并发布审查报告到 PR 评论区。
⚠️ 重要: 审查任务必须完整执行所有步骤,只有成功发布到 PR 评论区才算任务完成。
⚠️ AI 审查执行流程(必须完整执行)
以下步骤必须全部完成才算任务结束,不可跳过任何步骤:
步骤 1: 获取 PR 变更 ✅
curl -H "Authorization: Bearer $ATOMGIT_TOKEN" \
"https://api.atomgit.com/api/v5/repos/{owner}/{repo}/pulls/{number}"
curl -H "Authorization: Bearer $ATOMGIT_TOKEN" \
"https://api.atomgit.com/api/v5/repos/{owner}/{repo}/pulls/{number}/files"
步骤 2: 分析代码变更 ✅
- 对每个文件下载原始 diff 内容
- 分析代码变更的目的、正确性、安全性
- 评估代码风格和错误处理
- 检查门禁状态(CI/CLA/冲突)
步骤 3: 生成结构化报告 ✅
按"审查报告模板"生成 Markdown 格式报告,包含:
- PR 信息(仓库、编号、标题、作者、状态、分支)
- 门禁状态检查表
- 统计信息(文件变更数、代码行数)
- 逐个文件审查(变更描述 + 审查意见)
- 代码质量评分(正确性、内存安全、错误处理等)
- 发现问题分级(Critical/High/Medium/Low)
- 合并建议(可以合并/需要修复/拒绝)
步骤 4: 发布到 PR 评论区 ⬅️ 必须执行,不可跳过!
curl -s -X POST \
-H "Authorization: Bearer $ATOMGIT_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"body\": $(cat review_report.md | jq -Rs .)}" \
"https://api.atomgit.com/api/v5/repos/{owner}/{repo}/pulls/{number}/comments"
步骤 5: 向用户汇报结果 ✅
必须包含:
- 评论发布成功确认
- comment ID 或评论链接
- 审查摘要
任务完成标准
只有满足以下所有条件才算任务完成:
⚠️ 如果没有 comment ID,说明任务未完成!
快速开始
export ATOMGIT_TOKEN="your-private-token"
review-pr.sh src-openeuler kernel 2451
review-pr.sh src-openeuler kernel 2451 --check-gating
review-pr.sh src-openeuler kernel 2451 --interactive
review-pr.sh src-openeuler kernel 2451 --output report.md
review-pr.sh src-openeuler kernel 2451 --no-post-review
review-pr.sh src-openeuler kernel 2451 --check-gating --output report.md
功能
1. 自动审查
- 代码风格检查
- 安全漏洞检测
- 潜在 bug 分析
- 性能优化建议
2. 生成报告
- 结构化审查报告
- 问题分级(Critical/High/Medium/Low)
- 可行动的建议
- Markdown/JSON 导出
3. 交互式审查
- 逐步引导审查流程
- 针对特定文件深入分析
- 代码讨论和建议
4. CI 集成
- 命令行友好输出
- JSON 格式支持
- 退出码控制
- 可配置审查规则
- 门禁状态检查
- 自动发布 PR 评论
5. 门禁检查
- 检查 PR 状态(open/closed/merged)
- 检查 PR 标签中的 CI 状态(ci_failed/ci_passed)
- 检查 mergeable_state(代码冲突、分支检查等)
- 检查合并状态
- 自动化合入判断
审查报告模板
# openEuler PR 审查报告
## PR 信息
- **仓库**: `owner/repo`
- **PR 编号**: #123
- **标题**: PR 标题
- **作者**: @username
- **状态**: open/closed/merged
- **分支**: branch → target
## 统计信息
- **文件变更**: N 个文件
- **代码行数**: +N -N
## 变更概述
简要描述 PR 的整体目的和范围...
## 逐个文件审查
### 1. path/to/file.c - 补丁标题
**变更**: 描述代码变更
**审查**: ✅ 正确 / ⚠️ 有问题 / 🔴 严重问题
- 具体分析...
- 影响评估...
### 2. path/to/file2.c - 补丁标题
...
## 审查结果
### 代码质量
| 项目 | 评分 |
|------|------|
| 正确性 | ✅ 优秀 / 良好 / 一般 |
| 内存安全 | ✅ 优秀 / ... |
| 错误处理 | ... |
| 代码风格 | ... |
| 测试覆盖 | ... |
### 发现的问题
| 级别 | 数量 |
|------|------|
| Critical | N |
| High | N |
| Medium | N |
| Low | N |
## 建议
### 建议:**可以合并** / **需要修复** / **拒绝** ✅ / ⚠️ / 🔴
**理由**:
1. ...
2. ...
**注意事项**:
- ...
审查检查清单
门禁检查
基础检查
版本管理
安全检查
内核特定(kernel)
文档检查
AtomGit API 使用
认证设置
export ATOMGIT_TOKEN="your-private-token"
API 端点
curl -H "Authorization: Bearer $ATOMGIT_TOKEN" \
"https://api.atomgit.com/api/v5/repos/{owner}/{repo}/pulls/{number}"
curl -H "Authorization: Bearer $ATOMGIT_TOKEN" \
"https://api.atomgit.com/api/v5/repos/{owner}/{repo}/pulls/{number}/labels"
curl -H "Authorization: Bearer $ATOMGIT_TOKEN" \
"https://api.atomgit.com/api/v5/repos/{owner}/{repo}/pulls/{number}/files"
curl -X POST -H "Authorization: Bearer $ATOMGIT_TOKEN" \
"https://api.atomgit.com/api/v5/repos/{owner}/{repo}/pulls/{number}/comments"
审查规则
Critical 级别
- 安全漏洞(缓冲区溢出、UAF 等)
- 内存泄漏
- 死锁风险
High 级别
Medium 级别
Low 级别
输出格式
终端输出
╔══════════════════════════════════════════╗
║ openEuler PR 审查报告 ║
║ src-openeuler/kernel#2451 ║
╚══════════════════════════════════════════╝
=== Gating Status Check ===
PR Status:
State: open
Merged: false
Checking CI status for commit: 606448f4...
CI Checks:
Total: 8
Passing: 8
Failing: 0
Pending: 0
🟢 Gating: PASSED - All CI checks passed
📊 统计信息
文件变更: 15
代码行数: +342 -128
审查结果: 2 Critical, 5 High, 12 Medium, 23 Low
🚨 关键问题
[CRITICAL] kernel/sched/core.c:1234 - 潜在的空指针解引用
[CRITICAL] mm/mmap.c:567 - 内存泄漏风险
✅ 建议通过(需修复关键问题)
Markdown 报告
# openEuler PR 审查报告
## PR 信息
- 仓库: src-openeuler/kernel
- 编号: #2451
- 标题: Improve scheduler performance
- 作者: @user
- 分支: feature/sched-opt → master
## 审查结果
### Critical (2)
...
### High (5)
...
PR 评论输出(默认自动发布)
## openEuler PR Review Report
### PR Information
- **Repository**: `src-openeuler/kernel`
- **PR Number**: #2451
- **Title**: Improve scheduler performance
- **Author**: @user
- **State**: open
- **Branch**: feature/sched-opt → master
### Statistics
- **Files changed**: 15
- **Lines added**: +342
- **Lines removed**: -128
### Review Summary
⚠️ 3 potential issues found in automated check.
**Recommendation**: Review flagged items before approval.
### Changed Files
- `kernel/sched/core.c` (100 additions, 50 deletions)
...
---
*This review was generated by openEuler PR Review Tool*
实现步骤
当你需要执行 PR 审查时:
-
验证环境
- 检查
ATOMGIT_TOKEN 是否设置
- 验证网络连接到 AtomGit
-
获取 PR 信息
- 使用
curl 调用 AtomGit API
- 获取 PR 元数据和 diff
-
分析代码变更
-
生成报告
-
发布评论
- 调用 AtomGit API 发布评论
- 确认发布成功(获取 comment ID)
工具使用
代码分析工具
- 使用
grep 搜索特定模式
- 使用
diffstat 分析变更统计
- 使用 AI 模型理解代码上下文
diff 获取方式
curl -H "Authorization: Bearer $ATOMGIT_TOKEN" \
"https://api.atomgit.com/api/v5/repos/{owner}/{repo}/pulls/{number}/files" | \
jq -r '[].diff'
故障排查
API 调用失败
- 检查 token 是否有效
- 验证仓库和 PR 编号
- 检查网络连接
审查不准确
- 提供更多上下文信息
- 使用交互式模式深入分析
- 自定义审查规则
参考资源