This is the blog of Adam Kalsey. Unusual depth and complexity. Rich, full body with a hint of nutty earthiness.

Products and Tools

AI writing is intolerable. I'm trying to fix it.

a bird holding a short strip of paper, in front of a large pile of receipt paper

Priya asks you a short question in Slack: "Is there an ETA?" The answer comes from an AI assistant that just spent the afternoon debugging with you. It’s 500 words long, with tables. It covers the root cause, every debugging step, and the test counts. Priya skims it and asks again.

When people hand me AI slop, I often say I’m sorry I didn’t bother to read the thing you didn’t bother to write. But you did bother. You spent the afternoon on that bug, and the answer was in there. The writing buried it.

So I built a plugin. More on that in a bit, or you can skip to the bottom if you just want the goods.

The tells aren’t the problem

Zonder Labs recently published "Why is AI Slop so Frustrating to Read?" Annotators marked 78% of Claude Code’s output as unclear, compared to 11% of Stack Overflow answers. An AI detector caught the AI samples 99% of the time, but that told you nothing about which ones were hard to read. Em dashes and "delve" are easy to spot. They aren’t what wears you out.

What wears you out is length and clarity. The model includes everything it knows instead of what you asked. It hides who did what, gives things names nobody uses, and puts the point after the evidence. Zonder’s example: "A request for grapes was made upon the duck’s arrival at the lemonade stand," when it could have said "A duck walked up to a lemonade stand and asked for grapes."

Most "humanizer" tools only go after the tells. They’re trying to hide that AI wrote it. I’m trying to make AI-written text useful.

What it does

I built a set of five skills that fix the length, the clarity, and the tells, in that order. They follow the Agent Skills standard, so they run in Claude and in other assistants that support it, like ChatGPT and Grok. They’re MIT licensed and live at github.com/akalsey/ai-writing.

  • concise cuts every sentence the reader wouldn’t miss, and never drops an action, date, owner, decision, or request. It’s based on Writing for Busy Readers by Todd Rogers and Jessica Lasky-Fink.
  • cold-reader-docs makes a document make sense to someone who wasn’t in the conversation. If you and Claude spent an hour calling something "the clone," your reader has no idea what that is.
  • clear-prose makes each sentence say who did what, using Joseph Williams and Joseph Bizup’s Style: The Basics of Clarity and Grace.
  • avoid-ai-writing strips the tells, with different rules for blog posts, docs, memos, and other formats. It draws on Wikipedia’s "Signs of AI writing," Simon Willison’s LLM cliché highlighter, and ideas from several open-source humanizer projects.
  • writing-pipeline runs the other four in that order, then re-reads the whole thing.

The order matters. Cutting comes first, so nothing polishes a sentence that’s about to go. The tells pass runs last, because the earlier passes write new sentences and new sentences bring new tells.

An example

Here’s what Claude wrote for Priya’s team after a simulated debugging session, when I asked it for a status report and ETA: 495 words, full of tables, debugging steps, and test result counts. That’s Claude’s default output.

Here’s the response to the same question, after the pipeline, at 85 words:

The fix for the large-account export 504s is done and tested, and it can ship [author: ETA]. The export built the whole file before sending anything, so accounts above about 10k transactions hit the load balancer’s 30-second timeout. It now streams rows as it reads them, and a 50k-row export now finishes in 13 seconds where it used to fail. One thing is still open: the 200k-row export ran slower per row than expected on my machine, and [author: owner] will check it on staging..

The [author: ETA] bracket is deliberate. The session never said when it ships, so instead of inventing something, the tool left a blank for the author to fill.

It isn’t only for AI text. I ran it on eight of my own blog posts and it flagged 21 sentences, all in posts I’d written entirely by hand. They were real catches. Zonder found 10% of human-written articles unclear. Apparently some of them were mine.

Installing it

The source is on GitHub if you want to grab it and install it manually.

In Claude Code:

/plugin marketplace add akalsey/ai-writing /plugin install writing-quality@ai-writing

The skills kick in when you say things like "make this clearer" or "this is too long." A hook also reminds Claude to run the pipeline after it writes a document, a PR description, or a bug report. Set AI_WRITING_PIPELINE_HOOK=0 to turn it off. If you want Claude’s own chat replies held to the same rules, turn on the "Clear reports" output style. That’s where most of the "why did you send me a novel" pain lives.

On claude.ai, upload the .skill bundles. For ChatGPT, Grok, and other Agent Skills tools, build the five zips with make flat or download them, upload them in the tool’s skills settings, then add this custom instruction: "When you draft an email, message, issue, memo, or document for me, apply the writing-pipeline skill to it before showing it to me."

I tuned and tested it on Claude. It should behave the same elsewhere, but I haven’t checked. The test suite is in the repo if you want to try it on your favorite model.

Very little of this is my own idea. Rogers and Lasky-Fink ran the experiments, Williams and Bizup wrote the book on clarity, and Zonder Labs measured what makes AI text hard to read. My part was putting it in order.

Next time someone asks a short question, they should get a short answer.

Oh, and this blog post? I wrote the notes, supplied two phrases I wanted to use (the title and “didn’t bother to read what you didn’t bother to write”), and Claude did the rest. Normally every word you see on this blog is mine, but here I wanted to make a point, so only this paragraph is hand-written.

Recently Written

AI writing is intolerable. I'm trying to fix it.
Nov 13: "Delve" is the least of it. It's too long and hard to follow. I built open-source skills for Claude, ChatGPT, and Grok that fix that.
The Pumpkin Talks Back
Nov 6: I gave my flaming jack-o'-lantern a voice, a camera, and a personality, and let it insult trick-or-treaters for six hours.
A Skills Wheel for Product Designers
Oct 18: I love Petra Wille's PM Wheel for product managers. I couldn't find an equivalent for designers, so I built one.
Where Does Product Marketing Belong?
Mar 6: The debate about whether PMM reports to product or marketing has a simple answer once you ask the right question.
The Rise of Vertical Software
Feb 15: AI makes execution cheap. Deep industry knowledge becomes the real moat.
Using Chatbots as a Tutor
Feb 11: A prompt that turns your LLM chatbot into a custom tutor.
How to Interview Product Managers
Nov 9: Most people never learned to interview, so when thrust into hiring a product manager they ask bad questions. Here's how to ask better ones, with lots of examples of real questions.
AI as Your Strategic Thinking Partner
Oct 12: AI becomes a lens on your own logic. It doesn’t replace your judgment—it sharpens it. By asking questions you wouldn’t think to ask yourself, it turns private reasoning into something visible and testable.

Older...

What I'm Reading