Skip to content
Back to skills

Review Pr

ASecurity

按证据分级审查 PR 并发布正式 Review。 当需要审查一个 PR(无论是否已有可信生命周期记录)时使用。 仅当对话包含可解析的 PR 编号或 PR URL 时才可自动调用本技能。

  • 86 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 23, 2026
ai-agentsbashgit

Security analysis

A100/100

Pro scans all 5 files and shows the line behind each finding

Scanned September 29, 2026

npx -y skills add fitlab-ai/agent-infra --skill review-pr --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Review Pr?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Review Pr
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/fitlab-ai-review-pr/badge)](https://www.skillsdirectory.com/skills/fitlab-ai-review-pr)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: review-pr
description: >
  按证据分级审查 PR 并发布正式 Review。
  当需要审查一个 PR(无论是否已有可信生命周期记录)时使用。
  仅当对话包含可解析的 PR 编号或 PR URL 时才可自动调用本技能。
---

# 审查 PR

根据目标 PR 的生命周期证据完整度与变更风险,选择 `verify`(轻量复核)、`audit`(证据审计)或 `reconstruct`(重建式审查),并把可执行的检视结论作为正式 PR Review 发布到目标 PR,同时保留可追溯的审查过程证据(`pr-review.md` / `pr-review-r{N}.md`)。

## 行为边界 / 关键规则

### 持久化报告证据

生成 PR 审查报告时,先读取 `.agents/rules/evidence-reporting.md`。正常审查记录命令、范围、结构化结果、实际结论和未覆盖部分;正式 Review、finding、阻塞或争议的身份字段和决定性证据必须精确保留。

- 严格遵循方案中固化的证据分级主决策流:宿主解析 → 证据分类 → 新鲜度/对齐 → 风险分级 → 模式选择
- `pr-review*` 是独立 artifact family:不接入 analysis/plan/code 阶段依赖链,不修改 `current_step`
- PR 上只发布正式 PR Review(head SHA、结论、finding、receipt、Issue artifact 链接),不发第二份完整过程原文到 PR 普通评论
- 完整过程原文与 `task.md` 的可逆镜像只在关联 Issue 上同步;`restore-task` 保持 Issue-only 契约
- 生成会同步到 Issue 的 artifact Markdown 前,先读取 `.agents/rules/sync-content-generation.md` 并遵循其中的生成端约束;Issue 同步保持透明,不解析或改写正文
- 不得为外部 PR 倒填或伪造已发生的 `analysis`/`plan`/`code` 生命周期历史
- head SHA 唯一记录于 `pr-review*` 与正式 PR Review;head 漂移必须进入新轮次,不得沿用旧结论
- 审查深度由证据完整度和变更风险决定,不由提交者身份决定
- 执行本技能后,你**必须**立即更新 task.md(经 `task-activity` typed intent)
- 绝不自动执行 `git add` 或 `git commit`
- 一次性检视路径(无任务/Issue)走 `.agents/workspace/reviews/{pr-number}/`,标记 `recoverable: false`,不承担可恢复承诺

## 常见违规借口与反驳

| 借口 | 反驳 |
|------|------|
| 「代码 diff 直接看就行了,不需要重建上下文」 | 仅看 diff 会遗漏需求边界、架构选择与迁移策略;`reconstruct` 必须先产出最低充分重建记录。 |
| 「PR 没有关联任务,直接写个报告发出去」 | 默认阻塞并要求先关联 Issue/task;只有显式「仅一次性检视」才走不可恢复降级路径。 |
| 「把完整重建过程也发到 PR 普通评论,方便贡献者看」 | 过程原文只同步到 Issue artifact 评论;PR 只保留正式 Review,避免重复远端副本与恢复源混淆。 |
| 「审查完了顺手提交一下」 | 本技能绝不执行 `git add`/`git commit`;提交是用户显式发起的独立步骤。 |

## 第 0 步:状态核对(执行前硬约束)

在加载本技能与相关规则后、做任何任务状态判断或用户可见结论之前,必须先执行状态核对:

```bash
agent-infra-internal task-snapshot {task-id} --format text
```

任务锚定路径在开始前记录当前任务目录与既有 `pr-review*` 轮次;一次性路径(无任务)记录 PR 编号与目标目录。将命令、PR/head、审查范围、关键结果和未覆盖部分写入本轮产物 `pr-review-rN.md` 的 `## 状态核对` 段;正常成功不粘贴完整目录清单或 `task.md` 尾部,身份不一致、失败、阻塞或争议时保留决定性原文行。

## 执行步骤

### 1. 解析入参与宿主解析

解析目标 PR 编号 `{pr-number}`(`--pr <number>`,或 PR URL,或省略时按当前分支反查)。执行:

```bash
agent-infra-internal platform-pr-review inspect --pr {pr-number} [--cwd <path>]
agent-infra-internal pr-review-grade resolve-host --pr {pr-number} [--cwd <path>]
```

`resolve-host` 输出 `HostResolution`(`unique` / `ambiguous` / `none`),按以下策略分流:

- **唯一宿主**:绑定 `{task-id}`,调用 `task-activity pr-review-inspect` 取得 canonical round、prepared/open 状态和最近成功审查身份,再按下述恢复规则开始本轮(进入步骤 2)。
- **多宿主歧义**:`resolve-host` 返回 `ambiguous`,`decide` 会拒绝分类(fail closed)。立即停止并提示人工指定唯一宿主;不进入证据分类。
- **无宿主**:默认阻塞,要求先建立 Issue/task 关联(给出关联指引),不自动创建/导入 Issue。仅当用户显式选择「仅一次性检视」时,过程文件写入 `.agents/workspace/reviews/{pr-number}/`(`recoverable: false`)。

任务锚定路径在宿主与远端 head 确定后执行:

```bash
agent-infra-internal task-activity {task-id} pr-review-inspect
```

- `prepared`:复用该 artifact;`open` 且 head 未变:对同一 artifact/head 重放 start(no-op)并恢复该轮。
- `open` 且 head 已变:先把旧 artifact 的正式 Review 状态写为 `superseded`,再用旧 artifact/head 执行 terminate;随后使用 inspect 返回的 next round。
- 无 prepared/open:按 `reference/report-template.md` 创建 next artifact 骨架,先写状态核对、身份信息、被审 head 与 `正式 Review 状态: pending`。

在上述分流完成后、步骤 2 证据分级开始前写 started:

```bash
agent-infra-internal task-activity {task-id} pr-review-start --agent {agent} \
  --artifact {pr-review-artifact} --head {head-sha}
```

一次性路径不调用 `task-activity`。读取 PR、确定 head 或本地审查失败时,先把 artifact 状态写为 `aborted`,再以同一 artifact/head 调用 `pr-review-terminate --outcome aborted --reason <single-line>`。本地审查结论完成后的发布失败记录恢复事实,不将审查轮次误判为 aborted。

### 2. 单次 decide:证据枚举 + 场景分类 + 风险分级 + 模式选择

把宿主、artifact 存在性、head 状态与六个纯证据风险因素写入输入 JSON。prior review 只使用 inspect 返回的最高 `applied` / `no-op` artifact;pending/aborted/superseded/failed 只参与 round 连续性,不作为既有结论。调用一次:

```bash
agent-infra-internal pr-review-grade decide --input-file {decide-input.json} [--cwd <path>]
```

一次返回完整 `DecisionRecord`(`scenario` / `freshness` / `alignment` / `risk` / `mode` / `firstReview` / `reason`)。把决策输入与输出原样记录到 `pr-review-rN.md` 的「证据清单」段(AC3 可追溯)。`host.kind === 'ambiguous'` 时命令拒绝,回到步骤 1 的阻塞出口。

### 3. 生成 `pr-review-rN.md`

按 `reference/report-template.md` 完成本轮产物;任务锚定路径保留步骤 1 已写入的身份/head/pending 状态,不重新分配 round。`reconstruct`(或 `audit` 证据不足)时,在行级 finding 之前先写「重建上下文」段(需求边界 / 架构选择 / 影响面 / 验证覆盖,见 `reference/evidence-grading.md`)。frontmatter 或首部记录 `recoverable: true|false`(一次性路径为 `false`)。完成最终问题清单后,一次性冻结 `{verdict, blockers, major, minor}`;正式 Review 正文与步骤 6 的 complete payload 必须直接复用该对象,不从报告文案反向统计。

### 4. 同步 Issue artifact 评论(任务锚定路径)

依次尝试同步 task 评论与 artifact 评论;失败时记录 warning 和恢复事实,继续本地审查:

```bash
agent-infra-internal platform-comment sync {task-id} --kind task --agent {agent}
agent-infra-internal platform-comment sync {task-id} --kind artifact --artifact {pr-review-artifact} --agent {agent}
```

一次性路径(无任务/Issue)跳过本步。

### 5. 核对 head 并发布正式 Review

再次读取远端 head,确认未被审查期间漂移:

```bash
agent-infra-internal platform-pr-review inspect --pr {pr-number} [--cwd <path>]
```

若 head 与步骤 1 记录一致,组装正文(head SHA / 结论 / finding / receipt / 已取得的 Issue artifact 链接;评论待恢复时写明 artifact 身份,**不含 marker**)。把完整正文写入与本轮报告同目录的 `pr-review-body.md`(Round 1)或 `pr-review-body-r{N}.md`(后续轮次),并将 `{review-body-file}` 绑定为该文件的绝对路径。本轮报告的「正式 Review 正文」段只记录该文件名。任务锚定路径必须使用任务目录中的该文件;失败恢复会按报告轮次重读该文件并核对正文摘要。然后发布正式 Review:

```bash
agent-infra-internal platform-pr-review publish --pr {pr-number} --scope {taskId|pr{pr-number}} --round {round} \
  --commit {head-sha} --event {COMMENT|APPROVE|REQUEST_CHANGES} --body-file {review-body-file} --artifact {pr-review-artifact} --agent {agent} [--dry-run] [--cwd <path>]
```

`publish` 由 core 生成并校验 marker(首行),按 marker + commit 幂等(重放 no-op;marker 命中但 commit 不一致稳定失败)。head 漂移时,先把旧 artifact 状态写为 `superseded`,再闭合旧轮:

```bash
agent-infra-internal task-activity {task-id} pr-review-terminate --agent {agent} \
  --artifact {pr-review-artifact} --head {head-sha} \
  --outcome superseded --reason "head changed before publish"
```

闭合成功后重新执行步骤 1,进入下一 canonical round;不得先写新轮 started。publish 结果不确定且已有任务账本记录时,保留待恢复操作并继续本地审查轮次;无法证明恢复事实已持久化时保持 open。

### 6. 回写发布结果与任务状态

- **任务锚定路径**:把 publish 的实际状态写入 `pr-review-rN.md`「发布结果」段。`applied` / `no-op` 时记录 Review ID/URL;写入失败且已有任务账本记录时写 `blocked` / `failed`、错误码和恢复动作。随后以步骤 3 冻结的同一组 verdict/counts 闭合本地活动日志:

  ```bash
  agent-infra-internal task-activity {task-id} pr-review-complete --agent {agent} \
    --artifact {pr-review-artifact} --head {head-sha} --verdict {approved|changes-requested|commented} \
    --blockers {blockers} --major {major} --minor {minor}
  ```

  `task-activity` 由 typed payload 生成 `Verdict: <结论>, blockers: N, major: N, minor: N → {pr-review-artifact}`,并经 `writeTask` 原子完成 Activity Log、`## 审查反馈` 链接与版本戳刷新;不改 `current_step`,也不把 receipt/head/Review URL 写入 NOTE。

- **一次性路径(无任务)**:把实际发布状态写入 `pr-review-rN.md`「发布结果」段;成功时记录 Review ID/URL,失败时记录错误与不可自动恢复的限制。不调用 `task-activity`。

### 7. 发布后回写再同步(任务锚定路径)

步骤 6 已改写本地 `pr-review-rN.md`「发布结果」段与 task.md(活动日志),而步骤 4 同步的是旧快照。依次尝试再同步;失败记录 warning,由 `complete-task` 在归档前补齐:

```bash
agent-infra-internal platform-comment sync {task-id} --kind task --agent {agent}
agent-infra-internal platform-comment sync {task-id} --kind artifact --artifact {pr-review-artifact} --agent {agent}
```

`platform-comment sync` 对既有 marker 评论是幂等原地更新,comment URL 不变。一次性路径无任务,跳过本步。

### 8. 完成校验

- **任务锚定路径**:

  ```bash
  agent-infra-internal task-verify {task-id} review-pr.completed --artifact {pr-review-artifact} --format text
  ```

按 `.agents/rules/validation-output.md` 展示当次校验摘要;失败、阻塞和软警告保留必要诊断。

- **一次性路径**:

  ```bash
  agent-infra-internal pr-review-grade verify-artifact --artifact-file {pr-review-artifact} [--cwd <path>]
  ```

退出码 0 通过;1 按输出修复后重跑;2 停止并告知用户需要人工介入。

### 9. 告知用户

按 `reference/output-guidance.md` 选择唯一出口(本地审查完成 / 阻塞要求关联 / 一次性检视),渲染下一步前读取 `.agents/rules/next-step-output.md`。

## 完成检查清单

- [ ] 已按证据分级完成 PR 审查并产出 `pr-review-rN.md`
- [ ] 正式 Review 已发布、任务账本已记录待恢复操作,或一次性路径已如实记录发布失败
- [ ] 任务锚定路径的 Issue artifact/task 评论已同步,或失败已记录待恢复
- [ ] 已完成校验(`task-verify` 或 `verify-artifact`)
- [ ] 已更新 task.md 并追加 Activity Log(任务锚定路径)

## 停止

完成检查清单后立即停止。不要自动提交。

Files in this skill

  • SKILL.md11.5 KB
  • config/verify.json888 B
  • reference/evidence-grading.md4.3 KB
  • reference/output-guidance.md1.3 KB
  • reference/report-template.md3.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.