# blader/humanizer: 26 patterns, a stated non-goal, and no detector bypass

> Humanizer is a Markdown agent skill that rewrites AI-sounding prose for human readers, built on Wikipedia's Signs of AI writing. It ships as text rather than a library, installs under two different slash names depending on the route, and says outright that detectors still flag most of its output.

**blader/humanizer** — Agent skill that removes signs of AI-generated writing from text. It is plain Markdown, so it can run in any harness that supports skill-style instructions.

- Repository: https://github.com/blader/humanizer
- Website: https://skills.sh/blader/humanizer
- Stars: 52,855 · Forks: 4,218
- Language: Python
- License: MIT
- Published: 2026-08-08 · Updated: 2026-08-18 · Language: en
- Canonical page: https://hysenlabs.com/projects/blader-humanizer

## The product is a Markdown file your host model reads

The recorded primary language is Python, and the tree does hold a scripts/ directory, but the working parts of this skill are text: SKILL.md at the top level, AGENTS.md, and plugin metadata under .claude-plugin/ and .cursor-plugin/. Nothing here is an importable package with a function signature. The rewrite is performed by whichever model your host agent already runs, following written instructions, which is why the same skill can sit inside Claude Code, Codex, Gemini CLI, GitHub Copilot, or Windsurf. Consequence: there is no quality floor of its own. Change models and the same text comes back rewritten to a different standard, and there is no local mode, because the work happens in the host, not in code you can pin a version to. Nothing in the repository measures output against a fixed model, so a change of host changes the result with no diff to inspect. The escape hatch for an unknown agent is manual: copy SKILL.md into its skill folder.

## The slash name changes with the install route

Once installed, the skill answers to /humanizer. That is the general case. The Claude Code plugin route is the exception: after

```
/plugin marketplace add blader/humanizer
/plugin install humanizer@humanizer
```

it answers to /humanizer:humanizer instead, namespaced by the plugin host. Consequence: a command, doc snippet, or muscle memory copied between installations silently fails, because the skill is there but the name you typed is not the name it registered. This is a small thing that costs a person an afternoon if they installed on one host and then moved to another and pasted the old invocation. If you are documenting a setup for a team, write down which route each person used, because the two names point at the same skill and neither redirects to the other.

## Claude Code 2.1.142 is the floor for the plugin route

The plugin path needs Claude Code 2.1.142 or newer. On older versions the documented fallback is a different command entirely:

```
npx skills add blader/humanizer --global --agent claude-code
```

Codex takes that same form with a different agent name, and any other agent uses the wildcard.

```
npx skills add blader/humanizer --global --agent '*'
```

Consequence: installation is two code paths with different minimum versions and different resulting names, and the version requirement is stated in prose next to the commands rather than enforced by anything you can check first. A team on mixed Claude Code versions will end up with a mix of namespaced and plain invocations across machines. Leave off --global and the install is scoped to the current project only, which is the option to prefer for a repository where the skill is a team convention rather than a personal tool.

## The ZIP upload has no update path

For Claude.ai and Claude Desktop the route is manual: download this repository as a ZIP through Code, Download ZIP, and upload it in Settings as a skill. There is no CLI step, no version check, and nothing that tells the host to fetch a newer copy later. Consequence: what you upload is a snapshot, and the only ways forward are re-downloading the ZIP and uploading it again or dropping the skill entirely. With releases at v3.1.0, v3.0.0, and v2.11.1 in the history, a stale copy is a real possibility, and nothing on the host side will warn you that your copy predates a pattern change. If you use this route, record which release you uploaded, since the skill's own text is the only record of what is installed.

## Detectors still flag most of the output, and that is the stated goal

The README is unusually direct about this: Humanizer edits for human readers, getting past AI detectors is not a goal, and detectors still flag most of its output. That sentence should decide whether you install it. If your motivation is a reader noticing the prose, the tool is aimed exactly there. If your motivation is passing a detector, a plagiarism service, or an employer's AI check, then the documented behaviour is that it does not work, and no amount of pattern coverage changes that. The supporting evidence is a blind test in which judges preferred the rewrite over the original AI text 16 times out of 16, tracked in issue #229. Sixteen samples measuring preference between two texts is a claim about taste, not about detector scores.

## Five patterns fire on sight, the rest need a passage

