Skip to main content
AC
Quality & Security4.4 KBMIT licensed

verification-before-completion

Rewritten from patterns in obra/superpowers (MIT)

Run the proving command and read its output before claiming anything works, passes, or is done. Use before saying complete, fixed, or passing, before commits, PRs, and task handoffs, and before trusting any subagent's success report. Not for finding why something fails: use systematic-debugging. Not for writing the tests themselves: use test-driven-development.

  • verification
  • before
  • completion

SKILL.md

Verification Before Completion

Claiming work is complete without verification is dishonesty, not efficiency. The rule: no completion claim without fresh verification evidence, produced in this message, from the full command.

The gate

Before any status claim or expression of satisfaction:

  1. Identify the command that proves the claim.
  2. Run it, fresh and complete. Not a cached result, not a partial subset.
  3. Read the full output. Exit code. Failure count. Warnings.
  4. Compare output to claim. Output confirms it: state the claim with the evidence. Output does not: state the actual status with the evidence.
  5. Only then speak.

Skipping any step is not a shortcut. It is asserting something you do not know.

What each claim requires

ClaimRequiresNot sufficient
Tests passFresh test run, 0 failures in outputEarlier run, "should pass"
Linter cleanFull lint run, 0 errorsPartial file check
Build succeedsBuild exit 0Lint passing, logs "look good"
Bug fixedOriginal symptom re-tested, goneCode changed, fix assumed
Regression test worksRed-green cycle: fails on reverted fix, passes restoredTest passing once
Subagent completedYou checked the VCS diff yourselfThe agent's "success" report
Requirements metLine-by-line checklist against the spec or planTests passing

The regression-test row deserves emphasis: a test that has never failed proves nothing. Revert the fix, watch it fail, restore, watch it pass.

Scope of the rule

It covers every phrasing that implies success: "done", "fixed", "should work now", "looks good", "Perfect!", paraphrases, and implications. Changing the wording does not change the obligation. It applies before commits, PRs, task completion, moving to the next task, and reporting upward after delegation.

Good vs bad

Bad: "I've fixed the auth bug and added a regression test. Should be good to merge!" No command was run in that message. Two claims, zero evidence.

Good: "Ran npm test: 87/87 passing. Reverted the fix and re-ran the new test: fails with 'expected 401, got 200', so it catches the bug. Restored: passes. Ready to merge."

Verification

This skill is its own check. Before sending any message containing a success claim, scan the message for the evidence beside the claim: the command and the decisive line of its output. Expect every claim to have both. If one does not, either run the command now or rewrite the claim as what you actually know ("code changed, not yet verified").

Completion checklist

  • [ ] Every claim in the outgoing message maps to a command run in this session
  • [ ] Full output read: exit code and failure counts, not just the tail
  • [ ] Regression tests proven with a red-green cycle
  • [ ] Subagent reports checked against the actual diff
  • [ ] Requirements walked line-by-line, gaps reported as gaps

Any box unchecked: not done. Fix or say so.

Footguns

  • Stale evidence. A test run from before your last edit proves nothing about the current code. Any edit invalidates all prior runs; re-run.
  • Partial verification extrapolated. One passing file does not verify the suite; a green linter does not verify compilation. Match the command to the claim's full scope.
  • Trusting delegation reports. Subagents report success optimistically. The diff and a fresh test run are the ground truth, every time.

Red flags

If any of these appear in your draft message or your head, stop and run the command:

  • "Should work now"
  • "I'm confident this fixes it"
  • "Linter passed, so we're good"
  • "The agent said it succeeded"
  • "Just this once, it's a trivial change"
  • "I'm tired and this is obviously right"
  • "Great! Done!" (before any command ran)

There is no wording that exempts a claim from evidence. If the verification command did not run in this message, the claim does not go in this message.

More in Quality & Security

All skills