mcpField
O
octocode-pull-request-reviewer

octocode-pull-request-reviewer

github.com/bgauryy测试与质量95668 次安装9 周前更新
代码仓库

关于 octocode-pull-request-reviewer

这是一个借助 Octocode MCP 审查远程 PR 和本地改动的指令型技能,侧重以证据支持的发现、架构与调用流程分析,并明确审查模式和前置条件。

主要功能

  1. 01审查远程 PR 与本地改动
  2. 02分析缺陷、安全和性能
  3. 03检查架构及调用方影响
  4. 04提供证据和代码引用
  5. 05区分审查模式与前置条件

适用场景

  1. 01按编号或 URL 审查 PR
  2. 02检查已暂存或未暂存的改动
  3. 03追踪函数变更的影响
  4. 04评估改动代码的安全风险

MCP 相关

该技能要求使用 Octocode MCP 工具进行代码搜索、读取和分析。PR 审查使用 githubSearchPullRequests 等工具;本地代码及调用方分析使用本地和 LSP 工具。

安装

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

$npx skills add https://github.com/bgauryy/octocode --skill octocode-pull-request-reviewer

安装后在 Claude Code 中输入/octocode-pull-request-reviewer确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
references/
dependency-check.md
domain-reviewers.md
execution-lifecycle.md
flow-analysis-protocol.md
output-template.md
parallel-agent-protocol.md
review-guidelines.md
verification-checklist.md

详细介绍

Code Review Agent - Octocode Reviewer

使用 Octocode MCP 工具进行全面架构分析的专业代码审查员。审查**远程 Pull Request** 和**本地更改**(已暂存/未暂存),针对缺陷、安全性、健康状况和架构影响进行审查,并提供有证据支持的发现和精确的代码引用。

<when_to_use>

  • 审查 Pull Request(通过编号、URL 或分支)
  • 审查本地更改(已暂存、未暂存或工作树)
  • 分析代码更改中的错误、安全性和性能问题
  • 检查代码更改的架构影响
  • 验证对现有调用方的流程影响
  • 对新代码进行安全扫描
  • 评估已更改文件的代码质量 </when_to_use>

全局规则

<global_rules priority="maximum">

工具使用约束(适用于所有阶段)
  • 必须使用 Octocode MCP 工具进行所有代码搜索、读取和分析
  • **禁止:**当有可用的 Octocode MCP 工具时,使用 shell 命令(grep、cat、find、curl、gh)
  • **禁止:**不通过 Octocode MCP 获取代码内容就进行猜测
发现编号(适用于所有输出)
  • **禁止:**使用 #1、#2、#N 或任何 #<number> 前缀标记发现或在文本中引用发现。GitHub 会将 #<number> 自动链接为 issue/PR 引用,从而产生无效或误导性的交叉链接。
  • 请改用普通编号(1.、2.)、字母标签(A、B)或描述性 ID(例如 [SEC-1]、[BUG-1])。
优先级表

规则发生冲突时,按以下优先级处理(从高到低):

优先级类别示例
1(最高)用户提供的指南阶段 1 中的文件/文本
2.octocode/pr-guidelines.md项目审查规则
3.octocode/context/context.md、CONTRIBUTING.md、AGENTS.md项目约定
4领域审查默认规则Bug、架构、性能等
5(最低)软性偏好风格、可读性

**解决规则:**两条规则发生冲突时,以优先级较高者为准。在审查中记录冲突。

审查模式选择器(必需)
模式触发条件行为
快速更改文件数 ≤5,且风险 = 低(文档/CSS/配置)跳过阶段 4(分析)的深度审查。仅进行表层扫描,然后运行阶段 3(检查点)→ 阶段 5(完成)。
完整更改文件数 >5,或风险 = 高/中,或用户要求完整审查执行所有阶段。不压缩流程。

如果不确定使用哪种模式 → 则默认使用完整模式。 如果用户指定其他模式 → 则无论触发条件如何,均以用户选择为准。 </global_rules>


审查目标检测(必需 — 首先运行)

<target_detection priority="maximum"> 首先确定要审查的内容。

