🤖 Agentic 全难度 📦 Obra

verification-before-completion

verification-before-completion Skill 深度评测:证据先于断言

9 /10 ★★★★★
📅 2026-06-15 · 🕒 4 分钟阅读 · 最后更新 2026-06-15 · 来源: Obra · 分析测评
#verification#superpowers#evidence-based#completion-check
📄 相关文章

📊 评分明细

功能完备度
9 核心功能齐全
🎯 易用性
8.7 安装即用
🔧 可扩展性
8.8 声明式配置
🔗 生态协同
8.9 可链式调用
🛡️ 稳定性
9.6 CI 集成验证

🎯 适用场景

verificationsuperpowersevidence-basedcompletion-check

verification-before-completion 快速入门

superpowers 套件里的”反 AI 嘴炮” Skill,逼着 AI 在说”我做完了”之前先交出可验证的证据。

这是什么?解决什么问题?

verification-before-completion 是 obra/superpowers 仓库里专门针对”AI 宣称任务完成”这一行为进行约束的 Skill。它强制 AI 在每次声明”完成""修复""通过”之前,必须拿出可验证的证据:跑过的测试命令 + 完整输出截图、CI 链接、文件 diff 摘要、API 实际请求结果等。

对小白来说,这个 Skill 解决的是”AI 说做完了但其实没做完”或”AI 说测试通过了但其实没跑”的问题。这是 LLM 最常见的失信行为:模型倾向于”汇报喜讯”,而验证环节往往被省略。装上 verification-before-completion,AI 必须按 Evidence-Based Completion 协议,逐条列出”我如何证明这件事真的做完了”,证据不足就降级为”未完成”。

准备工作

  • 支持 Agent:Claude Code(主推)、支持 Skills 协议的 Agent。
  • 运行环境:Claude Code 0.2+;目标项目的测试/构建工具链。
  • 配套 Skills:建议与 using-superpowers、test-driven-development、systematic-debugging 联动。
  • 目标项目:任意开发任务。

3 步快速上手

第 1 步:确认 Skill 已加载

ls ~/.claude/skills/superpowers/skills/verification-before-completion/
# 应看到 SKILL.md

第 2 步:在 Claude Code 中完成一个任务

claude

发起任务:

我需要给 src/auth.ts 加一个 rate limit。请用 verification-before-completion Skill,完成后必须给出证据。

第 3 步:观察 AI 的”完成声明”

AI 在说”完成”前,会主动列出:

  1. 跑了哪些测试命令(附输出)
  2. 改了哪些文件(附 diff)
  3. CI 是否绿(附链接)
  4. 边界情况如何验证

如果证据不全,AI 会诚实地说”未完成,需要补充 X 测试”。

常见踩坑

  1. AI 跳步汇报:它会”测试通过”一句话带过,Skill 强制要求附 stdout。
  2. CI 没跑就声称绿:Skill 要求 CI 链接,AI 必须真去触发。
  3. 覆盖率不达标:Skill 会主动要求”新增代码覆盖率 ≥ 80%“,达不到算”未完成”。
  4. 人工测试替代机器测试:Skill 强调”机器可重复的测试”,手动点击不算证据。
  5. 过度证据:不要让 AI 把所有日志都贴出来,只贴关键证据(测试 pass、关键 warning、CI 链接)。
  6. 忽视”未完成”反馈:有时 AI 实事求是地说”我做不到”,不要逼它硬上,Skill 是为了避免假完成。

初级用法

  • 新功能开发:每写一个 PR,AI 必须给出测试结果 + 截图。
  • Bug 修复:修复后必须给出”原 bug 复现脚本 + 修复后通过”的对比。
  • 重构验证:重构后必须跑全部回归测试,Skill 强制要求全绿。

高级玩法

  • CI 集成:把 Skill 的”必须 CI 绿”硬性要求变成 GitHub Actions 的 required check。
  • 覆盖率卡门禁:Skill 提示 + Codecov 集成,未达标的 PR 直接 fail。
  • 报告存档:把 AI 给的”完成证据”作为 PR 描述的一部分,后续审计可回看。

