humanizer-skill
Free, open-source AI writing humanizer and detector. 55 patterns, 5 voices, a 0-100 AI-tell score, and nothing leaves your machine.
Install / Use
npx skills add Aboudjem/humanizer-skillInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
Content & MediaSupported Platforms
Skill content
View source on GitHubAI writing has a fingerprint. Every sentence runs about the same length. It reaches for the same safe words, and it pads with filler like "in today's landscape." Two bits of jargon worth knowing: how much your sentence lengths vary is called burstiness (people mix short and long, AI keeps them all one size), and those little giveaway habits are called AI tells.
Humanizer knows 53 of them. It finds them, scores the text, and rewrites it in a voice you pick. All from a single file your editor reads on your own machine.
Quickstart
Install once. It works in Claude Code, Cursor, Codex, opencode, and 70+ other AI editors (vercel-labs/skills):
npx skills add Aboudjem/humanizer-skill
Now score any text right in your editor. This just scans, it doesn't rewrite:
/humanizer "In today's rapidly evolving landscape, AI is reshaping how we think about creativity." --mode detect --score
You get a number you can quote and the reasons behind it:
[Score: 84/100, Pure AI smell]
Patterns found: 5
| P4 | Promotional | "rapidly evolving landscape" |
| P7 | AI Vocabulary | "reshaping" |
| P22 | Filler | "In today's" |
| P29 | Comprehensive Opening| meta-commentary |
| P30 | Uniform Length | sentences avg 19 words |
The score runs 0 to 100. Lower is more human. Drop the flags and it rewrites instead of scanning: /humanizer "your text" --voice casual hands back the same idea in a real voice, and the score falls to single digits.
[!TIP] This is about writing better, not tricking detectors. Clean writing doesn't set off AI detectors, because it skips the lazy habits they look for. Fix the writing and the detection sorts itself out.
Features
- 53 named patterns, from travel-brochure adjectives to invisible unicode tricks. The biggest open list of its kind.
- 5 voices:
casual,professional,technical,warm,blunt. Each one changes the rhythm, not just a few words. - 3 modes:
detect(score it),rewrite(fix it),edit(change a Markdown file in place). - A 0 to 100 AI-tell score on demand, so you can measure before and after.
- A guard against over-editing, so it sharpens real writing instead of flattening it.
- One Markdown file. No dependencies. No network calls. It runs standalone.
- Optional metrics CLI and CI check if you want a computed score in your pipeline.
Usage
/humanizer "text" rewrite it with the default voice
/humanizer "text" --voice casual pick a voice
/humanizer "text" --mode detect --score scan only, add a 0 to 100 score
/humanizer --file docs/README.md --voice technical fix a file in place
/humanizer "text" --aggressive --iterate 3 heavy rewrite, loop until the score bottoms out
Rewrite is the default, so you never have to name it.
| Voice | Sounds like | Good for |
|:------|:------------|:---------|
| casual | Contractions, "I", fragments, "And" starters | Blogs, social posts |
| professional | A few contractions, dry, concrete | Reports, business writing |
| technical | Exact terms, plain, deadpan | Docs, READMEs |
| warm | "We" and "our", patient, short paragraphs | Tutorials, onboarding |
| blunt | Short. No hedging. Active voice. | Reviews, direct feedback |
Other flags: --mode picks detect, rewrite, or edit. --purpose layers on rules for an essay, email, marketing copy, technical doc, or general text. --iterate N runs the scan-rewrite loop up to 3 times. --aggressive uses a heavier hand. Drop a humanizer-context.md file in your project root with your own writing samples and banned words, and the skill folds it into whichever voice you chose.
More
<details> <summary><b>Before and after (docs, blog, LinkedIn)</b></summary> <br/> <picture> <source media="(prefers-color-scheme: dark)" srcset=".github/assets/demo-typewriter-dark.svg"> <source media="(prefers-color-scheme: light)" srcset=".github/assets/demo-typewriter-light.svg"> <img alt="Terminal running /humanizer with --voice technical --score: three AI tells (comprehensive, delves into, pivotal) are flagged, struck through, and replaced with clean human prose, dropping the AI-tell score from 84 to 12" src=".github/assets/demo-typewriter-light.svg" width="100%"> </picture>Technical docs (--voice technical)
Before: This comprehensive guide delves into the intricacies of our authentication system. The platform leverages cutting-edge JWT technology to provide a seamless, secure, and robust authentication experience.
After: The auth system uses JWTs. Tokens expire after 15 minutes; refresh tokens last 7 days. Role-based access control restricts API endpoints by user role. The token rotation logic is in
src/auth/refresh.ts.
Killed 9 patterns. Added real details. Cut the word count by 40%.
Blog post (--voice casual)
Before: In today's rapidly evolving technological landscape, artificial intelligence is reshaping how we think about creativity. This groundbreaking shift represents a pivotal moment in human history.
After: I've been messing around with AI image generators for about six months now, and I still can't decide if I love them or if they make me uneasy. The outputs are impressive. But there's something missing. It's like eating a perfect-looking meal that has no flavor.
Traded vague commentary for a lived opinion. Sentence lengths: 8, 31, 22, 4, 13 words. That's burstiness.
LinkedIn (--voice professional)
Before: Excited to announce that I've taken on a pivotal new role at TechCorp! This incredible opportunity represents a significant milestone in my professional journey. #NewBeginnings #Innovation
After: Started a new job at TechCorp this week. I'm leading their developer tools team, 12 engineers serving about 400 developers. First week has been drinking from the firehose: new codebase, new faces, new coffee machine I can't figure out.
No emojis, no hashtags. Real numbers instead of "pivotal milestone."
</details> <details> <summary><b>Install without tooling (curl), and per-editor paths</b></summary> <br/>Project-scoped (travels with your repo):
mkdir -p .claude/skills/humanizer && curl -sL https://raw.githubusercontent.com/Aboudjem/humanizer-skill/main/skills/humanizer/SKILL.md -o .claude/skills/humanizer/SKILL.md
Global (available in every project):
mkdir -p ~/.claude/skills/humanizer && curl -sL https://raw.githubusercontent.com/Aboudjem/humanizer-skill/main/skills/humanizer/SKILL.md -o ~/.claude/skills/humanizer/SKILL.md
Prefer Claude Code plugins? Add the marketplace instead:
claude plugin marketplace add Aboudjem/humanizer-skill
Same idea for other editors, just change the folder: .cursor/skills/, .github/skills/ (Copilot), .codex/skills/, .gemini/skills/, .windsurf/skills/, .continue/skills/. For OpenClaw, run clawhub install humanizer-skill.
</details> <details> <summary><b>All 53 patterns</b></summary> <br/>[!NOTE] Claude Code finds skills in
.claude/skills/,~/.claude/skills/, or any plugin'sskills/folder. No restart needed. Other editors may need you to point at the file in their config.
| IDs | Category | Examples | |:----|:---------|:---------| | P1-P8 | Content | Significance inflation, promotional language, AI vocabulary ("delve", "leverage"), copula avoidance | | P9-P18 | Language & Style | Negative parallelisms, em dash overuse, structured-list syndrome, title-case headings | | P19-P21 | Communication | Chatbot artifacts, knowledge-cutoff disclaimers, sycophantic tone | | P22-P30 | Filler & Hedging | Filler phrases, generic conclusions, comprehensive-overview openers, uniform sentence length | | P31-P43 | Emerging | Elegant variation, placeholder text, chatbot markup leaks, treadmill effect, infomercial hooks | | P44-P53 | Craft & Forensic | False agency, diff-anchored writing, aphorism formulas, reasoning-chain artifacts, unicode obfuscation |
Every pattern has a full write-up, its triggers, and a before/after example in skills/humanizer/SKILL.md and references/patterns.md.
The core catalog (P1-P30) draws on Wikipedia: Signs of AI writing (CC BY-SA), the cited reference list most of those entries come from.
</details> <details> <summary><b>The science</b></summary> <br/>AI detectors measure two things, and both are well documented.
Burstiness is how much sentence length varies. People write a 3-word sentence, then a 40-word one, then a 12-word one. AI parks almost every sentence around 18 words. Flat lengths read as AI.
Perplexity is how predictable each word is. AI picks the most likely next word every single time. People reach for the surprising one. Less predictable text reads as human.
Word-swap tools like QuillBot change individual words but leave the rhythm and the predictability alone. You need to change the structure, not just trade synonyms.
| Technique | Source | Finding | |:----------|:-------|:--------| | Burstiness injection | GPTZero | Human sentence length varies wildly; AI doesn't. | | Kill negative parallelism | Washington Post | "It's not X, it's Y" is the #1 AI tell across 328K messages | | Structural paraphrasing | RAID benchmark, ACL 2024 | Drops DetectGPT accuracy from 70.3% to 4.6% | | Length and lexical diversity | HC3 corpus, arXiv 2301.07597 | ~40K pairs: human answers avg 142.5 words vs ChatGPT 198.1; humans use a bigger vocabulary |
</details> <details> <summary><b>Optional: computed metrics and a CI checTruncated for display — read the full file on GitHub.
Related Skills
LocalAI
49.2kLocalAI is the open-source AI engine. Run any model - LLMs, vision, voice, image, video - on any hardware. No GPU required.
siyuan
46.4kAn open-source, privacy-first, self-hosted knowledge workspace where humans and AI agents work together 开源、隐私优先、自托管的知识工作空间,让人与智能体在此协作
FunASR
20.5kOpen-source speech recognition toolkit for training, inference, streaming ASR, VAD, punctuation, speaker diarization pipelines, and OpenAI-compatible/MCP serving.
humanizer
50.9kAgent skill that removes signs of AI-generated writing from text
