Notes went live on September 15 with one post. Two weeks later it still has one. The work didn’t slow down. The writing never started.
It wasn’t a lack of material. A lot of what I build now happens in conversation with Claude, and that leaves a better record than memory does: the original ask, the files it read, the options it laid out, the one we picked and why, the commit that shipped it. We already had a skill that reconstructs that record, across as many chats as the work took.
But a record in order is a changelog. Accurate, complete, and not something anyone finishes reading.
A process recap tells you what happened in order. A story picks the one turn that mattered and hangs everything else on it. That choice is the part only the author can make, and it was the part I kept skipping.
So I built a skill for that step and called it /narrate. It reads the chat, or rebuilds a longer arc across several, and checks every date and number against the repo before trusting it. Before it drafts anything, it strips what shouldn’t go public: day-job work, client names, internal paths, projects we haven’t announced. Then it stops and pitches two or three angles, each with a one-line hook. I pick one. Only then does it write.
What comes out is a brief (the hook, the beats, the verified facts), a blog draft, and whichever social versions I asked for. Each social cut is written from the brief rather than trimmed from the post, so it stands on its own. From there, the skill that already runs Notes takes the draft into the site, checks it against the repo, and ships it.
Two decisions shaped it more than the rest. The first was reuse. I nearly specified a new way to stitch chats together before noticing we already had one. The second was making the angle a question instead of a default.
A tool that picks the angle for you picks the obvious story, and the obvious story is the changelog.
This post is its first run. I took the first angle it offered.