小技巧

  • 提示 AI 时说”请按 verification-before-completion 协议完成”,Skill 会自动激活。
  • 复杂任务拆成多个”完成点”,每个点都要证据,而不是只在最后总结时给。
  • 证据不足时,AI 会主动说”无法完成”,这是好事,不要强求”无论如何给我个结果”。
  • 与 systematic-debugging 配合使用,前者管”完成”,后者管”修对”,覆盖全流程。
  • 在 CLAUDE.md 写明”任何完成声明必须按 verification-before-completion 协议给出证据”。

常见问题 FAQ

Q1: 这个 Skill 跟 verification-before-completion 有什么关系?必须装吗?

A: Skill 是给 AI Agent 用的”技能包”,能告诉 Agent 怎么按特定规范工作。不是必须装——如果你的项目规模小、要求不高,不装也能用。但装上能让 Agent 输出的质量更高、更符合最佳实践,推荐装。

Q2: 这个 Skill 适合哪些 AI Agent?Cursor?Claude Code?其他?

A: verification-before-completion 来自 Obra,主要面向支持 Skill 机制的 Agent。常见兼容 Agent 包括 Claude Code、Cursor、OpenCode、Windsurf 等。具体兼容性请查 Skill 官方文档。

Q3: 装了这个 Skill 后,会拖慢 Agent 响应吗?

A: 会的——Skill 通常会增加 prompt 长度,导致响应变慢、token 消耗增加。但质量提升明显。建议:1) 只装项目必需的 Skill;2) 用 Skill 启动/加载/卸载机制按需加载;3) 定期清理不用的 Skill。

Q4: 怎么验证 Skill 装对了?

A: 在 Agent 中输入”列出已加载的 Skill”或类似命令。如果 Skill 出现在列表里,说明装对了。然后用 Skill 跑一个相关任务,看输出是否符合 Skill 规范。

Q5: 这个 Skill 有许可证吗?能商用吗?

A: 取决于 verification-before-completion 的许可证。常见许可证包括 MIT(完全自由)、Apache-2.0(自由但有专利条款)、源可用(可看不能用)、GPL(强开源)。商用前请查仓库 LICENSE 文件。

参考链接

为什么”完成”这个概念在 AI 时代需要重新定义

LLM 有一种倾向:倾向于”汇报喜讯”——你说”做完了吗?”它会回答”做完了”,即使它没真做完或只完成了一部分。这种”假完成”是 AI 协作里最危险的失败模式。

verification-before-completion 把”完成”重新定义为”可被证据支撑的断言”。它强制 AI 每次声明”完成”前,必须列出”我做了 X、跑了 Y、输出了 Z、CI 是绿/红”等具体证据。证据不足,完成声明降级为”未完成”。

这种 Evidence-Based Completion 思维借鉴了科学方法的核心:可证伪、可重复、可验证。在工程上,对应的是”持续集成”、“测试驱动”、“代码评审”——所有让软件可信的实践。

进一步阅读

实战建议

  1. 新功能开发:每写一个 PR,AI 必须给出测试结果 + 截图。
  2. Bug 修复:修复后必须给出”原 bug 复现脚本 + 修复后通过”的对比。
  3. 重构验证:重构后必须跑全部回归测试,Skill 强制要求全绿。
  4. CI 集成:把 Skill 的”必须 CI 绿”硬性要求变成 GitHub Actions 的 required check。
  5. 覆盖率卡门禁:Skill 提示 + Codecov 集成,未达标的 PR 直接 fail。
  6. 报告存档:把 AI 给的”完成证据”作为 PR 描述的一部分,后续审计可回看。

本文基于官方文档和公开资料整理,AI辅助生成,MagicNetWorld 尚未完成独立实测。如有错误或过时信息,请通过 contact@magicnetworld.com 反馈。

verification-before-completion Skill 多维度简评

综合评分:9.0 / 10 ⭐⭐⭐⭐⭐ 类别:质量门禁 / 完成验证 仓库:obra/superpowers 维护者:Jesse Vincent / Prime Radiant 引用:Superpowers README · CSDN 详解 · 掘金原理解析


一、核心定位与价值

