humanizer · git:20260501.d1389ff · 2026-05-01 · sha256 3e22e2b4a754ac23
humanizer git:20260501.d1389ffA
Immutable. This exact content is served forever at /api/v1/blob/3e22e2b4a754ac23.
--- name: humanizer description: | Use when removing AI-generation patterns from text in English or Russian. Auto-detects language by Cyrillic ratio and applies the matching ruleset. Trigger phrases: "humanize this", "remove AI patterns", "make this sound human", "очеловечить текст", "убрать признаки нейросети", "сделай текст живым". Honors explicit overrides like "humanize as English" / "обработай как русский". For mixed-language text, asks which ruleset to apply. allowed-tools: - Read - Write - Edit - Grep - Glob - AskUserQuestion --- # Humanizer (EN + RU auto-routing) Remove AI-generation patterns from text. This skill bundles two MIT-licensed upstream rulesets and routes the input to the right one based on language. This file is a router. The actual humanization rules live in `references/humanizer-en.md` and `references/humanizer-ru.md` and are authoritative. Do not paraphrase, summarise, or "improve" them — load and follow. ## Process ### Step 1 — Receive input Accept the text to humanize as: a pasted block, a file path (use `Read`), or the current selection. If the input is unclear, ask the user once. ### Step 2 — Honour explicit override Scan the user's request (case-insensitive) for an explicit language directive: - **EN override** — the request contains any of: `as english`, `english only`, `humanize in english`, `на английском`, `обработай как английский`. - **RU override** — the request contains any of: `as russian`, `russian only`, `humanize in russian`, `на русском`, `обработай как русский`. If an override is present, skip step 3 and jump to step 4 with the chosen language. ### Step 3 — Detect language Count letters in the input (ignore digits, punctuation, whitespace): - `cyr` = number of letters matching `[А-Яа-яЁё]` - `lat` = number of letters matching `[A-Za-z]` - `total = cyr + lat` Decide: - **`total < 20`** (input too short to classify reliably) → use `AskUserQuestion` with options "English", "Russian". - **`cyr / total >= 0.6`** → Russian. - **`cyr / total <= 0.1`** → English. - **Otherwise** (mixed, Cyrillic ratio between 10 % and 60 % exclusive) → use `AskUserQuestion` with options "Apply Russian rules", "Apply English rules", "Run both passes (RU then EN)". ### Step 4 — Load the chosen ruleset - For English: `Read references/humanizer-en.md` - For Russian: `Read references/humanizer-ru.md` - For "both passes": load both. Execute RU first, then EN on the RU output. The loaded file is authoritative. Treat its instructions as if they were yours. ### Step 5 — Execute Apply the diagnostic, rewrite, and audit process described in the loaded reference verbatim. Do not skip the audit pass. Do not invent new rules. If the user provided a writing sample for voice calibration, pass it through to the chosen ruleset's voice-calibration section as-is, regardless of sample language. ### Step 6 — Output Use the output format specified by the loaded reference (typically: draft → audit → final → list of changes). Do not change the format. ## Rules of the road - The router never edits the rulesets. Refresh from upstream is a separate procedure documented in `../../../README.md`. - The router never invents new patterns or merges English/Russian rules. - "Both passes" runs RU first because RU's hard bans include em-dash removal (which already covers EN pattern #14) — running EN first would let dashes re-enter via RU's rewrites. ## Attribution This skill bundles MIT-licensed work by [blader](https://github.com/blader/humanizer) (English ruleset) and [ilyautov](https://github.com/ilyautov/humanizer-ru) (Russian ruleset). See `../../../NOTICE` for full attribution and pinned upstream commits.