Use when verifying that completed work actually works. Auto-surface during /verify mode, post-implementation review, or before claiming a task is done. Teaches the discipline of testing outcomes vs implementation, the unit/integration/smoke gradient, and what "done" actually means.
复制安装指令,让 AI 自动完成配置 · 推荐新手
请帮我安装 askskill 上的 "verification-discipline" 技能: 1. 下载 https://raw.githubusercontent.com/microsoft/amplifier-bundle-skills/main/skills/verification-discipline/SKILL.md 2. 保存为 ~/.claude/skills/verification-discipline/SKILL.md 3. 装好后重载技能,告诉我可以用了
Unit tests verify that code-as-written behaves as-written. Smoke and integration tests verify that the system achieves the intended outcome. Those are different questions. You need both.
"All unit tests pass" is necessary. It is rarely sufficient. A finding from the field: four consecutive integration-blocking bugs, all of which passed unit tests, all of which would have been caught by a five-minute smoke test on a fresh environment. The bugs were not exotic — they were the cost of declaring "done" too early.
Treat verification as a ladder. Skip a rung and you discover its bugs in production.
| Tier | What it verifies | Example |
|---|---|---|
| 1. Unit | Code does what I wrote it to do | pytest tests/unit/ |
| 2. Integration | Component pairs interact correctly | pytest tests/integration/, real DB |
| 3. Smoke / E2E | System achieves the user-visible outcome | Fresh DTU launch, run real pipeline, observe artifacts |
| 4. Production-equivalent | Real environment, real load, real data | Staging deployment, canary, replay traces |
Each tier catches bugs the tier below it cannot. Each tier costs more time than the tier below it. The economic choice is not "skip the expensive tiers." The economic choice is "spend five minutes on tier 3 to avoid five hours of rollback."
Before claiming a task is done, satisfy this checklist:
AGENTS.md and .github/PULL_REQUEST_TEMPLATE.md
are satisfied.If any box is unchecked, the work is not done. Say so, explicitly.
Different from classic TDD. TDD writes unit tests first. Tests-from-outcomes writes the outcome assertion first.
1. Before writing implementation, write down the user-observable outcome.
"After running this pipeline, events.jsonl contains a `branch_completed`
event for each branch and no `contract_violation` events."
2. Write a test asserting that outcome. The test runs the real pipeline,
inspects the real events.jsonl, checks the real conditions.
3. Implement code until the test passes.
Both patterns are valuable. Unit-level TDD verifies internal correctness. Outcome-level testing verifies that the system behaves as the user expects. Use both.
…
帮助你调研、规划并并行执行大规模代码变更,让多个代理分别提交 PR。
用多模型视觉能力分析图片内容、提取文字并回答图像相关问题。
帮助开发者设计安全持久的配置与状态文件管理模式,兼顾默认值合并和崩溃恢复。
以资深工程师视角审视架构、遗留重构与工具选型,给出务实建议。
帮助开发与运维设计兼顾本地顺畅和远程安全的认证与 TLS 接入方案。
帮助开发者设计易安装、易扩展且配置分层清晰的 CLI 工具模式。