审查开放拉取请求

SkillDev tools

审计本 TGOSKits 仓库的开放 GitHub 拉取请求,找出需要当前用户审查的非本人拉取请求,根据当前精确提交的任务、步骤和日志把持续集成状态分为暂缓、跳过、成功或失败,不执行常规本地验证,只在直接修改 `apps/**` 且同一应用与目标缺少等价持续集成运行时执行真实应用,并通过可用任务清单统筹批次,再把每个符合条件的拉取请求交给 `review-single-pr`。适用于用户要求审查全部开放拉取请求、审查非本人拉取请求、复审上次审查后已有新提交的拉取请求,或协调逐项审查工作树与子代理。

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the 审查开放拉取请求 skill

What this skill tells your AI

The instructions your AI receives, as published by rcore-os/tgoskits in .agents/skills/review-open-prs/SKILL.md and read by ahel’s review.

目标

找出真正需要当前用户关注的开放拉取请求,先分类当前精确提交的持续集成证据,再使用 review-single-pr 审查符合条件的每一项。本技能只负责多项发现与分派;单项审查标准、持续集成与应用验证、行内评论、批准、请求修改、冲突修复和最终提交规则均由 review-single-pr 负责。

默认不重复审查所有开放拉取请求。只处理当前用户从未审查的项目,或最新提交时间晚于当前用户最后一次已提交审查时间的项目。除非用户明确排除,否则包含草稿。

遵守全局子代理规则。即使使用子代理,最终 GitHub 审查提交仍由主代理负责,除非用户明确把该权限交给其他执行者。

批次任务清单门禁

完成资格与持续集成就绪检查后,为每个可审项目建立一个用户可见的批次任务项,并加入批次级最终提交刷新、审查提交核验、审查人分配和清理。CI_DEFERREDCI_SKIPPED 项只进入对应的只读摘要,不建立单项审查任务。

update_plan 等任务清单工具时必须调用并等待成功,之后持续维护同一清单。工具没有报错但返回空结果时视为成功。工具不可用或确认失效时,才改用可见 Markdown 清单并说明原因。工具只支持待处理、进行中和已完成时,只有记录“有证据完成”“有具体理由不适用”或“有证据阻塞”后才能标记完成。

批次清单不能替代 review-single-pr 要求的拉取请求专属清单。每项详细审查都要识别当前范围,完整读取适用规范,建立完整专属清单,追加新发现范围,并在提交前后逐项核对。除非明确并行委派独立审查,否则批次中最多一项处于进行中。

资格检查

  1. 确定仓库和当前用户:

    gh auth status
    gh repo view --json nameWithOwner,defaultBranchRef,url
    gh pr list --state open --limit 100 --json number,title,author,headRefName,headRepositoryOwner,baseRefName,updatedAt,isDraft,url,reviewDecision,mergeStateStatus,maintainerCanModify
    
  2. 排除当前 GitHub 用户创建的拉取请求。

  3. 对其余项目取得最新提交、审查、变更文件和当前精确提交的持续集成状态:

    gh api "repos/<owner>/<repo>/pulls/<pr>/commits?per_page=100"
    gh api "repos/<owner>/<repo>/pulls/<pr>/reviews?per_page=100"
    gh api "repos/<owner>/<repo>/pulls/<pr>/files?per_page=100"
    gh pr checks <pr> --repo <owner>/<repo> --watch=false
    gh api --paginate "repos/<owner>/<repo>/commits/<head-sha>/check-runs?per_page=100"
    gh api --paginate "repos/<owner>/<repo>/actions/runs?head_sha=<head-sha>&per_page=100"
    gh api --paginate "repos/<owner>/<repo>/actions/runs/<run-id>/jobs?per_page=100"
    
  4. 当前用户从未审查,或最新提交时间晚于最后一次已提交审查时间时,标为符合条件。比较最新提交时间,不比较 updatedAt,因为评论、持续集成或讨论解决也会更新时间。

  5. 对每个初步符合条件的项目,把变更范围和声明映射到相关检查与任务。任何相关检查或任务处于 queuedpendingwaitingin_progress 时,标记为 CI_DEFERRED 并停止处理。不得等待、轮询、创建专属清单或工作树、运行应用、详细读代码、解决讨论、提交评论或审查、创建或更新议题、修复冲突或更改审查人。最终只记录编号、当前精确提交散列值和未完成检查。只有给出与变更范围无关的具体理由时才可忽略未完成任务。

  6. 已在最新提交上由当前用户审查的项目默认排除,除非用户明确要求重新审查。

  7. 分别记录已排除、CI_DEFERREDCI_SKIPPED。排除理由包括本人创建、最新提交已审、已关闭、用户范围排除或明确约束阻止。

验证策略

项目通过未终结持续集成门禁后、分派前,为当前精确提交建立持续集成覆盖台账。依据包括检查、任务、步骤、日志、变更文件、描述、提交以及修改的文档或操作手册。台账要带入单项清单,不能代替单项清单。

每项变更行为或验证声明都映射到:检查与任务、当前提交散列值、结论、实际命令、体系结构或配置、用例或程序、相关日志、可观察后置条件和失败传播。只有当前精确提交的任务成功,且工作流与日志证明实际执行了同一目标行为时才接受为覆盖。检查名称或宽泛绿灯、旧提交、跳过的路径或矩阵项、不同命令或体系结构、缺少成功标记、失败被吞掉,以及无法证明新测试被发现并执行,都不算覆盖。

