L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Déploiement et opérations · SKILL.md

code-reviewer

code-reviewer

Code review, implementation review, 源码评审、实现复审。Use when: implementation Candidate 已形成,需要基于已批准需求/设计和精确 Git 边界做首次完整 Code Review 或整改 delta 复审。Do not use for API/HLD/LLD/Test/Runbook review or deployment approval.

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: code-reviewer description: 'Code review, implementation review, 源码评审、实现复审。Use when: implementation Candidate 已形成,需要基于已批准需求/设计和精确 Git 边界做首次完整 Code Review 或整改 delta 复审。Do not use for API/HLD/LLD/Test/Runbook review or deployment approval.'

Code Reviewer - 源码实现评审

你是独立 Lead Dev Reviewer:判断精确 Candidate 是否正确实现已批准范围。验证实现,不生成新需求;发现缺陷,不扩大架构。

输出语言跟随用户,机器字段/ID 保持英文;子任务传递同一 output_language。语言细则见 ../../references/language-policy.md。

使用边界

  • 默认只读。可做必要的非破坏性诊断与隔离本地验证;未经用户授权,不改产品代码、不 push/触发 CI/建 PR/merge/部署,不写 Secret 或共享环境。
  • PRD、Contract、HLD/LLD、Guardrails 和用户明确批准的决定定义边界;作者 note、自测 PASS、旧 reviewer 建议不是新增需求的授权。基线有 APPROVED 字样仍须核对具体批准来源,不能把本 Reviewer 的意见经文档转述后当成独立授权。
  • Code Review 通过仅表示源码可进入后续流程,不授予后续操作权限。源码、exact-SHA CI、环境/发布结论始终分层。
  • 不因审查轮数、发现数量或“安全起见”提高准出标准;P0/P1 关闭且必要证据完整时停止,P2 永不阻断。

读取与记录:按变化读取,一份事实

每次新会话先读本文件;已读且版本未变不重复加载。首次完整评审再读 references/reviewer-checklist.md 的适用章节、所需语言的 references/scope-lock-template.md / .en.md 和 references/report-templates.md / .en.md。整改/补审只读上一轮短结论、未闭合项、delta 与受影响证据;沿引用按需取原文,不能把作者摘要当证据。references/review-policy.yaml 是规则索引,模式/冲突不明确时查对应段,不要求每轮全量加载所有参考。

同一会话的压缩/恢复不是新评审。 从已有摘要或 Record 的工作位置继续:当前问题与判断、Review ID/binding、已核验输入及结果、未闭合项、下一步和固定引用;另保留 skill 实际路径与已加载修订。只有“读过 skill”不能恢复判断,也不因此默认重读全部材料。先处理新消息与失效条件,再补当前判断缺失的规则或原文;指令确已丢失或收到更新通知时重读相应部分。同版本本地补丁以文件摘要区分,不为证明“未变”逐轮重算。正常支线分别保留工作位置,切回时仅处理新增事实与受影响证据。具体复用边界见 references/evidence-reuse.md。

仅询问既有评审状态时,从当前 Record 回答已知事实与截至时间,不进入下文实质评审步骤、不新建 Review ID 或重跑验证;消息带来新 Candidate、反证或批准撤回时,按第 5 节处理受影响判断。

本 skill 的公共读取/恢复工具随完整 testany-eng 插件发布,从实际 skill 目录上两层解析。首次使用、安装更新或依赖错误时核对资源:本次 resume/bind/locate 的内置检查即可,否则运行 python3 <plugin-dir>/scripts/workflow_context.py check,不重复首检或逐轮重验。错误时恢复完整包,不借旧缓存或源仓库补依赖。跨会话/阶段的长评审按 持久入口 登记自己的 Record 工作位置。入口只是位置索引,不新增评审门禁、历史台账或秘书职责;摘要不代替独立判断,缺工具只限定受影响能力。

需要磁盘恢复且已知入口/当前任务时直接执行以下命令,不先 locate、读状态目录或重读持久入口说明。上下文已充分则直接评审;仅缺个别字段时重复 --field 一次读取。新任务不得默用入口里旧 task ID。

python3 <plugin-dir>/scripts/workflow_context.py resume \
  --entry <已登记入口> --role reviewer --task <当前请求对应的task-id>

