Developer Tools

Tooling should make the safe path short

2 min read

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.

Jeremy London

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.