不执行普通本地格式化、构建、静态检查、测试、QEMU 测试、元数据、打包、发布或工具流程。相关非应用持续集成项失败时,交给单项审查归因;取消、缺失、陈旧、跳过、可疑或无法由日志证明时标为 CI_SKIPPED,不分派。唯一例外是 apps/** 下直接新增、修改或重命名的可运行应用缺少等价执行证据,且其他相关持续集成项都可接受;此时把精确应用和目标带入真实应用运行要求。持续集成不能代替代码、架构、接口二进制约定、生命周期、安全、文档或测试可信度审查。错误修复还需要来自测试逻辑、作者证据或专门持续集成的修复前失败证据。

最终报告区分:

  • CI_DEFERRED:当前精确提交和全部未完成相关检查或任务;
  • CI_SKIPPED:当前精确提交、缺失或不可接受的相关证据,以及未分派原因;
  • 持续集成已覆盖:每个接受的检查与任务、命令、体系结构或配置、目标行为、日志、后置条件和失败传播;
  • 应用证据:每个直接变更的可运行应用、目标、命令,以及由持续集成、本地真实运行或不可用实体板卡提供的状态;
  • 错误修复证据:修复前独立失败来源和当前提交的成功来源。

分派单项审查

对每个符合条件的拉取请求调用 review-single-pr。提示中携带批次上下文,但把审查决定交给单项技能:

请使用 $review-single-pr 审查 <owner>/<repo> 的拉取请求 #<pr>。

来自 $review-open-prs 的上下文:
- 符合条件的原因:<当前用户从未审查 | 最新提交 <sha/time> 晚于当前用户上次审查 <time>>。
- 草稿状态:<draft|ready>。
- 合并状态:<mergeStateStatus>;维护者能否修改:<maintainerCanModify>。
- 用户要求的范围:<范围摘要>。
- 当前精确提交的持续集成摘要:<提交散列值、成功/失败/跳过数量、相关检查名、任务/步骤/日志证据;确认没有相关运行中任务,也没有会触发 CI_SKIPPED 的非应用证据缺口>。
- 持续集成与应用计划:<逐项覆盖台账>;<失败任务和待归因日志>;<直接改变的 apps/** 可运行应用>;<同应用同目标的持续集成证据或待执行真实应用>;<错误修复独立失败证据>。

只审查这一项。任何详细审查、任务清单、工作树、应用运行或 GitHub 写操作前,先按 $review-single-pr 刷新当前提交和相关持续集成。门禁通过后完整读取适用规范,建立并维护专属任务清单,按照 $review-single-pr 检查重复或取代关系、分析失败任务、按规则处理冲突,并提交 APPROVE 或 REQUEST_CHANGES。禁止普通本地验证;只有直接改变 apps/** 的可运行应用且同应用同目标缺少当前提交持续集成覆盖时,才运行真实应用。中文行内评论和总审查正文必须使用 $review-single-pr 的固定结构,提交前后都检查发布格式并逐项核对任务清单。

明确允许执行者或子代理时,每个执行者只负责一个拉取请求和一个工作树,并要求其:

  • 使用 review-single-pr
  • 在详细工作前刷新当前精确提交和相关持续集成,只在门禁通过后继续;
  • 完整读取适用规范并维护专属任务清单;
  • 只执行只读审查、日志分析和 review-single-pr 允许的真实应用运行;
  • 不执行普通本地格式化、构建、静态检查、测试、QEMU 测试、元数据、打包、发布或工具流程;
  • 不提交 GitHub 审查;
  • 未明确分配冲突修复时不推送贡献者分支,即使已分配也优先只创建本地提交;
  • 返回四态结论,并为每个阻塞问题提供 pathlineside=RIGHT 和符合固定模板的中文评论;
  • 列出持续集成命令、任务、步骤、关键日志、应用证据、错误修复失败证据和清单核对结果;
  • 清理临时工作树和文件,不安全时报告路径与原因。

提交执行者结论前,主代理必须刷新当前提交,确认问题仍位于当前右侧变更行,并遵守 review-single-pr 的提交与发布后格式检查。

冲突处理

符合条件但存在冲突的项目仍通过 review-single-pr 处理。该技能负责“本应批准、允许维护者修改时修复冲突”的策略。冲突修复本地只运行冲突标记和差异卫生检查,再依赖推送后当前提交的持续集成与日志;不得执行普通本地验证。用户明确要求处理冲突时,把要求写入分派提示。主代理必须把冲突修复与普通审查分开,禁止强制推送贡献者分支。

最终汇总

最终简要报告:

  • 已审项目、决定和主要原因;
  • 已排除项目及原因;
  • CI_DEFERRED 项的当前提交和全部未完成相关检查,并确认未做详细审查或写操作;
  • CI_SKIPPED 项的当前提交、全部证据缺口和未提交审查原因;
  • 批次及单项任务清单的完成、不适用、阻塞和未完成状态;
  • 每个直接变更应用的准备来源、体系结构或板卡、命令、后置条件、持续集成或真实运行证据,以及未运行板卡流程;
  • 每个已审项目的当前提交持续集成命令、任务、步骤、日志、失败归因和错误修复先失败后通过证据;
  • 失败或无法运行的应用命令,以及与文档声明不一致的流程;
  • 因冲突、维护者修改权限、陈旧提交或相关持续集成失败而留给作者的项目;
  • 无法安全清理的临时工作树或文件及原因。

Signals

GitHub stars
67
Forks
133
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
review-open-prs
Source
github.com/rcore-os/tgoskits