核心字段在总预算内完整返回;过长字段的下一次 argv = continuation_prefix(若有)+ 该字段的 next_args,交给同一工具续读,不猜 pointer、depth 或预算。PARTIAL/缺失不等于已读;来源变化则重新恢复受影响内容,不拼接旧段。bind/locate 的 resume_args 可直接复用,但须匹配当前请求,且不要求已有充分判断时再次恢复。参数数组按 argv 传递,或逐项正确 shell quoting。

触发读取
证据复用、snapshot 漂移或提交重绑references/evidence-reuse.md
按字段读大型 JSON,或捕获/核验机器证据references/artifact-tools.md(有界读取、现有工具参数,不另写遍历器)
首次接入长期工作流、安装更新或任务入口切换../../references/workflow-runtime.md
使用长 DOM 快照或恢复浏览器运行时../../references/browser-context.md(仅适用宿主)
确需并行独立审查../../references/subagent-result-contract.md 与 references/subagent-result-extension.md
批准来源争议、真实职责/信任/架构增量../../references/review-boundaries.md
已绑定交付秘书,需要同步状态或回应其询问references/delivery-coordination.md
维护本 Skilltests/evaluation.md;评审产品时不加载答案

一份 Review Record 保存 scope、当前 binding、覆盖/证据索引与未闭合项。大 manifest、逐文件 hash、命令原始输出交给脚本存成附件,正文只给结果、差异和引用;不把机器附件全量读进模型,也不在消息中来回复制。原始证据须可读;首次使用核验版本/摘要,同一会话同一不可变版本缓存核验结果,版本变动再验。签名/摘要不能代替首次实质审查。无需额外 ledger、sealer、逐轮空表或递归读回整条历史。

读取前明确要回答的判断:大型机器 JSON 用 scripts/read_machine_context.py 按 JSON Pointer 取字段;选中值尽量在总预算内读全,过大值返回数量、定位及精确 next_args。根 pointer 是空字符串,不是 /;没有 depth 参数。PARTIAL/缺失必须按需继续读取,不当作无问题或已核验。小文件无需套工具。不能先输出整棵子树再用字符/行数截断。代码、调用链和失败日志按问题读取足够上下文,必要时扩大;已截断的输出沿附件补相关部分,不重放全量。节省上下文不能成为跳过源码、独立反例、关键堆栈或必要验证的理由。

1. 冻结边界与精确输入

先读目标仓库 AGENTS/README 与相关批准基线。生成 CRV-<UUIDv4> 标识一次实质评审,记录稳定 main Reviewer identity。新语义 Candidate/新的实质复审用新 Review ID;同次评审中的捕获重试、报告排版、同内容 commit 绑定用原 Review ID 下的 binding revision,不制造一轮审批。

Scope Lock 包含逐仓 review_root_base、批准来源、In/Out Scope、Must Not Change、architecture budget、验证边界;用本 Skill 的 scripts/scope_lock_digest.py 生成 canonical payload/digest。正常整改沿用,不重新求批准。新增/争议授权回到原始有权决定;Reviewer comment 经文档转述不成为授权。未知字段如实 NOT_BOUND / NOT_FROZEN,只阻断受影响判断。

  • Immutable:绑定 exact commit/tree、base/range 和 changed paths;拒绝 replace refs / legacy grafts,Git 使用 GIT_NO_REPLACE_OBJECTS=1、禁用 external diff/textconv、保留 submodule 差异。
  • Mutable:从本 SKILL.md 的实际绝对目录运行 scripts/snapshot_worktree.py --repo <repo> --base <immutable-base> --output <Candidate之外>/snapshot-before.json。默认完整 argv/JSON 落盘,stdout 仅摘要与引用;省略 output 时返回临时附件路径。工具内部双捕获绑定 raw bytes/mode、index、submodule、untracked,拒绝 hidden index flags、dirty submodule、symlink baseline。
  • 他人 WIP 明确 owner/理由后用 --exclude,不得排除已提交 Candidate 的变化。Candidate-owned ignored 用 --candidate-ignored;可变基线用 --mutable-baseline。过滤/EOL 不得隐藏 raw bytes 改变。
  • 首次捕获后,在最后一次验证结束且即将给 verdict 时重算一次,加 --compare <snapshot-before.json> --compare-sha256 <首次固定的snapshot摘要> 直接得到 MATCH/DRIFT;这同一次 MATCH 同时满足 post-validation 与 pre-verdict。其间有写入/新测试/漂移才重算,不在只读 ACK 或材料转发后机械重跑。
  • 漂移使旧 binding 失效,比较变化并补审直接影响范围;保留未受影响证据。不能对未审新 bytes 放行;无法稳定绑定则只列必要 EB。
  • mutable/mixed 结论只绑定相应 snapshot;全部 immutable 才能给 certificate。同内容提交先按 evidence-reuse 用 scripts/verify_candidate_binding.py 核验 raw bytes、路径、mode/gitlink、基线和完整性,生成短 binding receipt,引用仍有效的 source APPROVED;不重审、不重跑未受影响测试、不新建 Review ID。receipt 自身不授予批准,存在新 blocker/撤回/输入或语义变化时禁用此路径。

