How I shipped 83 releases in 64 days with AI coding agents
Claude Code, Codex and Cursor wrote code beside me on Scenri. Two decisions were never theirs to make.

In this story4 sections
Scenri’s first commit landed on 4 August 2026. Version 0.22.0 was tagged in the first week of October. In those 64 days the repository got 83 tagged releases, patches included, and 303 merged pull requests. 220 of those pull requests were the work; the other 83 are the release pull request each version opens.
I designed Scenri and I own it. Agents wrote code beside me: Claude Code, Codex and Cursor, and they could work at the same time. This is how that worked. Not the tools. The rules around them.
- From the first commit to v0.22
- 64 days
- Tagged releases, patches included
- 83
- Merged pull requests
- 303
- Project skills, shared by three agents
- 16
A contract, not a prompt
Every agent reads the same file first. AGENTS.md is written for coding agents and for the people working beside them. A longer private file exists “so no session re-derives the app from zero”.
The first rule is called the prime directive. Reuse an existing named pattern. New patterns come only from a brainstorming I asked for.
The contract sets two speeds. Iterate means no build, no unit tests, no end to end. Checkpoint means buying confidence, once. Validation scales with the type of change, the blast radius and the stage of the work, never with line count.
Sixteen skills turn the rest into steps an agent can follow: designing a surface, writing release notes, shipping, capturing product screenshots, working in a worktree. Claude Code, Codex and Cursor read the same skills.
The contract keeps its scars. One paragraph used to say never commit, push, stash, reset or checkout my tree. That was read as forbidding the branch itself, and a whole fix got built in the working tree on main on 29 August. The paragraph was rewritten, and that story is written into it.
Many agents, one app
On 7 September the decision record named the problem: several agents and I needed to work on the app in parallel. Each task now gets its own git worktree, with its own lane of ports and its own copy of the library. A wrapper forces it, so isolation never depends on an agent remembering an env var.
Two things stayed with me, written as a rule every agent reads.
Merging a pull request and cutting a release are the maintainer’s decisions, asked for each one; nothing merges or releases on an agent’s own initiative.
Release QA at night
The release QA for 0.18.0 ran overnight on 26 September. One Claude session orchestrated ten sessions across four worktrees. The preamble set the terms: “Tony is asleep. Nothing can be asked”.
It reported no blocker, 85 new findings and six at the second severity. One fix from that run: Scenri takes provider keys only from the computer running it. The report also records what the agents could not do. One security session had its dynamic tests blocked by the auto-mode safety classifier.
The bar no agent can pass for me
Design has its own two gates. Approval is me saying a design is the one. Human test is me opening the real app after it is built.
Concepts are built in code, with real tokens and real components. The top bar round produced twelve concepts in one lab, and they were deleted once production carried the design.
A screenshot that matches the concept while the Escape key does nothing is a failure with good lighting.
In the person studio QA, agents checked the live dialog at viewports from 1920 down to 375. A visual suite compares 53 screenshots with zero pixel tolerance. Some bugs still need a real hand: three in the person studio came off one run on my own iPhone, and none of them had shown up before.



