SKILL 03 / CODING · DEEP DIVE

代码审查类 Skills

十个能装的审查件 — 假阳性怎么治 · 和 CI 门禁怎么分工

2026-09-05 · BigCat

审查是 skill 最好使的一类活:每天都做,而且对错能验证。难的从来不是让它挑毛病,是让它别把二十条无关痛痒的意见糊你一脸。

前置 → Skill 01 编码类 Skills 榜单(code-reviewer 在表里)

// WHY THIS MATTERS

你已经在用 agent 写代码了。那么下一个问题不是「它写得好不好」,是谁来看它写了什么。这一类工具替你干掉的是同一件事:把「push 之前自己再读一遍 diff」这个人人都跳过的动作,变成一条命令。本期点名十个真实可装可读的条目,逐个给装法和「什么时候别装」;判据放后半程——因为工具会换,「这条意见到底算不算数」的判据不会。

// 01

它替你干掉什么:十个能装的,先给表

论断:这十个不是十个竞品,是四层——本地看 diff、CI 上做第一遍、专管安全、以及「你收到意见之后怎么办」。同层里挑一个,跨层可以叠。
条目(真名以仓库 / 官方文档为准) 替你干掉的那件事 什么时候别装 ───────────────────────────────────────────────────────────────────────────────────── /code-review(Claude Code 内置) push 前自己读一遍 diff 改动只有一行 Code Review GitHub App(Anthropic 托管) PR 上根本没人做第一遍 每次 15–25 美元的账受不了 /security-review + claude-code-security-review 漏扫全靠人审时的运气 仓库没有对外攻击面 anthropics/skills · webapp-testing 「我看着没问题」当验收 后端 / 纯库代码 superpowers · requesting-code-review 自己审自己刚写的 diff 已有强制人审 + 严格 CI superpowers · receiving-code-review 对审查意见一律照单全收 意见本来就少且都对 code-reviewer(Agensi) diff → 按严重度分级的问题单 上面任意一条已经在跑 github-pr-review(aidankinzett) review 没过目就发到 PR 上 你不在 GitHub 上审 The-PR-Agent/pr-agent CI 里一遍自动审查都没有 已经装了别的 PR bot claude-code-action(anthropics) CI 里叫不动 agent 不需要在 CI 里跑 agent ───────────────────────────────────────────────────────────────────────────────────── star / 装机量见文末延伸阅读,各自标注了来源与月份

装法(都是原样能敲的)

# 1) 本地:不用装,Claude Code 自带(/review 是它的别名)
/code-review                     # 审本分支领先 upstream 的提交 + 工作区改动
/code-review high                # 覆盖更广,代价是可能报不太确定的
/code-review --fix               # 审完直接把结论应用到工作区
/code-review main...my-feature   # 也能传 PR 号 / 分支 / 路径

# 2) CI:安全那条线(官方 Action,据仓库 README,2026-09)
- uses: anthropics/claude-code-security-review@main
  with:
    comment-pr: true
    claude-api-key: ${{ secrets.CLAUDE_API_KEY }}

# 3) 装第三方审查 skill:两种都行
/plugin marketplace add aidankinzett/claude-git-pr-skill
/plugin marketplace add levnikolaevich/claude-code-skills
# 或者最土的办法:把 skill 文件夹整个拷进 ~/.claude/skills/

第一条立刻能跑的用法:在你手头这个还没提交的分支上敲 /code-review。它跑在一个自带上下文窗口的后台 subagent 里,不占你这一场的对话;结论回来了你再决定改哪几条。今天就能试,不用装任何东西。

失败模式:把这十个当十个候选去「选一个最好的」。本地那一遍和 CI 那一遍解决的是不同时刻的问题——本地版省的是往返,CI 版省的是「根本没人看」。安全那条线更是独立的,别指望通用审查顺手把它做了。
// 02

机制:为什么「审查」是 skill 的甜区

论断:一件活值不值得写成 skill,看两个条件——够高频、有客观 oracle。代码审查两条全占,所以这一类的成品质量明显高于写作类、生活类。

条件一:高频,所以固定成本摊得薄

