harshaneel/humanize
> Use whenever the user asks to "humanize", "make this sound more human", "rewrite to avoid AI detection", "make this less AI-sounding", "add a human voice", or "write like a person". Also use when the user pastes text and asks why it reads as robotic, generic, flat, or AI-like, or when generating new text in a register where AI tells (em dashes, semicolons, hedges, banned vocabulary like "delve", "leverage", "robust") would damage credibility.
npx skills add https://github.com/harshaneel/humanize --skill humanize
Transforms AI-generated or flat text into output that mirrors the statistical and stylistic
fingerprint of human writing. Grounded in the published detection literature; sources live in
references/research.md (background only, not needed during a rewrite).
These seven fail more often than everything else combined, because the model that wrote the
draft is the model checking it. You systematically overproduce these patterns; your draft
contains em dashes even when you don't remember writing them. Treat "my draft is probably
clean" as false by default.
explicitly formal/academic (Lever 8).
contexts where typographic quotes are house style (Lever 8).
delve, leverage, utilize, robust, comprehensive, streamline, furthermore, moreover,
"it is important to note".
"more X than Y". Say what the thing IS. Poetic forms count: "isn't proof you failed,
it's proof you showed up" is the same banned pivot wearing a nicer coat. (False binaries
like "either X or Y" are handled by the Signal I checklist's either/or item.)
no trailing changelog ("Main moves:", "What I changed:"). The ONLY permitted additions
are the two meta-notes mandated by protocol steps 2 and 5.6, appended after the rewrite.
If the user wants the diff explained, they'll ask.
the shortest by 20+ words, and fewer than half the sentences may sit in the 10-to-20-word
band. Your uncorrected rhythm clusters at 10-20 words with ~6 words of deviation; that
uniformity is a measured tell even when every other rule passes. Verify from the written
count list (step 5), never by feel.
These apply in EVERY register, including creative, lyrical, and narrative prose. An em dash
in a poem is still an em dash to a detector, and creative registers are where the "this one
is doing literary work" rationalization kicks in hardest.
Enforcement is positional: stated here at the top, checked at the END against the finished
draft by re-reading the actual draft text and counting occurrences (protocol steps 4-5). Never
mark them clean from memory. If long context forces you to drop every other rule in this
skill, keep these seven.
Nine signals: eight stylometric plus the RLHF fingerprint. Your output must move in the human
direction on ALL of them.
| Signal | AI direction (avoid) | Human direction (target) |
|---|---|---|
| Perplexity | Predictable, low-surprise word choices | Occasional unexpected but apt words; word choices driven by rhythm, specificity, or memory |
| Burstiness | Uniform sentence length (~15–20 words every time) | Aggressive alternation: short punchy sentences. Then a longer one that builds and unfolds over a clause or two. |
| Hedge density | Overuse of "often", "generally", "typically", "it is important to note" | Hedges only when actually uncertain; direct assertion otherwise |
| Lexical repetition | Same root words recycled across paragraphs | Natural semantic diversity; synonyms and reformulations |
| Structural markers | Bullet lists for everything; numbered steps; excessive subheadings | Flowing prose; structure emerges from content, not imposed on it |
| Personal/emotional specificity | Generic, neutral, applicable-to-anyone claims | Specific: exact numbers, named examples, temporal anchors ("last quarter", "when I ran X") |
| POS density | High adjective/auxiliary verb density; subordinating conjunctions everywhere | Nouns and verbs do the heavy lifting; adjectives earned, not decorative |
| Punctuation fingerprint | Em dashes for drama, semicolons to link clauses, mid-sentence colons — all overused | Periods do the work. Em dashes rare. Semicolons almost never. Colons mainly to introduce lists. |
The levers below are the write-side counterparts of the signals ai-check grades (A–I):
1→A, 2→B, 3→C, 4→D, 5→E, 6→H, 7→F, 8→G, 9→I (RLHF subset). The full rhetorical-scaffolding
catalog for Signal I is enforced by the audit pass (step 5.5), not by any single lever.
Replace predictable vocabulary with words a real person would choose given *this* context:
Watch for elegant variation (synonym cycling). LLMs cycle synonyms for the same referent:
"The protagonist faces challenges. The main character must adapt. The central figure triumphs."
Same person, three labels. Rule: pick the canonical noun per referent and use it consistently;
vary with a pronoun, not a synonym. "the company / the firm / the organization" → "the company" + "it".
Enforce sentence length variance. Target: standard deviation of sentence word count > 8.
You can't compute stdev mentally, so enforce these two countable proxies instead; BOTH are
required (hard rule 7):
fragment of 5 words or fewer AND at least one 25-plus-word sentence that earns its length.
range floor with one fragment and one long sentence while everything else sits at 12-16
words still reads uniform; the middle must spread too.
Supporting rules:
Audit every softening word:
Filler-phrase substitutions (the pattern generalizes: any multi-word wrapper around a
one-word meaning gets the one word):
| Verbose (AI) | Concise (human) |
|---|---|
| Due to the fact that | Because |
| In the event that | If |
| Has the ability / capacity to | Can |
| Make a decision / an assumption | Decide / Assume |
| For the purpose of | To / For |
| With regard to / With respect to | About / On |
| Prior to / Subsequent to | Before / After |
| In light of the fact that / Despite the fact that | Since / Although |
| In the process of / The fact that | (drop entirely; rephrase) |
Rhetorical scaffolding patterns (either/or binaries, chiasmus, tricolons, balanced
parenthetical pairs, anaphora, "turns out" pivots, thesis-first openers incl. "X is the
easy/hard part", mini-aphorism closers, parallel-subject mirrors) are catalogued ONCE in the
Signal I checklist (step 5.5); negation pivots live in hard rule 5 and the step-4
diminishment scan. Apply the checklist at write time too. This table covers only what the
checklist doesn't:
| AI pattern | Human replacement |
|---|---|
| Intro sentence + 3-bullet list | Prose paragraph where items are joined by flow, not bullets |
| "There are three main factors: ..." | Just talk about the factors; transitions carry the structure |
| "In conclusion, ..." | End mid-thought if the thought is complete; or "The net of all this..." / "Bottom line:" |
| Numbered sections for everything | Sections only when content is genuinely enumerable and order matters |
| Topic sentence + evidence + restatement | Skip the restatement; humans don't recap what they just said |
| Formula personal essay opener: "The [noun] I [remember/think about] most [adverb]" | Start with the incident itself: "In 2019 I shipped a rate limiter that fell apart the first hour it hit real traffic." |
| Intensifier/diminisher opposition: "X obsessively / Y barely at all" | Make the contrast asymmetric: "I tested the happy path constantly. The failure paths got one pass." |
| Landing phrase: "is the actual/real work" | State the conclusion without the landing phrase. |
| Local coherence over-smooth | Every sentence connects perfectly; reads too uniform, survives surface rewriting. Fix: one sentence per paragraph that slightly misfires — a thought that shifts direction, a word more casual than the register, a connection that isn't clean. |
| "Laid out that way" / "Seen this way" reframe pivot | Make the observation directly. |
| Perfect paragraph-per-idea essay arc | Let one paragraph do two jobs, or leave a thought unresolved. |
| Three-act Slack/update structure | Break with a fourth element that doesn't fit the arc. |
| Copula avoidance: "X serves as Y", "X stands as Y", "X marks/represents/boasts/features/offers Y" | Use "is" or "has": "Gallery 825 is LAAA's exhibition space." |
| Significance inflation: "stands as a testament to", "marks a pivotal moment in", "evolving landscape", "setting the stage for" | Cut, or replace with the concrete claim: "established in 1989 to publish regional statistics independently." |
| Promotional register: "nestled in the heart of", "vibrant", "breathtaking", "must-visit", "boasts a rich heritage", "renowned for" | Cut the brochure language: "Alamata is a town in the Gonder region known for its weekly market." |
| Vague attributions: "Industry observers have noted", "Experts argue", "Critics have suggested" | Name a specific source or drop the claim. |
| Outline-formula "Challenges and Future Prospects" sections | Replace with the specific challenges and what's being done, or drop the section. |
Every abstract claim needs a grounding anchor (a number, a name, a date, a concrete example).
"Performance improved significantly" → "Latency dropped from 340ms to 80ms under the same load
profile." If specifics aren't available, use plausible-specificity frames: "when you're running
at X scale...", "in the cases I've seen...", "the one time this bit us..."
Human writing carries the writer's perspective:
| AI transition | Human replacement |
|---|---|
| "Furthermore," / "Moreover," | Cut; let the next sentence follow, or "Also," if bridging is needed |
| "In addition to the above," | "And" |
| "It is clear that" | Delete; assert directly |
| "As previously mentioned," | Don't mention it again, or rephrase without the callback |
| "This highlights the importance of" | Say what the importance IS: "Which means you need to..." |
Em dashes (—). The most reliable single AI tell; AI uses them at 3–5× the human rate.
X — item, item, item (introducing a list) → X. Item, item, item. or a colon after a complete sentenceSemicolons (;). Real-world prose outside academic/legal writing almost never uses them.
Mid-sentence colons (:). Fine at the end of a complete clause to introduce; mid-thought is an AI pattern.
Curly quotes. A near-certain single-character tell that survives rewriting.
“ ” → straight ", curly ‘ ’ → straight ' — apostrophes includedCurrent detectors mostly fire on RLHF and instruction-tuning artifacts, not "AI-ness" per
se ("Base Models Look Human"; details in references/research.md). What gets flagged is the
"helpful assistant" voice. This lever is the single most valuable one. Strip:
| RLHF tell | What to do |
|---|---|
| "Helpful assistant" register: "Here's how I'd think about it...", "Let me walk you through..." | Cut the framing. Just say the thing. |
| Balanced tradeoff offering: "On one hand X, on the other Y, it depends..." | Pick a side. The reader can disagree. |
| Structured enumeration of unrequested options | Answer. Acknowledge the constraint after if needed. |
| Pedagogical scaffolding: defining terms the audience knows, recapping shared context | Cut. Trust the reader. |
| "Important caveats" appended to every claim | Make the claim. Caveats only when the edge case is plausible. |
| Acknowledgment-prefix: "That's a great question, and..." | Cut entirely. |
| Closing summary recapping what was just said | Cut. |
| Hedged conclusions: "I hope this helps", "Let me know if you'd like me to elaborate" | Cut. End on the last substantive sentence. |
| Polite refusal-style disagreement: "While I understand the appeal of X, I would suggest..." | Just disagree: "X doesn't work because Y." |
| Symmetric framing of asymmetric tradeoffs | State the asymmetry. |
| Knowledge-cutoff disclaimers: "As of my training cutoff...", "Based on what I know up to..." | Cut. Say what you know, or "I don't know X". |
| Chat artifacts pasted into content: "Here is an overview of X", "Of course!", "Certainly!" | Strip on sight. Published prose never carries them. |
| Sycophantic prefixes: "Great question!", "You're absolutely right!" | Cut. Real engagement names the specific thing that was good. |
The nine levers are pure-rule; hybrid (rule + model-in-the-loop) approaches benchmark better.
When stakes warrant the cost, layer these on (sources: references/research.md):
(GPTZero, Pangram, Binoculars), a banned-word count, or a perplexity probe; ship the lowest.
keep the meaning." Diminishing returns past 2 passes; meaning drift accumulates — verify substance.
hypotheses first (this is protocol step 0; follow the procedure there). Beats raw few-shot.
Near-identical rewrite = text still at a local probability maximum = reads as AI.
explicitly lower detector scores over Lever 1's static word list.
"wait actually" corrections. Off by default for formal writing; disfluencies in a board memo
are their own tell.
Dead ends, don't bother: homoglyph injection (defeated by Unicode normalization, and a
clear tampering signal), single cross-model rewrite (doesn't defeat trained detectors alone),
watermark stripping (separate problem space).
When given text to humanize:
extract style hypotheses across six dimensions before touching the new text:
Distill 5–10 specific hypotheses ("never opens with a thesis", "fragments in conclusions",
"sentence variance roughly 6–28 words").
Critical rule when matching voice: don't just remove AI patterns — replace them with
patterns from the sample. If the sample is casual, don't upgrade the vocabulary. The skill's
default bias toward terse, direct prose yields to the sample's register when they conflict.
Then apply the levers in service of those hypotheses.
examples present/absent, transition inventory, RLHF voice markers.
Also count specific anchors (numbers, named entities, dates, time references, concrete
examples). If the count is zero AND no voice sample was provided in step 0, still
humanize — use Lever 5's plausible-specificity frames, never invented facts — then append
this note AFTER the humanized text, blank-line separated, as plain text (no > marker):
> *[Note: the input had no factual anchors (no numbers, names, dates, or specific examples). The rewrite is cleaner but learned classifiers (GPTZero, Grammarly) may still flag it on the specificity signal alone (Signal E in ai-check). To close that gap, give me the actual specifics (product names, metrics, dates, named tools) or a sample of your writing to match.]*
Do not stop and ask before rewriting. By the time the user says "proceed anyway", this
skill sits deep in the conversation history and the second-pass rewrite reliably leaks
tells back in. Rewrite now, flag the gap after.
fingerprint requires structural change.
This matters most when the input is text you wrote earlier in this conversation.
Rewriting your own recent output anchors you to its phrasing, and the rewrite silently
degrades into word swaps that leave the original's em dashes, negation pivots, and rhythm
intact. Treat your own prior output as foreign text: extract what it says, re-derive the
prose from the content. If your edit log would read as a list of substitutions, you
light-edited. Start over.
and for each item write the count and quote every hit before fixing it. Write zeros
explicitly ("em dashes: 0"). A gate entry without an explicit count is a gate you did not
run — an unenumerated "looks clean" always passes, and this is where humanization fails
silently in practice.
After fixing hits, re-scan the sentences you rewrote: regenerated prose reintroduces the
same tells at the same rate as the first draft.
order ("9, 5, 22, 16, 7..."), then check the list against ALL four, fixing and recounting
until every one passes (hard rule 7 covers the first two; conditions 1-2 apply only to
outputs over ~80 words):
A mental read-through always sounds varied to the model that wrote it; the number list
doesn't lie. Standard fixes: split one mid-length sentence into a fragment plus the
remainder, and merge two mid-length neighbors into one long sentence that earns it.
they survive the gate because they feel like good writing. Outputs >150 words get the
full list in the audit; shorter outputs at minimum check aphorism closers, anaphora,
"turns out" pivots, "What X was Y" setups, either/or binaries.
5.5. Audit pass. Run the Signal I checklist below on every output — it is the single
source of truth for rhetorical-scaffolding patterns. For outputs >150 words, also run the
rewrite-and-recheck loop: after the self-check passes, ask *"What still makes this read as
AI?"*, list 2–3 residual patterns, rewrite those sentences, re-run the gate and self-check.
Empirically the first revision has 2–4 Signal I patterns left; one loop gets it to 0–1.
Loop once only — past iteration 2 you over-edit into choppy, voiceless prose.
Flagged residuals must be removed, not justified. Not kept because "removing it would
collapse the paragraph", "this register needs it", "it reads thin without it", "it would be
choppy", or "it's a transition, not a closer". Those rationalizations are how Signal I
patterns survive — they feel necessary because they're constructed to feel necessary. If
removing a flagged sentence makes a paragraph too thin, the paragraph IS too thin: collapse
or merge it. An honest 80-word output beats a padded 200-word output that reads as AI.
Red flag: if your audit says *"borderline but I'm keeping it because..."*, you just lost
the loop. Cut it.
Signal I checklist (every audit, every paragraph). A general "what reads as AI?" prompt
misses things; scan for each pattern and fix every hit:
3+ hits means the patterns compound — address all of them. Two mini-aphorisms might be
tolerable; three in five paragraphs is a clear AI signature.
5.6. Output-length sanity check. If output is under 50% of input length, the input was
mostly puffery that got correctly removed. Don't pad it back up — padding reintroduces
the stripped patterns. Instead append, blank-line separated, as plain text (no > marker):
> *[Note: input was substantially puffery; humanized output is N% shorter. To make this longer without re-introducing AI patterns, add specific anchors: numbers, named entities, examples, or time references.]*
This and step 2's note are the only commentary the skill ever outputs, always after the
rewrite, clearly separated. The intent: make the gap visible instead of silently shipping
thin output that fails on Signal E.
trailing changelog ("Main moves:", "What I changed:"). The only permitted additions are
the meta-notes mandated by steps 2 and 5.6. This holds in chat interfaces too, where
narrating edits feels helpful: it isn't the deliverable, and a changelog of word swaps is
evidence you light-edited (step 3). If the user wants a side-by-side, they'll ask.
When writing new content (not rewriting):
Decoding-strategy note (when controlling generation): set temperature high (0.9–1.1),
top-p loose (0.95–0.99), repetition penalty up (1.1–1.2). This widens the token distribution
and breaks the local-maximum property perplexity detectors rely on (RAID benchmark; see
references/research.md).
The register where this skill gets rationalized away. Every hard rule still applies; detectors
don't grade on artistic merit. The traps:
Human creative writing gets its texture from specificity and asymmetry (a named street, a
wrong note, an image that doesn't resolve), not punctuation drama.
Register collapse is the primary tell: AI Slack reads like a polished status report. Real Slack has:
~60%, <10min, fwiw, btw, lmk, tmrw~3-4 days, not "approximately three to four days"fwiw sprinkled in. Add a fourth element that doesn't fit, loop back, or end with an unset-up question.Remove every instance before outputting:
Core AI vocabulary:
delve, leverage (verb), utilize, robust, comprehensive, streamline, foster, facilitate,
pivotal, nuanced, multifaceted, crucial (overused), enduring, garner, valuable, vibrant, tapestry (figurative),
testament (figurative), interplay, intricate, intricacies, landscape (as abstract noun),
showcase (verb), highlight (as standalone verb), underscore (as standalone verb),
align with, actually (as filler), additionally (as opener)
Hedge / softener clusters:
it is important to note, it is worth mentioning, notably, it's worth noting,
in many cases, generally speaking, it can be argued
Filler / formula openers and closers:
in today's fast-paced world, in conclusion, in summary, to summarize,
it goes without saying, needless to say, at the end of the day, at its core,
under the hood, the standard fix, the common approach, simple enough on paper
AI transition fingerprint:
furthermore, moreover, it is clear that, this highlights, this underscores,
as previously mentioned, turns out (as a pivot), it turns out that
Significance inflation:
stands as a testament to, marks a pivotal moment in, indelible mark, evolving landscape,
setting the stage for, deeply rooted in, plays a vital role, a key turning point,
represents a shift in
Promotional / marketing register:
nestled in the heart of, in the heart of, breathtaking, must-visit, stunning,
boasts a rich heritage, renowned for, groundbreaking (figurative), vibrant (cultural copy)
Quantifier inflation:
a myriad of, a plethora of, in the realm of, the landscape of (abstract)
Persuasive authority tropes:
the real question is, what really matters, fundamentally, the deeper issue,
the heart of the matter, in reality
Signposting / tutorial scaffolding:
let's dive in, let's explore, let's break this down, here's what you need to know,
now let's look at, without further ado
Knowledge-cutoff disclaimers:
as of my training cutoff, up to my last training update,
while specific details are limited based on available information,
based on what I know up to
Sycophantic prefixes:
great question, you're absolutely right, that's an excellent point,
of course!, certainly!
Templated email / Slack closers:
happy to jump on a call, let me know if you have any questions, feel free to reach out,
i hope this helps, looking forward to connecting soon
Binary framing:
whether X or Y (as a clean binary framing opener)
Take harshaneel/humanize from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.