Skill: wings229/ai-humanizer-local (version 1.0.0)

--- name: humanizer description: > Humanize AI-generated text by detecting and removing patterns typical of LLM output. Rewrites text to sound natural, specific, and human. Uses 24 pattern detectors, 500+ 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. --- # Humanizer: remove AI writing patterns 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 24 patterns below 2. Check statistical indicators (burstiness, vocabulary diversity, sentence uniformity) 3. Rewrite problematic sections with natural alternatives 4. Preserve the core meaning 5. Match the intended tone (formal, casual, technical) 6. Add actual personality — sterile text is just as obvious as slop ## Quick reference: the 24 patterns | # | Pattern | Category | What to watch for | |---|---------|----------|-------------------| | 1 | Significance inflation | Content | "marking a pivotal moment in the evolution of..." | | 2 | Notability name-dropping | Content | Listing media outlets without specific claims | | 3 | Superficial -ing analyses | Content | "...showcasing... reflecting... highlighting..." | | 4 | Promotional language | Content | "nestled", "breathtaking", "stunning", "renowned" | | 5 | Vague attributions | Content | "Experts believe", "Studies show", "Industry reports" | | 6 | Formulaic challenges | Content | "Despite challenges... continues to thrive" | | 7 | AI vocabulary (500+ words) | Language | "delve", "tapestry", "landscape", "showcase", "seamless" | | 8 | Copula avoidance | Language | "serves as", "boasts", "features" instead of "is", "has" | | 9 | Negative parallelisms | Language | "It's not just X, it's Y" | | 10 | Rule of three | Language | "innovation, inspiration, and insights" | | 11 | Synonym cycling | Language | "protagonist... main character... central figure..." | | 12 | False ranges | Language | "from the Big Bang to dark matter" | | 13 | Em dash overuse | Style | Too many — dashes — everywhere | | 14 | Boldface overuse | Style | **Mechanical** **emphasis** **everywhere** | | 15 | Inline-header lists | Style | "- **Topic:** Topic is discussed here" | | 16 | Title Case headings | Style | Every Main Word Capitalized In Headings | | 17 | Emoji overuse | Style | 🚀💡✅ decorating professional text | | 18 | Curly quotes | Style | "smart quotes" instead of "straight quotes" | | 19 | Chatbot artifacts | Communication | "I hope this helps!", "Let me know if..." | | 20 | Cutoff disclaimers | Communication | "As of my last training...", "While details are limited..." | | 21 | Sycophantic tone | Communication | "Great question!", "You're absolutely right!" | | 22 | Filler phrases | Filler | "In order to", "Due to the fact that", "At this point in time" | | 23 | Excessive hedging | Filler | "could potentially possibly", "might arguably perhaps" | | 24 | Generic conclusions | Filler | "The future looks bright", "Exciting times lie ahead" | ## Statistical signals Beyond pattern matching, check for these AI statistical tells: | Signal | Human | AI | Why | |--------|-------|----|----| | Burstiness | High (0.5-1.0) | Low (0.1-0.3) | Humans write in bursts; AI is metronomic | | Type-token ratio | 0.5-0.7 | 0.3-0.5 | AI reuses the same vocabulary | | Sentence length variation | High CoV | Low CoV | AI sentences are all roughly the same length | | Trigram repetition | Low (<0.05) | High (>0.10) | AI reuses 3-word phrases | ## Vocabulary tiers - **Tier 1 (Dead giveaways):** delve, tapestry, vibrant, crucial, comprehensive, meticulous, embark, robust, seamless, groundbreaking, leverage, synergy, transformative, paramount, multifaceted, myriad, cornerstone, reimagine, empower, catalyst, invaluable, bustling, nestled, realm - **Tier 2 (Suspicious in density):** furthermore, moreover, paradigm, holistic, utilize, facilitate, nuanced, illuminate, encompasses, catalyze, proactive, ubiquitous, quintessential - **Phrases:** "In today's digital age", "It is worth noting", "plays a crucial role", "serves as a testament", "in the realm of", "delve into", "harness the power of", "embark on a journey", "without further ado" ## Core principles ### Write like a human, not a press release - Use "is" and "has" freely — "serves as" is pretentious - One qualifier per claim — don't stack hedges - Name your sources or drop the claim - End with something specific, not "the future looks bright" ### Add personality - Have opinions. React to facts, don't just report them - Vary sentence rhythm. Short. Then longer ones that meander. - Acknowledge complexity and mixed feelings - Let some mess in — perfect structure feels algorithmic ### Cut the fat - "In order to" → "to" - "Due to the fact that" → "because" - "It is important to note that" → (just say it) - Remove chatbot filler: "I hope this helps!", "Great question!" ## Before/after example **Before (AI-sounding):** > Great question! Here is an overview of sustainable energy. Sustainable energy serves as an enduring testament to humanity's commitment to environmental stewardship, marking a pivotal moment in the evolution of global energy policy. In today's rapidly evolving landscape, these groundbreaking technologies are reshaping how nations approach energy production, underscoring their vital role in combating climate change. The future looks bright. I hope this helps! **After (human):** > Solar panel costs dropped 90% between 2010 and 2023, according to IRENA data. That single fact explains why adoption took off — it stopped being an ideological choice and became an economic one. Germany gets 46% of its electricity from renewables now. The transition is happening, but it's messy and uneven, and the storage problem is still mostly unsolved. ## Using the analyzer ```bash # Score text (0-100, higher = more AI-like) echo "Your text here" | node src/cli.js score # Full analysis report node src/cli.js analyze -f draft.md # Markdown report node src/cli.js report article.txt > report.md # Suggestions grouped by priority node src/cli.js suggest essay.txt # Statistical analysis only node src/cli.js stats essay.txt # Humanization suggestions with auto-fixes node src/cli.js humanize --autofix -f article.txt # JSON output for programmatic use node src/cli.js analyze --json < input.txt ``` ## Always-on mode For agents that should ALWAYS write like a human (not just when asked to humanize), add the core rules to your personality/system prompt. See the README's "Always-On Mode" section for copy-paste templates for OpenClaw (SOUL.md), Claude, and ChatGPT. The key rules to internalize: - Ban Tier 1 vocabulary (delve, tapestry, vibrant, crucial, robust, seamless, etc.) - Kill filler phrases ("In order to" → "to", "Due to the fact that" → "because") - No sycophancy, chatbot artifacts, or generic conclusions - Vary sentence length, have opinions, use concrete specifics - If you wouldn't say it in conversation, don't write it ## Process 1. Read the input text 2. Run pattern detection (24 patterns, 500+ vocabulary terms) 3. Compute text statistics (burstiness, TTR, readability) 4. Identify all issues and generate suggestions 5. Rewrite problematic sections 6. Verify the result sounds natural when read aloud 7. Present the humanized version with a brief change summary

path: README.md
content: # humanizer

![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)
![Tests](https://img.shields.io/badge/tests-128%20passing-brightgreen)
![Node >= 18](https://img.shields.io/badge/node-%3E%3D18-brightgreen)

Detect and remove signs of AI-generated writing. Makes text sound natural and human.

An [OpenClaw](https://github.com/nichochar/openclaw) skill and standalone CLI tool that scans text for **24 AI writing patterns** using **500+ vocabulary terms** and **statistical text analysis** (burstiness, type-token ratio, readability metrics) — then provides actionable suggestions to fix them.

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).

## Install

### As an OpenClaw skill

```bash
git clone https://github.com/brandonwise/humanizer.git
cp humanizer/SKILL.md ~/.config/openclaw/skills/humanizer.md
```

### As a standalone CLI tool

```bash
git clone https://github.com/brandonwise/humanizer.git
cd humanizer
npm install

# Score some text
echo "This serves as a testament to innovation." | node src/cli.js score

# Full analysis
node src/cli.js analyze -f your-draft.md

# Humanize with auto-fixes
node src/cli.js humanize --autofix -f article.txt
```

### Global install

```bash
npm install -g .
humanizer score < draft.txt
humanizer analyze -f essay.md
humanizer humanize --autofix < article.txt
```

## Architecture

The scoring engine combines three signal types:

```
┌─────────────────────────────────────────────────┐
│              Composite Score (0-100)             │
├────────────────────┬────────────────────────────┤
│   Pattern Score    │    Uniformity Score         │
│   (70% weight)     │    (30% weight)             │
├────────────────────┼────────────────────────────┤
│ • 24 pattern       │ • Burstiness (sentence     │
│   detectors        │   length variation)         │
│ • 500+ vocabulary  │ • Type-token ratio          │
│   terms (3 tiers)  │ • Trigram repetition        │
│ • Density scoring  │ • Sentence length CoV       │
│ • Category breadth │ • Paragraph uniformity      │
└────────────────────┴────────────────────────────┘
```

**Pattern score** uses density-based detection: weighted hits per 100 words on a logarithmic curve, plus bonuses for breadth (unique patterns) and category diversity.

**Uniformity score** uses statistical analysis: human text has high burstiness (varied sentence lengths), diverse vocabulary, and low n-gram repetition. AI text is mechanically uniform.

## Statistical analysis

The stats engine computes metrics that differentiate AI from human writing:

| Metric | Human Writing | AI Writing | Why It Matters |
|--------|--------------|------------|----------------|
| **Burstiness** | 0.5–1.0 | 0.1–0.3 | Humans write in bursts — short sentences, then long ones. AI is metronomic. |
| **Type-token ratio** | 0.5–0.7 | 0.3–0.5 | Humans use more varied vocabulary. AI cycles through the same words. |
| **Sentence CoV** | 0.4–0.8 | 0.15–0.35 | Coefficient of variation in sentence length. Low = robotic uniformity. |
| **Trigram repetition** | < 0.05 | > 0.10 | AI reuses the same 3-word phrases more often. |
| **Readability (FK)** | Varies | 8–12 | AI tends to write at a consistent grade level. Humans vary. |

## CLI reference

### Commands

```bash
# Quick score (0-100, higher = more AI-like)
echo "text" | humanizer score

# Full analysis with pattern matches
humanizer analyze essay.txt

# Full markdown report (pipe to file)
humanizer report article.txt > report.md

# Suggestions grouped by priority
humanizer suggest draft.md

# Statistical analysis only
humanizer stats essay.txt

# Humanization suggestions with guidance
humanizer humanize -f article.txt

# Apply safe auto-fixes
humanizer humanize --autofix -f article.txt
```

### Options

```bash
-f, --file <path>       Read text from file
--json                  Output as JSON
--verbose, -v           Show all matches
--autofix               Apply safe fixes (humanize only)
--patterns <ids>        Check specific pattern IDs (comma-separated)
--threshold <n>         Only show patterns with weight above n
--config <file>         Custom config file (JSON)
--help, -h              Show help
```

### Score badges

```
🟢 0-25    Mostly human-sounding
🟡 26-50   Lightly AI-touched
🟠 51-75   Moderately AI-influenced
🔴 76-100  Heavily AI-generated
```

## API (programmatic use)

```javascript
const { analyze, score } = require('humanizer');

// Quick score
const s = score('Your text here...');
console.log(s); // 0-100

// Full analysis
const result = analyze(text, {
  verbose: true,          // Show all matches
  patternsToCheck: [7, 19, 22], // Only specific patterns
  includeStats: true,     // Include statistical analysis
});

console.log(result.score);           // 0-100 composite
console.log(result.patternScore);    // Pattern-only score
console.log(result.uniformityScore); // Stats-based uniformity score
console.log(result.stats);           // { burstiness, typeTokenRatio, ... }
console.log(result.findings);        // Detailed pattern matches
console.log(result.categories);      // Per-category breakdown

// Humanize
const { humanize, autoFix } = require('humanizer/src/humanizer');

const suggestions = humanize(text, { autofix: true });
console.log(suggestions.critical);   // Dead giveaway issues
console.log(suggestions.important);  // Noticeable patterns
console.log(suggestions.guidance);   // Writing tips
console.log(suggestions.styleTips);  // Statistical style advice
console.log(suggestions.autofix.text); // Auto-fixed text

// Stats only
const { computeStats } = require('humanizer/src/stats');
const stats = computeStats(text);
console.log(stats.burstiness);       // Sentence variation
console.log(stats.typeTokenRatio);   // Vocabulary diversity
```

## The 24 patterns

| # | Pattern | Category | Weight | Example |
|---|---------|----------|--------|---------|
| 1 | Significance inflation | Content | 4 | "marking a pivotal moment in the evolution of..." |
| 2 | Notability name-dropping | Content | 3 | "featured in NYT, BBC, CNN, and Forbes" |
| 3 | Superficial -ing analyses | Content | 4 | "...showcasing... reflecting... highlighting..." |
| 4 | Promotional language | Content | 3 | "nestled", "breathtaking", "stunning" |
| 5 | Vague attributions | Content | 4 | "Experts believe", "Studies show" |
| 6 | Formulaic challenges | Content | 3 | "Despite challenges... continues to thrive" |
| 7 | AI vocabulary | Language | 5 | "Additionally", "delve", "tapestry" (500+ words) |
| 8 | Copula avoidance | Language | 3 | "serves as" instead of "is" |
| 9 | Negative parallelisms | Language | 3 | "It's not just X, it's Y" |
| 10 | Rule of three | Language | 2 | "innovation, inspiration, and insights" |
| 11 | Synonym cycling | Language | 2 | "protagonist... main character... central figure" |
| 12 | False ranges | Language | 2 | "from the Big Bang to dark matter" |
| 13 | Em dash overuse | Style | 2 | Too many — em dashes — in one — piece |
| 14 | Boldface overuse | Style | 2 | **Every** **other** **word** bolded |
| 15 | Inline-header lists | Style | 3 | "- **Topic:** Topic is..." |
| 16 | Title Case headings | Style | 1 | "## Every Word Capitalized Here" |
| 17 | Emoji overuse | Style | 2 | 🚀💡✅ in professional text |
| 18 | Curly quotes | Style | 1 | \u201Csmart quotes\u201D instead of "straight" |
| 19 | Chatbot artifacts | Comms | 5 | "I hope this helps!", "Let me know if..." |
| 20 | Cutoff disclaimers | Comms | 4 | "As of my last training update..." |
| 21 | Sycophantic tone | Comms | 4 | "Great question!", "You're absolutely right!" |
| 22 | Filler phrases | Filler | 3 | "In order to", "Due to the fact that" |
| 23 | Excessive hedging | Filler | 3 | "could potentially possibly" |
| 24 | Generic conclusions | Filler | 3 | "The future looks bright" |

## Vocabulary tiers

- **Tier 1** (Dead giveaways): 50+ words that appear 5-20x more in AI text. Always flagged. Examples: *delve, tapestry, vibrant, crucial, meticulous, seamless, groundbreaking*
- **Tier 2** (Suspicious in density): 80+ words flagged when 2+ appear. Examples: *furthermore, paradigm, holistic, utilize, facilitate, nuanced*
- **Tier 3** (Context-dependent): 60+ words flagged only at >3% density. Examples: *significant, effective, unique, compelling, exceptional*
- **Phrases**: 80+ multi-word patterns. Examples: *"In today's digital age"*, *"plays a crucial role"*, *"serves as a testament"*

## How scoring works

1. **Pattern detection** — Each of 24 detectors scans for regex matches. Matches are weighted 1-5.
2. **Density calculation** — Weighted matches per 100 words, on a logarithmic curve (prevents runaway scores).
3. **Breadth bonus** — More unique pattern types = higher score (up to +20).
4. **Category diversity** — Hits across content/language/style/communication/filler = higher score (up to +15).
5. **Statistical uniformity** — Low burstiness, low vocabulary diversity, high repetition add up to 100 uniformity points.
6. **Composite blend** — Pattern score (70%) + uniformity score (30%) = final score.

This transparent methodology means you can see exactly why text scored the way it did.

## What makes this different

| Feature | humanizer | GPTZero | Copyleaks | ZeroGPT |
|---------|-----------|---------|-----------|---------|
| Open source | ✅ | ❌ | ❌ | ❌ |
| Transparent scoring | ✅ Fully explainable | ❌ Black box | ❌ Black box | ❌ Black box |
| Actionable suggestions | ✅ Per-pattern guidance | ❌ Score only | ❌ Score only | ❌ Score only |
| Auto-fix | ✅ Safe mechanical fixes | ❌ | ❌ | ❌ |
| Statistical analysis | ✅ Burstiness, TTR, FK | ✅ Perplexity | ✅ Stylometric | ❌ |
| No API key needed | ✅ | ❌ | ❌ | ❌ |
| Works offline | ✅ | ❌ | ❌ | ❌ |
| Zero dependencies | ✅ | N/A | N/A | N/A |

## Before/after

**Before (AI score: 78):**
> Great question! Here is an overview of AI-assisted coding. AI-assisted coding serves as an enduring testament to the transformative potential of large language models, marking a pivotal moment in the evolution of software development. In today's rapidly evolving technological landscape, these groundbreaking tools are reshaping how engineers ideate, iterate, and deliver, underscoring their vital role in modern workflows. The future looks bright. I hope this helps!

**After (AI score: 4):**
> AI coding tools speed up boilerplate. In a 2024 Google study, developers using Codex finished simple functions 55% faster, but showed no improvement on debugging or architecture. I've used Copilot for a year. It's good at config files and test scaffolding. It's bad at knowing when it's wrong.

## Always-On Mode: Bake Into Your Agent's Personality

The skill works great on-demand, but the real power is making your AI **always** write like a human. Here's how to bake the humanizer principles into your agent's system prompt or personality file.

### For OpenClaw (SOUL.md)

Add this to your `SOUL.md` (or equivalent personality file):

```markdown
## Writing Like a Human (Anti-AI Patterns)

Your writing should be indistinguishable from a sharp, opinionated human.
These rules are always on — not just when asked to "humanize."

### Never Use These Words
Dead giveaways of AI output — ban them from your vocabulary:

**Words:** delve, tapestry, vibrant, crucial, comprehensive, meticulous, embark,
robust, seamless, groundbreaking, leverage, synergy, transformative, paramount,
multifaceted, myriad, cornerstone, reimagine, empower, catalyst, bolster,
spearhead, invaluable, bustling, nestled, realm, showcase, foster, garner,
interplay, enduring, pivotal, intricate, harness, unleash, revolutionize,
elucidate, encompass, holistic, utilize, facilitate, nuanced, paradigm, poised

**Phrases:** "In today's [anything]", "It is worth noting", "plays a crucial role",
"serves as a testament", "in the realm of", "delve into", "harness the power of",
"embark on a journey", "the landscape of", "without further ado"

**Filler to cut:** "In order to" → "to". "Due to the fact that" → "because".
"It is important to note that" → just say it.

### Kill These Patterns
1. No significance inflation — state facts, skip "pivotal moment" claims
2. No vague attributions — name the source or drop the claim
3. No -ing tails — "highlighting the importance of..." gets its own sentence
4. No copula avoidance — use "is" and "has", not "serves as" or "boasts"
5. No sycophancy — skip "Great question!" and just answer
6. No chatbot artifacts — no "I hope this helps" or "Let me know if..."
7. No generic conclusions — end with specifics, not "the future looks bright"

### Write With Human Texture
- Vary sentence length (short, then long, then short)
- Have opinions and take stances
- Use concrete specifics (numbers, names, dates)
- Allow imperfection (contractions, fragments, "And" or "But" starters)
- Use simple verbs ("is", "has", "does" are fine)
- Read it aloud — if you wouldn't say it, don't write it
```

### For Claude (system prompt)

Add to your system prompt or `CLAUDE.md`:

```
You write like a human, not an AI. Never use words like "delve", "tapestry",
"crucial", "comprehensive", "robust", "seamless", or "groundbreaking". Never
write "In today's...", "It is worth noting...", or "Great question!". Use "is"
not "serves as". Vary your sentence lengths. Have opinions. Use specific numbers
and names instead of vague claims. End with specifics, not "the future looks
bright". If you'd never say it in conversation, don't write it.
```

### For ChatGPT (Custom Instructions)

Paste into your Custom Instructions → "How would you like ChatGPT to respond?":

```
Write like a specific human, not a generic AI. Rules:
- Never use: delve, tapestry, vibrant, crucial, robust, seamless, groundbreaking,
  transformative, leverage, synergy, paramount, multifaceted, myriad
- Never start with "In today's..." or end with "the future looks bright"
- Never write "Great question!" or "I hope this helps!"
- Use "is" not "serves as". Use "to" not "in order to"
- Vary sentence length. Short. Then longer. Have opinions.
- Use real numbers and names, not "experts say" or "studies show"
```

### Verification

After baking in, test your agent by asking it to write about any topic. Then scan it:

```bash
echo "Your agent's response here" | node src/cli.js score
```

Target: consistently **under 25** on the humanizer score.

## Project structure

```
humanizer/
├── SKILL.md          # OpenClaw skill definition
├── src/
│   ├── patterns.js   # 24 pattern detectors + pattern registry
│   ├── vocabulary.js  # 500+ AI words/phrases (3 tiers)
│   ├── stats.js       # Statistical analysis engine
│   ├── analyzer.js    # Composite scoring engine
│   ├── humanizer.js   # Suggestion engine + auto-fix
│   └── cli.js         # CLI with colored output
├── tests/             # Vitest test suite (128 tests)
│   ├── analyzer.test.js
│   ├── humanizer.test.js
│   ├── statistics.test.js
│   ├── calibration.test.js
│   ├── performance.test.js
│   └── edge-cases.test.js
├── references/        # Pattern catalogs, vocabulary lists
└── docs/              # Detailed documentation
```

## Contributing

1. Fork and create a branch
2. Add/improve pattern detection (see `src/patterns.js`)
3. Write tests for your changes
4. Run `npm test` — all tests must pass
5. Open a PR

## License

[MIT](LICENSE)


path: USAGE-GUIDE.md
content: # AI Humanizer Skill 使用指南

**安装位置**: `~/.openclaw/workspace/skills/ai-humanizer/`  
**版本**: 2.1.0  
**来源**: ClawHub (高 Star Skill)

---

## 📋 功能概述

检测并移除 AI 写作痕迹，让文本更自然、更像人类书写。

**核心能力**:
- 24 种 AI 写作模式检测
- 500+ AI 词汇库（3 个等级）
- 统计文本分析（burstiness、词汇多样性、可读性）
- 提供修改建议或自动改写

---

## 🛠️ 使用方式

### 方式 1: CLI 命令行工具

```bash
cd /home/admin/.openclaw/workspace/skills/ai-humanizer

# 快速评分（0-100，越高越像 AI）
echo "你的文本" | node src/cli.js score

# 完整分析报告
node src/cli.js analyze -f draft.md

# 生成 Markdown 报告
node src/cli.js report article.txt > report.md

# 改写建议（按优先级分组）
node src/cli.js suggest essay.txt

# 自动改写（带修改建议）
node src/cli.js humanize --autofix -f article.txt

# 仅统计分析
node src/cli.js stats essay.txt

# JSON 输出（编程使用）
node src/cli.js analyze --json < input.txt
```

---

### 方式 2: 作为 OpenClaw Skill

SKILL.md 已自动加载到 OpenClaw 中。

**使用场景**:
- 写完文章后，让 AI 检查是否有 AI 味
- 修改 AI 生成的草稿
- 审查写作风格

**示例指令**:
```
帮我去掉这篇文章的 AI 味
检查这段文字是否有 AI 写作痕迹
让这段话听起来更像人写的
```

---

## 📊 24 种 AI 写作模式

| # | 模式 | 类别 | 示例 |
|---|------|------|------|
| 1 | 意义膨胀 | Content | "marking a pivotal moment in the evolution of..." |
| 2 | 媒体堆砌 | Content | 列出一堆媒体但没有具体说法 |
| 3 |  superficial -ing 分析 | Content | "...showcasing... reflecting... highlighting..." |
| 4 | 宣传语言 | Content | "nestled", "breathtaking", "stunning" |
| 5 | 模糊归因 | Content | "Experts believe", "Studies show" |
| 6 | 公式化挑战 | Content | "Despite challenges... continues to thrive" |
| 7 | AI 词汇 | Language | "delve", "tapestry", "landscape" |
| 8 | 避免系动词 | Language | "serves as" 代替 "is" |
| 9 | 否定平行句 | Language | "It's not just X, it's Y" |
| 10 | 三法则 | Language | "innovation, inspiration, and insights" |
| 11 | 同义词循环 | Language | "protagonist... main character... central figure..." |
| 12 | 虚假范围 | Language | "from the Big Bang to dark matter" |
| 13 | 破折号滥用 | Style | 太多 —— 破折号 —— 到处都是 |
| 14 | 粗体滥用 | Style | **机械的** **强调** **到处都是** |
| 15 | 内联标题列表 | Style | "- **主题:** 这里讨论主题" |
| 16 | 标题大小写 | Style | 每个主要单词都大写 |
| 17 | 表情符号滥用 | Style | 🚀💡✅ 装饰专业文本 |
| 18 | 弯引号 | Style | "智能引号" 代替 "直引号" |
| 19 | 聊天机器人痕迹 | Communication | "I hope this!", "Let me know if..." |
| 20 | 截断免责声明 | Communication | "As of my last training..." |
| 21 | 奉承语气 | Communication | "Great question!", "You're absolutely right!" |
| 22 | 填充短语 | Filler | "In order to", "Due to the fact that" |
| 23 | 过度谨慎 | Filler | "could potentially possibly" |
| 24 | 通用结论 | Filler | "The future looks bright" |

---

## 🚫 AI 词汇库

### Tier 1（明显 AI 词）
delve, tapestry, vibrant, crucial, comprehensive, meticulous, embark, robust, seamless, groundbreaking, leverage, synergy, transformative, paramount, multifaceted, myriad, cornerstone, reimagine, empower, catalyst, invaluable, bustling, nestled, realm

### Tier 2（可疑词汇）
furthermore, moreover, paradigm, holistic, utilize, facilitate, nuanced, illuminate, encompasses, catalyze, proactive, ubiquitous, quintessential

### AI 短语
- "In today's digital age"
- "It is worth noting"
- "plays a crucial role"
- "serves as a testament"
- "in the realm of"
- "delve into"
- "harness the power of"
- "embark on a journey"
- "without further ado"

---

## 📈 统计指标

| 指标 | 人类写作 | AI 写作 | 说明 |
|------|---------|--------|------|
| Burstiness | 0.5-1.0 | 0.1-0.3 | 人类写作有起伏；AI 是机械的 |
| 类符比 | 0.5-0.7 | 0.3-0.5 | AI 重复使用相同词汇 |
| 句长变化 | 高 CoV | 低 CoV | AI 句子长度几乎相同 |
| 三词组重复 | <0.05 | >0.10 | AI 重复使用 3 词短语 |

---

## ✅ 核心原则

### 像人一样写作，不要像新闻稿
- 自由使用"is"和"has"——"serves as"很做作
- 每个主张一个限定词——不要堆砌
- 说出具体来源或删除主张
- 以具体内容结束，不要"未来很光明"

### 增加个性
- 有观点。对事实做出反应，不要只是报告
- 变化句子节奏。短句。然后是长句。
- 承认复杂性和混合情感
- 让一些混乱进来——完美的结构感觉像算法

### 删掉废话
- "In order to" → "to"
- "Due to the fact that" → "because"
- "It is important to note that" → (直接说)
- 删除聊天机器人填充语："I hope this helps!", "Great question!"

---

## 📝 示例

### Before (AI 味重)
> Great question! Here is an overview of sustainable energy. Sustainable energy serves as an enduring testament to humanity's commitment to environmental stewardship, marking a pivotal moment in the evolution of global energy policy. In today's rapidly evolving landscape, these groundbreaking technologies are reshaping how nations approach energy production, underscoring their vital role in combating climate change. The future looks bright. I hope this helps!

### After (人类写作)
> Solar panel costs dropped 90% between 2010 and 2023, according to IRENA data. That single fact explains why adoption took off — it stopped being an ideological choice and became an economic one. Germany gets 46% of its electricity from renewables now. The transition is happening, but it's messy and uneven, and the storage problem is still mostly unsolved.

---

## 🔧 集成到工作流

### 写作后检查
```bash
# 写完文章后检查 AI 分数
node src/cli.js score < article.md

# 如果分数>50，运行改写建议
node src/cli.js suggest article.md
```

### Always-On 模式
将核心规则添加到 AGENTS.md 或 SOUL.md：
- 禁止 Tier 1 词汇
- 删除填充短语
- 不要奉承、聊天机器人痕迹、通用结论
- 变化句子长度，有观点，用具体细节
- 如果不会在对话中说，就不要写

---

*使用指南 v1.0 | 2026-04-01 | 基于 ai-humanizer-2.1.0*


path: _meta.json
content: ownerId: kn7bwyhgbjvz45c09m37dnyby580b7g3
slug: ai-humanizer
version: 2.1.0
publishedAt: 1769992797458

path: assets/banner.md
content: ```
 _                                _
| |__  _   _ _ __ ___   __ _ _ __ (_)_______ _ __
| '_ \| | | | '_ ` _ \ / _` | '_ \| |_  / _ \ '__|
| | | | |_| | | | | | | (_| | | | | |/ /  __/ |
|_| |_|\__,_|_| |_| |_|\__,_|_| |_|_/___\___|_|

  Detect and remove AI writing patterns.
  24 patterns. 5 categories. Zero dependencies.
```


path: docs/CONTRIBUTING.md
content: # Contributing to humanizer

Thanks for your interest in improving AI writing detection.

## Getting started

```bash
git clone https://github.com/brandonwise/humanizer.git
cd humanizer
npm install
npm test
```

## What to work on

- **New patterns** — Found an AI writing pattern not covered? Add it
- **Better detection** — Improve regex accuracy, reduce false positives
- **More vocabulary** — Expand the AI word/phrase lists
- **Test cases** — Add fixtures that expose detection gaps
- **Documentation** — Improve examples, add before/after pairs

## Adding a new pattern

1. Add the pattern definition to `src/patterns.js` (see `docs/PATTERNS.md` for the format)
2. Write tests in `tests/analyzer.test.js`
3. Add documentation to `references/patterns.md`
4. Run `npm test` — everything must pass

## Improving detection

The main source of false positives is overly broad regex. When tightening patterns:

- Add word boundary markers (`\b`)
- Use context-aware matching (surrounding words matter)
- Test against both AI samples and human samples
- Check that human text doesn't get flagged unfairly

## Code style

- Pure Node.js, no external runtime dependencies
- CommonJS modules (`require`/`module.exports`)
- No build step — the code runs directly
- Comments explain *why*, not *what*
- Functions are small and single-purpose

## Tests

- All tests use vitest
- Run with `npm test`
- Test each pattern detector individually
- Include both positive matches (should detect) and negative cases (should not detect)
- Test fixtures go in `tests/fixtures/`

## Pull request process

1. Fork the repo and create a branch (`git checkout -b add-pattern-25`)
2. Make your changes
3. Run `npm test` — all tests must pass
4. Open a PR with a clear description of what changed and why
5. Include before/after examples for any new patterns

## Reporting issues

Found a false positive? A missed pattern? Open an issue with:

- The text that was incorrectly flagged (or missed)
- Which pattern is involved
- What you expected to happen
- What actually happened


path: docs/EXAMPLES.md
content: # Real-world before/after examples

## Example 1: Tech product description

**Before (score: 72):**
> Great question! Here is a comprehensive overview of our groundbreaking platform.
>
> Our platform serves as a testament to the transformative power of AI, marking a pivotal moment in the evolution of enterprise software. In today's rapidly evolving landscape, businesses need cutting-edge solutions that streamline operations, enhance productivity, and foster collaboration.
>
> The platform boasts a robust suite of tools, showcasing our commitment to innovation. Additionally, the seamless integration capabilities highlight the intricate interplay between modern workflows and AI-driven automation, ensuring organizations can harness the full potential of their data.
>
> Industry experts believe our platform plays a crucial role in digital transformation. The future looks bright as exciting times lie ahead. I hope this helps! Let me know if you'd like more details.

**After (score: 2):**
> The platform connects to Salesforce, Slack, and Jira through pre-built integrations. Setup takes about 20 minutes.
>
> We added AI-powered search in March. It finds relevant documents across connected apps. In our beta with 50 companies, users said they spent 30% less time looking for files. That number came from self-reported surveys, so take it with some salt.
>
> The pricing starts at $15/user/month. There's a free tier for teams under 5.

**Patterns removed:** Chatbot artifacts (19), significance inflation (1), promotional language (4), AI vocabulary (7), copula avoidance (8), -ing analyses (3), vague attributions (5), filler phrases (22), generic conclusions (24)

---

## Example 2: City description

**Before (score: 65):**
> Nestled within the breathtaking Pacific Northwest, Portland stands as a vibrant city with a rich cultural heritage and stunning natural beauty. The city boasts a thriving arts scene, showcasing local talent and fostering community engagement.
>
> Portland's culinary landscape is equally impressive, featuring a diverse array of restaurants. Experts believe the city plays a crucial role in the regional economy, with industry reports suggesting continued growth. Despite its challenges, Portland continues to thrive.

**After (score: 6):**
> Portland has about 650,000 people and sits on the Willamette River, 60 miles from the Pacific coast. It rains a lot — around 155 days a year — which partly explains why there are so many coffee shops and bookstores.
>
> The food cart scene is the main draw for visitors. There are over 500 licensed food carts, more per capita than any other US city. The tech sector grew after Intel and Nike established headquarters nearby in the 1990s.

**Patterns removed:** Promotional language (4), copula avoidance (8), -ing analyses (3), AI vocabulary (7), vague attributions (5), formulaic challenges (6)

---

## Example 3: Email draft

**Before (score: 58):**
> Dear Team,
>
> I hope this email finds you well! I wanted to take a moment to delve into our Q3 results, which serve as a testament to our team's enduring commitment to excellence.
>
> It's not just about the numbers; it's about the journey. Our performance showcases the intricate interplay between strategy and execution, highlighting our ability to navigate challenges while fostering innovation, collaboration, and growth.
>
> In order to continue this momentum, it is important to note that we need to align our efforts with the evolving landscape. The future looks bright!
>
> Let me know if you have any questions. I hope this helps!

**After (score: 3):**
> Hi team,
>
> Q3 results are in. Revenue hit $2.4M, up 12% from Q2. The Harris account drove most of that — they expanded their contract in August.
>
> Two things to watch for Q4: the enterprise pipeline is thinner than I'd like, and we still haven't backfilled the two sales roles. I'd like to have candidates by mid-October.
>
> Full deck is attached. Let's discuss at Thursday's standup.

**Patterns removed:** Chatbot artifacts (19), AI vocabulary (7), significance inflation (1), copula avoidance (8), -ing analyses (3), negative parallelisms (9), filler phrases (22), generic conclusions (24)

---

## Example 4: Blog post intro

**Before (score: 45):**
> In today's rapidly evolving world of artificial intelligence, the landscape of machine learning continues to transform at an unprecedented pace. This groundbreaking technology has garnered significant attention from industry leaders and researchers alike, showcasing its potential to revolutionize various sectors.
>
> Furthermore, the multifaceted nature of deep learning encompasses a myriad of applications, from natural language processing to computer vision, highlighting the comprehensive scope of this transformative paradigm.

**After (score: 0):**
> Machine learning models got noticeably better in 2024. GPT-4o handles images and audio. Claude writes code that usually works on the first try. Stable Diffusion 3 makes hands that look right.
>
> The practical question isn't whether the technology works — it's whether it works well enough for your specific use case, and at what cost. A fine-tuned model for classifying support tickets costs a few hundred dollars and saves real time. A custom LLM to replace your writing staff probably doesn't.

**Patterns removed:** Filler (22), AI vocabulary (7), promotional language (4), -ing analyses (3), false ranges (12)


path: docs/PATTERNS.md
content: # Pattern documentation

Detailed technical documentation for all 24 AI writing patterns detected by humanizer.

## How detection works

Each pattern has a `detect(text)` function that returns an array of matches. Detection uses:

- **Regex matching** for vocabulary words, phrases, and structural patterns
- **Density analysis** for patterns that depend on frequency (em dashes, AI vocab)
- **Heuristic checks** for structural patterns (synonym cycling, rule of three)

## Pattern weights

Patterns are weighted 1-5 based on how strongly they signal AI-generated text:

| Weight | Meaning | Patterns |
|--------|---------|----------|
| 5 | Dead giveaway | AI vocabulary (7), Chatbot artifacts (19) |
| 4 | Strong signal | Significance inflation (1), -ing analyses (3), Vague attributions (5), Cutoff disclaimers (20), Sycophantic tone (21) |
| 3 | Moderate signal | Notability (2), Promotional language (4), Formulaic challenges (6), Copula avoidance (8), Negative parallelisms (9), Inline-header lists (15), Filler phrases (22), Hedging (23), Generic conclusions (24) |
| 2 | Weak signal | Rule of three (10), Synonym cycling (11), False ranges (12), Em dash overuse (13), Boldface overuse (14), Emoji overuse (17) |
| 1 | Minor tell | Title Case headings (16), Curly quotes (18) |

## Scoring algorithm

The AI score (0-100) combines three components:

1. **Density score** (up to 65 points): Weighted matches per 100 words, on a logarithmic scale
2. **Breadth bonus** (up to 20 points): 2 points per unique pattern type detected
3. **Category bonus** (up to 15 points): 3 points per category with hits

The logarithmic curve prevents long texts from getting inflated scores just by having more words to match against.

## Adding new patterns

To add a new pattern to `src/patterns.js`:

1. Define the pattern object with `id`, `name`, `category`, `description`, `weight`, and `detect(text)` function
2. The detect function must return `{ match, index, line, column, suggestion }`
3. Use the `findMatches()` helper for regex-based detection
4. Add tests in `tests/analyzer.test.js`
5. Document in `references/patterns.md`

Example:

```javascript
{
  id: 25,
  name: 'New pattern name',
  category: 'content', // or language, style, communication, filler
  description: 'What this pattern is and why it matters.',
  weight: 3,
  detect(text) {
    const regex = /your-pattern-here/gi;
    return findMatches(text, regex, 'Suggestion for fixing this pattern.');
  },
}
```


path: eslint.config.js
content: const js = require('@eslint/js');
const {
  baseRules,
  testRules,
  nodeGlobals,
  testGlobals,
  ignores,
} = require('../_config/eslint.base.js');

module.exports = [
  js.configs.recommended,
  {
    files: ['src/**/*.js'],
    languageOptions: {
      ecmaVersion: 2022,
      sourceType: 'commonjs',
      globals: nodeGlobals,
    },
    rules: baseRules,
  },
  {
    files: ['tests/**/*.js'],
    languageOptions: {
      ecmaVersion: 2022,
      sourceType: 'module',
      globals: testGlobals,
    },
    rules: testRules,
  },
  { ignores },
];


path: package.json
content: {
  "name": "humanizer",
  "version": "2.1.0",
  "description": "OpenClaw AI Humanizer - detect and remove AI writing patterns. Scans text for 24 common signs of AI-generated writing with statistical analysis (burstiness, TTR, readability) and provides actionable suggestions to make it sound natural and human.",
  "main": "src/analyzer.js",
  "bin": {
    "humanizer": "src/cli.js"
  },
  "scripts": {
    "start": "node src/cli.js",
    "test": "vitest run",
    "test:watch": "vitest",
    "lint": "eslint src/ tests/",
    "lint:fix": "eslint src/ tests/ --fix",
    "format": "prettier --write 'src/**/*.js' 'tests/**/*.js'",
    "format:check": "prettier --check 'src/**/*.js' 'tests/**/*.js'",
    "check": "npm run lint && npm run format:check && npm test",
    "build": "echo 'No build step needed — pure Node.js'"
  },
  "keywords": [
    "ai",
    "writing",
    "humanize",
    "llm",
    "detection",
    "text-analysis",
    "openclaw",
    "skill",
    "burstiness",
    "type-token-ratio",
    "flesch-kincaid",
    "ai-detection"
  ],
  "author": "Brandon Wise",
  "license": "MIT",
  "repository": {
    "type": "git",
    "url": "https://github.com/brandonwise/humanizer"
  },
  "devDependencies": {
    "@eslint/js": "^9.39.2",
    "eslint": "^9.0.0",
    "prettier": "^3.0.0",
    "vitest": "^3.0.0"
  },
  "engines": {
    "node": ">=18.0.0"
  }
}


path: references/ai-vocabulary.md
content: # AI vocabulary — words and phrases to avoid

Words and phrases that appear far more frequently in AI-generated text than in human writing. Organized by frequency and category.

## High-frequency AI words

These are the strongest signals. They appear in AI text at rates 5-20x higher than pre-2023 writing.

| Word | Why it's a signal | Better alternative |
|------|-------------------|-------------------|
| additionally | Overused transitional word | also, and, (just start the sentence) |
| delve | Almost never used in casual writing | explore, dig into, look at |
| tapestry (abstract) | "rich tapestry of culture" — meaningless | (describe what you actually mean) |
| testament | "a testament to X" — inflated significance | (remove, state the fact directly) |
| underscore | "underscores the importance of" | shows, makes clear, proves |
| pivotal | "pivotal moment/role" — everything is pivotal | important, key, (often removable) |
| landscape (abstract) | "the evolving landscape of" | field, area, industry, (be specific) |
| intricate/intricacies | Fake-depth modifier | complex, detailed, tricky |
| showcasing/showcase | "showcasing innovation" | showing, displaying, demonstrating |
| fostering/foster | "fostering collaboration" | encouraging, building, supporting |
| garner/garnered | "garnered attention" | got, received, attracted |
| interplay | "the interplay between X and Y" | relationship, tension, connection |
| enduring | "enduring legacy" — inflated | lasting, ongoing |
| vibrant | "vibrant community/culture" — generic | (describe what makes it vibrant) |
| crucial | "plays a crucial role" | important, key, essential |
| enhance/enhanced | "enhanced the experience" | improved, strengthened, helped |

## Medium-frequency AI words

Less individually damning, but suspicious when several appear together.

| Word | Better alternative |
|------|-------------------|
| furthermore, moreover | and, also |
| notably | (usually removable) |
| comprehensive | thorough, complete, full |
| multifaceted | complex, varied |
| nuanced | subtle, complicated |
| paradigm | model, approach, framework |
| transformative | (be specific about the change) |
| leveraging/leverage | using |
| synergy | cooperation, combined effect |
| holistic | complete, full, whole |
| robust | strong, solid, thorough |
| streamline/streamlined | simplify, speed up |
| utilize/utilizing | use |
| facilitate/facilitated | help, enable, make possible |
| elucidate/illuminate | explain, clarify |
| encompassing | including, covering |
| spearhead/spearheading | lead, drive |
| invaluable | valuable, essential |
| groundbreaking | new, novel, first |
| cutting-edge | new, latest, modern |
| bolster/bolstering | support, strengthen |
| catalyze/catalyst | trigger, cause, start |
| cornerstone | foundation, basis |
| reimagine/reimagining | rethink, redesign |
| empower/empowering | enable, help, give power to |
| harness/harnessing | use, take advantage of |
| navigate/navigating | handle, deal with, work through |
| realm | field, area, domain |
| poised | ready, set, positioned |
| myriad | many, numerous, lots of |

## Promotional phrases

These read like tourism brochures or press releases.

- "nestled in/within"
- "in the heart of"
- "breathtaking"
- "must-visit"
- "stunning"
- "renowned"
- "world-class"
- "state-of-the-art"
- "seamless"
- "game-changing"
- "unparalleled"
- "rich cultural heritage"
- "natural beauty"
- "commitment to excellence"

## Significance phrases

Claims of importance that add nothing.

- "marking a pivotal moment"
- "is a testament to"
- "serves as a reminder"
- "underscores the importance"
- "reflects broader trends"
- "setting the stage for"
- "key turning point"
- "evolving landscape"
- "indelible mark"
- "shaping the future of"
- "the evolution of"

## Filler phrases

Wordy constructions with simpler alternatives.

| Filler | Replacement |
|--------|-------------|
| in order to | to |
| due to the fact that | because |
| at this point in time | now |
| in the event that | if |
| has the ability to | can |
| it is important to note that | (remove) |
| it is worth noting that | (remove) |
| it should be noted that | (remove) |
| in today's rapidly evolving | (remove or be specific) |
| at the end of the day | (remove) |
| when it comes to | for |
| the fact of the matter is | (remove) |
| in terms of | for, about |
| for the purpose of | to, for |
| in light of the fact that | because, since |
| in the realm of | in |
| at its core | (remove or be specific) |
| first and foremost | first |
| last but not least | finally |

## Chatbot phrases

Leftover conversational filler from AI chat interactions.

- "I hope this helps!"
- "Let me know if you'd like..."
- "Would you like me to..."
- "Feel free to..."
- "Don't hesitate to..."
- "Happy to help!"
- "Here is an overview/summary/breakdown"
- "Of course!"
- "Certainly!"
- "Absolutely!"
- "I'd be happy to..."
- "Is there anything else..."
- "Great question!"
- "Excellent point!"
- "You're absolutely right!"

## Hedging stacks

Multiple qualifiers where one (or zero) would do.

- "could potentially"
- "might possibly"
- "could possibly"
- "perhaps potentially"
- "may potentially"
- "it could be argued"
- "one could argue"
- "it is possible that"

## Generic conclusion phrases

Vague upbeat endings.

- "the future looks bright"
- "exciting times lie ahead"
- "continue this journey"
- "journey toward excellence"
- "step in the right direction"
- "only time will tell"
- "the possibilities are endless"
- "poised for growth"
- "watch this space"


path: references/patterns.md
content: # AI writing patterns — full catalog

Comprehensive reference for all 24 AI writing patterns detected by humanizer. Each entry includes the pattern description, detection signals, and before/after examples.

## Content patterns (1-6)

### 1. Significance inflation

LLMs puff up the importance of mundane things with claims about legacy, evolution, and broader trends.

**Signals:** "pivotal moment", "testament to", "vital/crucial/significant role", "evolving landscape", "setting the stage for", "indelible mark", "deeply rooted", "shaping the future"

**Before:**
> The Statistical Institute of Catalonia was officially established in 1989, marking a pivotal moment in the evolution of regional statistics in Spain.

**After:**
> The Statistical Institute of Catalonia was established in 1989 to collect and publish regional statistics independently from Spain's national statistics office.

---

### 2. Notability name-dropping

LLMs list media outlets and sources to claim notability without providing specific claims or context.

**Signals:** Comma-separated lists of publications, "active social media presence", "written by a leading expert"

**Before:**
> Her views have been cited in The New York Times, BBC, Financial Times, and The Hindu. She maintains an active social media presence with over 500,000 followers.

**After:**
> In a 2024 New York Times interview, she argued that AI regulation should focus on outcomes rather than methods.

---

### 3. Superficial -ing analyses

AI tacks present participle phrases onto sentences to fake analytical depth.

**Signals:** Trailing clauses starting with: highlighting, underscoring, emphasizing, ensuring, reflecting, symbolizing, contributing to, cultivating, fostering, encompassing, showcasing

**Before:**
> The temple's color palette resonates with the region's natural beauty, symbolizing Texas bluebonnets, reflecting the community's deep connection to the land.

**After:**
> The temple uses blue, green, and gold. The architect said these reference local bluebonnets and the Gulf coast.

---

### 4. Promotional language

Tourism-brochure language that sounds like ad copy rather than neutral description.

**Signals:** "nestled", "breathtaking", "stunning", "renowned", "groundbreaking", "must-visit", "in the heart of", "rich cultural heritage", "world-class", "unparalleled"

**Before:**
> Nestled within the breathtaking region of Gonder, this vibrant town boasts a rich cultural heritage and stunning natural beauty.

**After:**
> Alamata Raya Kobo is a town in the Gonder region of Ethiopia, known for its weekly market and 18th-century church.

---

### 5. Vague attributions

Attributing claims to unnamed experts, studies, or reports instead of specific sources.

**Signals:** "Experts believe", "Industry reports suggest", "Studies show", "Observers have noted", "widely regarded"

**Before:**
> Experts believe it plays a crucial role in the regional ecosystem.

**After:**
> The river supports several endemic fish species, according to a 2019 survey by the Chinese Academy of Sciences.

---

### 6. Formulaic challenges

Boilerplate "despite challenges" sections that follow a predictable template.

**Signals:** "Despite its challenges", "continues to thrive", "future outlook remains", "challenges typical of"

**Before:**
> Despite its industrial prosperity, the area faces challenges typical of urban areas. Despite these challenges, it continues to thrive.

**After:**
> Traffic congestion increased after 2015 when three new IT parks opened. A stormwater drainage project began in 2022 to address recurring floods.

---

## Language patterns (7-12)

### 7. AI vocabulary

Words that appear far more frequently in AI-generated text than human writing.

**High-frequency words:** additionally, delve, tapestry, testament, underscore, pivotal, landscape (abstract), intricate/intricacies, showcasing, fostering, garner, interplay, enduring, vibrant, crucial, enhance

**Medium-frequency words:** furthermore, moreover, notably, comprehensive, multifaceted, nuanced, paradigm, transformative, leveraging, synergy, holistic, robust, streamline, utilize, facilitate, elucidate, encompassing, cornerstone, reimagine, empower, harness, navigate, realm, poised, myriad

**Before:**
> Additionally, a testament to Italian colonial influence is the widespread adoption of pasta in the local culinary landscape, showcasing integration into the traditional diet.

**After:**
> Pasta dishes, introduced during Italian colonization, remain common, especially in the south.

---

### 8. Copula avoidance

Using elaborate constructions where simple "is" or "has" works better.

**Signals:** "serves as", "stands as", "functions as", "boasts", "features" (as replacement for "has")

**Before:**
> Gallery 825 serves as LAAA's exhibition space. The gallery features four spaces and boasts over 3,000 square feet.

**After:**
> Gallery 825 is LAAA's exhibition space. The gallery has four rooms totaling 3,000 square feet.

---

### 9. Negative parallelisms

"Not just X, it's Y" and "Not only X but also Y" — overused rhetorical frame.

**Before:**
> It's not just about the beat; it's part of the aggression. It's not merely a song, it's a statement.

**After:**
> The heavy beat adds to the aggressive tone.

---

### 10. Rule of three

Forcing ideas into groups of three to sound comprehensive.

**Before:**
> Attendees can expect innovation, inspiration, and industry insights.

**After:**
> The event includes talks, panels, and informal networking.

---

### 11. Synonym cycling

Referring to the same thing by different names in consecutive sentences.

**Before:**
> The protagonist faces many challenges. The main character must overcome obstacles. The central figure eventually triumphs. The hero returns home.

**After:**
> The protagonist faces many challenges but eventually triumphs and returns home.

---

### 12. False ranges

"From X to Y" where X and Y aren't on a meaningful scale.

**Before:**
> Our journey has taken us from the singularity of the Big Bang to the grand cosmic web, from the birth of stars to the dance of dark matter.

**After:**
> The book covers the Big Bang, star formation, and current theories about dark matter.

---

## Style patterns (13-18)

### 13. Em dash overuse

LLMs use em dashes more than humans, mimicking punchy sales writing.

**Before:**
> The term is promoted by Dutch institutions — not by the people themselves. You don't say "Netherlands, Europe" — yet this continues — even in official documents.

**After:**
> The term is promoted by Dutch institutions, not by the people. This mislabeling continues in official documents.

---

### 14. Boldface overuse

Mechanical emphasis of phrases in bold throughout the text.

**Before:**
> It blends **OKRs**, **KPIs**, and tools like the **Business Model Canvas** and **Balanced Scorecard**.

**After:**
> It blends OKRs, KPIs, and tools like the Business Model Canvas and Balanced Scorecard.

---

### 15. Inline-header lists

List items starting with bolded headers and colons, often repeating the header word.

**Before:**
> - **User Experience:** The user experience has been improved.
> - **Performance:** Performance has been enhanced.
> - **Security:** Security has been strengthened.

**After:**
> The update improves the interface, speeds up load times, and adds end-to-end encryption.

---

### 16. Title Case headings

Capitalizing every main word in headings.

**Before:**
> ## Strategic Negotiations And Global Partnerships

**After:**
> ## Strategic negotiations and global partnerships

---

### 17. Emoji overuse

Decorating headings or bullet points with emojis in professional text.

**Before:**
> 🚀 **Launch Phase:** The product launches in Q3
> 💡 **Key Insight:** Users prefer simplicity

**After:**
> The product launches in Q3. User research showed a preference for simplicity.

---

### 18. Curly quotes

ChatGPT uses Unicode curly quotes instead of straight quotes.

**Before:**
> He said \u201Cthe project is on track\u201D

**After:**
> He said "the project is on track"

---

## Communication patterns (19-21)

### 19. Chatbot artifacts

Leftover phrases from chatbot conversations pasted into content.

**Signals:** "I hope this helps!", "Let me know if...", "Here is an overview", "Of course!", "Certainly!", "I'd be happy to"

**Before:**
> Here is an overview of the French Revolution. I hope this helps! Let me know if you'd like me to expand.

**After:**
> The French Revolution began in 1789 when financial crisis and food shortages led to widespread unrest.

---

### 20. Cutoff disclaimers

AI knowledge-cutoff disclaimers left in text.

**Signals:** "As of my last training", "While specific details are limited", "Based on available information"

**Before:**
> While specific details are not extensively documented, it appears to have been established in the 1990s.

**After:**
> The company was founded in 1994, according to its registration documents.

---

### 21. Sycophantic tone

Overly positive, people-pleasing language.

**Before:**
> Great question! You're absolutely right! That's an excellent point!

**After:**
> The economic factors you mentioned are relevant here.

---

## Filler and hedging (22-24)

### 22. Filler phrases

Wordy phrases that can be shortened.

| Filler | Replacement |
|--------|-------------|
| In order to | to |
| Due to the fact that | because |
| At this point in time | now |
| In the event that | if |
| Has the ability to | can |
| It is important to note that | (remove) |
| When it comes to | for |
| For the purpose of | to |
| First and foremost | first |

---

### 23. Excessive hedging

Stacking qualifiers instead of committing to a claim.

**Before:**
> It could potentially possibly be argued that the policy might have some effect.

**After:**
> The policy may affect outcomes.

---

### 24. Generic conclusions

Vague upbeat endings that say nothing.

**Signals:** "The future looks bright", "Exciting times lie ahead", "journey toward excellence", "poised for growth", "the possibilities are endless"

**Before:**
> The future looks bright. Exciting times lie ahead as they continue their journey toward excellence.

**After:**
> The company plans to open two more locations next year.


path: references/style-guide.md
content: # Style guide — how to write like a human

Removing AI patterns is half the job. The other half is writing with personality. Sterile, voiceless text is just as obvious as slop.

## The human test

Read your text aloud. If it sounds like a press release, a Wikipedia article, or a customer service chatbot, it needs work. Good writing sounds like a specific person thinking on paper.

## Have opinions

Don't just report facts — react to them.

**Soulless:** The experiment produced interesting results. Some developers were impressed while others were skeptical.

**Human:** I genuinely don't know how to feel about this one. Half the dev community is losing their minds, half are explaining why it doesn't count.

## Vary your rhythm

Short punchy sentences. Then longer ones that take their time getting where they're going, maybe with a clause or two along the way. Mix it up.

**Monotone:** The tool works well. It processes data quickly. Users report satisfaction. The interface is clean.

**Varied:** The tool works well. It's fast — embarrassingly fast, actually, compared to the manual process we'd been limping along with for years. Users seem happy with it, though I suspect half of them haven't tried the advanced features yet.

## Acknowledge complexity

Real humans have mixed feelings. "This is impressive but also kind of unsettling" is more honest than either pure praise or pure criticism.

**AI-flat:** This is an innovative solution that addresses key challenges.

**Human:** It's clever, but it makes me nervous. The failure modes aren't well understood.

## Use first person when it fits

"I" isn't unprofessional — it's honest.

- "I keep coming back to..."
- "Here's what gets me..."
- "I've seen this go wrong when..."
- "What I don't understand is..."

## Let some mess in

Perfect structure feels algorithmic. Tangents, asides, and half-formed thoughts are human. Not every piece needs them, but they signal a real person behind the words.

## Be specific

"This is concerning" tells you nothing. "There's something unsettling about autonomous agents running at 3am while nobody watches" tells you everything.

Replace vague adjectives with concrete details:
- "Important city" → "Portland, population 650,000"
- "Recent study" → "A 2024 Stanford study of 500 developers"
- "Significant growth" → "Revenue grew 34% in Q3"

## Use simple verbs

| Instead of | Use |
|------------|-----|
| serves as | is |
| features | has |
| boasts | has |
| utilizes | uses |
| facilitates | helps |
| encompasses | includes |
| leverages | uses |
| garners | gets |

## Cut filler words

Every word should earn its place. If you can remove a word without changing the meaning, remove it.

| Remove | Keep |
|--------|------|
| In order to succeed | To succeed |
| Due to the fact that | Because |
| It is important to note that the data shows | The data shows |
| At this point in time | Now |
| Has the ability to process | Can process |

## One qualifier is enough

"Could potentially possibly" means the same as "could." Pick one qualifier and commit.

**Over-hedged:** It could potentially be argued that this might possibly have some positive effect.

**Direct:** The policy may help.

## End with something real

Don't reach for a platitude. End with a fact, a question, or nothing at all.

**Generic:** The future looks bright. Exciting times lie ahead.

**Specific:** The company plans to open two more locations next year. Whether that's ambitious or reckless depends on the Q4 numbers.

**Or just stop:** The company plans to open two more locations next year.

## Formatting guidelines

- Use sentence case for headings (capitalize first word and proper nouns only)
- Avoid bold emphasis in body text — let the writing carry the weight
- Don't decorate lists with emojis
- Use straight quotes, not curly quotes
- Prefer commas and periods over em dashes
- Don't use inline-header lists ("**Topic:** description of topic")
- If you need a list, keep items brief and parallel


path: scripts/analyze.sh
content: #!/usr/bin/env bash
# Quick wrapper for text analysis.
# Usage: ./scripts/analyze.sh [file] [--json] [--verbose]

set -euo pipefail
DIR="$(cd "$(dirname "$0")/.." && pwd)"

if [[ $# -ge 1 && ! "$1" =~ ^-- ]]; then
  node "$DIR/src/cli.js" analyze -f "$@"
else
  node "$DIR/src/cli.js" analyze "$@"
fi


path: scripts/humanize.sh
content: #!/usr/bin/env bash
# Quick wrapper for humanization suggestions.
# Usage: ./scripts/humanize.sh [file] [--autofix] [--json]

set -euo pipefail
DIR="$(cd "$(dirname "$0")/.." && pwd)"

if [[ $# -ge 1 && ! "$1" =~ ^-- ]]; then
  node "$DIR/src/cli.js" humanize -f "$@"
else
  node "$DIR/src/cli.js" humanize "$@"
fi


path: tests/fixtures/ai-sample-1.txt
content: Great question! Here is an overview of AI-assisted coding.

AI-assisted coding serves as an enduring testament to the transformative potential of large language models, marking a pivotal moment in the evolution of software development. In today's rapidly evolving technological landscape, these groundbreaking tools — nestled at the intersection of research and practice — are reshaping how engineers ideate, iterate, and deliver, underscoring their vital role in modern workflows.

At its core, the value proposition is clear: streamlining processes, enhancing collaboration, and fostering alignment. It's not just about autocomplete; it's about unlocking creativity at scale, ensuring that organizations can remain agile while delivering seamless, intuitive, and powerful experiences to users. The tool serves as a catalyst. The assistant functions as a partner. The system stands as a foundation for innovation.

Industry observers have noted that adoption has accelerated from hobbyist experiments to enterprise-wide rollouts, from solo developers to cross-functional teams. The technology has been featured in The New York Times, BBC, and The Verge. Additionally, the ability to generate documentation, tests, and refactors showcases how AI can contribute to better outcomes, highlighting the intricate interplay between automation and human judgment.

- 💡 **Speed:** Code generation is significantly faster, reducing friction and empowering developers.
- 🚀 **Quality:** Output quality has been enhanced through improved training, contributing to higher standards.
- ✅ **Adoption:** Usage continues to grow, reflecting broader industry trends.

While specific details are limited based on available information, it could potentially be argued that these tools might have some positive effect. Despite challenges typical of emerging technologies — including hallucinations, bias, and accountability — the ecosystem continues to thrive. In order to fully realize this potential, teams must align with best practices.

In conclusion, the future looks bright. Exciting times lie ahead as we continue this journey toward excellence. I hope this helps! Let me know if you'd like me to expand on any section.


path: vitest.config.js
content: import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    globals: true,
    include: ['tests/**/*.test.js'],
  },
});


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (HIGH)