写一份审查清单要一小时,但它每个 PR 都跑一次。反过来,那种一年用两次的 skill,你写它的时间永远赚不回来——这就是为什么「审查」这一类能长出这么多能用的东西,而「年度总结」类长不出来。

条件二:有 oracle,所以意见能被证伪

oracle 就是「能判定对错的那个东西」:测试、类型检查、跑一遍真实行为。有 oracle 的意见是事实,没有的是口味。官方 webapp-testing(anthropics/skills)干的就是给前端改动补 oracle:用 Playwright 起服务(scripts/with_server.py)、等 networkidle、找选择器、截图、把 console 日志读回来。它自己说得很直白——先跑 --help,别一上来读源码。你也可以直接把这个文件夹拷进 ~/.claude/skills/。

为什么审查要跑在隔离的上下文里

三家的做法撞到了同一个答案。Claude Code 的 /code-review 默认作为后台 subagent 跑,自带上下文窗口;superpowers 的 requesting-code-review 取 BASE_SHA / HEAD_SHA 后另派一个 subagent、用仓库里的 code-reviewer.md 填参数,SKILL.md 明写理由是审查者绝不继承你这一场的会话历史;托管版 Code Review 则是多个 agent 按不同问题类别并行看,然后加一步验证——拿候选去对真实代码行为,过滤掉假阳性,再去重、按严重度排、贴到具体行上(据官方文档,2026-09)。

审查者继承你的会话历史 审查者只拿到构造好的上下文 ────────────────────────────────────────────────────────────── 它知道你为什么这么写 → 它只看代码本身说了什么 于是倾向于认同 → 于是敢说「这里会崩」 diff 和推理占满主上下文 → 回来的只有一张结论清单
失败模式:在同一个会话里让刚写完代码的那个 agent 自己审自己。它刚说服过自己一遍,你只会拿到一句「看起来不错」。
// 03

真实用法与边界:假阳性治理的三个旋钮

论断:审查 skill 翻车九成不是因为「没找到 bug」,是因为找到了二十条都不重要的。人对噪声的容忍额度很低,一次被糊脸之后,下一次的真问题也会被整体忽略。

旋钮一:调 effort,换假阳性率

/code-review low / medium 只报最有把握的,high 到 max 覆盖更广、也会带上没那么确定的(据官方文档,2026-09)。默认它沿用你上次敲的等级,所以哪天觉得它变吵了,先想想是不是你上回顺手敲了 max。

旋钮二:用 REVIEW.md 把口径写死

托管版读仓库根目录的 REVIEW.md(CLAUDE.md 也读,但违规只按 nit 记)。四条最值钱的写法:重定义什么算 🔴 Important(默认口径是奔着生产代码去的,文档仓、原型仓该收窄);给 nit 封顶(「最多报五条,其余在总结里给个数」);skip 规则(生成代码、lockfile、CI 已经在管的 lint 和拼写);抬验证门槛(「行为断言必须给出 file:line,不许从命名推断」)。还有一条治往返的:再审收敛——「第一轮之后只报 Important」,免得一行改动因为风格问题走到第七轮。

注意别记错:本地的 /code-review 跟着 CLAUDE.md 走,但不读 REVIEW.md。以为写了就全局生效,是个常见的坑。

旋钮三:治你自己这一侧

最被低估的一个 skill 是 superpowers 的 receiving-code-review:它管的不是审查者,是收到意见的那个 agent。规矩是「先验证再实现,先问再假设」——实现之前先自查两件事:这条在本仓技术上成立吗?会不会弄坏现有功能?成立就改,不成立就用技术理由反驳、指向能跑的测试。它还明确禁止「你说得太对了!」这类表演式同意,要求直接说修法。这条规矩比任何审查器都重要:一个照单全收的下游,会把审查器的每一条假阳性都变成一次真实的代码劣化。

和 CI 门禁怎么分工