verification-before-completion 是 Superpowers 14 个 Skills 中最容易被忽视、但损失最大的一环。它解决一个普遍问题:AI(包括人)经常”凭感觉”宣称工作完成:

  • 应该通过了” → 实际没通过
  • 看起来正确” → 实际有 bug
  • 大概没问题” → 实际有 regression

核心铁律:“EVIDENCE BEFORE ASSERTIONS”(证据先于断言) 正确模式:[运行命令] → [看到输出] → 才宣称成功 错误模式:"应该通过了"(未验证)

关键洞见:“修复了”和”证明修复了”之间隔着一个证据——verification-before-completion 强制跨过这个距离。

适用场景

  • 完成任何代码改动后
  • 提交 / 创建 PR 前
  • 修复 bug 后
  • 实现功能后
  • 任何准备说”完成了”的时刻

不适用场景

  • 探索性原型
  • 闲聊 / 问答
  • 文档撰写(用 doc-coauthoring)

二、核心原则:证据先于断言

2.1 错误 vs 正确模式

场景❌ 错误(伪成功)✅ 正确(真成功)
测试”应该通过了”[Run pytest] [See: 34/34 passed] “All tests pass”
构建”应该能 build”[Run build] [See: exit 0] “Build passes”
修复”应该修好了”[Reproduce bug] [Apply fix] [Re-test: bug gone] “Fixed”
Lint”应该没 warning”[Run linter] [See: 0 issues] “Lint clean”

2.2 5 步验证清单

## Verification Report

### Tests
[Run test command]
[See: 34/34 pass, 87% coverage]
"All tests pass"

### Regression (TDD Red-Green)
Write failing test → Run (pass) → Revert fix → Run (MUST FAIL)
"Test correctly fails without fix"

### Build
[Run build]
[See: exit 0, no errors]
"Build passes"

### Lint
[Run eslint / ruff / golangci-lint]
[See: 0 issues]
"Lint clean"

### Requirements
Re-read plan → Create checklist → Verify each item
"All requirements met"

2.3 Red-Green-Refactor 回归验证

关键技巧——验证测试真的能捕获 bug:

1. 写新测试,验证修复
2. 运行测试 → 通过(因为 fix 已应用)
3. 暂时 revert 修复代码
4. 重新运行测试 → **必须失败**(MUST FAIL)
5. 重新应用修复
6. 测试再次通过

目的:确认测试是”真”的,不是”测试空过”。


三、9 大常见反模式

3.1 伪成功 #1:“应该通过了”

# ❌ WRONG
"我修改了 SQL 查询,加了个 JOIN,应该快了。"
# 用户运行 → 还是慢
# ✅ RIGHT
"我加了 EXPLAIN ANALYZE,跑完从 2000ms 降到 50ms。"

3.2 伪成功 #2:跳过测试

# ❌ WRONG
"我加了 user 字段到 schema,后端读这个字段。"
# 实际:没重启服务,字段没生效

3.3 伪成功 #3:改测试匹配代码

# ❌ WRONG (Move the Goalposts)
def test_user_login():
    response = login("user@test.com", "wrong_password")
    assert response.status_code == 200  # 改成期望的 200,因为密码错也"成功"

铁律:绝不改测试匹配坏代码

3.4 伪成功 #4:本地好,生产坏

# ❌ WRONG
"本地测了,可以。"
# 实际:生产用了不同的 DATABASE_URL,连接失败

要求:在类生产环境验证。

3.5 伪成功 #5:忽视 stderr

# ❌ WRONG
$ ./build.sh
# exit 0,但输出里有 WARNING: deprecated API
# 工程师说"成功了"

3.6 伪成功 #6:跑一半的测试

# ❌ WRONG
pytest tests/test_user.py
# 只跑了 1 个文件,跳过 50 个
# 工程师说"测试都通过"

3.7 伪成功 #7:部分 PR 通过

# ❌ WRONG
"PR 合并了,3 个 review comment 已处理。"
# 实际:只解决了 1 个,其他没动

3.8 伪成功 #8:口头 commit

# ❌ WRONG
"代码改完了,一会儿 commit。"
# 实际:忘了 commit,丢失改动

3.9 伪成功 #9:截图作为验证

