Not in the top 1,000 by GitHub stars
brandonwise/humanizer
OpenClaw skill that detects and removes signs of AI-generated writing, making text sound natural and human. Based on Wikipedia's Signs of AI Writing.
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 4b9b9bee384a
No earlier version was observed for comparison.
Heat
2.5- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
How it works
humanizer
When your agent uses it
Humanize AI-generated text by detecting and removing patterns typical of LLM output. Rewrites text to sound natural, specific, and human. Uses 28 pattern detectors, 560+ AI vocabulary terms across 3 tiers, and statistical analysis (burstiness, type-token ratio, readability) for comprehensive detection. Use when asked to humanize text, de-AI writing, make content sound more natural/human, review writing for AI patterns, score text for AI detection, or improve AI-generated drafts. Covers content, language, style, communication, and filler categories.
What it loads into context
Frontmatter
146 tokensAlways available to the agent
SKILL.md
2,108 tokensWhen the skill is activated
Reference documents
14,199 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Your task
- Quick reference: the 28 patterns
- Statistical signals
- Vocabulary tiers
- Core principles
- Before/after example
- Using the analyzer
- Always-on mode
- Process
Scripts executed separately
api-server/server.jseslint.config.jsmcp-server/format.jsmcp-server/index.jsmcp-server/package.jsonpackage.jsonscripts/analyze.shscripts/humanize.shsrc/analyzer.jssrc/cli.jssrc/humanizer.jssrc/patterns.jssrc/preprocess.jssrc/stats.jssrc/vocabulary.jssrc/workflows.jstests/analyzer.test.jstests/calibration.test.jstests/cli-scan-config.test.jstests/edge-cases.test.jstests/humanizer.test.jstests/mcp-format.test.jstests/performance.test.jstests/preprocess.test.jstests/statistics.test.jstests/workflows.test.jsvitest.config.js
Files
.editorconfigasset219 bytes.gitignoreasset267 bytes.prettierrcasset154 bytesLICENSEasset1,069 bytesREADME.mddoc20,020 bytesSKILL.mdcore8,639 bytesSKILL.mdcore8,639 bytesapi-server/openapi.yamlasset5,087 bytesapi-server/server.jsruns4,619 bytesassets/banner.mddoc331 bytesdocs/CONTRIBUTING.mddoc2,072 bytesdocs/EXAMPLES.mddoc2,243 bytesdocs/IMPROVEMENTS.mddoc3,913 bytesdocs/INTEGRATIONS.mddoc3,690 bytesdocs/PATTERNS.mddoc2,625 byteseslint.config.jsruns2,642 bytesmcp-server/format.jsruns1,425 bytesmcp-server/index.jsruns7,060 bytesmcp-server/package.jsonruns442 bytesopenai-gpt/instructions.mddoc5,080 bytespackage.jsonruns1,439 bytesreferences/ai-vocabulary.mddoc5,593 bytesreferences/patterns.mddoc10,268 bytesreferences/style-guide.mddoc4,013 bytesscripts/analyze.shruns301 bytesscripts/humanize.shruns315 bytessrc/analyzer.jsruns18,560 bytessrc/cli.jsruns39,679 bytessrc/humanizer.jsruns16,287 bytessrc/patterns.jsruns37,771 bytessrc/preprocess.jsruns2,703 bytessrc/stats.jsruns9,699 bytessrc/vocabulary.jsruns18,181 bytessrc/workflows.jsruns12,318 bytestests/analyzer.test.jsruns16,727 bytestests/calibration.test.jsruns7,414 bytestests/cli-scan-config.test.jsruns5,493 bytestests/edge-cases.test.jsruns7,311 bytestests/fixtures/ai-sample-1.txtdoc2,223 bytestests/fixtures/ai-sample-2.txtdoc1,161 bytestests/fixtures/human-sample-1.txtdoc1,092 bytestests/humanizer.test.jsruns7,454 bytestests/mcp-format.test.jsruns1,644 bytestests/performance.test.jsruns3,249 bytestests/preprocess.test.jsruns2,504 bytestests/statistics.test.jsruns8,093 bytestests/workflows.test.jsruns12,595 bytesvitest.config.jsruns152 bytes
Read SKILL.md
# Humanizer: remove AI writing patterns (v2.2)
You are a writing editor that identifies and removes signs of AI-generated text. Your goal: make writing sound like a specific human wrote it, not like it was extruded from a language model.
Based on [Wikipedia:Signs of AI writing](https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing), Copyleaks stylometric research, and real-world pattern analysis.
## Your task
When given text to humanize:
1. Scan for the 28 patterns below
2. Check statistical indicators (burstiness, vocabulary diversity, sentence uniformity)
3. Rewrite problematic sections with natural alternatives
4. Preserve the core meaningView the complete source on GitHubSkills included
- humanizer
Repository facts
- License
- MIT
- Created
- Feb 1, 2026
- Last pushed
- Aug 9, 2026
- Forks
- 19
- Open issues
- 0
- Project activity
- Slowing
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 6, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 1 note
SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- No dangerous shell commands
- 25 network referencesin 8 files: README.md:3 api-server/openapi.yaml:6 api-server/server.js:70 and 5 more
- No hidden or obfuscated text
- No instruction overrides
- 27 executable scriptsin 27 files: api-server/server.js:1 eslint.config.js:1 mcp-server/format.js:1 and 24 more
- 1 reference to secretsin 1 file: .gitignore:15
- No requests to vote in Hot
Show all 53 signals by file
.gitignore
- Access to secretsline 15
[Credential-related source omitted]
README.md
- Network accessline 3
 - Network accessline 4
 - Network accessline 5
 - Network accessline 9
