Halfway through rewriting a nine-post shelf in early July, I read its index as a visitor would, moving through the first sentences from top to bottom. Seven of the nine used almost the same opening: In May, I did something. A rule I had written produced the repetition while trying to prevent model tells. Seeing the same shape under seven titles stung.

I wanted agents to write first drafts in my voice, with me editing, while avoiding the habits that make machine prose easy to spot. Two examples are the corrective hinge and an epigram engineered for a pull-quote. I enforced the requirement with a voice guide, four format companions, and adversarial judges that read each draft and report failures. The seven repeated openers came from the rule I trusted most. That made me inspect the others.

The machine’s favourite sentence

All nine posts began as machine drafts, and the first passes remain in a drafts folder beside my working files. The guide includes a hinge scan with literal grep strings for common constructions: "is not", ". It is", "not just", "The useful", and "That is the point". I ran it against the drafts:

$ 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 of nine drafts used that construction, and one contained . It is not, the full hinge in three words. The scan carries its own warning: “This is a detector, not the definition.” Grep surfaces candidates; an editor still decides whether the rule applies.

Counting taught me what a taste rule needs before an agent can use it. The guide’s kill list contains thirty-two numbered machine habits, each paired with a correction. “Don’t be writerly” cannot be checked. Entry 25 instead allows at most one deliberately quotable compression per piece. A judge can count to two and fail the draft without debating tone. The fidelity entries are similarly explicit. “Never upgrade the source” forbids reversing a limitation or improving a number during a rewrite. “Everything traces” requires each receipt to lead to evidence.

The rule I still believe

An early mandate told writers to anchor each piece in a witnessed, dated event. I still believe a post needs something that happened. The agents turned that requirement into a formula, and every one of the seven repeated openers passed the available grep checks.

That failure became kill-list entry 13, “Opener monoculture.” Any opening repeated across most pieces on a shelf becomes a gimmick, whether it begins with a date, an artifact, or another approved construction. Its correction reads, “check the piece against its neighbours, not only against the rules.” Judges now receive the first sentences of neighbouring posts with the draft because a single document cannot expose this failure. The blog profile also requires at least one artifact the writer actually ran, including a failure or surprise. Its warning is direct: “A post can pass every kill-list grep and still contain zero real output; that post is not done.”

The same move in other hands

Once I could see the repetition in my drafts, I noticed related guidance elsewhere. In its 25 April note on operating Opus 4.7, the Amp team says to give an agent success criteria instead of steps. Their example requires no public API changes, no database changes, a passing pnpm test billing, and a passing pnpm typecheck. Each criterion lets the agent discover that it is unfinished. My time-anchor rule failed because agents treated a completion condition as the required first move of every piece.

A painterly editorial collage for taste rules agents can test, showing rules, jigs, export checks, and design constraints.
Rules, jigs, export checks, and design constraints.

Kami, tw93’s design language for reading pages, contains many taste decisions. It uses parchment #f5f4ed instead of pure white and limits ink blue #1B365D, its only accent, to 5% of a page. Principle 7 makes one choice enforceable: tag backgrounds must use solid hex rather than rgba because of a WeasyPrint rendering bug. The anti-pattern gives an exact bad value, rgba(27,54,93,0.18), and explains that WeasyPrint renders the padding and glyph areas at different opacities, producing double rectangles. A judge can identify that failure on sight. The adewale/testing-best-practices skill, published on 11 April 2026, does the same for testing judgement. It lists fourteen anti-patterns with detection signals, including logging where an assertion should be and integration tests made entirely of mocks. Its quality audit flags toBeDefined() as a weak assertion. A reviewing agent can point to each failure in a diff.

All three move judgement from a senior person’s head into checks an agent can fail. I found the obvious risk in my own index: a written rule gets applied everywhere until it stops serving the reader. The kill list therefore begins by saying that rules serve the reader and none is mandatory in isolation. I also deleted entries that had merely patched one bad edit. Entry 13 will probably have a successor. Some construction encouraged by the current rules may remain invisible until enough pieces sit beside one another.

The experiment costs five minutes: open your own index page and read nothing but the first sentences, top to bottom.

Chris Chabot · July 2026