| name | verification-before-completion |
| description | Mandatory proof that work is actually done before declaring completion. Use before saying "done," "complete," or "finished" for any task. Prevents the agent anti-pattern of declaring success without evidence.
|
| version | 1.0.0 |
| permissions | ["fs.read","shell.exec"] |
| triggers | [{"context":"about to declare task complete"},{"context":"about to say done or finished"},{"command":"/test"}] |
| platforms | ["claude-code","cursor","gemini-cli","copilot","codex","opencode","windsurf","kiro"] |
| model_variants | {"claude":{"enforcement_style":"human-partner collaborative","gate_phrasing":"Before I tell you this is done, let me verify everything actually works."},"gemini":{"enforcement_style":"structured-checklist","gate_phrasing":"COMPLETION GATE: ☐ Tests pass ☐ Build succeeds ☐ Requirements met ☐ Evidence collected"},"gpt":{"enforcement_style":"directive-imperative","gate_phrasing":"You MUST run tests and verify the build before declaring any task complete."}} |
| author | codehands-core |
| signed | true |
| tier | 0 |
Overview
"Done" means proven done, not believed done. This skill is the final gate before any task is declared complete. It prevents the most damaging agent behavior: confidently declaring success when the code doesn't actually work.
When to Use
- Before EVERY task completion declaration
- Before saying "done," "complete," "finished," or "ready"
- Before marking a plan task as complete
- Before opening a PR
- This skill is NON-NEGOTIABLE. There are no exceptions.
Process
The Verification Checklist
Before declaring completion, confirm ALL of these:
-
Tests pass.
npm test
If there are no tests, you haven't followed codehands:test-driven-development. Go back and add them.
-
Build succeeds.
npm run build
TypeScript compiles. No warnings treated as errors. No build failures.
-
Requirements met. Re-read the spec/task. Compare each requirement against what you built. Every requirement must have evidence.
-
No regressions. The FULL test suite passes, not just your new tests.
-
Code is committed. All changes are committed with a descriptive message. Nothing is left in an uncommitted state.
Evidence Requirement
For each completed task, provide evidence:
## Completion Evidence
- Tests: 47 passing, 0 failing (output attached)
- Build: Clean build with 0 warnings
- Requirements: FR-001 ✅, FR-002 ✅, FR-003 ✅
- Commit: abc1234 "Add user registration with email verification"
Common Rationalizations
| Rationalization | Reality |
|---|
| "I know it works — I just wrote it" | You believe it works. Belief is not evidence. Run the tests. |
| "Tests are passing in my head" | Run them for real. "Passing in your head" is the leading cause of broken deployments. |
| "The build will pass — I only changed one file" | One file change can break the build via type errors, import cycles, or missing exports. Confirm it. |
| "I'll verify at the end after all tasks are done" | Each task must independently pass verification. Deferring creates compound verification debt. |
| "The user is in a hurry" | Breaking the user's build to save 30 seconds is not a favor. Verify. |
Red Flags
- "Done!" without test output
- Declaring completion on a task that has no tests
- Not running the full test suite (only new tests)
- Build not run before declaring complete
- Spec requirements not individually verified
Verification
See Also
codehands:test-driven-development — Tests that power verification
codehands:code-review-and-quality — Review before final completion
codehands:systematic-debugging — When verification reveals issues