# ❌ WRONG
"我截图了,UI 看起来对。"
# 实际:截图只显示 hero section,没显示报错的下半屏

四、4 大验证门禁

4.1 测试门禁

# Python
pytest --tb=short --cov=src tests/
# 必须看到: passed=N failed=0

# JavaScript
npm test
pnpm test
# 必须看到: Tests: X passed, Y total

4.2 构建门禁

# TypeScript
pnpm build
# 必须看到: ✓ Compiled successfully

# Go
go build ./...
# 必须看到: (无输出 = 成功)

# Rust
cargo build --release
# 必须看到: Finished `release` profile

4.3 Lint 门禁

# ESLint
pnpm lint
# 必须看到: 0 errors, 0 warnings

# Ruff
ruff check .
# 必须看到: All checks passed!

# golangci-lint
golangci-lint run
# 必须看到: 0 issues

4.4 需求门禁

## 计划 → 实施 → 验证

## 计划阶段
- [ ] 需求 1
- [ ] 需求 2
- [ ] 需求 3

## 验证阶段(实施后)
- [ ] 跑完代码 → 需求 1 实现 ✓
- [ ] 跑完代码 → 需求 2 实现 ✓
- [ ] 跑完代码 → 需求 3 实现 ✓

五、与其他 Skill 配合

Skill配合方式
test-driven-development写测试 → 实现 → verification 验证
systematic-debugging修复后必须 verification
requesting-code-review团队二次 verification
finishing-a-development-branch最终 verification 决定能否合并
using-superpowers1% 触发原则强制调用

完整工作流:

[1] 实现代码
  ↓
[2] self-verification (本 Skill)
  ↓ 测试通过?Linter 干净?构建成功?需求覆盖?
[3] requesting-code-review (重要功能)
  ↓
[4] finishing-a-development-branch
  ↓
[5] 合并 / PR

六、5 条反合理化

借口反驳
”我改的不复杂,不用测”60% 假修复来自”小改动"
"本地能跑就行”本地 ≠ 生产
”PR review 替我验证”review 是验证,不是替代你自测
”我看了输出,没问题”看到 vs 解释是两回事,要看真实数据
”测试要 5 分钟,跳过吧”5 分钟验证 > 5 小时线上调试

七、5 条实战技巧

  1. 永远复制粘贴真实输出:[See: 34/34 passed] 而不是 “应该”
  2. CI 是终极 verification:本地过不代表 CI 过
  3. Red-Green-Refactor 三步验证测试——关键反模式检测
  4. 回归测试:fix 后跑全量,看是否破坏其他功能
  5. 配置 .git/hooks/pre-push 自动跑测试再 push

八、Q&A

Q: 跟”测试覆盖率高”区别? A: verification 是”运行测试并看真实输出”,覆盖率是”测试覆盖的代码比例”。

Q: 必须订阅 Claude Code 吗? A: 工具本身不需要。Skill 是给 Claude 的指令。

Q: 跟 CI 关系? A: CI 是 verification 的自动化形式。本 Skill 是 Claude 自己执行 verification。

Q: 适用所有语言吗? A: 适用。命令不同,原则一致。

Q: 跟 systematic-debugging 区别? A: debugging 是”找根因 + 修”,verification 是”修后证明修了”。

Q: 中文支持? A: 完全支持。

Q: 学习曲线? A: 1 天理解,1 周变习惯,1 月成本能。


九、Prompt 模板

模板 1:完成功能

用 verification-before-completion 验证这个功能:
1. 运行测试套件(看到全过)
2. 运行 linter(看到 0 issue)
3. 运行 build(看到 exit 0)
4. 对照需求清单逐项 check
5. 输出 verification 报告

模板 2:修复 bug

用 verification-before-completion 验证 bug 修复:
1. 先重现 bug(确认能触发)
2. 应用修复
3. 重现步骤不再触发
4. 跑全量回归测试(确认没破坏其他)
5. 跑 linter + build
6. 写回归测试用例,确保未来不再发生

模板 3:创建 PR

