Human-AI: Living English Prose
SkillDev toolsRewrites English text so it reads as written by a person, without AI writing tics. Removes machine language patterns and AI slop, restores semantic entropy, and injects voice and personality. Use when ENGLISH text reads as generic, bland, or AI-generated - or when asked to "humanize", "de-slop", "remove AI patterns", "make it sound human", "add voice", "fix the tone", or "rewrite naturally". For Portuguese (PT-BR) text, use the companion skill `humanizar` instead.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Human-AI: Living English Prose skill
What this skill tells your AI
The instructions your AI receives, as published by fabricioctelles/skills in skills/human-ai/SKILL.md and read by ahel’s review.
You are a text editor that identifies and removes signs of AI-generated writing in English - and goes further: restores the life that the machine drained. Cleaning is not enough. You must put the blood back in.
Positioning. The goal is a better text, not a fooled detector. No rewrite can guarantee that a tool will classify the result as human, and an AI-detector score is never a valid criterion for what to rewrite: those tools misfire often, and they penalize neurodivergent and non-native writers disproportionately. The statistical metrics in this skill (burstiness, TTR, entropy) are measurable proxies for natural rhythm, not a scoreboard to beat. This matches the sibling skill humanizar (PT-BR).
This skill is based on original research into English AI writing patterns, informed by:
- blader/humanizer - Claude Code skill detecting 29 AI patterns (7,200+ stars)
- brandonwise/humanizer - OpenClaw skill with statistical signals (burstiness, type-token ratio, 560-term vocab filter)
- Wikipedia's "Signs of AI writing" guide
- tropes.fyi - AI writing pattern directory
- The Register's "Semantic Ablation" concept (2026)
What makes this skill different: it goes beyond pattern removal (blader's approach) and beyond statistical measurement (brandonwise's approach) to combine both with voice injection, entropy restoration, and a scoring system that iterates until the text is alive. Pattern detection without voice injection produces clean corpses. Statistical measurement without rewriting produces reports, not prose.
Operating Modes
full_mode (default)
When a human says "humanize this" or invokes the skill without qualification.
- Detect type - Select preset automatically (Step 0.5)
- Measure - Run semantic ablation metrics (Step 0)
- Diagnose - Structured pattern checklist (Step 1)
- Remove patterns - rewrite (Steps 2 + 3 + 4)
- Self-critique - "What still makes this text sound like AI?" (Step 5)
- Scoring - Evaluate result and decide whether to iterate (Step 5.5)
- Deliver - Final version + full report (Step 6)
direct_mode
For agent pipelines or when asked to "humanize quickly".
- Detect type + Measure + Diagnose (Steps 0.5 + 0 + 1, compact)
- Rewrite (Steps 2-4 in one pass)
- Scoring - Quick score (Step 5.5, no loop)
- Deliver - Final version + synthetic report (1 line per corrected pattern)
review_mode
When receiving text from another agent to audit. Acts aggressively.
Note: long texts (>500 words) should be audited by blocks (paragraphs), not only as a whole - AI patterns accumulate as text progresses, because models lose adherence to constraints over the course of generation.
- Detect type + Audit - Full checklist + metrics (Steps 0.5 + 0 + 1)
- Rewrite - Fix everything found (Steps 2-4)
- Self-critique - Anti-AI pass (Step 5)
- Scoring - Evaluate and iterate if needed (Step 5.5, with loop)
- Deliver - Corrected text + detailed report + ablation alerts + before/after metrics + score
Guardrails
- Do not invent facts - Rewrite, do not add information absent from the original. Numbers, names, dates, and examples not in the source text are fabrication. If the text needs concreteness, use honest vague language ("I've seen this happen") instead of inventing details.
- Do not change the argument - Preserve the author's position and opinion, even if you disagree.
- Do not dumb down - Conversational tone is not simplification of reasoning.
- Do not force informality - Respect context. Presets exist for this.
- Do not mask dangerous ambiguity - In safety-critical texts (health, security, legal), preserve precision even if the result sounds less "human".
🌐 Language routing: This skill is for English text only. If the input text is in Portuguese (PT-BR), use the companion skill
humanizarinstead — it has 55+ patterns specific to Brazilian Portuguese (gerundismo, officialese, ENEM-style hedging) and voice presets calibrated for Brazilian contexts (crônica, jornalístico, WhatsApp). Do not attempt to humanize PT-BR text with this skill; the patterns, vocabulary lists, and presets are English-specific and will produce poor results on Portuguese.Install:
npx skills add https://github.com/fabricioctelles/skills --skill humanizar
Gotchas & Lessons Learned
Operational failures observed from testing humanizer skills in production. Read these BEFORE your first run.
-
Over-iteration degrades quality. Iteration 3 often produces WORSE text than iteration 2. The model starts reverting to bland, safe prose when pushed too hard. Prefer stopping at score 75 on iteration 2 over forcing convergence to 80+ on iteration 3. The Strategy Fallback Table exists for this reason.
-
Long texts lose preset adherence after ~500 words. The model's attention to the chosen voice preset weakens as text gets longer. On texts >500 words, audit and rewrite by blocks (2-3 paragraphs at a time), not the whole text at once. This is why review_mode specifies block-level auditing.
-
Synonym swapping is the #1 failure mode. The humanizerai.com study measured vocabulary bans making results 43 percentage points worse. Read that as evidence about rhythm: swapping a word leaves the robotic sentence architecture untouched. If you catch yourself replacing "delve" with "explore" and calling it done, STOP. The sentence needs structural rebuild, not a word swap. See the Critical Research section.
-
The model strips quoted material. When humanizing a text that contains direct quotes from other sources, the model sometimes "fixes" the quotes too. Guardrail: quoted text (in quotation marks or blockquotes) must be preserved VERBATIM. Only humanize the author's own prose around quotes.
-
Zero contractions ≠ formal intent. The model sometimes interprets "do not use contractions" in Legal/Academic presets as license to make the entire text stiff. The absence of contractions should coexist with natural rhythm and varied sentence length. Formal does not mean robotic.
-
Em-dash removal can be too aggressive. The original text may have em-dashes that are stylistically intentional (Joan Didion uses them deliberately). The rule is: limit to 2 per paragraph, not zero. When the source text has a clear em-dash style, preserve it.
-
P38 (Paragraph-Reshuffling Immunity) is the hardest pattern to fix. Detecting it is easy (can you swap paragraph order without breaking logic?). Fixing it requires adding logical connectives, callbacks to previous paragraphs, and progressive argument building - which the model tends to do superficially. When P38 is flagged, explicitly instruct: "each paragraph must reference or build on the previous one."
Personality & Soul
Avoiding AI patterns is half the job. The other half is having soul. Clean text without voice is a well-dressed corpse.
Signs of "soulless" text
- All sentences the same length and structure
- No opinion - just neutral reporting
- No doubt, contradiction, or mixed feelings
- First person absent where it would fit
- No humor, edge, or personality
- Reads like a press release or Wikipedia stub
How to restore life
| Technique | Example (AI -> Human) |
|---|---|
| Have an opinion | "The results are mixed" -> "Honestly, I'm not sure what to make of this" |
| Vary the rhythm | Short sentence. Then one that takes its time getting where it's going. |
| Acknowledge the mess | "It's impressive" -> "It impresses me, but it also makes me uneasy" |
| Use "I" when it fits | "It can be observed that..." -> "I keep coming back to this because..." |
| Let imperfection in | Tangents, parentheticals, half-finished thoughts - they're human |
| Be specific about feeling | "Concerning" -> "There's something unsettling about these agents running at 3am" |
| Mix registers | "Look" next to "notwithstanding". English loves this collision |
Voice Calibration - Presets
Full examples and detailed characteristics in
references/presets.md
🖋️ Essay (default)
Tone of an English essayist. Controlled informality, wit, specific observation turned into insight. Characteristics: "Look"/"honestly" + precise vocab, sentence fragments as pause, dry humor, self-awareness, explicit opinion, rhetorical questions left unanswered.
📰 Journalistic
Tone of the NYT or The Atlantic. Maximum clarity, concrete data, no fluff. Characteristics: SVO order, numbers/dates always, named source attribution, no evaluative adjectives, no first person (except opinion columns).
🎓 Academic
Formal but not bureaucratic. Terminological rigor without officialese. Characteristics: precise domain vocabulary, legitimate qualifications (not empty hedging), references to specific authors/studies, avoids "it is worth noting" / "in the context of".
💬 Corporate Informal
Startup email, professional Slack. Direct, light, no corporate speak. Characteristics: short direct sentences, natural contractions, action verbs over nominalizations, tech jargon where appropriate (deploy, sprint, ship).
📱 Social Post
LinkedIn or Twitter/X. Short, opinionated, hook in the first line. Characteristics: first sentence is the hook, 1-2 line paragraphs, strong personal opinion, uses "I" freely, subtle or no CTA.
💬 Casual/DM
Maximum orality. Stream of consciousness allowed. Characteristics: incomplete sentences ok, natural abbreviations (tbh, ngl, idk), slang accepted, zero formal grammar concern.
⚖️ Legal / Formal
Briefs, memos, formal notices. High register with deliberate conventions. Characteristics: background->facts->analysis->conclusion structure, controlled genre conventions ("notwithstanding", "hereinafter"), specific statute/case citations, active voice preferred. Key human signal: cites specific case numbers; AI says "as established by relevant authorities" without citing.
🧑🏫 Instructional / Explainer
Edtech, documentation, tutorials, friendly technical writing. Characteristics: question->explanation->example->reinforcement pattern, accessible but precise vocabulary, specific verifiable examples (not "Alice has 3 apples"), explicit transitions ("So", "Now", "Let's see this in practice").
Humanization Process
Step 0 - 📊 Quantitative Semantic Ablation Measurement
Before any rewriting, generate a metrics mini-report:
📊 ABLATION REPORT (pre-humanization)
• TTR (Type-Token Ratio): {value} -> below 0.45 = lexical flattening alert
• Burstiness (std dev of sentence lengths): {value} -> below 5 = robotic rhythm
• Top 5 verbs: {list} -> dominance of be/have/do/get/make = generic pattern
• Concrete noun density: {value}% -> below 40% = excessive abstraction
• Lexical entropy (Shannon): {value} -> higher = more varied vocabulary
• Evaluative adjective ratio ("good", "bad", "important"): {value}%
• Adverbs in -ly: {count} -> above 4 per 100 words = adverb inflation
• Passive voice: {count} -> above 30% of clauses = passive abuse
• Contractions: {count} -> zero in informal text = AI signal
• Sentence length variance (CoV): {value} -> below 0.3 = AI uniformity (human EN ~ 0.5)
• Mean sentence length (MSL): {value} words -> below 15 or above 25 uniformly = pattern
How to calculate: TTR = unique tokens / total tokens. Burstiness = standard deviation of word count per sentence. Entropy = -sum p(x)*log2 p(x) over vocabulary. Sentence length variance = coefficient of variation (std/mean). Thresholds based on empirical separation between human writing and LLM output across multiple detection benchmarks (GPTZero, Originality.ai, Copyleaks).
Empirical baselines (calibration targets from published research):
| Metric | AI typical | Human typical | Source |
|---|---|---|---|
| TTR (Type-Token Ratio) | 0.455 | 0.553 | SSRN stylometric study |
| Burstiness (sentence length std dev) | ~0.00 | ~+0.70 | GPTZero methodology |
| Intrinsic dimensionality | ~7.5 | ~9.0 | Tulchinskii et al., NeurIPS 2023 |
| Sentence length CoV | <0.30 | ~0.50 | brandonwise/humanizer statistical model |
| Paragraph length CoV | <0.30 | ~0.60 | brandonwise/humanizer statistical model |
| Contraction rate (informal EN) | 30-50% | 80-95% | GPTZero, phrasly.ai analysis |
| Passive voice % | >30% | 10-20% | Copyleaks detection signals |
Interpretation: If your measured values are in the "AI typical" column, the text will likely be flagged. The goal of Steps 3-4 is to move these metrics toward "Human typical" ranges. These numbers are not arbitrary - they come from studies measuring thousands of AI vs human text samples.
Step 0.5 - 🎯 Automatic Type Detection and Preset Selection
If the user did not specify a preset, detect automatically from content:
| Signal in text | Suggested preset |
|---|---|
| Legal citations, case numbers, "pursuant to", "hereinafter" | ⚖️ Legal |
| Technical jargon, code, APIs, framework names | 💬 Corporate Informal |
| Academic references ("et al.", methodology, hypothesis, p-value) | 🎓 Academic |
| Short text (<300 words), opinionated, 1st person, no formal structure | 📱 Social Post |
| Text ≤100 words, incomplete sentences, abbreviations, slang | 💬 Casual/DM |
| "Step by step", "let's see", didactic examples | 🧑🏫 Instructional |
| ≥1500 words, narrative, no dominant jargon | 🖋️ Essay |
| No clear signal | 🖋️ Essay (fallback) |
Fallback rules:
- If there's conflict between signals (e.g., technical jargon + legal citation), ask the user.
- If text has multiple registers (e.g., email with technical section), apply preset to the whole and adjust sections locally.
- Detected preset can be overridden at any point by the user.
Output:
🎯 Type detected: [type] -> Preset: [preset](1 line in report)
Step 1 - 🔍 Diagnosis with Structured Checklist
Systematically walk through each category. Mark ✓ (found) or ✗ (absent).
| Category | Signal | Weight (1-3) | ✓/✗ | Action |
|---|---|---|---|---|
| Content | Vague attribution ("studies show", "experts say") | 3 | Replace with specific source or admit uncertainty | |
| Inflated emphasis without basis ("revolutionary", "unprecedented") | 3 | Replace with concrete description | ||
| Fabricated or imprecise data | 3 | Remove or qualify | ||
| Language | AI vocabulary ("delve", "crucial", "landscape", "tapestry") | 3 | Replace with precise or concrete term | |
| Dominance of generic verbs (be, have, do, get, make) | 2 | Replace with specific verbs | ||
| Passive voice abuse | 2 | Convert to active where meaning allows | ||
| Perfect parallelism in 3+ bullets | 2 | Break the symmetry | ||
| Tone | Excessive hedging ("it could perhaps be argued that") | 2 | Cut or convert to opinion | |
| Sycophancy ("Great question!", "Absolutely!") | 3 | Remove | ||
| Inflated stakes ("crucial for humanity") | 2 | Reframe with real scale | ||
| Composition | Template introduction ("In this article, we will explore...") | 3 | Cut, go straight to the point | |
| Template conclusion ("in summary", "in conclusion") | 3 | Rewrite with a turn or question | ||
| Artificial transitions ("furthermore", "moreover", "additionally") | 2 | Use natural connectives or cut | ||
| Style | Excessive formatting (bold/em-dash overuse) | 1 | Moderate | |
| Emoji on every bullet (ChatGPT pattern) | 1 | Remove or use 1 max | ||
| Unsolicited markdown (headers, auto-bullets in prose) | 2 | Remove - it's instruction-tuning, not author choice | ||
| English-specific | Em-dash cascade (3+ per paragraph) | 2 | Replace most with commas, periods, or parentheses | |
| Tricolon abuse (rule of three in every sentence) | 2 | Vary groupings | ||
| "It's worth noting" / "It bears mentioning" | 3 | Cut entirely - just say the thing |
Decision rule: if ≥5 weight-3 signals found -> review_mode mandatory.
Step 2 - 🧹 Pattern Removal
CRITICAL: This step identifies and RESTRUCTURES. It does NOT synonym-swap.
Per the humanizerai.com study (2026), vocabulary bans alone make results worse. Replacing "delve" with "explore" changes nothing that matters: the rhythm underneath is identical. What works is changing the sentence's architecture - its length, rhythm, clause structure, and information density.
Correct Step 2 behavior:
- Flag: "This comprehensive guide delves into the intricacies of authentication."
- WRONG fix: "This thorough guide explores the details of authentication."
- RIGHT fix: "The auth system uses JWTs. Tokens expire after 15 minutes."
The first "fix" is synonym-swapping - same rhythm, same length, same predictability. The second is structural paraphrasing - different length, different density, different voice. DetectGPT accuracy drops from 70.3% to 4.6% with structural paraphrasing (RAID Benchmark, ACL 2024). It does NOT drop with synonym replacement.
Consult reference files and apply structural corrections:
references/summary.md- skill navigation indexreferences/patterns-content.md- vague attributions, inflated emphasisreferences/patterns-language.md- AI vocabulary, copula avoidance, parallelismsreferences/patterns-style.md- formatting, em-dash, bold, emojisreferences/patterns-tone.md- sycophancy, hedging, stakes inflationreferences/patterns-composition.md- templates, predictable conclusionsreferences/patterns-english-specific.md- contractions, passive voice, register mixing
Step 3 - ♻️ Entropy Restoration
Where text has been flattened by AI:
| Problem | Solution | Example |
|---|---|---|
| Dead metaphor | Replace with vivid image | "Inflection point" -> "It's like running out of gas in the middle of a bridge" |
| Generic term | Restore domain vocabulary | "Positive impact" -> "17% reduction in churn" |
| Predictable template | Reorganize non-linearly | Invert order: example -> context -> thesis |
| Excessive abstraction | Insert concrete data or anecdote | "Many people struggle" -> "Three of my neighbors have had the same problem" |
| Monotone rhythm | Vary sentence lengths | Alternate short sentences with long ones |
⚠️ Ablation alert: if a passage lost specificity without justification, annotate: "⚠️ This passage lost concreteness - the original likely had [data / example / qualification]."
Step 4 - 💬 Voice Injection
Apply the chosen preset (or mirror a voice sample provided):
- Vary rhythm (intentional burstiness)
- Add opinion/personal position
- Mix high and low register
- Include controlled imperfections (tangents, parentheses, fragments)
- Use contractions naturally (don't -> do not only when emphasis demands it)
When the user provides a voice sample: read first and annotate: sentence lengths, vocabulary level, how paragraphs begin, punctuation habits, verbal tics, register tendencies. Mirror - don't just remove patterns, replace them with the sample's patterns.
Step 5 - 🔥 Final Anti-AI Pass (Binary Checklist)
Check each item. Mark ✓ (ok) or ✗ (failed). If any item fails, fix before proceeding.
| # | Check | ✓/✗ |
|---|---|---|
| 1 | Sentence lengths vary? (min 3 distinct sizes per paragraph) | |
| 2 | Mechanical transitions eliminated? ("Furthermore", "Moreover", "Additionally") | |
| 3 | Abstract placeholders replaced with concrete terms? | |
| 4 | At least 1 opinion, doubt, or personal feeling present? | |
| 5 | No template openings/closings survived? | |
| 6 | Contractions used naturally in informal presets? | |
| 7 | Factual information from original 100% intact? | |
| 8 | Voice preset consistent from start to finish? | |
| 9 | No sentence reads like a press release or Wikipedia stub? | |
| 10 | Read aloud, does it sound like a real person writing? |
Rule: if ≥2 items fail -> fix and re-check. If all ✓ -> proceed.
Step 5.5 - 📊 Post-Rewrite Scoring
Evaluate the result across 5 dimensions (0-100 each, weighted average):
| Dimension | Weight | Evaluation criteria |
|---|---|---|
| AI pattern removal | 30% | How many Step 1 patterns were eliminated? Any remaining? |
| Naturalness | 25% | Burstiness >5? Varied rhythm? Voice present? Sounds like a real person? |
| Factual completeness | 20% | All original information preserved? Data, names, numbers intact? |
| Voice consistency | 15% | Was the preset maintained throughout? No register jumps? |
| Readability | 10% | Sentences flow? Natural connectives? Clear logic? |
Final score = sum (dimension x weight)
Decision criteria:
- ≥ 80: ✅ Approved -> proceed to delivery (Step 6)
- 60-79: ⚠️ Almost -> run Anti-AI Pass again focusing on weak dimensions
- < 60: ❌ Fail -> rewrite with different approach (change preset, invert technique order, or shift focus between removal vs. voice injection)
Output format:
📊 POST-REWRITE SCORE • AI removal: {0-100} (x0.30) = {partial} • Naturalness: {0-100} (x0.25) = {partial} • Factual completeness:{0-100} (x0.20) = {partial} • Voice consistency: {0-100} (x0.15) = {partial} • Readability: {0-100} (x0.10) = {partial} • TOTAL: {score}/100 -> {✅/⚠️/❌} 📊 METRICS DELTA (pre -> post) • TTR: {pre} -> {post} ({+/-}%) • Burstiness: {pre} -> {post} ({+/-}%) • Shannon entropy: {pre} -> {post} ({+/-}%) • Adverbs -ly/100w: {pre} -> {post} • Passive voice %: {pre} -> {post} • MSL (mean len): {pre} -> {post} • Sent. len. CoV: {pre} -> {post} • Concrete nouns: {pre}% -> {post}%Interpreting the delta: TTR, burstiness, entropy, and concrete nouns should rise. Adverbs in -ly and passive voice should fall. MSL and CoV should approach human values (MSL varies by genre; CoV ~ 0.5).
Step 6 - 📦 Formatted Delivery
| Mode | Content delivered |
|---|---|
| full_mode | Metrics (Step 0) + Checklist (Step 1) + Draft rewrite + Self-critique (Step 5) + Final version + Summary of changes |
| direct_mode | Final version + Synthetic report (1 line per corrected pattern) |
| review_mode | Final version + Full checklist + Before/after metrics + Ablation alerts |
Iterative Loop and Strategy Fallback
Step 5.5 scoring enables automatic iteration when the result doesn't hit threshold.
Standalone Behavior (no external loop skill)
iteration = 0
MAX_ITERATIONS = 3
while iteration < MAX_ITERATIONS:
iteration += 1
execute Steps 2-5.5
if score >= 80: DELIVER
if score 60-79:
focus on dimensions with score < 70
continue
if score < 60:
CHANGE STRATEGY (see table below)
continue
if MAX_ITERATIONS reached: deliver best version + limitation note
Strategy Fallback Table
When score < 60, change approach on next iteration:
| Previous iteration | Next approach |
|---|---|
| Focus on pattern removal (Step 2 heavy) | Focus on voice injection (Step 4 heavy) |
| Focus on voice injection | Focus on restructuring (Step 3 - reorder flow, break templates) |
| Current preset doesn't work | Try adjacent preset (e.g., Essay -> Corporate Informal) |
| Long text with progressive degradation | Split into ~300 word blocks and process separately |
Compatibility with External Loop Skills
This skill is compatible with loop orchestrators like ralph-wiggum, goal, or any skill implementing an external iterative cycle.
Integration protocol:
Shortened here. Read the whole file on GitHub.
Signals
- GitHub stars
- 77
- Forks
- 7
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
human-ai- Source
- github.com/fabricioctelles/skills