← Blog

Teaching Claude How to Write Like Me

Contents
  1. What's a Claude Code skill
  2. The hard part was the voice
  3. What the skill actually does
  4. The meta angle
  5. What comes next

I've been using Claude Code to build this entire website. I wrote about that a few weeks ago. Architecture decisions, server code, blog posts, CV layout, smoke tests. All of it.

But every time I wanted to write a new blog post, I'd have to re-explain everything. The frontmatter format. The category mapping. The file naming. The tone. Especially the tone. I've corrected Claude on voice enough times that I started wondering: what if I just codified all of it?

So I built a Claude Code skill that writes blog posts for me.

#What's a Claude Code skill

If you haven't used Claude Code, skills are markdown files that live in ~/.claude/skills/. They're instructions that Claude loads when you invoke them. Think of them as reusable prompts with structure: a trigger description (so Claude knows when to use it), a workflow, and any reference material you want it to follow.

The interesting part is that skills are global. They're not tied to a specific project. I can be working on Envoy CRM, hit a moment where I think "this would make a good blog post," and invoke the skill right there. It navigates to this repo, writes the file, commits, and pushes.

#The hard part was the voice

The workflow was straightforward. Extract context from the conversation. Categorise (Technical goes to /blog/, Personal goes to /writing/). Write the markdown. Show a draft. Push after approval. Six steps, took maybe ten minutes to design.

The voice was the actual problem.

I'd tried having Claude write drafts before, and the output always had that AI quality to it. Clean symmetrical headers. Feature-list energy. Dramatic closers. Every paragraph polished to the point of being lifeless. It didn't sound like me, it sounded like a language model doing its best impression of a tech blogger.

So I did something I probably should have done much earlier: I read all 22 of my own posts and documented the patterns. Not the obvious stuff (British English, no em dashes) but the structural things. How I open posts. How I close them. The fact that I use parenthetical asides constantly. My habit of presenting three options with pros and cons before picking one. The way I admit uncertainty instead of wrapping things up neatly.

The result is a 2,000-word reference file that captures things I didn't even realise I was doing consistently. Like starting posts with a specific moment or honest observation, never a thesis statement. Or the phrase "That is enough to justify..." which apparently I use more than I thought.

#What the skill actually does

Two files. That's it.

SKILL.md is the workflow. About 150 words of frontmatter for discovery, then six steps: extract context from the current conversation, categorise, read the voice reference, draft, present for approval, ship.

reference.md is the voice guide. Nine sections covering everything from opening patterns to sentence mechanics to recurring phrases. Every example is a real quote from a published post, not something I made up as a style target.

The key design decision was making the reference a separate file. SKILL.md stays lean (Claude loads it quickly for discovery), and the full voice guide only gets read when the skill is actually invoked. Saves tokens when it's just sitting in the skills list.

#The meta angle

Yes, I used this skill to write the post you're reading now. I built a tool to write blog posts, then used it to write a blog post about building the tool. I'm aware of how that sounds.

But that's actually the point. If the skill works, this post should sound like me. Not like a polished AI summary of what happened, but like I'm explaining the process to someone who's interested in Claude Code workflows. Short paragraphs. Parenthetical asides (like this one). Specific details over abstract claims.

If it doesn't sound like me, well. I've got a reference file to improve.

#What comes next

The skill handles the common case: I'm in a Claude Code session, something interesting happens, I want to write about it. It doesn't handle editing existing posts or scheduling. Those are separate problems.

What I'm more curious about is whether the voice reference drifts over time. My writing isn't static. The posts from 2024 read differently from the ones I'm writing now. At some point the reference will need updating, and I'm not sure yet whether that should be manual or whether there's a way to make it self-correcting.

Still early. But it works, and that's enough for now.