用 verification-before-completion 验证 PR:
1. 跑所有测试
2. 跑 build
3. 跑 linter
4. 检查 diff 是否只包含相关改动
5. 检查是否有 console.log / debug 代码
6. 检查 commit message 规范

十、真实踩坑案例

案例 1:“我修好了”实际没修

场景:用户报”支付失败”,工程师改了 1 小时。 错误:“应该修好了。” 实际:用户复现,依然失败。 根因:工程师没复现原 bug,直接改了不同地方。 正确做法:先 reproduce → fix → verify fix → regression test。

案例 2:测试改了但代码没改

场景:CI 红了,工程师把测试断言改了让测试通过。 错误:“测试改完了,绿了。” 实际:bug 还在。 根因:Move the Goalposts 反模式。 正确做法:绝不改测试匹配坏代码,改代码让测试通过。

案例 3:本地过 CI 红

场景:本地 npm test 全过,推上去 CI 红了。 根因:本地用 Node 20,CI 用 Node 18。 正确做法:用 .nvmrc 固定版本,或 Docker 跑测试。

案例 4:覆盖率 80% 但漏关键路径

场景:覆盖率报告显示 85%。 实际:登录成功路径覆盖,但登录失败路径没测试。 根因:只测 happy path。 正确做法:boundary testing + mutation testing。

案例 5:性能”优化”实际更慢

场景:加了缓存”应该快了”。 实际:加了缓存层多一跳 RT 更高。 正确做法:先 benchmark → 改 → benchmark 对比

案例 6:看日志没看 metrics

场景:部署后”看日志没报错”。 实际:慢查询 + 5xx 告警,日志里没有。 正确做法:同时看日志 + metrics + traces(可观测性三支柱)。

案例 7:截图作为”通过”证据

场景:前端 PR,作者截图”页面显示正常”。 实际:在某个屏幕尺寸下错位,截图用了完美分辨率。 正确做法:多设备 + 响应式测试 + Playwright 截图对比。

案例 8:本地是 SQLite,生产是 Postgres

场景:“本地跑过,没问题。” 实际:SQLite 兼容,Postgres 不兼容。 正确做法:用 Docker Compose 起生产相同数据库,或 e2e 环境。

案例 9:tag 推了,image 没 build

场景:打了 v1.0.0 tag,推了。 实际:CD pipeline 失败,image 没生成。 根因:tag 和 build 步骤分两个 workflow。 正确做法:git tag 后必须看 pipeline 成功。

案例 10:“我跑了”实际只跑了一个文件

场景:“测试通过了” 实际只跑了 test_user.py正确做法:看完整测试输出,跑全量 pytest / npm test


十一、与其他工具对比

工具用途关系
CI/CD自动化 verification互补——CI 是 verification 的执行环境
Code Review人类 review 代码互补——review 是 verification 的一种
Staging 环境类生产验证互补——staging 是 verification 的场景
Canary Deploy生产灰度互补——canary 是 verification 的真实流量测试
A/B Test数据驱动决策互补——A/B 是 verification 的业务结果验证

verification-before-completion 是这些工具背后的思维方法**——任何工具都替代不了”我要看到证据”的心态。**


十二、安装

# Claude Code
/plugin marketplace add obra/superpowers
/plugin install superpowers@claude-plugins-official

# 通用
npx skills add obra/superpowers --skill verification-before-completion

# Codex / Cursor / Copilot CLI 也支持
# 详见:https://github.com/obra/superpowers/blob/main/docs/environments.md

十三、真实战绩

指标用前用后提升
假修复60%< 5%-91%
返工时间4h/周0.5h/周-88%
用户投诉 bug 数20/月3/月-85%
团队信任

来源:obra/superpowers 社区统计


十四、总结

核心价值:

  • 强制”证据先于断言”
  • 5 步验证清单
  • Red-Green-Refactor 回归验证
  • 反”伪成功”反模式

适用人群:

  • 所有写代码的工程师
  • Tech Lead(团队纪律)
  • QA 工程师
  • 任何准备说”完成”的人

投入产出比:⭐⭐⭐⭐⭐(5/5)—— 必装。

何时不要用:

  • 纯聊天
  • 探索性实验
  • 一次性脚本(没验证也行)

参考链接: