A portable agent skill that finds the patterns marking writing as AI-generated and replaces each with what a careful writer would do instead. It runs in any harness that can load a Markdown skill.
The skill is written in the voice it asks for. Anything loaded into a model's context becomes a template it imitates, so a humanizer written in slop would teach slop. Keep that property when you edit it.
As a Claude Code plugin:
/plugin marketplace add chi-feng/humanizer
/plugin install humanizer@humanizer
Or use it directly: copy SKILL.md to ~/.claude/skills/humanizer/SKILL.md.
/humanizer <text or file path> # rewrite (default)
/humanizer --audit <text or file> # non-destructive diff and change list
Rewrite mode returns the cleaned text (for a file, it writes <path>.humanized unless told otherwise). Audit mode shows a unified diff and a categorized list of what changed, each line citing the section it came from.
The diagnostics are grouped into seven areas, and every pattern is paired with a fix.
| Area | Examples |
|---|---|
| 1. Structure | throat-clearing openings, signposted and symmetrical conclusions, rule-of-three saturation, listicle-in-prose, contamination (placeholders, knowledge-cutoff disclaimers, broken-edit artifacts) |
| 2. Sentences | negative parallelism ("not X, but Y"), the "real X was" pivot, tacked-on -ing analysis, false ranges, agent-hiding passive voice, length monotony |
| 3. Tone | dramatic openings, manufactured epiphany, stakes inflation, "despite its challenges", futurism, confident confabulation |
| 4. Lexicon | the genuine/honest/real intensifier, copula avoidance, promotional vocabulary, vague authority, filler transitions, dev-metaphor reflexes |
| 5. Formatting | em-dash inflation, bold overuse, title-case headings, curly quotes, emoji bullets |
| 6. Code-adjacent | PR and commit inflation, chatbot residue and sycophancy, faux-engagement closers, whitespace and helper inflation, execution-report tells |
| 7. Device index | the same tells named by classical rhetorical device, for quick recognition |
Two ideas run through all of it. Fix by subtraction before substitution: deleting a scaffold usually beats swapping in another device. And frequency on two axes: a tell that shows up once per piece but in every output is still a tic, because a model is memoryless across generations and can't see its own rate. Before output, the skill runs a self-audit pass: name what still reads as AI, check every added specific against the source, and re-read for anything the fix introduced.
Removing slop is not removing style. The skill preserves the author's voice, real lists, correct technical terms, and varied sentence length. The goal is the source on a good day, not a blander writer.
- 6.1.0 — Added a required self-audit pass before output (name remaining tells, verify added specifics against the source, re-read). In testing this roughly halved invented detail, which was the skill's main failure mode.
- 6.0.0 — Rewrote the skill to be universal and self-exemplifying: dropped model-specific calibration and provenance, reorganized into seven thematic areas plus a device index, and cut the instructional prose's own tells.
The pattern catalog grew out of the author's own AI-writing self-evaluations. The repository layout and plugin packaging follow blader/humanizer. Both share lineage with Wikipedia's Signs of AI writing.
MIT. See LICENSE.