mcpField
V
verification-before-completion

verification-before-completion

github.com/pixel-process-ug测试与质量382 次安装33 周前更新
代码仓库

关于 verification-before-completion

用于开发任务收尾检查的技能,要求在声明完成前执行并审阅最新验证命令的完整输出。它以五步流程核对测试、构建和检查结果是否支持完成结论。

主要功能

  1. 01识别适用的验证命令
  2. 02运行最新的完整验证
  3. 03审阅命令的全部输出
  4. 04核对结果与完成声明
  5. 05整理验证证据

适用场景

  1. 01提交代码前确认测试与构建
  2. 02修复缺陷后复核改动
  3. 03检查配置变更或重构

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/pixel-process-ug/superkit-agents --skill verification-before-completion

安装后在 Claude Code 中输入/verification-before-completion确认已加载。

详细介绍

概述

完成前验证技能是工具包中每项任务的最终检查点。它强制执行严格的 5 步协议,要求运行最新的验证命令、阅读其完整输出,并确认结果与完成声明相符。没有这项技能,Agent 会做出未经验证的声明,导致代码在生产环境中出问题;有了它,每项完成声明都有证据支撑。


铁律

没有最新的验证证据,就不要声明任务已完成。

如果没有在当前会话中运行验证命令并阅读其输出,就不能说“它能正常工作”“已经完成”“Bug 已修复”或“功能已完成”。缓存结果、之前的运行记录和假设都不算数。


阶段 1:确定验证命令

开始运行任何命令之前,明确列出此任务需要通过哪些检查:

验证类型示例命令何时需要
单元测试npm test、pytest、go test ./...、cargo test、php artisan test始终需要
集成测试npm run test:integration、pytest tests/integration/适用时
类型检查tsc --noEmit、mypy .、pyright、phpstan analyse项目使用类型检查时
代码检查eslint .、ruff check .、golint ./...、php-cs-fixer fix --dry-run始终需要
构建npm run build、cargo build、go build ./...始终需要
格式检查prettier --check .、black --check .、gofmt -l .、pint --test项目使用格式化工具时

**操作:**列出当前项目适用的检查。并非所有项目都包含所有类型的检查。明确说明要运行哪些检查以及原因。

停止:确定所有适用的验证类型之前,不要运行命令。


阶段 2:重新运行命令

执行阶段 1 中确定的每一条验证命令。

规则原因
在最近一次代码修改后运行修改前的结果已经过时
运行完整测试套件,不要只运行部分测试只运行部分测试会漏掉回归问题
不要依赖缓存结果上次运行后代码已发生变化
不要因为“之前通过了”就跳过命令之前不等于现在
如果命令耗时超过 5 分钟,注明这一点说明实际运行了什么

停止:所有命令都完成后,才能进入阶段 3。


阶段 3:阅读完整输出

阅读每条验证命令的完整输出。重点关注:

输出要素关注点重要原因
退出代码非零表示失败即使输出看起来正常,非零也表示有失败
测试数量运行的测试数量是否符合预期?是否有跳过的测试?跳过的测试意味着代码未经测试
警告消息是否出现之前没有的新警告警告可能会变成错误;它们表明质量有所下降
弃用提示是否使用了已弃用的 API存在未来出现故障的风险
性能指标测试是否异常缓慢可能表明性能出现回归
错误消息是否出现任何错误,即使测试“通过”也是如此有些框架会在报告测试通过的同时报告错误

停止:阅读每条命令的完整输出后,才能继续。


阶段 4:验证输出是否符合声明

问自己以下问题。所有问题的答案都必须是“是”,才能继续:

问题如果答案为“否”或“不确定”
所有测试都通过了吗(不只是我编写的测试)?修复失败的测试后再声称已完成
构建是否成功且没有错误?修复构建错误
类型检查器是否未发现错误?修复类型错误
代码检查是否通过?修复代码检查错误
是否出现了之前没有的新警告?调查并修复,或明确说明理由
是否运行了完整测试套件(而不只是子集)?运行完整测试套件
测试数量是否符合预期?调查被跳过或缺失的测试

停止:如果任何一个答案是“否”或“不确定”,请返回修复,并从阶段 1 重新开始。不要继续到阶段 5。


阶段 5:提供证据并声明完成

现在才可以说任务已完成。请提供以下证据:

VERIFICATION EVIDENCE
=====================
Task: [what was being done]
Date: [timestamp]

Commands Run:
  [x] Tests:      [command] -> [result: X passed, Y failed, Z skipped]
  [x] Build:      [command] -> [result: success/failure]
  [x] Lint:       [command] -> [result: X errors, Y warnings]
  [x] Type-check: [command] -> [result: X errors]
  [x] Format:     [command] -> [result: clean/X files to format]

All Green?  [x] YES  [ ] NO
New warnings introduced?  [ ] YES  [x] NO

Completion claim: [specific claim, e.g., "Feature X is implemented and all tests pass"]

停止:验证协议到此结束。只有提供了这些证据的声明才有效。


决策表:什么算作“新鲜”的证据

