一、用户令(逐字) 「humanizer(英文那份) 也要纳入」「重点就是做到说人话就行了」「但是 content_marketing_agent 的会话生成的文档并没有说人话,还是我手动要求的」 二、根因(两处,都不是"没整合") · **语气那一档只有指针、没有注入** ⇒ 实测没被读到(`SKILL.md` 必读表标题原写「三篇」而表里有 4 行, 第 4 项=作业规矩整包,被顶在"必读"之外;已订正为「四类」)。 · **写文档的执行会话那条链上一句写作口径都没有** —— 产品规划技能里「反 AI 味」只出现在**第③段界面** (且指的是界面不是文字),**第①段出文档那节零口径** ⇒ 产物自然是 AI 味。 三、改法 1. **每轮注入**(照排版那条现成机制,⛔ 不改 `main()`): · `04-去AI味与说话方式.md` 顶部加 `<!-- VOICE-CORE -->` 紧凑块(≈450 字符:核心原则/四种高频 AI 味/交付前三问); · `reply-style-guard.py` 里**原地重定义** `_core`(`_core_reply = _core` 后用新 `_core` 包住它并追加语气块) ⇒ 注入正文自动多一段,排版那条**不受影响**。 2. **产出侧补口径**:`product-planning` 第①段(stage-discovery)在 1b 表后新增「写作口径」块 —— 落笔前读 `humanizer-zh` 或本包 04,**定稿前过「交付前快速清单」**,并列出六种禁用 AI 味;**适用本段全部五份产出**。 3. **英文硬核版整包纳入**:原独立技能 `humanizer` **逐字**搬入本包 `references/humanizer-en/`(6 文件、 md5 逐个一致):55 个模式 + 5 种语气档 + 0–100 AI 痕迹打分 + `--file` 就地改; 在 `04 §9` 关系表与 `SKILL.md` 对应物段登记(冲突以本包会话场景版为先)。 四、验收 · 新增 `selftest.py::t_voice_core`(4 项);全量 **PASS 106 / FAIL 0**;manifest 70 → **76** 份、语法失败 0。 · 端到端喂真钩子:注入正文已含说人话块、排版块仍在。 · ⛔ 改的是钩子与技能目录(宿主直读)⇒ **不需要分发/重启**。
109 lines
4.0 KiB
Markdown
109 lines
4.0 KiB
Markdown
# Humanizer
|
|
|
|
A standalone Claude Code skill that transforms AI-generated text into natural human writing. Drop it into any plugin. No dependencies, no MCP server, no configuration.
|
|
|
|
## What it does
|
|
|
|
- Detects **55 AI writing patterns** (P1-P55, based on Wikipedia's "Signs of AI Writing" + 2025-2026 community research + the wider humanizer ecosystem)
|
|
- Rewrites text to sound like a specific human wrote it
|
|
- Injects authentic voice using burstiness and perplexity principles
|
|
- Three modes: scan-only, full rewrite, in-place file editing
|
|
- 5 voice profiles: casual, professional, technical, warm, blunt
|
|
- Zero dependencies. Pure Markdown. Works in every editor that reads skill files.
|
|
|
|
## Installation
|
|
|
|
### As a standalone skill
|
|
|
|
```bash
|
|
mkdir -p ~/.claude/skills/humanizer
|
|
cp SKILL.md ~/.claude/skills/humanizer/
|
|
```
|
|
|
|
### Inside a plugin
|
|
|
|
Copy `SKILL.md` into your plugin's `skills/humanizer/` directory. Add to your plugin's skill registry if applicable.
|
|
|
|
### Usage
|
|
|
|
```
|
|
# Full rewrite (default)
|
|
/humanizer "Your AI-sounding text goes here"
|
|
|
|
# Scan only: report patterns without changing text
|
|
/humanizer "text" --mode detect
|
|
|
|
# Score the AI-tell density (0-100, lower is more human)
|
|
/humanizer "text" --mode detect --score
|
|
|
|
# Edit a file in place
|
|
/humanizer --mode edit --file src/docs/README.md
|
|
|
|
# Specify voice
|
|
/humanizer "text" --voice casual
|
|
|
|
# Aggressive mode + iterate to convergence (max 3 passes)
|
|
/humanizer "text" --aggressive --iterate 3
|
|
|
|
# Layer purpose-specific rules on top of voice
|
|
/humanizer "text" --voice warm --purpose marketing
|
|
```
|
|
|
|
### Voice options
|
|
|
|
| Voice | Best for |
|
|
|---|---|
|
|
| `casual` | Blog posts, social media, informal docs |
|
|
| `professional` | Business communication, formal docs |
|
|
| `technical` | API docs, READMEs, code comments |
|
|
| `warm` | Tutorials, onboarding, support content |
|
|
| `blunt` | Internal comms, reviews, direct feedback |
|
|
|
|
### Purpose presets (`--purpose`)
|
|
|
|
Layered on top of voice. Add content-type rules without losing voice flavor.
|
|
|
|
| Purpose | Effect |
|
|
|---|---|
|
|
| `essay` | No contractions, formal headings, structured arguments |
|
|
| `email` | Greetings allowed, signoff allowed, no markdown |
|
|
| `marketing` | Short paragraphs, concrete benefits, one CTA at end |
|
|
| `technical` | Code blocks preserved, precise jargon retained |
|
|
| `general` | No purpose-specific overrides (default) |
|
|
|
|
### Brand voice file
|
|
|
|
Drop a `humanizer-context.md` at the project root with your samples and banned phrases. Auto-loaded if present.
|
|
|
|
## How it works
|
|
|
|
1. **Parse**: Extracts text and flags from arguments
|
|
2. **Detect**: Scans for 55 AI patterns across 6 categories (content, language, style, communication, filler, craft/forensic) + emerging 2026 patterns
|
|
3. **Inject**: Applies voice profile, varies sentence length (burstiness), increases word unpredictability (perplexity)
|
|
4. **Verify**: Checks output against detection patterns, sentence variance, and the "who wrote this?" test
|
|
5. **Output**: Clean text with change summary
|
|
|
|
## Pattern categories
|
|
|
|
| Category | Patterns | Examples |
|
|
|---|---|---|
|
|
| Content | P1-P8 | Significance inflation, notability name-dropping, -ing phrases, copula avoidance |
|
|
| Language & Style | P9-P18 | Negative parallelisms, em dash overuse, bold abuse, list syndrome |
|
|
| Communication | P19-P21 | Chatbot artifacts, disclaimers, sycophancy |
|
|
| Filler & Hedging | P22-P30 | Filler phrases, hedging, generic conclusions, uniform sentence length |
|
|
| Emerging (2026) | P31-P43 | Elegant variation, citeturn markup leaks, utm_source=chatgpt URLs, treadmill effect |
|
|
| Craft & Forensic | P44-P55 | False agency, diff-anchored writing, reasoning-chain artifacts, unicode obfuscation, argument residue |
|
|
|
|
Deep dives and provenance live in [`references/patterns.md`](references/patterns.md); the core `SKILL.md` is standalone and does not require it.
|
|
|
|
## Credits
|
|
|
|
Built from research across:
|
|
- [Wikipedia: Signs of AI writing](https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing)
|
|
- William Strunk Jr., *The Elements of Style* (1918)
|
|
- Community research from Reddit, HackerNews, and writing communities
|
|
|
|
## License
|
|
|
|
MIT
|