Claude Code
My own products, every day
Planning, incidents, long threads, anything that needs product context or memory. Writes the specs other agents execute.
AI engineering
I use Claude Code as my default agent, Codex CLI for bounded tasks that already have a written spec, and Kiro CLI inside a large enterprise codebase at my day job. Agents write most of the code. What makes it shippable is everything around them: specs, written engineering standards, deny rules and hooks, unit, integration and E2E tests, evals, a second-agent review, and my own review of every pull request before I merge it. Every section below links to a first-hand write-up from my own production work.
My own products, every day
Planning, incidents, long threads, anything that needs product context or memory. Writes the specs other agents execute.
My own products, next to Claude Code
Bounded jobs that already have a written spec, run in their own git worktree, plus a second-opinion code review.
A large enterprise codebase at my day job
The approved agent inside strict enterprise constraints: small, reviewable changes with a human in every loop.
The routing rule and the shared setup: Claude Code vs Codex CLI and Kiro vs Claude Code.
Written with a planning agent: the product model, hard constraints, a numbered test list and a finish block.
Specs an agent can finish →Claude Code or Codex CLI in their own git worktrees, held to written rules: SOLID, DRY, KISS, small pure functions, deny rules on anything irreversible.
Parallel agents in worktrees →Unit tests on rules and edge cases, integration tests on data paths, Playwright E2E on user flows, lint on staged files, evals for AI features.
Evals before merge →A second agent in a fresh session reviews the diff against the spec and the standards, so I start my review from the findings.
A second agent as reviewer →Human in the loop: I read every pull request myself, run what changed, and merge only when I am sure. Then I watch production.
How I review AI-generated code →I stay the human in the loop. Agents never merge. Every pull request gets my own read of the diff, a run of what changed, and a merge only when I am sure it is right, not when the checks turn green.
Agents load these rules before they touch production code, and I check them in review. Fast code that nobody can maintain is not a speed-up, it is debt with a delay.
An agent harness is everything around the model: what it may run, what is blocked, what it loads at start and when a session has to stop. This is where most of the safety and most of the cost control live.
Which agent gets which job, how a task is written so an agent can finish it alone, and how to tell a finished task from a confident status report.
A green build is a shape check. Evals, review and a clear view of what the tokens actually cost decide whether agent output is worth shipping.
The other half of AI engineering: features that call a model in production, with typed output, spending limits and a hard line between model-facing text and public pages.