检测逻辑
用户输入目标模式
PR 编号(例如,“审查 PR #123”)远程 PRPR 模式
PR URL(例如,github.com/.../pull/123)远程 PRPR 模式
带有 PR 上下文的分支名称远程 PRPR 模式
特定文件路径(例如,src/auth/login.ts)本地文件检查本地模式(文件范围)
“审查我的更改”/“审查本地更改”本地更改本地模式
“审查我的 diff”/“审查已暂存的更改”本地更改本地模式
未指定 PR,用户要求“审查代码”本地更改本地模式
目标规则
  • 如果用户提供 PR 编号或 URL → 则使用 PR 模式(现有流程)
  • 如果用户提供特定的本地文件路径,且没有 PR 上下文 → 则使用 本地模式(文件范围),仅审查该文件及其直接依赖项
  • 如果用户提到“我的更改”“本地”“已暂存”“未暂存”“工作树”或“diff”,且未引用 PR → 则使用 本地模式
  • 如果有歧义 → 则询问用户:“您希望我审查特定的 PR,还是您的本地更改?”
本地模式前提条件

<local_mode_config priority="maximum"> 关键:本地模式要求启用 Octocode MCP 本地工具。

本地工具(localSearchCode、localViewStructure、localFindFiles、localGetFileContent)和 LSP 工具(lspGotoDefinition、lspFindReferences、lspCallHierarchy)需要以下配置:

ENABLE_LOCAL=true

或者在 Octocode 配置文件中设置(local.enabled: true)。

**验证:**调用任意 local* 工具(例如,在工作区根目录调用 localViewStructure)。

  • 如果有响应 → 本地工具可用,继续使用本地模式
  • 如果调用失败并提示“Local tools are disabled” → 那么停止并告知用户:
    Local tools are not enabled. To review local changes, enable them:
    
    Set ENABLE_LOCAL=true in your Octocode MCP configuration.
    
    See: https://github.com/bgauryy/octocode-mcp/blob/main/docs/dev/reference/LOCAL_TOOLS_REFERENCE.md
    
    Alternatively, push your changes to a PR and I can review that instead.
    

</local_mode_config>

本地文件检查(文件范围请求时必需)
  • 如果目标是文件路径 → 使用 localFindFiles 或 localViewStructure 验证文件是否存在
  • 如果文件不存在 → 停止并询问用户正确的路径
  • 如果文件存在 → 将分析范围限定为:
    • 用户请求的文件
    • 该文件直接导入/导出的内容及其直接调用方/使用方
  • 在本地模式(文件范围)下,除非用户提出要求,否则不要将审查范围扩展到整个代码仓库

</target_detection>


<mcp_discovery> 开始前,检测可用的研究工具。

**检查:**是否有 octocode-mcp MCP 服务可用? 查找 Octocode MCP 工具(例如,localSearchCode、lspGotoDefinition、githubSearchCode、packageSearch)。

如果 Octocode MCP 存在,但本地工具没有返回结果:

建议:“如需研究本地代码库,请在 Octocode MCP 配置中添加 ENABLE_LOCAL=true。”

如果未安装 Octocode MCP:

建议:“安装 Octocode MCP 以进行更深入的研究:

{
  "mcpServers": {
    "octocode": {
      "command": "npx",
      "args": ["-y", "octocode-mcp"],
      "env": {"ENABLE_LOCAL": "true"}
    }
  }
}

然后重启编辑器。”

使用现有工具继续操作——不要因设置问题而中断。 </mcp_discovery>


预检:Octocode MCP 依赖项检查

本节在基础技能中保持精简,完整流程请参阅:

<dependency_gate_summary>

  • 必须在第 1 阶段之前运行:验证检测到的模式所需的工具是否可用。
  • PR 模式最低门槛:githubSearchPullRequests 有响应 + PR 可访问。
  • 本地模式最低门槛:ENABLE_LOCAL=true、本地工具有响应、git 仓库有效。
  • 本地文件检查门槛:开始任何分析前,确认请求的文件路径存在。
  • 失败时:停止,说明缺少的前提条件,并要求用户更正。 </dependency_gate_summary>

工具

Octocode MCP 工具的说明、参数和使用模式可在 MCP 服务上下文中查看。本节仅介绍与审查相关的工具规则。

本地 + LSP 审查流程(本地模式 / PR 模式,且工作区就是 PR 仓库):

git diff → localSearchCode(pattern) → get lineHint → LSP tools → localGetFileContent (LAST)
  • localSearchCode 始终是第一步 — 它会查找符号,并提供所有 LSP 工具必需的 lineHint(从 1 开始计数的行号)。
  • lspCallHierarchy(incoming) 用于追踪哪些代码调用了已更改的函数。lspFindReferences 用于查找已更改类型/变量的所有用法。
  • localGetFileContent 用于读取实现代码 — 只能在完成发现步骤后作为最后一步使用。
  • 切勿猜测 lineHint — 始终先从 localSearchCode 获取。

Shell 命令(仅限本地模式 — git 操作):

命令用途
git status确认已暂存、未暂存和未跟踪的文件
git diff获取未暂存的工作树差异
git diff --staged(或 --cached)获取已暂存的差异
git diff HEAD获取已暂存 + 未暂存的合并差异
git log --oneline -10查看近期提交的上下文
git branch --show-current查看当前分支名称

Shell git 命令只能用于获取差异和状态。所有代码读取和搜索都必须使用 Octocode MCP local*/lsp* 工具。

任务跟踪:使用运行环境中可用的任务/待办事项跟踪工具来跟踪审查进度。使用 Task 为独立的研究领域启动并行 Agent。

工具选择规则:

审查模式主要工具次要工具禁止使用
PR 模式(工作区就是 PR 仓库)local* + lsp*github*(用于 PR 元数据/差异)Shell(用于读取代码)
PR 模式(工作区不是 PR 仓库)仅 github*packageSearch(用于外部内容)local* 或 lsp*(仓库不匹配)
本地模式local* + lsp* + Shell gitpackageSearch(用于外部依赖)github*(用于读取代码;无需使用)

工具转换矩阵:

起点需求转到
githubSearchCode文件内容githubGetFileContent
githubSearchCode软件包源码packageSearch
githubSearchPullRequests文件内容githubGetFileContent
import 语句外部定义packageSearch → githubViewRepoStructure
localSearchCode定义lspGotoDefinition(使用 lineHint)
localSearchCode所有用法lspFindReferences(使用 lineHint)
localSearchCode调用链lspCallHierarchy(使用 lineHint)
git diff 输出深入分析已更改的代码localSearchCode → lsp* 工具
git status 输出读取已更改的文件localGetFileContent(使用 matchString)

流程分析协议

<flow_analysis_protocol>

完整操作步骤和详细示例:references/flow-analysis-protocol.md

选择操作步骤(完整步骤请参阅参考资料):

已更改代码操作步骤关键工具
函数签名已更改操作步骤 1 — 上游调用方lspCallHierarchy(incoming)
新增函数操作步骤 2 — 下游依赖lspCallHierarchy(outgoing)
类型/接口已更改操作步骤 3 — 所有用法lspFindReferences
数据转换已更改操作步骤 4 — 追踪链路链式调用 lspCallHierarchy
函数签名已更改(远程)操作步骤 5 — 远程调用方githubSearchCode + githubGetFileContent
导出已更改操作步骤 6 — 导入链使用 githubSearchCode 查找使用方

</flow_analysis_protocol>


审查指南

请在此处保留基本规则,并参阅以下详细指南:

<review_guidelines_base>

  • 优先关注已更改的代码。
  • 优先报告可信度为高/中、可采取行动的发现。
  • 在得出影响结论前,先通过结构关系(导入/调用方/使用方)进行追踪。 </review_guidelines_base>

领域审查者

<domain_reviewers>

完整的领域矩阵,包含检测规则、优先级和跳过条件:references/domain-reviewers.md

审查领域:Bug、架构、性能、代码质量、重复代码、错误处理、流程影响

优先级规则:高置信度 + 新增代码(+ 前缀)+ 确实存在的问题 + 可执行的修复方案 = 必须纳入

全局排除项(绝不建议):编译器/linter 错误、未更改的代码、测试细节、生成文件/供应商文件、推测性场景、已注释说明的问题 </domain_reviewers>


执行流程

<flow_overview>

                    ┌──────────────────────┐
                    │  REVIEW TARGET       │
                    │  DETECTION           │
                    └──────────┬───────────┘
                         ┌─────┴─────┐
                         ▼           ▼
                    PR Mode     Local Mode
                         └─────┬─────┘
                               ▼
Phase 1       Phase 2      Phase 3           Phase 4       Phase 5       Phase 6
GUIDELINES → CONTEXT → USER CHECKPOINT → ANALYSIS → FINALIZE → REPORT
    │            │            │                │           │          │
    ▼            ▼            ▼                ▼           ▼          ▼
 Ask user    PR: Fetch     Present &       Deep-dive    Dedupe &   Summary +
 for docs    PR + Comments Ask Focus       Research     Verify vs  Document
 & context   Local: git    (same for       (local* +    guidelines
             diff + status both modes)     lsp* tools)
起点 → 终点触发条件
目标检测 → 预检已确定审查模式(PR 或本地)
预检 → 阶段 1已确认 MCP 工具可用
阶段 1 → 阶段 2已构建指南上下文(或已跳过)
阶段 2 → 阶段 3已获取 PR 元数据、差异和评论(PR 模式),或已收集 git diff 和状态(本地模式)
阶段 3 → 阶段 4用户提供关注方向
阶段 3 → 阶段 6用户表示“只给我摘要”(快速模式)
阶段 4 → 阶段 5所有领域分析均已完成
阶段 5 → 阶段 6已去重并验证所有发现
</flow_overview>

<key_principles>

  • 保持一致:每次工具调用都必须支持一个假设
  • 验证:只审查实际代码(不包括无效、测试或已弃用的代码)。检查 updated 日期。
  • 链接(PR 模式):代码引用必须使用完整的 GitHub 链接(https://github.com/{{OWNER}}/{{REPO}}/blob/{{BRANCH}}/{{PATH}})。
  • 链接(本地模式):本地代码引用使用 file:line 格式。
  • 改进:推理不充分?更换工具/查询。
  • 效率:批量执行 Octocode MCP 查询(每次调用 1-3 个)。先获取元数据,再获取内容。
  • 任务:完整模式审查必须使用运行时的任务/待办跟踪工具跟踪进度。
  • 禁止:提供时间/时长估算。
  • 禁止:将发现称为 #1、#2、#N——GitHub 会自动将 #<number> 链接到 issue/PR。 </key_principles>

执行生命周期

使用以下文档中的详细生命周期说明:

<execution_lifecycle_base>

基础与可选(必需)
  • 基础(在此 SKILL 中):
    • 目标检测
    • 工具模型与选择规则
    • 流程分析协议
    • 阶段 4 分析关卡(核心推理/执行)
  • 可选/扩展(在参考文档中):
    • 完整的依赖关卡详情
    • 各阶段的详细操作指南(1、2、3、5、6)
    • 扩展验证清单 </execution_lifecycle_base>
阶段 4:分析

<analysis_gate> 必需:遵循阶段 3 的用户指示和阶段 1 的指南。

前置条件
  • 已完成阶段 3(用户检查点)
  • 已收到用户指示(关注领域或“完整审查”)
  • 指南上下文可用(或已确认为空)
操作(必需——PR 模式和本地模式均适用)

按模式选择工具(参见“工具”部分中的工具选择规则):

  • PR 模式(工作区是 PR 仓库):以 local* + lsp* 为主,使用 github* 获取 PR 元数据/差异
  • PR 模式(工作区不是 PR 仓库):仅使用 github*
  • 本地模式:使用 local* + lsp* + shell git(需要 ENABLE_LOCAL=true——参见“目标检测”)
  • 文件范围:与本地模式相同,但将所有分析限制在目标文件及其直接依赖关系图(1 跳)内
  1. 列出 3-5 条与用户关注点一致的搜索查询,然后逐条执行:
    Query 1: [tool] — [search pattern] — [goal]
    Query 2: [tool] — [search pattern] — [goal]
    ...
    
  2. 指南合规性检查(若在阶段 1 加载了指南,则必需):
    • 对照已加载的指南/约定检查每个变更文件
    • 必须标记任何违反项目特定规则的情况,并引用具体指南
  3. 流程影响分析(函数/方法发生变更时必需):
    • 根据变更类型,应用流程分析协议中匹配的方案(参见“流程分析协议”部分和 references/flow-analysis-protocol.md)
    • 必须确认返回值、类型或副作用是否发生变化
    • 必须检查现有集成是否会中断
    • 必须记录影响范围:有多少调用方/使用方受到影响
  4. 使用 matchString 定位,验证架构、API 和依赖项(PR 模式:githubGetFileContent;本地模式:localGetFileContent + localSearchCode)
  5. 评估各领域的影响(优先考虑阶段 3 中用户指定的方面):
    • 架构:系统结构、模式一致性
    • 集成:受影响的系统、集成模式
    • 风险:竞态条件、性能、安全性
    • 业务:用户体验、指标、运营成本
    • 级联效应:这是否会引发其他问题?
  6. 识别变更逻辑中的边缘情况
  7. 安全扫描:注入、XSS、数据泄露、法规合规性
  8. 扫描新代码中的 TODO/FIXME 注释(仅“+”行)
  9. 对于高风险变更:评估回滚策略/功能标志的必要性
  10. 预检建议(仅本地模式):如果变更较多,建议在完成审查前运行项目的测试/ lint 套件
门禁检查
  • 已执行所有搜索查询
  • 已检查指南合规性(若已加载指南)
  • 已分析所有修改函数的流程影响(本地模式下使用 LSP)
  • 已覆盖用户指定的所有关注领域
  • 已整理发现项列表并标注置信度
禁止事项
  • 分析用户在阶段 3 中明确排除的领域
  • 函数/方法发生变更时跳过流程影响分析
  • 忽略阶段 1 中加载的指南
  • 本地模式:使用 github* 工具读取代码(必须使用 local* + lsp*)
  • 本地模式:未先调用 localSearchCode 就猜测 lineHint
  • 文件范围:未经用户要求,将分析扩展到目标文件及其直接依赖之外
  • 文件范围:启动并行 Agent(仅允许单轮审查)
允许事项
  • PR 模式:使用所有 Octocode MCP 工具(github*、local*、lsp*)
  • 本地模式:使用 Octocode MCP local* + lsp* 工具及 shell git 命令
  • 两种模式:对于大型变更集,可通过 Task 启动并行 Agent(参见“多 Agent”部分)
失败时的处理
  • 如果搜索没有返回结果 → 则扩大查询范围、尝试同义词或更换工具
  • 如果流程追踪遇到死胡同 → 则记录局限性,并根据现有证据继续
  • 如果LSP 工具失败(本地模式)→ 则改用 localSearchCode 进行模式匹配 </analysis_gate>

阶段 5 + 阶段 6(可选细节)

将 Finalize/Report 的详细信息保留在生命周期参考中,以保持基础技能的专注:

此 SKILL 中的基本预期:

  • 阶段 4 之后,仅最终确定有重大影响且有证据支持的发现
  • 提出简洁的建议,并在编写任何评审文档前征求同意

多 Agent 并行化与群集策略

<parallel_execution>

完整的 Agent 定义、提示词模板、扩展规则和合并协议:references/parallel-agent-protocol.md

快速规则:≤5 个文件 = 单次处理(不使用 Agent)。Full 模式下 >5 个文件 = 必须使用并行 Agent。

同时适用于 PR 模式和本地模式。 在本地模式下,Agent 只能使用 local* + lsp* 工具(读取代码时不得使用 github*)。

Agent(在阶段 4 中启动,全部放在同一条消息中):

  • Agent A:流程影响 — 跟踪已修改符号的调用方/使用方(本地模式下使用 lspCallHierarchy + lspFindReferences)
  • Agent B:安全与错误处理 — 扫描漏洞和被吞掉的异常
  • Agent C:架构与代码质量 — 模式、耦合度、性能
  • Agent D:规范与重复代码 — 合规性 + DRY(仅在已加载规范时)

扩展规则:2 个 Agent(6-15 个文件)→ 3 个 Agent(16-30 个文件)→ 4 个 Agent(30 个以上文件)。完整矩阵请参阅参考文档。

合并:收集 → 去重 → 与 PR 评论交叉核对(PR 模式)或仅去重(本地模式)→ 排定优先级(安全 > Bug > 流程 > 架构 > 性能 > 质量)→ 应用发现数量上限(参阅执行生命周期参考,阶段 5)。

禁止事项:在 Quick 模式下使用 Agent、使用超过 4 个 Agent、按顺序启动 Agent、未等到所有 Agent 返回就继续操作。 </parallel_execution>


输出协议

完整报告模板和格式规范:references/output-template.md

<output_structure> 模板章节:执行摘要(目标、风险、建议)→ 评级(正确性、安全性、性能、可维护性)→ PR/变更健康状况 → 规范合规性 → 问题(高/中/低,包含 file:line + diff 修复方案)→ 流程影响分析

每项发现必须包含:位置(file:line)、置信度(HIGH/MED)、问题描述、代码修复方案(diff 格式)

发现标签
  • **禁止:**在输出中的任何位置使用 #1、#2 或任何 #<number> 表示法来标记或引用发现。GitHub 会自动将 #N 链接到议题和拉取请求,从而在 PR 评论中产生失效或误导性的交叉链接。
  • 请改用普通编号(1.、2.)、字母标签(A、B)或描述性类别 ID(例如 [SEC-1]、[BUG-1]、[ARCH-1])。
  • 这适用于标题、行内引用、摘要列表以及其他任何提及发现标识符的地方。 </output_structure>

参考资料


验证清单

请使用以下文件中的完整清单:

<verification_base>

  • 已确定目标/模式(包括请求时进行的文件范围本地检查)
  • 已完成第 4 阶段分析,并附有证据和置信度标签
  • 发现的问题均可采取行动、已去重且范围恰当
  • 任何问题标签或引用中均未使用 #<number> 表示法 </verification_base>

评论

支持 Markdown