Don’t trust Claude’s “I’m done.” Build a verification skill that proves the work is correct.
The Verification Skill
Create .claude/skills/verify/SKILL.md:
---
name: verify
description: "Runs all verification checks against recent changes"
---
## Verification Checklist
After any code change, run these checks in order. Stop at the first failure.
1. **Build:** Run `npm run build`. Must exit 0.
2. **Lint:** Run `npm run lint`. Must exit 0 with no new warnings.
3. **Type check:** Run `npx tsc --noEmit`. Must exit 0.
4. **Tests:** Run `npm test`. All tests must pass.
5. **Coverage:** Check that test coverage didn't drop.
## Reporting
Report results as:
- PASS: all checks green
- FAIL: which check failed and why
- PARTIAL: some checks skipped (explain why)
If FAIL, fix the issue and re-run all checks from the beginning.
Auto-Trigger After Changes
Add to your CLAUDE.md:
After completing any implementation task, run the verify skill
before reporting that you're done.
Project-Specific Checks
Customize per project:
# For a Python project
1. Run `ruff check .`
2. Run `mypy src/`
3. Run `pytest -x`
4. Run `python -m build`
Tip
A failing verification is better than a passing one you wrote yourself. The skill should use the project’s existing CI checks, not custom validation logic.