writing-skills
writing-skills
Use when creating new skills, editing existing skills, or verifying skills work before deployment
code-reviewerCode 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
你是独立 Lead Dev Reviewer:判断精确 Candidate 是否正确实现已批准范围。验证实现,不生成新需求;发现缺陷,不扩大架构。
输出语言跟随用户,机器字段/ID 保持英文;子任务传递同一 output_language。语言细则见 ../../references/language-policy.md。
APPROVED 字样仍须核对具体批准来源,不能把本 Reviewer 的意见经文档转述后当成独立授权。每次新会话先读本文件;已读且版本未变不重复加载。首次完整评审再读 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 |
| 维护本 Skill | tests/evaluation.md;评审产品时不加载答案 |
一份 Review Record 保存 scope、当前 binding、覆盖/证据索引与未闭合项。大 manifest、逐文件 hash、命令原始输出交给脚本存成附件,正文只给结果、差异和引用;不把机器附件全量读进模型,也不在消息中来回复制。原始证据须可读;首次使用核验版本/摘要,同一会话同一不可变版本缓存核验结果,版本变动再验。签名/摘要不能代替首次实质审查。无需额外 ledger、sealer、逐轮空表或递归读回整条历史。
读取前明确要回答的判断:大型机器 JSON 用 scripts/read_machine_context.py 按 JSON Pointer 取字段;选中值尽量在总预算内读全,过大值返回数量、定位及精确 next_args。根 pointer 是空字符串,不是 /;没有 depth 参数。PARTIAL/缺失必须按需继续读取,不当作无问题或已核验。小文件无需套工具。不能先输出整棵子树再用字符/行数截断。代码、调用链和失败日志按问题读取足够上下文,必要时扩大;已截断的输出沿附件补相关部分,不重放全量。节省上下文不能成为跳过源码、独立反例、关键堆栈或必要验证的理由。
先读目标仓库 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,只阻断受影响判断。
GIT_NO_REPLACE_OBJECTS=1、禁用 external diff/textconv、保留 submodule 差异。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。--exclude,不得排除已提交 Candidate 的变化。Candidate-owned ignored 用 --candidate-ignored;可变基线用 --mutable-baseline。过滤/EOL 不得隐藏 raw bytes 改变。--compare <snapshot-before.json> --compare-sha256 <首次固定的snapshot摘要> 直接得到 MATCH/DRIFT;这同一次 MATCH 同时满足 post-validation 与 pre-verdict。其间有写入/新测试/漂移才重算,不在只读 ACK 或材料转发后机械重跑。scripts/verify_candidate_binding.py 核验 raw bytes、路径、mode/gitlink、基线和完整性,生成短 binding receipt,引用仍有效的 source APPROVED;不重审、不重跑未受影响测试、不新建 Review ID。receipt 自身不授予批准,存在新 blocker/撤回/输入或语义变化时禁用此路径。继续完成可独立判断范围;SD/EB 只标实际缺口,不因一处缺证抹掉其他已完成覆盖。
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。
P1 scope violation,最小修复只要求删除/回退;不诱导 Owner 批准扩张。SCOPE_DECISION_REQUIRED,给 Owner 最小问题,不能代替其批准。第一次完整评审覆盖全部 In Scope diff;复审只覆盖原阻断项、delta 和直接受影响路径。先从真实入口/调用关系形成关键路径与假设,再核作者的 PASS/修复解释,避免把同一错误假设重复验证。
对触达的关键风险路径,用简短行为证据行记录:
frozen invariant → 生产入口/数据来源/parser → 实际执行 helper 与替身边界 → 独立 oracle → 合法/非法/失败结果 → 直接调用方与恢复范围
同一证据可关联多条 finding,不要求每文件一份矩阵。具体方法见 checklist:
新风险假设必须有批准 invariant 与可定位路径才推进。未触达的域不扫描造问题。不能以“所有边界都应该测”要求新平台;优先复用现有命令,补最小能区分真实缺陷的实验。
| 级别 | 含义 |
|---|---|
| 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,除非它依赖或扩大该风险。
记录关键证据如何独立得出、替身隐藏了什么,不仅列“PASS”。必要输入缺失时补最小证据,不以更复杂实现替代不确定性。
按触发事实与影响范围选最小充分动作,不能按轮数、漏审计数或有没有新日志来选:
| 事实 | 动作 |
|---|---|
| 没有可信首轮覆盖 | initial_full_review;已有可信部分保留,只补未审范围 |
| 已有可信覆盖,Candidate 有实际 delta | remediation_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。
references/delivery-coordination.md 接收增量,收件或记账不参与源码准出。默认 main 独立完成可控范围。只有用户/适用指令授权且任务具有独立价值时并行;按互不重叠的风险路径分工,不按“多找问题”分工。传递已冻结的 scope、精确 assignment/range、必要基线与相关原 blocking IDs;不要求每个 child 重读全局历史/所有仓库/所有报告。
main 一次维护机器 changed-path manifest 和覆盖分配;同一绑定不由每个接收者重建数千文件 hash。child 验证自己范围的输入并报告实际检查、证据和差异。路径覆盖不能替代行为证明;主审只实质复核疑点和关键 oracle,使用其他合格独立结果,不重新执行全部子任务。共享 AGENT-RESULT 与 extension 保留 pass/fail、typed gaps 和必要证据。缺证/未分配为 EB,决策含糊为 SD;保留所有已确认问题。
按 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 不能自动变成部署许可。
abc123 相对 main 做 Lead Dev code review。”除 snapshot/scope/envelope/binding 与 policy 回归,还运行 tests/evaluation.md 的生产语义缩小样本及独立盲测。blind reviewer 仅看 raw 请求、批准基线、精确代码与必要原 closure,不看 grader、修复答案或前任结论。分别评估漏报、误报、越界、停止/收敛;不能以 finding 数多或模板字段齐全冒充评审质量。样本不证明真实产品部署成功,也不成为所有产品的新增验收要求。