From verification-before-completion
Use when about to claim work is complete, tests pass, a bug is fixed, or a build succeeds.
How this skill is triggered — by the user, by Claude, or both
Slash command
/verification-before-completion:verification-before-completionThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE**
NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE
A claim like "tests pass," "build succeeds," or "bug is fixed" requires you to have actually run the relevant command, read the full output, and confirmed the claim matches that evidence. Assumptions, previous runs, or code inspection alone do not count.
done or report progress to the user| Your situation | Use this skill? | Routing |
|---|---|---|
| "I think I fixed the bug" (no command run yet) | ✅ Yes | Run the test that reproduces the bug, read output |
| "All tests pass" (from yesterday's run) | ✅ Yes | Rerun tests fresh, capture current output |
| "The linter should be happy" (no check run) | ✅ Yes | Run linter fresh, capture full output |
| "I've understood the codebase" | ❌ No | Continue exploration or code inspection |
| "The build failed; here's why" + no rebuild | ✅ Yes | Rebuild, read full error output |
| "This PR is ready" (untested) | ✅ Yes | Run tests, linting, build before claiming readiness |
Before proceeding:
[command]"BEFORE claiming any status or marking work complete:
npm test, pytest, go test, cargo test)| Claim | Requires | Not sufficient |
|---|---|---|
| Tests pass | Test command output: all pass, 0 failures, exit code 0 | "I think they pass," previous run, linter passing, code reviewed |
| Linter clean | Linter stdout: no errors, 0 errors total | Partial file checks, "should be clean," no syntax errors |
| Build succeeds | Build command: exit code 0, no build errors in output | Linter passing, code compiles locally, "should build" |
| Bug fixed | Reproduction test now passes; symptom gone in live run | Code changed, test file created but not run, review approved |
| Agent completed | VCS diff shows actual committed changes or agent output shows execution | Agent log says "success," agent says it ran the command |
| Formatting applied | Formatter command: exit code 0, or git diff shows changes applied | Formatter installed, "should work," no actual check run |
| Dependency installed | npm list/pip list/cargo tree shows version, or import succeeds | npm install ran, "should be installed," no verification |
npm test, not npm run test-fast).After verification:
I have run the relevant command fresh
I have read the complete output (exit code, stdout, stderr)
The output matches (or contradicts) my claim
I am ready to state the claim with evidence
If verification failed, I understand why and what to fix next
Smoke test:
systematic-debugging)Each example below shows the full Gate in practice — state the claim, identify the command, run it fresh, and verify the output.
Setup: "I just fixed a failing unit test in src/utils.ts."
Before claiming:
npm testRun:
$ npm test
PASS src/utils.test.ts
✓ handles edge case (45 ms)
✓ validates input (12 ms)
Test Suites: 1 passed, 1 total
Tests: 2 passed, 2 total
Verify: Exit code 0, "2 passed, 2 total" ✅
Claim: "The test suite passes. Output: Test Suites: 1 passed, 1 total; Tests: 2 passed, 2 total."
Setup: "I made changes to the Go service."
Before claiming:
go build ./...Run:
$ go build ./...
(no output)
$ echo $?
0
Verify: Exit code 0 ✅
Claim: "The build succeeds. go build ./... exited with code 0."
Setup: "I ran oxfmt on the TypeScript files."
Before claiming:
oxlint --fix . (or oxlint . to check only)Run:
$ oxlint .
Linted 12 files, no issues found.
Verify: "no issues found," exit code 0 ✅
Claim: "Linter clean. oxlint . reports 'no issues found'."
Setup: "A test was failing because of a logic error. I fixed it."
Before claiming:
npm test -- --testNamePattern="exact test name"Run:
$ npm test -- --testNamePattern="handles null input safely"
PASS src/parser.test.ts
✓ handles null input safely (8 ms)
Verify: Test passes ✅
Claim: "The bug is fixed. The failing test now passes: handles null input safely."
❌ Bad: "I fixed the linting errors. I removed the unused variable and the import that wasn't needed."
❌ Why: You inspected the code but didn't run the linter.
✅ Better: "I fixed the linting errors. I removed the unused variable and ran oxlint . — output: Linted 3 files, no issues found."
systematic-debugging — use when root cause investigation is needed before verifying a fixtest-driven-development — use when writing tests to prove behavior before claiming correctnessCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub matt-riley/lucky-hat --plugin verification-before-completion