How I work
I build software with AI agents, and I keep it honest with tests. That is the whole method, and every project on this site was built that way.
The tools move fast. The discipline is what makes the speed safe. What follows is how I actually work: the loop I run, and the habits that keep agent-built software durable.
The RECL loop
Requirements, Execute, Check, Loop. It is the cycle I run on every project, and the reason agent speed does not turn into agent chaos.
Requirements
I write down what the thing has to do, in plain language, before any code. A short PRD, an AGENTS file, a task list. The clearer the requirements, the less the agent has to guess.
Execute
I let the agent build against those requirements, and I stay in the loop. I read the diff and steer rather than accept whatever comes back.
Check
Every change is checked against a test. Pytest for the Python projects and Vitest for the TypeScript ones, with cached fixtures and recorded payloads so the checks run in CI without a live service. If it is not tested, it is not done.
Loop
Then I loop. Refine the requirements, run it again, tighten the tests, until the result holds. The loop is short on purpose.
The vocabulary, mapped
The field has picked up a vocabulary for all of this. None of it is new to the loop. Here is where each piece actually lives.
- Prompt engineering
- The Requirements step is prompt engineering by another name. Before any code I write down what the thing has to do: a short PRD, an AGENTS file, a task list. The clearer the instruction, the less the agent has to guess.
- Context engineering
- An agent is only as good as what it can see. I curate that context on purpose: repo conventions in an AGENTS file, cached fixtures and recorded payloads for the tests, and pointers to the real docs when the model's training is stale. This site's AGENTS file opens by warning the agent that it is not the Next.js it knows, and telling it to read the docs first.
- Loop engineering
- The loop itself is the design. I keep each cycle short: refine the requirements, run it, check against a test, tighten. Errors surface in minutes instead of after a thousand-line diff. Short loops are what keep agent speed from turning into agent chaos.
- Orchestration
- On a task bigger than one context, I do not drive a single agent. I split the work across specialized agents and subagents, each with its own scope, and keep them coordinated against shared requirements and the same tests. The loop is what holds the pieces together.
- Model-agnostic
- The method does not depend on any one model. Requirements, tests, and short loops travel across tools. The projects on this site were built with Claude, this redesign with Codex, and lately I reach for Grok as often as not. When a better model arrives, the process absorbs it instead of breaking.
What keeps it durable
Verification first
Speed without verification is just a faster way to ship bugs. Tests are what let me move quickly and still trust the result. Every project here is guarded by them, from unit tests on the logic to CI that runs without a live service.
Requirements before code
Most of the leverage is upstream of the agent. A written PRD, an AGENTS file, and a task list turn a vague ask into something an agent can execute and a test can check.
The pairing that lasts
Agent fluency on its own is common now. What makes it durable is pairing it with ordinary engineering discipline: test-driven development, CI/CD, structured logging, version control. I was working this way well before I started using AI, and that engineering practice is what I wrote up in a 100-page manual for fellow analysts at work. AI adoption is what I advocate for there. The projects on this site I built with agents, on my own time.