继续完成可独立判断范围;SD/EB 只标实际缺口,不因一处缺证抹掉其他已完成覆盖。

2. 不膨胀:要求、修复、建议分开

Architecture surface 包括 service/workload、controller/runner、endpoint/RPC/event/wire、table/durable authority、queue/outbox、crypto purpose/key authority、Secret/RBAC、publisher/consumer 和部署拓扑。未在批准 budget 内的增改删均未授权。

Surface 的语义变化同样在范围内:谁授权谁、机器/用户主体转换、外部 PDP/策略管理依赖、数据 owner、依赖失败时业务能否继续。没有新增资源也不能声明 architecture_surface_delta: none。技术必要性、行业惯例、复用已有服务或“更安全”不能补出授权;有明确已批准 PDP 时也不得以简化为由删除它。工程边界内实现由工程侧判断,真正涉及产品承诺才交产品 Owner,不把所有技术选择上交 PM。

  • Candidate 自行越界,删除/回退即可恢复明确基线:标准 P1 scope violation,最小修复只要求删除/回退;不诱导 Owner 批准扩张。
  • 基线含糊/冲突,或已批准能力的最小正确修复确需未批准 surface:SCOPE_DECISION_REQUIRED,给 Owner 最小问题,不能代替其批准。
  • 没有新增表/服务不等于没有加料。修复建议还要核对新增手工步骤、门禁、配置、审批、测试维护和常态运维负担;是否对既定 invariant 必需,是否有更小边界内修复。不是新增一套“复杂度评分”或默认阻断所有局部 guard。
  • 文档过度声明时优先缩小/删除不实声明,不要求为其新建 ledger、sealer、validator、runner 或全栈证明平台;这不能删减已批准能力或验收条件。
  • P2 与必须整改单独列出。未选择的 P2 不进入下一轮 blocking closure,不说“建议本轮一起关闭”来捆绑准出;用户选做也不自动升级严重度。未来需求需独立明确授权。

3. 先重建生产行为,再核对作者证据

第一次完整评审覆盖全部 In Scope diff;复审只覆盖原阻断项、delta 和直接受影响路径。先从真实入口/调用关系形成关键路径与假设,再核作者的 PASS/修复解释,避免把同一错误假设重复验证。

对触达的关键风险路径,用简短行为证据行记录:

frozen invariant → 生产入口/数据来源/parser → 实际执行 helper 与替身边界 → 独立 oracle → 合法/非法/失败结果 → 直接调用方与恢复范围

同一证据可关联多条 finding,不要求每文件一份矩阵。具体方法见 checklist:

  1. 生产语义真实性:核对实际 pipeline 命令、配置、resource loader、parser、SDK/工具退出码和字段格式。真实 PG/Kind 只证明用了真实依赖,不证明输入由生产同一 provider 产生。断言应走待审的真实 helper;其外部 I/O 可隔离,不能把被审逻辑 mock 掉。
  2. 独立预期:批准的 package/Contract/外部观察定义预期。用本次实现输出生成 expected hash,再断言二者相同,不能证明批准绑定。静态字符串顺序或测试名不证明实际分支执行。
  3. 正反成对:关键校验既要非法拒绝,也要合法接受;再核实错误分类与拒绝副作用。按实际语义考虑正常 RV/status 变化、rolling 窗口、历史终态 Pod、权限拒绝退出码等,不能照抄项目专用规则。不能把仍在工作的 terminating Pod 一概当历史终态忽略。
  4. 行为链闭合:沿同一 invariant 查直接 consumers、普通/continuation 分支、全部获准 targets、retry/recovery/compensation。状态问题至少考虑相关连续尝试:第一次失败留下什么,第二次恢复/回滚读到什么;一行修复不等于整链关闭。
  5. Parser 同源:跨层比较编码/身份时采用拥有该字段的生产 parser 语义,检查其合法表示;不要为了审查另造一套 canonical authority,也不能只比字符串掩盖同字节不同表示。
  6. 管理入口可表达性:修复依赖策略/配置生成时,检查生产管理 API/compiler 能否表达并生成实际执行器输入。自写 compiler 后直接交真实 PDP/OPA,只证明下游执行器,不证明生产管理链可用;真实入口拒绝拟议格式是源码/设计可行性证据,不是泛称“上线再补配置”。只补最小隔离证据,不要求现网写入或新测试平台。

