engine room · agent workflow
How I work with AI agents
The agent writes code, measures and proposes. Only a human touches production, money and the main branch. This page shows the rules and tools it works within — and how I measure whether they actually help.
$ cat loop.md
My side projects all run in the same loop. The key is that state and decisions live in files, not in a chat window — so every agent starts from the same place.
- 01 · megoal + limitsI record the goal and the constraints in the shared “brain” (state, decision log).
- 02 · hq/shared brainFiles, not chat. Anything not written down as a decision, the agent asks about.
- 03 · agentisolated workWrites code, measures and tests on a separate branch or worktree.
- 04 · agent → meproposalA branch, patch or report with a “what this does NOT claim” section, plus a short state-patch proposal.
- 05 · mereview + commitI review and commit. Only that goes live (push → Vercel).
↺ a closed decision goes back into the decision log with a date — the next round starts from there.
$ ls ./rules
I don't let an agent near the code without these. Each one came from a real bug or risk.
one output = one owner
Every tool has its own turf: Claude Code writes the code, the research bot only writes idea briefs, without sending anything. No two tools write to the same place.
agent proposes, human commits
No silent writes. The agent proposes a patch; only I touch the main branch, production and money.
decisions only in writing
If something isn't in the decision log, the agent doesn't decide it for me — it asks.
isolated workspace
Code changes happen in a separate worktree or branch, so a failed round doesn't dirty the working folder.
locked holdout, counted variants
In ML, a set-aside dataset can only be touched in an approved round, and every variant tried is counted: above 10 a stricter threshold, above 20 the search stops.
silent failures cost the most
Exit code 0 ≠ success. Things that didn't happen (empty data, a skipped run) must make noise too.
$ ./eval plan-verify --with --without
plan-verify is my own agent skill (plan → implement → test loop → adversarial self-review); it lives in this site's repo. Before keeping it, I measured it: 5 tasks, each run with and without the skill, in isolated worktrees.
- tasks passed (with · without)
- 5/5 · 5/5
- shell commands
- −49%
- errors hit
- −50%
- wall time
- −23%
- false activations on tiny tasks
- 0/2
Both arms passed every check — so the skill doesn't produce better code, it takes a shorter path with fewer errors. On two tiny tasks it correctly stayed off. In one case (a new localized route) the run without the skill came out slightly more polished; based on that I tightened the skill: UI text goes into the messages/ files, not the code.
One run per cell: the differences show a direction, they are not statistically significant. I kept the skill; repeating the measurement is an open task.
$ cat routing.yml
Not every task needs the strongest model. The rule is simple — and the prohibitions matter more than the rules.
| task | model | rule |
|---|---|---|
| Code, multiple files, decision prep | Claude (Claude Code / cloud) | Default: anything that needs numbers, judgment or a tool chain. |
| Idea and source brief | Grok-based research bot | Writes briefs only — no sending, no code. |
| Short summary, explanation | qwen3:8b (local, Ollama) | 1 call, no retry; if weak or over 45 s → cloud. Pilot, this site only. |
| Numbers, thresholds, decision log | never the local model | Always cloud + human approval. |
$ tail DECISIONS.md
An excerpt from the decision log — only the public items about the way of working.
- [2026-08-31]Tool boundaries: one output = one owner. Claude Code writes the code, the research bot only writes briefs.
- [2026-09-01]The shared brain is files, not chat. The agent proposes patches; I write the top of the state file.
- [2026-09-02]Portfolio polish done; automated weekly log proposals started (agent proposes, I approve).
- [2026-09-03]plan-verify skill + with/without measurement → kept. Worktree isolation for every code change. Hybrid model-routing pilot.
- [2026-09-16]ML: the backtest edge was leakage. A strict test, a mandatory time window and a fail-closed closing price became the rule.
- [2026-09-27]Portfolio v2: working terminal, case study, design system — built in this same loop.
$ cat ./this-site.md
The v2 changes were written and checked by an AI agent — type check, lint, build, browser tests on desktop and mobile — and I reviewed and committed them. The build ID in the footer always shows the commit that is currently live.
live build: 6b9d368 · 2026-10-15