CC-201b · Module 2
Defining Verification Commands
3 min read
Verification commands are the instructions that prove code works before you review it. A type checker confirms the code compiles. A linter confirms it follows conventions. A test suite confirms it behaves correctly. A build command confirms it produces valid output. Each of these is a verification step that Claude can run autonomously, and each one catches a different category of error. The more verification steps you define, the fewer errors reach your review.
The key is defining these commands in your CLAUDE.md so Claude knows about them. "After making code changes, always run: (1) tsc --noEmit for type checking, (2) eslint . for linting, (3) vitest run for tests, (4) npm run build to verify the build." This is not a suggestion — it is a validation pipeline. When Claude has this in its rules, it runs these checks after every code change and fixes any issues it finds before presenting the result to you. The work that reaches your review has already passed four quality gates.
## Validation Pipeline
After ANY code change, run these commands in order:
1. `tsc --noEmit` — type check (must pass, zero errors)
2. `eslint . --ext .ts,.tsx` — lint (must pass)
3. `vitest run` — tests (all must pass)
4. `npm run build` — production build (must succeed)
If any step fails, fix the issue and re-run from step 1.
Do NOT present results until all four steps pass.