I wrote a rule to stop agents from sounding like agents, and it made seven out of nine posts begin with some version of In May, I…
I had asked for every technical post to remain grounded in something I had built, run or observed, because model-written prose has a nasty tendency to float away from the evidence. A model found the cheapest proof of compliance and placed it where no reviewer could miss it: a date, followed by I. Each article had a plausible reason for mentioning the date; after seven iterations, the device felt less like provenance than the house style of a very punctual machine.
I had given each reviewer one article, and all seven approved. The repetition only became obvious when I read the index as a visitor would, moving through the openings in succession and hearing the same drumbeat under different titles. The reviewers had no view of the shelf, so the repeated rhythm never entered their judgment.
What a detector can tell you
One of the early checks searched drafts for constructions models use when they want to manufacture a turn: "is not", ". It is", "not just", "The useful" and "That is the point". Applied to the same nine posts, a literal scan returned:
$ grep -c '\. It is ' drafts/*.md | sort
drafts/01.md:2
drafts/02.md:2
drafts/03.md:2
drafts/04.md:2
drafts/05.md:1
drafts/06.md:0
drafts/07.md:2
drafts/08.md:3
drafts/09.md:1
Eight drafts contained . It is; one managed . It is not, the whole corrective hinge in three words. That grep did exactly the job I needed from it: point an editor towards suspect passages without pretending to decide whether any particular sentence was earned, proportionate or pleasant.
Even with that warning, the guide kept growing. It eventually held thirty-two numbered model habits, each with a correction designed to be observable. “Don’t be writerly” gives a reviewing agent very little to work with, whereas “allow at most one deliberately quotable compression” can at least be counted. Other rules protected facts: do not improve a number, reverse a limitation or include a receipt that leads nowhere.
Every entry began with a real annoyance, and the accumulated list taught the writer how to display compliance. A witnessed event became a date in the opening; a desire for evidence became a terminal transcript whether the output mattered or not; a prohibition on grand conclusions produced endings so determinedly modest that they stopped concluding anything. Explicit rules were doing useful work around facts and known habits, while the rules prescribing article shape kept rewarding the grammatical costume of a quality instead of the quality itself.
When the work can disagree
Kami, tw93’s design language for reading pages, makes a more reliable kind of taste rule easy to see. It uses parchment #f5f4ed, ink blue #1B365D and a restrained accent palette, then gets wonderfully specific about tag backgrounds: use a solid hexadecimal colour because WeasyPrint renders rgba(27,54,93,0.18) as two overlapping translucent rectangles. The bad value, the defect it causes and the acceptable result can all be inspected in the exported page. An agent can work inside a considered palette without being asked to perform elegance by assertion.
The Amp team made a related distinction in its 25 April note on operating Opus 4.7: give an agent success criteria rather than a prescribed sequence of steps. Their example protects the things that matter—no public API change, no database change, pnpm test billing passes, pnpm typecheck passes—without pretending to know every good implementation move in advance.
In both examples the result can push back. A public API diff can expose a change, a test can fail, and a PDF can show two rectangles. My time-anchor rule could only reward the appearance of provenance while the actual question—does this feel like a person sharing something worth knowing?—still required editorial judgment.
The shelf is part of the work
I kept an “opener monoculture” check, but defined it around the shelf rather than dates. A collection can become monotonous through rhetorical questions, tiny confessions, terminal output, one-line paragraphs or dozens of other moves. Enumerating them all would produce an impressive list and terrible writing.
The check compares neighbouring titles, openings, transitions and endings, then repairs repetition by returning each piece to what it is actually trying to do. That comparison now sits beside the review of each article because a reader encounters the shelf as well as the individual post.
I still run literal searches because the . It is count found something real, and factual constraints deserve all the precision I can give them. I pair them with the five-minute editorial review the first system lacked: open the index, read only the first sentences from top to bottom, and repeat the exercise with the endings. No grep can tell me what the ninth competent article feels like after the first eight.