一条界线:有确定答案的交给 CI,需要判断的交给审查 agent。格式、lint、类型、依赖漏洞——这些 fail-closed 卡死,还不许审查 agent 再报一遍(写进 REVIEW.md 的 skip 规则)。而托管 Code Review 的 check run 永远以 neutral 收尾,不阻塞合并;真要卡,官方给的做法是自己从 check run 输出里解析那行机器可读的严重度计数(形如 {"normal":2,"nit":1,"pre_existing":0}),在你自己的 CI 里判。

// 04

代价与替代品:不装它你还能怎么办

论断:这一类最真实的代价不是 token,是「装了审查器」带来的安全错觉——以及托管方案那张按次结算的账单。

三笔账

四条替代路线,从轻到重

  1. 只用本地 /code-review:已经在你机器上了,零安装零账单。替你干掉「push 完才发现」;什么时候不够:只有你自己会跑,同事的 PR 它管不着。
  2. CI 里挂开源的 The-PR-Agent/pr-agent(MIT;据 GitHub 仓库页 2026-09,约 12.9k star;原属 Qodo,现已捐给社区、迁到 PR-Agent org):/review /describe /improve /ask 四条命令,GitHub Action 或 pip install pr-agent 本地跑,模型可换。什么时候不够:它看的是 PR 本身,不是你整个代码库。
  3. 自己写 workflow:anthropics/claude-code-action(据 GitHub 仓库页 2026-09,约 8.8k star):claude /install-github-app 一条命令装好,然后在 workflow 里给它一个 prompt。什么时候不够:你得自己维护提示词和触发条件——托管版省的正是这份活。
  4. 安全单独拉一条线:/security-review(本地)+ claude-code-security-review(CI;据 GitHub 仓库页 2026-09,约 6.2k star)。它默认就把最容易误报的几类排除在外——DoS、限流、内存/CPU 耗尽、没有实证影响的通用输入校验、开放重定向。什么时候不够:它只管安全,别指望它讲代码风格。
失败模式:同一个 PR 上同时挂三个 bot。它们会给出高度重合又措辞不同的意见,人只会全部折叠。一层一个:本地一个、CI 一个通用、CI 一个安全,够了。

// 一页选购卡

先装这三个:① /code-review——已经在你机器上了,今天就敲一次;② anthropics/claude-code-security-review——CI 里五行 yaml,是这批里投入产出比最高的;③ superpowers/skills/receiving-code-review/——把这个文件夹拷进 ~/.claude/skills/,它治的是你和你的 agent 照单全收的毛病。

再加一个(挑一个,别都装):在 GitHub 上审 PR 就用 aidankinzett/claude-git-pr-skill 的 github-pr-review(MIT;据仓库页 2026-09 约 50 star),它逼你在发出去之前先过目整份 review;要 CI 全自动就用 The-PR-Agent/pr-agent;预算够且是 Team/Enterprise,就直接开 Anthropic 托管的 Code Review。

什么时候别装:一个人的玩具仓库 · 已经有严格的人审 + 严格 CI · 你的改动主要是文案和配置。

装完两周复查:它报的意见你真的动手改了几条?低于三成就去写 REVIEW.md——不是换工具。

// 术语表

oracle(判定器)
能判定「对不对」的那个东西:一个测试、一次类型检查、一遍真实运行。有 oracle 的审查意见是事实,没有的只是口味——这决定了一类活值不值得写成 skill。
forked subagent(分叉子代理)
带独立上下文窗口的分身。/code-review 默认这么跑:审查过程不占你的主对话,回来的只有结论。
verification pass(验证轮)
找到候选问题之后,再拿它去对真实代码行为核一遍,核不住的丢掉。这是托管 Code Review 压假阳性的主要手段。
REVIEW.md
仓库根目录的审查专用说明,只喂给审查流水线(不像 CLAUDE.md 那样影响所有会话)。严重度口径、nit 上限、skip 规则都写在这。
Important / Nit / Pre-existing
托管 Code Review 的三档严重度:合并前该修的 bug、值得修但不拦路的小问题、本来就有、不是这个 PR 引入的。
pending review(暂存评审)
GitHub 的机制:先把多条评论攒成一份草稿,最后一次性提交。github-pr-review 用它做「发出去之前先给人过目」的闸门。

// 延伸阅读