Pre-push checklist
Run through these before every push, regardless of task size:Check the diff
Review what changed. Look for:
- Unintended file changes
- Hardcoded values that should be environment variables
- Console logs or debug statements left in
- TODOs that should block shipping
Run the validation suite
Whatever the project uses — tests, lint, type check:Do not push with failing checks unless the failure is pre-existing and documented.
Verify the done criteria
Return to the scoping document and confirm each done criterion is met. If the criterion is a visible state, confirm it in a local preview.
Pre-deploy checklist
Run before deploying to a production URL (Vercel, etc.):Build locally
Confirm the production build succeeds with no errors:Build errors that only appear in production (not dev) are usually imports, missing environment variables, or server/client boundary issues.
Check environment variables
Confirm all required environment variables are set in the deployment target. Missing env vars surface as runtime errors, not build errors.
Verify redirects and URL changes
If any pages were moved or renamed, confirm
vercel.json (or equivalent) has redirects in place for the old URLs. Dead links affect SEO and user trust.Post-deploy verification
After a production deploy:- Open the live URL and confirm the changed pages load correctly
- Check at least one page that was not changed (regression check)
- Confirm no 404s on paths that existed before the deploy
- Check the build/deploy logs for warnings that weren’t present before
Common causes of post-deploy failures
| Failure | Root cause | Prevention |
|---|---|---|
| Page 404 | Path moved without redirect | Add redirect to vercel.json before deploy |
| Missing env var | Added in dev, not set in production | Document env vars in README, check before deploy |
| Build fails in CI but passes locally | Different Node version or package resolution | Pin Node version in .nvmrc or engines field |
| Visual regression | CSS class conflict or missing import | Preview deploy before promoting to production |
| Type error in production build | Loose any types masked in dev | Run tsc --noEmit locally as part of pre-push |
Project Scoping
Define scope and done criteria before starting implementation.