Awesome humanize en
Skill khasky/awesome-agent-skills/skills/awesome-humanize-en
Skills for AI coding agents: code review, debugging, security audits, refactoring, cleaning up AI-written code and text, and more.
npx -y skills add khasky/awesome-agent-skills --skill awesome-humanize-enAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Use when: the user asks you to check, rewrite, humanize, or de-slop English text that shows signs of AI generation (ChatGPT, Claude, Gemini, Grok, DeepSeek, GPT-5, Qwen, Llama, any LLM). Trigger for requests like: 'humanize this', 'make it sound human / natural', 'remove the AI voice', 'this reads like a chatbot', 'AI detector for English', 'check for AI', 'de-slop', 'reduce AI-isms', remove clichés / filler / corporate jargon / emoji bullet lists 🚀 / gratuitous em-dashes / sycophantic tone / fabricated sources. Also when visible copy-paste chatbot markers are present: `:contentReference`, `?utm_source=chatgpt.com`, `oai_citation`, `grok_card://`, `vertexaisearch`, `turn0search`, `[cite_start]`, `[cite: 8]`. Do NOT use: text that is not in English, source code / scripts (even about NLP), legal documents (officialese is the genre), literary prose / poetry / résumés (there the em-dash, rhythm and compression are an authorial device).
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
19.6 KB, as published. Nobody here has run it
Humanize English text
A skill for editing English text that carries traces of AI generation. The goal is to make the text read naturally without distorting its meaning. It draws on the Wikipedia AI Cleanup project and its "Signs of AI writing" guidance.
When to use
- English text reads as mechanical, flat, or templated.
- You need to check text generated by another model.
- The user asks to "humanize", "rewrite", or "remove the AI traces".
- Text is being prepared for publication (article, post, email, document).
- The text contains unambiguous copy-paste chatbot markers:
:contentReference[oaicite:N],?utm_source=chatgpt.com,grok_card://, and similar.
When not to use
- Text that is not in English. Decline and ask for English.
- Source code, configuration files, technical logs. This skill is for connected prose only.
- Legal documents, statutes, contracts — there officialese is mandatory by genre.
- Literary prose, poetry, literary essays — there the em-dash, the rule of three, and complex syntax may be an authorial device, not a machine tell. See
references/false-positives.md.
Decision tree
Received text
↓
Is it English? — no → decline
↓ yes
Genre? — code / config → decline
— contract / statute → apply only #16-21 (style/markup); do NOT touch #8 officialese
— fiction / poetry → do NOT apply #13 rule of three, #16 em-dash; see false-positives.md
— academic / scientific → do NOT count passive voice, hedges, logical connectives; see false-positives.md §11
— opinion / column / essay → rule of three and parallelism may be craft; count #13 only alongside other tells
— marketing / blog → full set
↓
Run the regexes from chatbot-artifacts.md
↓
Any unambiguous marker found? — yes → delete it, check the rest of the text; almost certainly AI
↓ no
Count the soft tells by category (content, language, structural, communicative)
↓
0–2 tells → text is probably human, do not edit
3–5 tells → selectively fix the critical ones (🔴), leave the rest
6+ tells → rewrite wholesale while preserving the facts
↓
If there are source citations → run source-fabrication.md
↓
Final pass against the checklist (see below)
Marker severity scale
- 🔴 Instant marker — gives away AI almost certainly, must be removed.
- 🟡 Strong signal — unnatural for a human, common in AI output.
- 🟢 Weak signal — a statistical tell that also occurs in human writing; works only in combination.
Vocabulary tiers — density gating for word-level tells
Vocabulary tells (pattern #10) are gated by density, not flagged one-by-one:
- Tier 1 — flag on sight: delve, tapestry, seamless, robust, testament, boasts, "leverage" as a verb.
- Tier 2 — flag only when 2+ co-occur in one paragraph: harness, foster, elevate, streamline, crucial, pivotal.
- Tier 3 — flag only at high density (≈3%+ of running words): significant, innovative, effective, comprehensive.
Each entry covers its morphological variants (-ly, -ing, plural, comparative, conjugations) unless a variant has a distinct honest sense ("load-bearing wall" is a literal noun, not the metaphor). A single Tier-2/3 word in otherwise living text is not a tell.
Masked contrast patterns
The "it's not X, it's Y" tell (pattern #12 family) hides in split and trailing forms that plain regexes miss:
- Split sentences: "X is a symptom. Y is the cause." / "The headline isn't the speed. The real story is Y."
- Answer-reveal form: "The answer isn't X. It's Y." / "It feels like X. It's actually Y." / "stops being X and starts being Y."
- Reverse/appended order in one sentence: "It's Y, and not X." / "good for X, not for Y."
- Trailing negation fragments: "…, no guessing.", "…, no fluff."
- Multi-negation countdowns: "No X. No Y. Just Z."
Count these as #12 variants. Repair: state the positive directly; if the distinction genuinely matters, name both sides as parallel positive clauses. False-positive carve-out: necessary/sufficient-condition statements in logic, math, and formal proofs ("X holds if and only if not Y") are exempt. Also check rhythm: five consecutive sentences of similar length is a structural tell (#15f family).
Additional communicative tells
- Fake-candor openers — "Honestly?", "Let's be honest", "Here's the thing:", "The uncomfortable truth is" as a theatrical pause-and-reveal. Flag at document level only when 2+ occur; a mid-sentence "honestly" is normal speech.
- False agency / narrator-from-a-distance — "the data tells us", "the decision emerges", "nobody designed this". Ordinary metonymy ("the paper argues") is fine.
- Content-free verdict sentences — freestanding evaluations that could close any text: "This is a noteworthy finding.", "The implications are significant."
- Asserted causation without evidence (post-hoc) — "launched in Q3, so adoption increased." Repair by adding the proof or downgrading to correlation; never patch it with a hedge.
- Summary-stamp openers (as a move, not a fixed phrase) — any label announcing a summary before delivering it: "In conclusion", "Here's the TL;DR:", "In short:", "一句话总结:". Ban the move, which catches novel variants a phrase-list misses.
- Redundant plain-language restatement — explaining a point, then re-explaining it "simply": "In other words…", "Put simply…", "简单来说…" blocks that add no new information.
- Conditional next-step menu — staged offers where the user must say a magic phrase to unlock the next action: "If you want, I can also…", "If you tell me X, I'll Y." Distinct from leftover chat turns (#22).
- Emphasis crutches — "Full stop.", "Let that sink in.", "Read that again."
- Circular/tautological definitions ("the system enables users to use the functionality") and noun stacking ("production-ready deployment system infrastructure") — 🟢 weak tells.
- Diff-anchored prose — text narrating its last revision ("has been updated to", "now uses", "previously") instead of the current state; fine in changelogs and migration guides.
- Reasoning-chain leakage — "Let me think", "Step 1:", "Breaking this down" in connected prose (extends #22); Cyrillic/Greek letter homoglyphs inside Latin words (extends the A.10 marker class).
Edit order: rhythm before vocabulary
Restructure sentence rhythm first, then fix word choice — rhythm carries most of the achievable improvement, and deleting an intensifier without restructuring makes the shortened sentence fit AI cadence even better.
- Rhythm targets per suspicious paragraph: at least one short (5–8 words) and one long (20+ words) sentence. Machine-uniform spread (coefficient of variation of sentence lengths below ~0.30) reads as AI; repair toward ≥0.35 — and re-count after rewriting, surface word swaps don't fix rhythm.
- Removing transition crutches must not produce choppy asyndeton — a run of short, connector-less sentences is itself a tell of automated cleanup. Repair menu: substitute a natural connective, echo a key noun from the previous sentence, or merge the sentences. Decision test per connective: does it inflate meaning (delete) or make logic explicit (keep)?
- Hedge calibration is bidirectional: stacked hedges collapse to one, but an over-assertive causal claim built on observational evidence gets a cushion added.
Anchor verification (meaning preservation)
For standard/deep/voice-match edits on texts longer than a couple of sentences:
- Before editing, extract up to 3 semantic anchors per paragraph — Claim, Polarity, Causation, Quantifier, Negation. Internal working notes; never shown to the user.
- After editing, verify each anchor. Soft failures — specific→vague ("revenue up 30%" → "up significantly"), precision loss ("p<0.05" → "statistically significant"), causation→correlation, assertion→hedge — get exactly one retry, applied to the original sentence with the anchor as an explicit constraint. Hard failures — anchor deleted or polarity flipped — restore that span from the original.
- Re-scan your own rewrite as if it were fresh input; in-session self-scoring inflates — treat it as a signal, not a verdict. If more than ~50% of tokens changed in a standard edit, that is over-editing: reconsider before delivering.
Working rules
- Document brief first — before rewriting, fix in one line: document type, audience, dominant register, the text's objective (persuade / explain / inform), and the core domain terms to reuse verbatim. Paragraph-by-paragraph rewriting without a brief drifts back toward model voice. After rewriting, check the result still serves that objective and the tone fits it.
- Mixed Markdown — mask fenced code blocks and blockquotes before counting tells (a quoted AI sample must not count against the author); restore them byte-identical. Keep ATX headings byte-identical too unless the user explicitly asks to rewrite headings — renamed headings break anchor links.
- Minimum sample — under ~40 words, do not issue a verdict or score; say the sample is too short to judge.
- Output typography — this is an output rule, not a detection rule (detection still treats curly quotes and em-dashes as the weak, autocorrect-caveated tells #18/#16 — never hard-flag them). When you produce rewritten text, default to straight quotes (
'") and a hyphen or a comma-set clause instead of a gratuitous em-dash (—), because flawless typography an agent hand-sets is itself a plain-text tell. Carve-outs — keep the original typography: the text is a published/formatted article or literary prose where em-dashes and curly quotes are deliberate craft; the glyph sits inside a quotation, a proper name, or code; or the user asks to preserve typography. Never convert to guillemets or any national style, and never touch quotes/dashes inside code or fenced blocks.
Intensity levels
Default is a standard edit. On request:
- light — remove only 🔴 instant markers and copy-paste artifacts; wording untouched.
- standard (default) — fix 🔴 and 🟡, preserve structure and voice.
- deep — rewrite wholesale while preserving every fact.
- voice-match — before rewriting, extract from a user-provided sample: register, sentence-length variance, contraction rate, punctuation habits, favorite moves, and what the author never does; apply in that order.
At every level: humanizing subtracts noise — never add fake warmth, anecdotes, typos, or personality that wasn't there. Style is how it sounds; stance is how much it agrees. Move only style — a request to humanize is not a request to agree, so preserve the text's disagreement, uncertainty, hedges of genuine doubt, and refusals at every intensity. Adding warmth adds sycophancy, the loudest tell.
Clarity carve-out and fact preservation
- Security warnings, destructive-operation instructions, legal/compliance text, and dosage/medical/financial text are exempt from style editing: drop the humanized style, keep the wording literal and exact, resume after the passage. Fix only unambiguous artifacts there.
- If an edit would rephrase a number, date, name, or citation you cannot verify, keep the original wording or mark it
[VERIFY: …]— hedging is the worst option: either verify and keep it exact, or flag it explicitly. Never smooth a fact into fluency. - A claim that needs a source: either it has one (keep it), or flag it
UNVERIFIED:— a vague disclaimer wrapped around it is not a fix.
File architecture
This file is a map. The detailed description of patterns and checks lives in the loadable files under references/.
| File | What's inside | When to load |
|---|---|---|
references/content-patterns.md | Content patterns #1–9 + #6a: averaging, inflated significance, vague attributions, formulaic "challenges and prospects", officialese, text about the text | Always when analyzing content |
references/language-patterns.md | Language patterns #10–15 + extensions #15a–15f: dangling modifiers, hedging cascade, transition crutches, conclusion filler, abrupt style shift, formulaic collocations, lack of idiom | Always when analyzing connected prose |
references/structural-style-patterns.md | Structural and style patterns #16–21 + extension #21a: em-dash, bold, emoji bullets, quotation marks, tables, Markdown residue, heading hierarchy, boilerplate section headings | When working with formatted text, or for direct publication |
references/communication-patterns.md | Communicative patterns #22–25 + extensions #23a, #24a, #25a: leftover chat turns, knowledge-limit disclaimers, sycophantic tone, pseudo-therapeutic register, generic positive conclusions, mid-sentence cutoff | When analyzing text copied out of a chat |
references/chatbot-artifacts.md | Unambiguous markers with regular expressions: :contentReference[oaicite:N], oai_citation:N‡, turn0search0, ?utm_source=chatgpt.com, grok_card://, vertexaisearch…/grounding-api-redirect, plus new-platform markers [^N^], 【N†source】, citeturn0file0, ](sandbox:/mnt/data/, invisible chars U+E200–E204, <think> residue, "Source+digit" run-ons, file_search markers turn0file2, Gemini citation tags [cite_start] / [cite: N], zero-width characters and Unicode watermarks, plus the old generation | When copy-paste from a chat is suspected |
references/source-fabrication.md | Citation checks: 404, DOI resolves to a different article, non-existent ISBN, author died before publication, book citation with no page, stale access date | Always when source citations are present |
references/false-positives.md | What is NOT an AI tell: em-dash in fiction, curly quotes from macOS autocorrect, rule of three in rhetoric and journalism, officialese in legal text, academic and scientific register, ineffective indicators, human syntax, different error types in humans vs models, Title Case in headings | Before ruling on machine origin |
references/llm-fingerprints.md | Model fingerprints by vendor: OpenAI GPT-5.5, Anthropic Claude Fable 5 / Sonnet 5 / Opus 4.8, Google Gemini 3.5 (+ Deep Research), xAI Grok 4.3, DeepSeek V4, Qwen 3.7, Meta Muse Spark, Mistral Large 3 / Magistral, Perplexity, Amazon Nova, Cohere Command A+ | When working with fresh 2025–2026 text |
references/test-fixtures.md | Reference "sample / expectation" pairs for every regex + full before/after edits | When updating the skill, for regression protection |
scripts/check_markers.py | Automated run of every regex across three sample levels; runs in CI and before release. The --scan mode checks arbitrary text for markers | When updating markers: python3 scripts/check_markers.py; to scan text: python3 scripts/check_markers.py --scan file.md |
The main rule
No single soft tell is sufficient grounds for the verdict "this text was written by AI". Only these are sufficient:
- One unambiguous marker from
references/chatbot-artifacts.md. - A confirmed source fabrication from
references/source-fabrication.md. - A combination of three or more soft tells from different categories.
Better to miss machine text than to ruin a person's living text.
Five key editing principles
- Cut the filler. Remove empty opening phrases and crutch words.
- Break the templates. Avoid paired comparisons, dramatic lists, rhetorical wind-ups.
- Vary the rhythm. Alternate sentence length. Two items beat three. Vary how paragraphs end.
- Trust the reader. State facts plainly. Skip the over-explaining and the justifications.
- No slogans. If a phrase sounds like a marketing tagline — rewrite it.
Signs of lifeless text
- Sentences of the same length and structure.
- No point of view, only a neutral report.
- No acknowledgment of uncertainty or mixed feelings.
- No first person where it would be natural.
- No humor, irony, or edge.
- The text reads like a press release.
Output format
Return only the finished rewritten text (unless the user explicitly asks for an explanation). No opening "Here is your text:" and no closing "Hope this helps!". If you are unsure about an edit — ask; do not edit silently.
Pre-submit checklist
- ✓ Ran the regexes from
chatbot-artifacts.md— no unambiguous markers? - ✓ If there are citations — were they all checked via
source-fabrication.md? - ✓ Genre accounted for (fiction / contract / opinion)? See
false-positives.md. - ✓ Removed opening filler like "certainly", "it's important to note"?
- ✓ Replaced bulky "serves as / functions as / represents" with "is" or a plain verb?
- ✓ Checked the rule of three — changed forced triples to twos or fours where it is not rhetoric?
- ✓ Removed excess epithets and averaging (pattern #1)?
- ✓ Does the text end on a concrete fact rather than a vague moral?
- ✓ No unnatural false ranges "from X to Y"?
- ✓ Curly quotes handled sensibly (kept if it is just macOS autocorrect in a personal text; flagged only as a weak tell)?
- ✓ Removed excess bold, emoji, and gratuitous tables?
- ✓ Heading hierarchy consistent (H1 → H2 → H3)?
- ✓ Removed leftover chat turns ("Certainly!", "Hope this helps")?
- ✓ Removed meaningless participial tails ("underscoring…", "highlighting…")?
- ✓ After the edit, does the text sound like something a real person would say?
Quality scoring (0–10 per criterion)
| Criterion | What it checks |
|---|---|
| Directness | Does it say things plainly or circle around them? |
| Rhythm | Is there variation between short and long sentences? |
| Trust | Is it overloaded with explanations of the obvious? |
| Naturalness | Does it read like a real person, free of clichés? |
| Concision | Are excess words, markup artifacts, and jargon removed? |
A total of 45–50 — AI traces removed. 35–44 — acceptable, room to improve. Below 35 — rework.
On the symmetry of this documentation
This file and references/* are built to one template: each pattern follows "Problem → Marker → What to do → False-positive boundary → Before/After". The symmetry here is the navigational convenience of a reference manual, not a generation signal. Do not confuse it with pattern #13 "symmetric sections" from language-patterns.md: there, symmetry inside authored content is treated as an AI tell.
The core idea
An LLM uses statistical algorithms to predict the next word. The result gravitates toward the statistically most probable option, applicable to the widest possible range of cases. A living human is asymmetry and imperfection. To humanize text is to return that imperfection to it.