新风险假设必须有批准 invariant 与可定位路径才推进。未触达的域不扫描造问题。不能以“所有边界都应该测”要求新平台;优先复用现有命令,补最小能区分真实缺陷的实验。

4. Finding 与证据分层

级别含义
P0证据充分的致命缺陷,如授权绕过、敏感泄露、不可逆错误 effect/数据丢失
P1冻结范围内足以阻断合入的正确性、兼容、一致性、安全或可靠性缺陷
P2非阻断的维护性、可读性或局部测试改进;无数量阈值

每条 P0/P1 只必填核心:稳定 ID、severity、scope_classification、provenance、violated_frozen_invariant、exact_evidence、reproducer_or_failure_path、impact、minimum_boundary_preserving_fix、architecture_surface_delta。scope_classification 用 in_scope | scope_violation;provenance 用 initial_review | remediation_delta | previously_unavailable_evidence | reviewer_miss | post_terminal_new_ci_env,因果解释另写。批准 budget 行、旧 EB 恢复证据和首次可发现性等字段只在适用时填写,见 policy;不复制无用 N/A 大表。

缺少证据不能猜 P1。若阻碍必要判断,记最小 EB-*;若只是可选改进,列 P2;若需改变批准边界,列 SD-*。基线既有缺陷不归罪 Candidate,除非它依赖或扩大该风险。

  • Source/local:实际命令、输入/替身、结果、skip 与未证明的边界;测试数量不是覆盖充分性。
  • CI:只报告 exact-SHA 状态;NOT_RUN 不阻断源码准出。日志若证明源码 defect,另按证据分级。
  • Environment:缺少 Secret、DB census、部署 smoke 等是单列环境 gap,不是源码 finding;真实实验揭示的实现错误可以是 finding。

记录关键证据如何独立得出、替身隐藏了什么,不仅列“PASS”。必要输入缺失时补最小证据,不以更复杂实现替代不确定性。

5. 整改、复用与漏审责任

按触发事实与影响范围选最小充分动作,不能按轮数、漏审计数或有没有新日志来选:

事实动作
没有可信首轮覆盖initial_full_review;已有可信部分保留,只补未审范围
已有可信覆盖,Candidate 有实际 deltaremediation_delta_review:原阻断项 + delta + 直接消费者/共享依赖
发现旧代码漏审、旧 closure 不成立或新增 CI/环境证据focused_recovery_review:撤回受影响 closure/coverage,审根因、同类直接路径与必要恢复链
source 已 APPROVED,只有同内容 commit/元数据绑定binding_only receipt;不是新实质评审
无法界定影响,或共同基线/关键 oracle/覆盖整体不可信initial_full_review;先说明哪项事实使局部复用不成立

每条原 P0/P1、SD、EB 保留 ID 和验收语义,只给 closure 与必要回归;P2 不强制结转。原因区分 original_unfixed / introduced_by_fix / pre_existing_unreported_cause。旧源码原本可发现的问题要承认 reviewer miss、撤回错误批准,不把责任转给 Dev;新 CI 证据不自动证明是新增缺陷,也不自动导致全审。

首次或重复漏审均不自动跨仓全审、不自动换 main、不自动向 PM 求流程重启批准。 记录原证据漏点与本次不同入口/独立 oracle,先做有边界补审。只有旧结论涉及共同错误假设、影响无法隔离、基线来源污染无法限定等具体证据才扩大;说明保留与失效范围。对受污染判断,可换独立 reviewer 或验证方法,但“换人/多跑同一绿测”不等于修复盲点。产品/架构决策仍走对应 Owner,普通复审范围和测试选择由 reviewer 承担。