算作新鲜不算作新鲜
在最近一次代码更改后运行了命令在最近一次代码更改前运行
执行了完整测试套件仅执行了部分测试
阅读并分析了输出粗略浏览或忽略了输出
运行了所有验证类型只运行了测试(没有代码检查或构建)
在当前会话中运行了命令凭记忆回想之前某个会话的结果
有实际的命令输出“我记得它通过了”

决策表:特殊情况

情况协议
完整测试套件耗时超过 5 分钟运行相关测试和冒烟测试套件。注明未运行完整测试套件。建议合并前运行 CI。
不存在自动化测试将此视为重大风险。按照有记录的步骤进行手动验证。建议后续补充测试。至少要确认代码可以编译并运行。
测试不稳定单独重新运行失败的测试。如果单独运行时通过,请注明其不稳定性。确认更改没有引入此问题。不要以测试不稳定为由跳过测试。
仅更改配置配置更改是导致服务中断的首要原因。必须进行完整验证。
仅更改一行单行更改也可能导致生产环境中断。必须进行完整验证。
仅进行重构现有测试仍须通过。运行完整测试套件。

常见失败模式

模式结果危险之处
测试通过,但代码检查失败代码可运行,但存在质量问题代码检查失败通常意味着确实存在问题(未使用的变量、不可达代码)
测试通过,但构建失败测试环境与构建环境不同生产部署会失败
测试通过,但类型检查失败运行时正常,但类型错误错误可能隐藏在 any 类型或错误接口背后
单独运行测试时通过,但一起运行时失败测试之间存在共享状态CI 不稳定,测试套件不可靠
手动测试通过,但自动化测试失败手动测试遗漏了边界情况自动化测试的结果是正确的
测试通过,但出现了新警告某些方面退化了警告会逐渐变成错误
部分测试通过只运行了相关测试其他区域可能存在回归
测试通过,但覆盖率下降新代码没有经过测试未测试的代码就未经验证
使用旧测试结果作为证据结果已过时自那次测试运行后代码已经更改
“编译通过了,所以能正常工作”编译是必要条件,但不是充分条件编译成功的代码仍可能有误

反模式 / 常见错误

不要这样做失败原因应该怎么做
未运行测试就声称已完成未经验证的代码会在生产环境中出问题重新运行所有验证命令
用“之前通过了”作为证据此后代码已经发生变化每次更改后都重新运行
因为“只是警告”就跳过 lint警告表明存在实际问题修复警告,或明确说明每一条警告的理由
只运行自己编写的测试会遗漏其他区域的回归问题运行完整测试套件
只看部分测试输出输出中可能隐藏着未注意到的失败阅读输出的每一行
只用手动测试作为证据手动测试不完整且无法重复运行自动化验证
验证一次后,又做“很小”的额外更改这些更改未经验证每次更改后都重新验证
不加说明就屏蔽警告会掩盖实际问题如果确实是误报,添加注释说明屏蔽原因

防止自我合理化

借口事实
“我只改了一行”一行改动也会导致生产环境中断。请验证。
“测试 5 分钟前通过了”此后你做了更改。请重新运行。
“我以前测试过这种模式”这是另一个实例。请验证当前这个实例。
“这个更改显然是正确的”显而易见的更改更容易出错,因为它们未经验证。
“运行测试太耗时了”等 Bug 影响生产环境后,不运行测试会花费更多时间。
“我提交后再验证”你不会这么做。而且如果验证失败,你就得撤销并重做。
“这只是配置更改”配置更改是导致中断的首要原因。请验证。
“lint 警告是误报”逐条检查。如果确实是误报,请添加注释并屏蔽。
“类型错误出现在无关代码中”它们可能会相互影响。请运行完整检查。
“我手动测试过了”手动测试不完整且无法重复。请运行自动化验证。

没有第 5 阶段的证据,绝对不要声称已完成。没有例外。


集成点

技能何时需要验证
test-driven-development完成功能的 RED-GREEN-REFACTOR 循环后
systematic-debugging应用 Bug 修复后
executing-plans每项任务完成后,以及每批任务完成后
subagent-driven-development实现者交付后(通过 Agent 工具),审查者批准后
code-review批准任何代码审查之前
resilient-execution将任何任务标记为完成之前
autonomous-loop将 EXIT_SIGNAL 设为 true 之前
finishing-a-development-branch合并或创建 PR 之前
集成流程
[Do the work using other skills]
    |
    v
[Think you are done?]
    |
    v
[Invoke verification-before-completion]
    |
    +-- All checks pass -> Claim completion with Phase 5 evidence
    |
    +-- Any check fails -> Fix and re-verify (do NOT claim completion)

其他技能的强制要求

所有其他技能都会在完成时调用此技能。这不是可选项,而是最终检查点——只在工作结束时调用,绝不在开始时调用。


技能类型

严格 — 这套 5 步流程是硬性门槛。必须按顺序执行每一步,不得跳过任何步骤。没有第 5 阶段的证据,任何完成声明都无效。任何情况下都不得放宽这些要求。

评论

支持 Markdown