The Core Workflow
The single biggest upgrade from “prompt and pray” is a rhythm: say what you're building, pressure-test the design, build one slice at a time, and review before you ship. One chat per feature, fix, or PR.
The four beats
-
Spec — write what you're building, in English
Before any code, one or two paragraphs for a small feature; more for anything novel. It's the first message of your chat and a
spec.mdin your repo. A real example:Build a CSV importer for the donor system. Users upload a CSV with name, email, amount, and date. We validate, dedupe by email + date, and write to the donor table. On error: keep the file, surface a row-by-row report. Auth: existing OIT SSO, role = staff. Rate limit to 10k rows per upload.One habit worth stealing: paste the draft spec back to the AI and ask, “What's missing? What would a senior architect ask?”
-
Architecture — sparring partner, not architect
Ask: “Given this spec and this codebase, give me two or three ways to structure this. Trade-offs?” Then push back. Ask why. Ask what breaks at ten times the scale. The AI shows you options; you make the call. The math: ten minutes of architecture conversation routinely saves ten hours of rework.
-
Phased prompts — one slice at a time
Execute in coherent slices, each a natural commit point: schema (tables, indices) → API (endpoints, validation) → service layer (business logic) → UI → tests and docs. Review at every phase boundary, not just at the end — and don't let an agent run for two hours unsupervised.
-
Review — by you, then by your team
AI-generated code goes through the same review as any other code. Read every line — don't accept a diff you haven't read, and if it's too big to read, it's too big to ship. Ask the AI to critique its own diff before you submit; it catches a surprising amount. Details: Shipping & review.
One chat per feature, fix, or PR
Mixed chat: context bleed
“Add the CSV importer… wait, also fix the login bug… why is that field nil?… now style the dashboard… back to the import — did we finish?” The AI's context muddies, and so does yours.
One chat each: a clean record
feature/csv-importer: spec → architecture → phases. fix/login-redirect: repro → root cause → patch + test. Each chat maps to a branch, and the chat itself becomes documentation of how the work was done.
Try it this week
- Pick one feature you were going to build anyway.
- Run the four beats — spec first, even if it feels slow. It saves time on every step after.
- Notice the review — how much more reviewable is work that arrived in slices?