已有完整 Record/历史可引用,旧版 exceptional/process-reset 记录作为历史证据读取;不继续执行旧的次数升级规则、不要求迁移整套历史。只恢复当前 binding、最近有效结论、未闭合项和与本次判断相关的失效证据;存在较新 blocker 时不能越过它复用旧 approval。

验证分工与停止

  • 同一 Candidate 内容 + 命令 + 配置/fixture/toolchain 的昂贵测试只设一个执行者,默认 Writer/CI;Reviewer 读取可核验结果并检查是否对应真实生产入口、独立 oracle 和所需分支。作者 PASS 不能替代这些判断,但不需要由 Reviewer 再完整运行一遍。
  • Reviewer 运行最小独立反例/必要回归;仅当相关代码/依赖/配置/工具改变、结果缺失或不可信、覆盖不满足具体 invariant 时补跑。先检查实际 CI 入口、命令和依赖配置,避免长测完成后才发现走错链路。
  • 列出待运行命令、owner 和触发原因;已有可信结果直接引用。看到同绑定任务正在跑,复用/等待该任务,不启动副本。无法获知其他线程状态时,只发一次必要查询,不建立高频轮询。
  • 主动协作消息限于 candidate ready、实质 findings、阻塞/解除、最终 verdict、批准撤回或有效 binding 变化;对具体状态询问可给短答。无需回 ACK 的 ACK;同状态不重复主动报告或全文读回。观察进度用有 cursor 的有界 wait/backoff;无新事实不启动新 review turn。已绑定且获用户授权的秘书按 references/delivery-coordination.md 接收增量,收件或记账不参与源码准出。

6. 多仓与并行评审

默认 main 独立完成可控范围。只有用户/适用指令授权且任务具有独立价值时并行;按互不重叠的风险路径分工,不按“多找问题”分工。传递已冻结的 scope、精确 assignment/range、必要基线与相关原 blocking IDs;不要求每个 child 重读全局历史/所有仓库/所有报告。

main 一次维护机器 changed-path manifest 和覆盖分配;同一绑定不由每个接收者重建数千文件 hash。child 验证自己范围的输入并报告实际检查、证据和差异。路径覆盖不能替代行为证明;主审只实质复核疑点和关键 oracle,使用其他合格独立结果,不重新执行全部子任务。共享 AGENT-RESULT 与 extension 保留 pass/fail、typed gaps 和必要证据。缺证/未分配为 EB,决策含糊为 SD;保留所有已确认问题。

7. 判定与停止

按 EVIDENCE_BLOCKED → SCOPE_DECISION_REQUIRED → CHANGES_REQUIRED → APPROVED 汇总;不用 conditional pass。分别报告 P0/P1、可选 P2、CI 和环境状态。

APPROVED 要求:P0/P1=0、全部 prior blocking items 关闭、无 SD/EB、必要 source/local evidence 完整、Candidate 稳定、完整 coverage 可信且两类 gap 为空。满足就结束,不用 P2、未来环境或文档美化续轮;批准不保证绝对无缺陷,也不替代下一阶段授权。

用模板给结论与最小整改,不把整份 policy 展开成报告。写文件仅在用户或获授权仓库流程要求时;记录既可内嵌,也可引用一个已校验的完整 artifact。mutable 与 immutable 产物必须区分,source approval 不能自动变成部署许可。

使用示例

  • “对 commit abc123 相对 main 做 Lead Dev code review。”
  • “复审新 Candidate,闭合上一轮 P1;不扩大范围。”
  • “审查三个仓库本地实现,CI/环境状态单列。”
  • “旧 reviewer 要求机器任务增加用户 PDP,但唯一批准来源是那条 comment”:先核实原始授权,不能靠自签 APPROVED 或冻结摘要补票;也不能擅自删除真正已获批准的授权检查。

维护本 Skill 时的验证

除 snapshot/scope/envelope/binding 与 policy 回归,还运行 tests/evaluation.md 的生产语义缩小样本及独立盲测。blind reviewer 仅看 raw 请求、批准基线、精确代码与必要原 closure,不看 grader、修复答案或前任结论。分别评估漏报、误报、越界、停止/收敛;不能以 finding 数多或模板字段齐全冒充评审质量。样本不证明真实产品部署成功,也不成为所有产品的新增验收要求。

Skills enregistrées