mcpField
P
pr-review

pr-review

github.com/significant-gravitas测试与质量187.8k67 次安装2 天前更新
代码仓库

关于 pr-review

面向 Significant-Gravitas/AutoGPT 贡献者的 PR 审查技能,涵盖查找 PR、检查描述与差异,并发布分级行内反馈。

主要功能

  1. 01用 gh 查找 PR
  2. 02检查 Why/What/How 描述
  3. 03审查代码与安全性
  4. 04核对测试和项目规范
  5. 05发布分级行内评论

适用场景

  1. 01审查 AutoGPT 中的 PR
  2. 02找出 PR 背景信息缺失
  3. 03检查变更的安全性与正确性

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/significant-gravitas/autogpt --skill pr-review

安装后在 Claude Code 中输入/pr-review确认已加载。

详细介绍

PR 审查

查找 PR

gh pr list --head $(git branch --show-current) --repo Significant-Gravitas/AutoGPT
gh pr view {N}

阅读 PR 描述

阅读代码前,先从 PR 描述中了解原因、内容和方式:

gh pr view {N} --json body --jq '.body'

每个 PR 都应采用「Why / What / How」结构。如果缺少其中任何一项,请将其作为反馈指出。

阅读差异

gh pr diff {N}

获取现有审查评论

发布任何评论前,先获取现有的行内评论,以免重复:

gh api repos/Significant-Gravitas/AutoGPT/pulls/{N}/comments --paginate
gh api repos/Significant-Gravitas/AutoGPT/pulls/{N}/reviews

检查内容

描述质量: PR 描述是否涵盖 Why(动机/问题)、What(变更概述)和 How(方案/实现细节)?如果有任何缺失,请要求补充——不了解问题和意图,就无法评估方案。

正确性: 逻辑错误、差一错误、遗漏边界情况、竞态条件(文件访问、扣费中的 TOCTOU)、错误处理缺失、异步正确性(遗漏 await、未关闭资源)。

安全性: 边界处的输入校验、无注入风险(命令、XSS、SQL)、不记录机密信息、清理文件路径(在错误消息中使用 os.path.basename())。

代码质量: 遵循后端/前端 CLAUDE.md 文件和根目录 AGENTS.md 中的规则,包括其中的「面向用户的文案」部分(面向用户的文字应使用 workflow,不能使用 agent 或 graph)。

架构: DRY、单一职责、模块化函数。FastAPI 身份验证使用 Security() 还是 Depends()。SSE 事件使用 data:,心跳使用 : comment。Redis 管道使用 transaction=True。

测试: 是否覆盖边界情况、测试文件是否与代码放在一起:后端使用 *_test.py,前端使用 __tests__/;mock 的目标应是符号使用的位置,而不是定义的位置;异步代码使用 AsyncMock。

输出格式

每条评论都必须以 🤖 和严重级别徽标开头:

级别徽标含义
阻塞🔴 **Blocker**合并前必须修复
应修复🟠 **Should Fix**重要改进
可改进🟡 **Nice to Have**次要建议
小问题🔵 **Nit**风格/措辞

示例:🤖 🔴 **Blocker**: 缺少对 X 的错误处理——建议使用 try/except 包装。

发布行内评论

对于每个发现,都在 PR 上发布行内评论(不要只写本地报告):

# Get the latest commit SHA for the PR
COMMIT_SHA=$(gh api repos/Significant-Gravitas/AutoGPT/pulls/{N} --jq '.head.sha')

# Post an inline comment on a specific file/line
gh api repos/Significant-Gravitas/AutoGPT/pulls/{N}/comments \
  -f body="🤖 🔴 **Blocker**: <description>" \
  -f commit_id="$COMMIT_SHA" \
  -f path="<file path>" \
  -F line=<line number>

评论

支持 Markdown