The list is numbered by strength and frequency, which makes it a work queue rather than a taxonomy. The first five justify an edit on a single sighting: Not X but Y, one-line closers and dramatic fragments, sayings that sound deep, a staged run-up before the point, and arguing with no one. They sit in group A, staging instead of stating, each with a before and an after. Group B, rhythm by rule, starts at number 6 with forced triads and repeated sentence openings, and number 8, dashes as the universal connector, is marked weak alone. Patterns marked that way count only when several tells share a passage, because a careful writer may use one on purpose. Consequence: the skill is deliberately reluctant about some patterns, so a single dash in your prose will not be touched, and how aggressively a passage is rewritten depends on density rather than on any single phrase.

## Voice matching inherits everything your sample contains

The optional voice path asks for two to three paragraphs of your own writing, pasted under a sample prompt, before the text to rewrite. The skill then follows the sample's rhythm, word choice, punctuation, and deliberate quirks, dashes included. Consequence: this is a transfer, not a filter. A sample written with heavy triads, staged run-ups, or one-line closers teaches those habits as loudly as a clean sample teaches restraint, and two to three paragraphs is a small basis for a judgement about a voice. The same limit shows in register handling: personal writing keeps your opinions and quirks, while technical and reference prose is pushed toward neutral and plain, so a blog post may come back noticeably flatter than a spec would.

## It changes prose only, and it asks instead of inventing

Pointed at a file, the skill edits the prose and leaves code, data, frontmatter, and link targets alone. Pointed at pasted text, it shows its work: a first rewrite, a short critique of what still sounds artificial, and the final version. Facts are fenced. A name, number, date, quote, or citation has to come from the source or from you, and when a sentence needs a detail that is missing, the skill asks rather than inventing one. Consequence: this is the right guardrail and the main workflow cost. A batch rewrite will stop on a missing fact and wait for you, and because the original structure is not treated as fixed, a paragraph can come back reordered, so a diff review belongs in the loop for anything that is not throwaway copy.

## Conclusion

Use it when the goal is prose that reads as though a person wrote it, and skip it when the goal is passing a detector or a plagiarism-style check, since by its own account detectors still flag most of the output. It is worth the install if you publish regularly and can review the diff, because it restructures sentences rather than touching them lightly, and it will stop and ask you when a sentence needs a fact that is not in the source. Before you depend on it, run it once on a file you already know the style of, pick the install route that matches your host, and note that the ZIP route for Claude.ai and Claude Desktop has no update path.

## FAQ

### How do I humanize my text?

Call the skill and paste the text under /humanizer, or ask in plain language with Please humanize this text: [your text]. To rewrite a file instead, give it the path, for example Humanize the prose in docs/launch-post.md, and it edits the prose and leaves code, data, frontmatter, and link targets alone.

### how to install humanizer in claude

For Claude Code, run /plugin marketplace add blader/humanizer then /plugin install humanizer@humanizer, which needs Claude Code 2.1.142 or newer and answers to /humanizer:humanizer. On older versions use npx skills add blader/humanizer --global --agent claude-code instead.

### Does Humanize AI get detected?

By its own account, no, and that is the point. Getting past AI detectors is not a goal, the skill edits for human readers, and detectors still flag most of its output.

### Is Humanizer AI accurate?

It checks 26 patterns, where the first five justify an edit on a single sighting and patterns marked weak alone count only when several tells share a passage. A blind test recorded in issue #229 had judges prefer the rewrite 16 times out of 16, and a missing name, number, date, quote, or citation makes it ask rather than invent one.

### how to use humanizer skill in claude

Plugin installs answer to /humanizer:humanizer, while the npx and other-agent installs answer to /humanizer. For voice matching, paste two to three paragraphs of your own writing as a sample before the text, and the rewrite follows the sample's rhythm, word choice, punctuation, and deliberate quirks.

### how to use humanizer in grammarly

Nothing in this repository covers Grammarly, and there is no Grammarly integration. Humanizer installs as a skill into agents through npx skills add blader/humanizer --global --agent, covering claude-code, codex, or every agent the Skills CLI knows, and for an agent it does not know you copy SKILL.md into its skill folder.

## Sources

- [Official documentation](https://skills.sh/blader/humanizer)
- [Official README](https://github.com/blader/humanizer#readme)
- [Project repository](https://github.com/blader/humanizer)
- [Release notes](https://github.com/blader/humanizer/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/blader-humanizer
