joemattie
stuff
← index
writing2026-07-236 min read

How I taught my agents to write like me

Joe Mattie
software engineer · mad scientist

I got tired of asking agents to make a post sound like me, then deleting the same pile of AI tells from the result. The em dashes. The fake gravitas. The tidy little three-part lists. The paragraph that sounds like a SaaS company explaining how its platform “unlocks” something.

I already had some house rules, but they were mostly complaints collected after the fact. During a long Authorbot session, I asked Claude to put my preferences into its global guidance. I told it I use parentheses for bounded asides, sometimes nest them like ([{}]), trail off with ..., use “thing” too much, and don’t care much about grammar. I couldn’t remember which serial-comma rule I felt strongly about.

It explained the Oxford comma. I replied, “Oxford all the way every time.”

This was useful, but it was still me describing myself from memory. People are bad at that. I decided it would be fun to make the agent check my claims against the record.

The mildly invasive part

I asked it to mine as much of my genuine writing as it could find. My exact instruction was, “You don’t have to be nice, just accurate.”

The first pass used three piles:

  • 522 prompts from 150 Claude Code transcripts, totaling 12,545 words;
  • about 508 Codex prompts, totaling 25,641 words; and
  • 136 sent emails sampled across 2009 to 2023, totaling 2,272 words.

The email archive reached back to 2006, almost twenty years. I don’t send much email anymore, so the local agent transcripts supplied most of the recent material. Those prompts are also unusually honest samples because I’m usually trying to get a thought out as fast as possible and don’t bother rereading it. I assume the model will infer what I mean, which it usually does.

Then I gave it the actual gold mine: an export of my entire local Messages database. That added 64,043 messages I sent between 2018 and 2026, or 493,954 words. Across all four sources, the analysis covered about 65,000 messages and more than half a million words. It analyzed only my side of the conversations.

Handing an AI half a million words of private text history feels somewhere between serious self-study and a terrible idea. I chose to do it. The exports and report stayed on my machine, and local scripts did the bulk counting before the hosted model summarized the results. This was still a cloud model working with private material, not a magic privacy bubble. I’m not publishing message samples here. The other people in those conversations didn’t volunteer to become blog material.

The agent did surface one painfully earnest personal email from 2009 as evidence that I write differently when I’m trying. I immediately regretted giving it that much range and asked it to remove the example from the report. It did. Statistics are fine. Some things can stay fifteen years ago.

It got me wrong first

The first report decided I was a “deliberate minimalist” who spent punctuation and politeness on humans but treated machines as a lower-effort audience. The numbers supported that read. My emails were capitalized and punctuated. My prompts often weren’t.

I pushed back. When I type to an agent, I’m not really writing. I’m speaking through text because text is the machine’s native channel, and the available voice interfaces still feel like being trapped on a strange Zoom call. I type the thought at roughly conversational speed and keep moving. A formal email is the code-switch, not the unfiltered version of me.

That correction changed the whole project. A useful writing skill shouldn’t imitate my raw prompts. Nobody wants a blog post written like opdate the planfile with all the info. It should carry the parts that stay stable when I move from speech-like text to actual prose.

The phrase that ended up at the top of the guide was: keep the fingerprint, drop the shorthand.

What the autopsy found

Some of my self-assessment held up.

I had typed essentially zero deliberate em dashes across the desktop corpora and more than half a million words of texts. The few phone examples came from iOS changing a date-range hyphen, pasted marketing copy, or other smart-punctuation bullshit. My stupid vendetta apparently has a clean historical record.

Parenthetical asides really are one of my strongest habits. So is the Oxford comma. I drop periods and casual capitalization constantly, but I almost always keep apostrophes and capitalize the pronoun “I.” That specific mix is more consistent than I expected.

I was wrong about “thing” being my favorite placeholder. “Stuff” beat it in every corpus. I have also emailed myself notes titled stuff, STuff, thing, and asdf, so this isn’t a subtle finding.

The phone dump was supposed to prove that my wonky right thumb turns me into a spelling disaster. It did the opposite. I spelled “ridiculous” correctly 28 out of 28 times. I wrote “a lot” correctly 189 times and alot zero times. The two recurring desktop mistakes were analize and grammer, which is almost too convenient. I only misspelled “grammar” while complaining to an AI about grammar. On my phone I spelled it correctly.

The analysis also tried to quantify how funny I am. Its first method said I was less funny than the average person in my own inbox, which was clearly a defective methodology. Once it counted laugh replies and “Haha” tapbacks, it found that people laughed at my messages 3,619 times while I laughed at theirs 2,679 times. The report called this a comedy trade surplus of 940.

This is the most scientifically important result, and I won’t be taking questions.

Turning it into a skill

The report was interesting, but a pile of statistics doesn’t tell an agent what to do with a paragraph. Before the original session ran out of context, I asked for an exhaustive prose guide with examples and do-this-not-that rewrites.

The guide separates two jobs:

  • Blog writing gets my full voice: plain language, direct opinions, dry asides, contractions, and occasional profanity.
  • Book editing gets the mechanical preferences without pouring my personality into every narrator and character.

It bans the usual model vocabulary and structures. No “delve.” No metaphorical “landscape.” No claims that a project is “robust” or “seamless.” No automatic rule of three. No “It’s not just X, it’s Y.” It tells the agent to use the plain word, cut the throat-clearing, and stop polishing everything until it sounds like marketing copy.

It also says not to copy my texting register into prose. No gonna, no all-lowercase paragraphs, and no lol hanging off the end of a sentence in the book. That seems obvious, but without the distinction an agent could study 64,000 texts and produce the world’s most statistically accurate terrible essay.

I turned that guide into a global /as-joe skill. The instruction file is the practical part. The full stylometric report sits beside it as a reference, so an agent can check the evidence when it needs more than the short rules. I installed it for both Claude Code and Codex.

Now when I ask an agent to draft a post or edit the book, the skill loads automatically. It doesn’t make the result mine by magic. I still decide what I mean, cut lines I wouldn’t say, and edit everything before it goes out. It does mean I spend less time removing the same synthetic habits from every draft.

This post was written with that skill active, which is either a useful demonstration or an elaborate way to let the subject grade its own homework. I still had to read it.

I wrote more about the rest of the process in How I work with AI tools. The writing skill handles one narrow part of that loop: getting the machine close enough to my voice that the remaining argument is about the idea, not another goddamn em dash.

aiwritingworkflowclaude-code