An [OpenClaw](https://github.com/nichochar/openclaw) skill and standalone CLI tool that scans text for **30 AI writing patterns** using **500+ vocabulary terms** and **statistical text analysis** (burstiness, type-token ratio, readability m - Network accessline 11
Based on [Wikipedia:Signs of AI writing](https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing), [Copyleaks stylistic fingerprint research](https://arxiv.org/abs/2503.01659), and [blader/humanizer](https://github.com/blader/humanizer) - Network accessline 18
git clone https://github.com/brandonwise/humanizer.git - Network accessline 25
git clone https://github.com/brandonwise/humanizer.git
SKILL.md
- Network accessline 20
Based on [Wikipedia:Signs of AI writing](https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing), Copyleaks stylometric research, and real-world pattern analysis.
api-server/openapi.yaml
api-server/server.js
- Executable scriptline 1
#!/usr/bin/env node - Network accessline 70
const url = new URL(req.url, `http://${req.headers.host}`); - Network accessline 157
const server = http.createServer(handleRequest); server.listen(PORT, () => { console.log(`Humanizer API server running on http://localhost:${PORT}`); - Network accessline 158
server.listen(PORT, () => { console.log(`Humanizer API server running on http://localhost:${PORT}`); console.log('Endpoints:'); - Network accessline 159
console.log(`Humanizer API server running on http://localhost:${PORT}`);
docs/CONTRIBUTING.md
- Network accessline 8
git clone https://github.com/brandonwise/humanizer.git
docs/INTEGRATIONS.md
eslint.config.js
- Executable scriptline 1
Executable file
mcp-server/format.js
- Executable scriptline 1
Executable file
mcp-server/index.js
- Executable scriptline 1
#!/usr/bin/env node
mcp-server/package.json
- Executable scriptline 1
Executable file
package.json
scripts/analyze.sh
- Executable scriptline 1
#!/usr/bin/env bash
scripts/humanize.sh
- Executable scriptline 1
#!/usr/bin/env bash
src/analyzer.js
- Executable scriptline 1
Executable file
src/cli.js
- Executable scriptline 1
#!/usr/bin/env node
src/humanizer.js
- Executable scriptline 1
Executable file
src/patterns.js
- Executable scriptline 1
Executable file
src/preprocess.js
- Executable scriptline 1
Executable file
src/stats.js
- Executable scriptline 1
Executable file
src/vocabulary.js
- Executable scriptline 1
Executable file
src/workflows.js
- Executable scriptline 1
Executable file
tests/analyzer.test.js
- Executable scriptline 1
Executable file
tests/calibration.test.js
- Executable scriptline 1
Executable file
tests/cli-scan-config.test.js
- Executable scriptline 1
Executable file
tests/edge-cases.test.js
- Executable scriptline 1
Executable file - Network accessline 161
it('handles text with URLs', () => { const text = 'Check out https://example.com and http://test.org/path?query=1&foo=bar for more info.'; - Network accessline 162
const text = 'Check out https://example.com and http://test.org/path?query=1&foo=bar for more info.'; const result = analyze(text); - Network accessline 163
'Check out https://example.com and http://test.org/path?query=1&foo=bar for more info.';
tests/humanizer.test.js
- Executable scriptline 1
Executable file
tests/mcp-format.test.js
- Executable scriptline 1
Executable file
tests/performance.test.js
- Executable scriptline 1
Executable file
tests/preprocess.test.js
- Executable scriptline 1
Executable file
tests/statistics.test.js
- Executable scriptline 1
Executable file
tests/workflows.test.js
- Executable scriptline 1
Executable file
vitest.config.js
- Executable scriptline 1
Executable file
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Signal confidence: 48 facts
- Network access in prose of documentationREADME.md:3Low confidence
- Network access in prose of documentationREADME.md:4Low confidence
- Network access in prose of documentationREADME.md:5Low confidence
- Network access in prose of documentationREADME.md:9Low confidence
- Network access in prose of documentationREADME.md:11Low confidence
- Network access in code of documentationREADME.md:18Low confidence
- Network access in code of documentationREADME.md:25Low confidence
- Network access in prose of the SKILL.mdSKILL.md:20Low confidence
- Executable script in code of a file that runsapi-server/server.js:1High confidence
- Network access in code of a file that runsapi-server/server.js:70High confidence
- Network access in code of a file that runsapi-server/server.js:157High confidence
- Network access in code of a file that runsapi-server/server.js:158High confidence
- Network access in code of a file that runsapi-server/server.js:159High confidence
- Network access in code of documentationdocs/CONTRIBUTING.md:8Low confidence
- Network access in prose of documentationdocs/INTEGRATIONS.md:91Low confidence
- Network access in code of documentationdocs/INTEGRATIONS.md:131Low confidence
- Executable script in code of a file that runseslint.config.js:1High confidence
- Executable script in code of a file that runsmcp-server/format.js:1High confidence
- Executable script in code of a file that runsmcp-server/index.js:1High confidence
- Executable script in code of a file that runsmcp-server/package.json:1High confidence
- Executable script in code of a file that runspackage.json:1High confidence
- Network access in code of a file that runspackage.json:36High confidence
- Network access in code of a file that runspackage.json:37High confidence
- Network access in code of a file that runspackage.json:38High confidence
- Executable script in code of a file that runsscripts/analyze.sh:1High confidence
- Executable script in code of a file that runsscripts/humanize.sh:1High confidence
- Executable script in a comment of a file that runssrc/analyzer.js:1Low confidence
- Executable script in code of a file that runssrc/cli.js:1High confidence
- Executable script in a comment of a file that runssrc/humanizer.js:1Low confidence
- Executable script in a comment of a file that runssrc/patterns.js:1Low confidence
- Executable script in a comment of a file that runssrc/preprocess.js:1Low confidence
- Executable script in a comment of a file that runssrc/stats.js:1Low confidence
- Executable script in a comment of a file that runssrc/vocabulary.js:1Low confidence
- Executable script in a comment of a file that runssrc/workflows.js:1Low confidence
- Executable script in a comment of a testtests/analyzer.test.js:1Low confidence
- Executable script in a comment of a testtests/calibration.test.js:1Low confidence
- Executable script in code of a testtests/cli-scan-config.test.js:1Low confidence
- Executable script in a comment of a testtests/edge-cases.test.js:1Low confidence
- Network access in code of a testtests/edge-cases.test.js:161Low confidence
- Network access in code of a testtests/edge-cases.test.js:162Low confidence
- Network access in code of a testtests/edge-cases.test.js:163Low confidence
- Executable script in a comment of a testtests/humanizer.test.js:1Low confidence
- Executable script in code of a testtests/mcp-format.test.js:1Low confidence
- Executable script in a comment of a testtests/performance.test.js:1Low confidence
- Executable script in code of a testtests/preprocess.test.js:1Low confidence
- Executable script in a comment of a testtests/statistics.test.js:1Low confidence
- Executable script in a comment of a testtests/workflows.test.js:1Low confidence
- Executable script in code of a file that runsvitest.config.js:1High confidence
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Compatible | Standard SKILL.md SKILL.md | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.