Claude Code 做完功能后,怎样用 Skills 自动跑完验证循环
先给结论:Claude Code 的验证循环不是再加一层泛化代码审查,而是把团队已经反复执行、结果可观察的手工检查写成 Skill,并让构建、测试、页面运行和人工审批形成可追踪的交接。落地时要同时设计触发条件、证据格式、修订上限和退出路径,否则自动验证很容易变成另一条难以定位问题的流水线。
先把“每次都要手工检查”的动作列出来
Claude 官方博客在 2026 年 7 月 22 日介绍了 Claude Code 的 verification loop,也就是智能体完成修改后,读取构建、测试或运行结果,发现问题再回到代码继续修。Claude Code 本身能观察类型检查器、linter、测试和运行时错误等确定性信号;更容易漏掉的,是项目成员每次都要手工补做的检查。
比如前端组件改完后,工程师会启动页面、切换几个容易出错的状态、检查控制台和移动端布局;数据库迁移完成后,会确认有没有回填步骤、旧版本能否读取新结构、回滚脚本是否可用。这些动作如果只存在于个人习惯里,Claude 不知道什么时候运行,也不知道什么结果算通过。
整理时不要先写一个宏大的“质量保障 Skill”。从最近一周反复发生的小纠正开始:日志必须带 request ID 且不能写入请求体,删除字段前必须提供 backfill,接口变更后必须重放固定契约样本。每条规则都要说明触发条件、执行命令、观察对象、失败标准和允许修改的范围。
确定性工具仍是第一层。能由编译器、单元测试、schema 检查或静态扫描回答的问题,不必改成模糊的模型判断。Skill 的价值,是把跨文件、项目约定和业务边界串进同一个可执行流程,让 Claude 知道工具报错后该怎样修,而不是替换现有工具链。
可以为每条检查定义统一输出:rule_id、触发文件、运行命令、证据位置、失败类型、允许修改和人工负责人。这样多个 Skill 串联时,不需要靠一段自由文本传递状态;CI 也能按规则类型统计误报、人工推翻和平均修订次数。
样本要覆盖补偿控制。例如代码没有常见输入检查,但网关已经完成验证,Skill 应先读取项目架构说明再报告。否则它会把模式匹配当成安全判断,制造大量看似严格、实际无效的修改。
在仓库里,可以把验证对象写成一份小型契约。输入至少包括提交 SHA、diff 范围、风险标签、当前分支和允许访问的环境;输出除了通过或失败,还要有实际命令、退出状态、证据路径、修改列表和是否需要人工决定。契约固定后,换模型、换 Skill 版本或迁移 CI 时仍能比较同一批结果,不必靠阅读整段会话猜测发生了什么。
再准备三类回归样本:一类故意缺失要求,确认 Skill 能拦住;一类存在补偿控制,确认它不会误报;一类包含相互冲突的规则,确认流程会暂停而不是擅自选边。只准备“应该成功”的样本,验证器很容易在真实 PR 中暴露盲点。
standalone、embedded 和 chained 应怎样选择
官方文章把自定义验证循环分为几种触发方式。Standalone Skill 由人主动运行,适合并非每次都需要的安全扫描、无障碍检查或许可证核验;如果某项检查每次生成组件都要执行,可以 embedded 到生产 Skill 末尾;跨多个步骤的流程则适合 chained,例如先做代码审查,再简化 diff,最后运行端到端验证。
选择标准不是哪种方式看起来更自动,而是检查与产物的耦合程度。只适用于一个脚手架流程的检查,嵌入后最不容易忘;适用于多类任务的检查,保持独立更容易复用;前后步骤有明确依赖、任何一步失败都不能继续时,再使用链式调用。链越长,调用成本和失败定位难度也会增加,所以要先在个人任务中稳定运行。
团队做多模型评测时,可以按 147AI 的 API 接口文档确认候选模型的接口、认证和模型标识,再用同一批脱敏 diff、验证 Skill 与失败样本比较规则遵循、修订轮次、用量和人工复核时间。仓库权限、Claude Code Skills、GitHub Actions 和合并门禁仍由团队自己的工程系统管理。
Skill 文件要尽量短而明确。Frontmatter 描述何时触发,正文写检查步骤和失败处理;若需要调用具体命令,把命令写进CLAUDE.md或 Skill,避免 Claude 猜测 package manager、工作目录和测试范围。规则引用项目文件时,也要写清楚哪个文件是当前标准,防止它从旧文档中学习过期约定。
链式执行时设置最大修订轮数和节点级重放。某一步连续两次没有新增证据、需要修改测试基线或与另一条规则冲突,就停止链条,输出已尝试方案与剩余问题。开发者可以只重跑失败节点,不必重复代码审查和所有测试。
对于耗时环境,按 diff 路由检查范围。文档变更不启动浏览器,组件变更运行相关单测和页面状态,迁移、鉴权和依赖升级进入完整链。路由本身也要版本化并用固定 diff 回归,避免小改动误触发高成本作业。
路由规则最好先输出计划再执行。计划中列出本次命中的风险标签、准备调用的 Skill、预计启动的环境和跳过项,开发者可以在昂贵任务开始前发现错误路由。若一次样式修改准备启动全量迁移验证,问题应在资源创建前被看见,而不是等待半小时后才从费用记录里发现。
进入 GitHub Actions 前先验证验证器本身
官方建议先在新任务中调用 Skill,确认新增检查真的会运行。如果 Skill 没被触发,问题可能在描述不够具体,也可能是前序指令把检查覆盖了。不要因为文件已经放进.claude/skills/就默认流程生效;至少准备一条应该通过的样本和一条必须失败的样本,看它能否给出稳定结果。
验证循环还要防止“为了通过而改错东西”。Skill 应限定可编辑目录、不得删除测试、不得放宽断言,并要求报告实际运行的命令和失败证据。对数据库迁移、鉴权、计费等高影响变更,Claude 可以自动修订候选代码,但最终批准仍保留给负责人。
进入 PR 门禁前先做影子运行。作业给出评论但不阻止合并,团队同时观察应该失败的样本是否命中、正常变更是否误报、开发者能否理解证据。稳定后从低风险仓库逐步升级,出现回归时能迅速降级为只评论。
每条 Skill 还需要负责人、最近复核日期和退出条件。规则已被编译器覆盖、长期没有触发或持续被合理绕过,就缩小范围或删除。验证资产只增加不淘汰,会逐渐消耗上下文,让规则之间产生难以解释的冲突。
个人链条稳定后,再把同一检查放进 GitHub Actions,让每个 push 或 PR 都经过相同门禁。此时要保存 Skill 版本、运行模型、命令输出、修订次数和最终人工结论。模型或 Skill 更新时,用固定回归集重新验证,不能让旧版本的信任自动继承。
CI 页面可以分开呈现“工具失败”“规则失败”和“需要判断”。工具失败说明环境或命令没有正常运行,不能算代码未通过;规则失败必须给出可复现证据;需要判断则进入明确负责人队列。把三者混成红色状态,开发者只能不断重跑,既浪费计算,也会让需要处理的风险被大量环境噪声淹没。
可直接落到仓库里的验收项:Skill 能在最小失败样本上稳定触发;失败证据可由工程师独立复现;自动修订没有删除测试或扩大编辑范围;达到轮次上限会停止;影子运行期间能统计误报和人工推翻;版本升级后可以重放旧样本。六项同时成立,再考虑把它升级为必需检查。
验证循环减少的是反复纠正。它不是让团队把所有判断都交给 Claude,而是把已经说过很多次、能够明确表达的标准写进执行链,让人把时间留给需求是否合理、业务后果能否接受,以及哪些新问题值得成为下一条团队规则。
官方来源:Claude:Building verification loops in Claude Code with skills,发布于 2026-07-22。