If the careful workflow takes five commands and the risky workflow takes one, the risky workflow usually wins.
Command length becomes unofficial policy. A fast build gets run more often than a slow check. A deploy command that skips tests becomes the real release process. A frightening rollback path gets avoided when it matters most.
Give the careful operation one boring handle:
{
"scripts": {
"check": "astro check && rumdl check . && vitest run",
"preflight": "pnpm check && pnpm build",
"dev:clean": "pnpm stop && pnpm reset && pnpm dev"
}
}
Safe operations should be cheap. Dangerous operations should require extra intent:
deploy -> preview
deploy --prod -> production
deploy --prod --yes -> production without prompt
The safe path should leave a receipt:
preflight
commit: 9f31a2c
markdown: pass
astro: pass
build: pass
artifact: dist/
Recovery belongs in the same design. Clean stale servers, explain failed migrations, restore the last good deploy, and make half-written generated files removable.
Layer checks by cost:
save: format touched file
precommit: typecheck changed package
prepush: test affected packages
ci: full test and build matrix
release: smoke deployed artifact
Put cheap signals near the change and expensive signals where they can run without blocking every thought. This applies to agents too: if verification takes more effort than editing, verification will be skipped.
Make the safe path the short path.
Related posts

About Jeremy London
Engineering leader and builder in Denver. I write about AI platforms, agents, security, reliability, homelab infrastructure, and the parts of engineering work that have to survive production.