Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Force verification before claiming success or completion. Prevents false "it works" claims. Triggers when about to say "done", "complete", "works", "fixed", or "the implementation is ready". Requires actually running builds/tests and showing output before claiming success.
.claude/skills/aiskillstore-verification-before-completion/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-08 | ✗→✓ | ▲ Improved | 276% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 66% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 443% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 573% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 195% | 0% |
This skill enforces a critical discipline: never claim completion without fresh verification evidence.
The most common failure mode for AI agents is claiming success without actually verifying. This skill prevents that by requiring explicit verification steps before any completion claim.
NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE1. IDENTIFY: What command proves this claim?
→ "Tests pass" requires: npm test / pytest / go test
→ "Build succeeds" requires: npm run build / make
→ "Lint clean" requires: npm run lint / eslint
→ "Type check passes" requires: tsc --noEmit / mypy
2. RUN: Execute the FULL command (fresh, complete)
→ Not cached results
→ Not partial output
→ Not "I ran it earlier"
3. READ: Full output, check exit code, count failures
→ Exit code 0 = success
→ Exit code non-zero = failure
→ Count actual pass/fail numbers
4. VERIFY: Does output confirm the claim?
→ "All tests pass" = 0 failures in output
→ "Build succeeds" = no errors, artifacts created
→ "No lint errors" = 0 problems found
5. ONLY THEN: Make the claim with evidence
→ Quote the relevant output
→ Include exit code
→ Show pass/fail counts| Flow | Verification Command | Success Criteria | |------|---------------------|------------------| | /flow-prd | validate-constitution --type prd | Exit 0, no violations | | /flow-epic | validate-constitution --type epic | Exit 0, no violations | | /flow-dev | npm test && npm run build | All tests pass, build succeeds | | /flow-qa | npm test && npm run lint | All pass, no blockers | | /flow-release | gh pr checks | All checks pass |
| Claim | Required Verification | |-------|----------------------| | "Tests pass" | Run full test suite, show output | | "Build succeeds" | Run build command, show output | | "Lint clean" | Run linter, show 0 errors | | "Type check passes" | Run type checker, show output | | "No regressions" | Run affected tests, compare before/after | | "Bug fixed" | Show failing test → fix → passing test |
| Excuse | Reality | |--------|---------| | "I just ran it" | Run it again. Fresh evidence required. | | "It was passing before" | Before ≠ now. Verify current state. | | "The change is trivial" | Trivial changes break things. Verify. | | "I'm confident it works" | Confidence ≠ evidence. Run the command. | | "Tests are slow" | Slow tests > broken production. Run them. | | "I'll verify after commit" | Verify BEFORE commit. Always. | | "The CI will catch it" | You catch it first. Don't waste CI cycles. | | "It's just documentation" | Doc changes can break builds. Verify. |
If you find yourself:
STOP. Run the verification command. Show the evidence.
When claiming completion, always include:
markdown## Verification Evidence **Command**: `npm test` **Exit Code**: 0 **Output Summary**: - Tests: 42 passed, 0 failed - Coverage: 85% - Duration: 12.3s **Conclusion**: All tests pass. Ready for commit.
yamlExit Gate Verification: 1. Identify required verification commands 2. Run each command fresh 3. Capture full output 4. Verify success criteria met 5. Document evidence in EXECUTION_LOG.md 6. Only then proceed to next stage
yamlTask Completion Verification: 1. Run task-specific tests 2. Verify acceptance criteria met 3. Show evidence in task completion message 4. Mark task complete only with evidence
This skill is about intellectual honesty. It's easy to believe something works. It's harder to prove it.
The discipline is:
PROTOCOL]: 变更时更新此头部,然后检查 CLAUDE.md
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-08 | fail→pass | 10,719 | 18,369 | +71% | 1 | 1 | 0% | 885 | 3,327 | +276% | 0 | 0 | — |
case-01 | fail→fail | 10,160 | 16,066 | +58% | 1 | 1 | 0% | 274 | 1,657 | +505% | 0 | 0 | — |
case-02 | pass→fail | 28,924 | 30,901 | +7% | 1 | 1 | 0% | 3,218 | 3,895 | +21% | 0 | 0 | — |
case-03 | pass→pass | 17,758 | 18,091 | +2% | 1 | 1 | 0% | 2,669 | 4,330 | +62% | 0 | 0 | — |
case-04 | pass→pass | 15,446 | 8,569 | -45% | 1 | 1 | 0% | 2,065 | 2,746 | +33% | 0 | 0 | — |
case-05 | pass→pass | 16,462 | 10,647 | -35% | 1 | 1 | 0% | 1,831 | 2,926 | +60% | 0 | 0 | — |
case-06 | fail→pass | 13,063 | 10,576 | -19% | 1 | 1 | 0% | 1,248 | 2,074 | +66% | 0 | 0 | — |
case-07 | pass→pass | 13,133 | 13,226 | +1% | 1 | 1 | 0% | 1,182 | 2,602 | +120% | 0 | 0 | — |
case-09 | fail→pass | 8,357 | 16,343 | +96% | 1 | 1 | 0% | 566 | 3,074 | +443% | 0 | 0 | — |
case-10 | fail→pass | 8,422 | 11,843 | +41% | 1 | 1 | 0% | 451 | 3,034 | +573% | 0 | 0 | — |
case-11 | fail→pass | 10,565 | 12,756 | +21% | 1 | 1 | 0% | 822 | 2,423 | +195% | 0 | 0 | — |
case-12 | fail→pass | 8,035 | 9,290 | +16% | 1 | 1 | 0% | 827 | 1,847 | +123% | 0 | 0 | — |
case-13 | fail→pass | 12,877 | 11,399 | -11% | 1 | 1 | 0% | 1,869 | 2,069 | +11% | 0 | 0 | — |
case-14 | fail→pass | 3,148 | 14,079 | +347% | 1 | 1 | 0% | 459 | 2,512 | +447% | 0 | 0 | — |
case-15 | fail→fail | 7,679 | 6,226 | -19% | 1 | 1 | 0% | 1,180 | 2,123 | +80% | 0 | 0 | — |
case-16 | fail→pass | 8,619 | 6,833 | -21% | 1 | 1 | 0% | 939 | 2,062 | +120% | 0 | 0 | — |
case-17 | fail→pass | 13,224 | 7,307 | -45% | 1 | 1 | 0% | 1,212 | 1,951 | +61% | 0 | 0 | — |
case-18 | pass→pass | 11,438 | 4,478 | -61% | 1 | 1 | 0% | 1,003 | 1,807 | +80% | 0 | 0 | — |
case-19 | fail→pass | 10,675 | 8,067 | -24% | 1 | 1 | 0% | 834 | 2,402 | +188% | 0 | 0 | — |
case-20 | pass→pass | 12,489 | 8,135 | -35% | 1 | 1 | 0% | 1,323 | 1,710 | +29% | 0 | 0 | — |
case-21 | fail→fail | 6,620 | 11,197 | +69% | 1 | 1 | 0% | 917 | 1,465 | +60% | 0 | 0 | — |
case-22 | fail→pass | 11,020 | 6,718 | -39% | 1 | 1 | 0% | 960 | 2,312 | +141% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 20 counted toward the lift figure. The other 2 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +50 percentage points is the difference between those two pass rates over the 20 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.