---
name: test-before-claiming-done
description: Makes an AI agent prove work is finished before it says so - run the command that proves the claim, read the full output and exit code, then report what it shows. Use when the AI says done, fixed or tests pass without proof, before committing or opening a PR, or when checking a sub-agent's "success" report.
license: MIT
metadata:
  category: debugging
  tags: "verification,testing,quality,agents"
  author: johnny-bravo
  version: "1.0"
  updated: "2026-10-31"
  status: published
  aliases: "verification-before-completion,verify-before-done,evidence-before-claims"
  source_url: "https://github.com/obra/superpowers/blob/2ce8aa15d05bd57213e6f746f953aafb7ded7a8b/skills/verification-before-completion/SKILL.md"
  source_license: MIT
  copyright: "Copyright (c) 2025 Jesse Vincent"
  original_author: "Jesse Vincent (obra/superpowers, 'verification-before-completion')"
  modified: "Adapted by TheSkillVault: renamed to the verb-first house style; plain-language steps; tables shortened to a claim -> proof list; added when-to-use bullets, safety, portability and done-when sections."
  imported_on: "2026-10-31"
---

# Test before claiming done

Evidence before claims, always. If the proving command was not run just now, the agent cannot say it passes. "Should work" is not a status.

```
NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE
```

## When to use
- The AI says "done", "fixed" or "all tests pass" and you have not seen proof.
- Before any commit, pull request, deploy or "task complete" message.
- A sub-agent or teammate reports success and you are about to rely on it.

## Steps
1. **Identify** the command that proves the claim. Tests pass? The test command. Builds? The build command.
2. **Run** the full command, fresh. Not an earlier run, not a subset.
3. **Read** all of the output. Check the exit code and count failures and warnings.
4. **Verify** that the output really confirms the claim. If it does not, report the real status with the evidence.
5. **Only then claim it**, and quote the proof, for example "npm test: 34/34 passing, exit 0".

### What each claim needs
- **Tests pass:** test output showing 0 failures. Not "should pass" or last hour's run.
- **Linter clean:** linter output with 0 errors. A partial check proves nothing.
- **Build succeeds:** the build command exits 0. A clean linter is not a build.
- **Bug fixed:** the original symptom, re-tested, now passes. Changed code is not a fix.
- **Regression test works:** red then green. It passes, fails with the fix reverted, then passes again.
- **Agent finished:** the git diff shows the changes, and you checked them. A "success" message is not proof.
- **Requirements met:** re-read the plan and tick each item. Passing tests alone do not cover it.

## Gotchas
- Red-flag words: "should", "probably", "seems to", "Great, done!" before any output was read. Stop and run the check.
- "Just this once" and "I'm confident" are not evidence. Confidence is not a test run.
- Rewording the claim to dodge the rule still breaks the rule. Any hint of success counts.
- Long output gets skimmed. Search it for "fail", "error" and the summary line.

## Safety
- Run verification against local or staging setups, not production data, unless you were told to.
- Do not paste full logs that contain tokens, passwords or customer data into chats or PRs. Quote the summary lines.

## Works with any stack
Use the project's own commands: `npm test`, `pytest`, `go test ./...`, `cargo test`, `mvn verify` or similar. The rule is the same in any language and with any AI agent.

## Done when
- Every "done" or "passing" claim comes with the command and the output that proves it.
- Failures are reported as failures, with evidence, not smoothed over.

## Example prompt
"Before you tell me it's fixed, run the tests and the build and show me the output."

---
Adapted from "verification-before-completion" in obra/superpowers by Jesse Vincent (MIT). See LICENSE.txt.
