mcpField
C
coderabbit

coderabbit

github.com/paulrberg测试与质量102120 次安装今天更新
代码仓库

关于 coderabbit

用于分析 GitHub 拉取请求中的 CodeRabbit 反馈,或对本地差异运行 CodeRabbit CLI 审查。它帮助开发者获取评论并分类问题,整理修复计划。

主要功能

  1. 01获取 PR 审查评论
  2. 02分析行内及摘要反馈
  3. 03运行本地 CLI 审查
  4. 04分类问题并规划修复

适用场景

  1. 01整理 PR 中的 CodeRabbit 反馈
  2. 02提交 PR 前审查本地改动
  3. 03将审查发现整理为修复计划

安装

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

$npx skills add https://github.com/paulrberg/agent-skills --skill coderabbit

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

附带文件references/local-review.mdreferences/triage.md

详细介绍

CodeRabbit 审查问题分类

获取并分析 GitHub PR 中的 CodeRabbit 审查评论,或运行本地 CodeRabbit CLI 审查。默认模式从远程 PR 获取评论。使用 --local 针对本地差异运行 CLI。

参数

解析 $ARGUMENTS,查找:

  • <pr-number> — 整数 PR 编号
  • <pr-url> — GitHub PR URL(例如:https://github.com/owner/repo/pull/123),从路径中提取 PR 编号
  • --local — 切换到本地审查模式(见下文)
模式分发

如果 $ARGUMENTS 包含 --local,则移除该标记,并将剩余参数转发给 references/local-review.md。按照该工作流执行,不要继续以下内容。--local 之后的所有标志(--base、--base-commit、--type、--config)都会转发给本地工作流。

否则,继续执行以下 PR 评论分析工作流。

前置条件

按顺序运行以下检查。首次失败时停止。

1) 验证 GitHub CLI 身份
gh auth status

如果尚未通过身份验证,停止并告知用户运行 gh auth login。

2) 检测仓库
gh repo view --json owner,name --jq '"\(.owner.login)/\(.name)"'

将结果保存为 {owner}/{repo}。

3) 确定 PR 编号
  • 如果参数中提供了 PR 编号,则直接使用。
  • 如果提供了 PR URL,则从 URL 路径中提取编号。
  • 如果两者都未提供,则从当前分支自动检测:
gh pr view --json number --jq '.number' 2>/dev/null

如果自动检测失败,则停止并提示:“未找到当前分支对应的开放 PR。请提供 PR 编号或 URL,或使用 --local 进行本地审查。”

4) 验证 PR
gh pr view {pr_number} --json state,url --jq '"\(.state) \(.url)"'

如果命令失败,则表示 PR 不存在。报告并停止。否则,记录其状态(OPEN/MERGED/CLOSED)和 URL,供报告范围部分使用。

工作流

1) 获取 CodeRabbit 评论

从三个 GitHub API 端点获取评论,并筛选 CodeRabbit 机器人。对于大型 PR,使用 --paginate。机器人的登录名是 coderabbitai,但也可能显示为 coderabbitai[bot],因此使用 startswith 进行匹配。

演练/摘要评论(CodeRabbit 发布演练内容的 issue 评论):

gh api "repos/{owner}/{repo}/issues/{pr_number}/comments" \
  --paginate \
  --jq '[.[] | select(.user.login | startswith("coderabbitai"))]'

审查对象(顶层审查正文和状态):

gh api "repos/{owner}/{repo}/pulls/{pr_number}/reviews" \
  --paginate \
  --jq '[.[] | select(.user.login | startswith("coderabbitai"))]'

内联审查评论(带有文件路径和行号信息的文件级评论):

gh api "repos/{owner}/{repo}/pulls/{pr_number}/comments" \
  --paginate \
  --jq '[.[] | select(.user.login | startswith("coderabbitai"))]'

如果这三个端点中都没有找到 CodeRabbit 评论,则报告“PR #{pr_number} 中未找到 CodeRabbit 审查”,并停止。

2) 将评论解析为发现项

将原始 API 响应处理为标准化的发现项列表:

  • 来自内联评论(pulls/{pr}/comments):每条评论都成为一个发现项,包含 path(来自 .path)、line(来自 .line 或 .original_line)、body(评论文本)、diff_hunk(周边上下文)和 source: "inline"。这些是可执行发现项的主要来源。
  • 来自审查正文(pulls/{pr}/reviews):解析每条审查的 body,提取可执行事项。标记 source: "review"。
  • 来自 issue 评论(issues/{pr}/comments):解析演练内容中的文件级摘要和可执行事项。标记 source: "walkthrough"。

内联评论是可执行发现项的主要来源。审查摘要和演练评论可提供上下文,也可能指出未关联到特定行的其他可执行事项。

3) 分类发现项

加载 references/triage.md 并遵循通用分类流程——分类、判定、确认模糊项、生成修复计划并报告。

停止条件

遇到以下情况时停止并询问如何处理:

  • gh CLI 未通过身份验证。
  • PR 不存在或无权访问。
  • PR 中未找到 CodeRabbit 评论。
  • 自动检测失败且未提供 PR 编号。
  • 某项发现需要进行超出 PR 范围的架构更改。
  • 对关键路径(身份验证、付款、数据完整性)中的代码,分类置信度较低。

评论

支持 Markdown