| name | verify |
| dimension | evaluation_and_reward |
| description | Pre-merge verification gate. Build, test, and lint must all pass before marking done or shipping. |
Verify — Pre-Completion Check
Iron Law
NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE. "I tested it" without output is an unverified claim.
When to Trigger
- Before a
/go subagent reports "done"
- Before
/ship creates a PR
- Before telling the user "it's ready"
- After any significant code change
Process
1. Build
npm run build
Must exit 0. If it fails, fix before proceeding.
2. Test
npm test
Must exit 0. If tests fail, invoke debug skill.
3. Lint
npm run lint
Warnings are OK. Errors must be fixed.
4. Type Check (if applicable)
npx tsc --noEmit
mypy .
5. Final Sanity
Anti-Rationalization
| Excuse | Rebuttal | What to do instead |
|---|
| "Tests pass locally" | Did you actually run them? Trust the output, not your memory. | Run npm test right now. Show the output. |
| "I only changed one file" | One file can break the entire build. Imports propagate. | Full build + test. Every time. No exceptions. |
| "Lint warnings aren't errors" | Warnings become errors. Fix them before they multiply. | Zero warnings policy. Fix now or suppress with justification. |
| "CI will catch it" | CI feedback is 5-10 min delayed. Catch it locally in seconds. | Run verify locally before pushing. CI is the safety net, not the test. |
Evidence Required
Before reporting "ready", show ALL of these:
Each check needs actual command output. "I ran it" without output = not verified.
Red Flags
- Reporting success without showing actual command output
- Skipping type check "because JavaScript is dynamic"
- Committing with TODO/FIXME and no explanation