On this page
I Built a Prose Linter Because AI Writing Kept Reading Like AI
Key takeaways
- Repetitive rhythm and stock transitions can make prose feel mechanical, but they do not establish who wrote it.
- Humanizer-Lint applies deterministic style checks to a draft and highlights passages for a writer to review.
- You revise just the flagged lines; nothing that already sounds like you gets rewritten.
- It runs 100% locally with zero dependencies in 8 languages, as a skill for Claude Code, Codex, and Cursor.
- The HOL Registry listing sits alongside three other signals: SkillsLLM Verified, XERJ Corpus indexing, and an awesome-ai-plugins merge.
I kept finding AI-assisted drafts where the grammar and structure were fine, but the prose felt manufactured. I hit that wall enough times to build a tool about it.
The tool is Humanizer-Lint, a deterministic prose linter for coding agents. This is the story of why it exists and what I learned about how to humanize AI text without rewriting everything.
The rhythm of a draft matters
I started paying attention to more than vocabulary: sentences hovering at the same length, paragraphs breathing on the same schedule, and transitions arriving exactly when expected. Those patterns can make a draft feel flat, although they cannot tell you who wrote it.
Writers can sprint, then stall, then drop a four-word sentence into a long argument because it lands harder that way. I like that change of gear, and I found myself missing it in some generated drafts.
Why I did not build another AI humanizer
My first instinct was the obvious one: build a rewriter. Paste text, get paraphrase back. I tried several before writing any code and kept running into the same three failures. They changed meaning in lines that were already fine. My voice got stripped out along with the tells. Worst of all, they wanted my drafts uploaded to someone else's server, which for a writing tool feels like the opposite of privacy.
So Humanizer-Lint works in the opposite direction entirely. It never rewrites anything. It scans a draft with deterministic checks for selected phrases, rhythm and structure, then reports findings and revision hints. You revise only what got flagged. Everything that already sounds like you stays untouched, because the tool physically cannot touch it.
Deterministic beats clever
Deterministic deserves emphasis here, because a linter that changes its mind between runs is worse than no linter at all. Same draft in, same flags out, every single run. No hallucinated suggestions, no scores that drift between runs, no black box deciding your voice behind your back. For a writing tool I think that reliability beats cleverness, because you cannot edit against a moving target.
Built where writers work: inside coding agents
Where does the tool actually live? Inside the place most of us draft now: coding agents like Claude Code, Codex, or Cursor. A writing checker trapped in a browser tab adds friction nobody needs, so this ships as an agent skill instead. After installing it, run the analyzer on a draft and review the findings in context. Eight languages work today, covering English, Indonesian, Spanish, Malay, French, German, Portuguese, and Chinese, for the supported lexical rules. The linter itself runs locally, has zero dependencies, and makes no network calls. It does not upload the text it checks.
Pros and cons
Pros
- The linter reports findings without rewriting the draft; the writer decides what to change.
- Deterministic: the same draft always produces the same flags, so you can edit against a stable target.
- Runs locally without dependencies or network calls, and does not upload the text it checks.
- Eight languages, including English, Indonesian, Spanish, and Chinese.
- Per-sentence fix hints instead of vague scores.
Cons
- It does not write anything for you: you still do the revising it suggests.
- Deterministic checks cannot judge taste, so a flagged line is a prompt to look, not a verdict.
- Installing it requires an agent that supports skills (Claude Code, Codex, Cursor, and similar).
The proof, with the receipts
Three outside signals surprised me, honestly. SkillsLLM gave it a Verified badge. The XERJ Corpus lists the repository in its search index. The awesome-ai-plugins scanner later reported a score of 78, above its 75-point threshold, and listed seven findings; the project is also in the HOL Registry. A live demo sits at humanizer.aiclub.ai.id if you want to scan something without installing anything.
Anyone publishing with AI assistance should run their next draft through it once, just to see. Review each finding in context; a linter can flag writing you intended to keep.
FAQ
How do you humanize AI writing without changing the meaning?
Scan the draft for patterns such as flat sentence rhythm and stock phrases, then decide which findings need revision. The linter does not rewrite the text, but writers still need to check that their edits preserve the meaning.
What does humanizer-lint look for?
It checks selected lexical patterns, sentence-length statistics and structural features, including repeated phrasing. These are editorial heuristics, not evidence of who wrote a passage.
Where can I install Humanizer-Lint?
The source lives at github.com/yanstd888/humanizer-lint and the listing with install commands is on the HOL Registry plugin page. The launch board with other agent tools is at hol.org/plugins/launches.
What comes next
What comes next follows the same principle. More languages, deeper rhythm analysis, and framework-specific rules for technical writing, with priorities set by the issues people actually file. The repository is open source and I read every issue myself.
When I edit an agent-assisted draft, I prefer to review specific findings and decide which lines need work rather than rewrite the whole piece.
humanizer.aiclub.ai.id https://github.com/yanstd888/humanizer-lint