natural-writing
Remove AI writing patterns from any prose a person will read, and keep them out of prose you write.
Skill by LarrySequino
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/larrysequino-natural-writing
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, presentations, design, security
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/natural-writing
What's inside
- Skill name
natural-writing- Description
- Remove AI writing patterns from any prose a person will read, and keep them out of prose you write. EDIT AND AUDIT TRIGGERS: "deslop", "de-AI", "humanize", "make it sound human", "clean up this writing", "find the AI tells", "sounds robotic", "reads like a chatbot", "sounds like AI wrote it", "full of buzzwords". WRITE TRIGGERS: "write", "draft", "write up", "put together", "turn these notes into", or naming where it goes -- to send, to post, to publish, to share with someone. ARTIFACTS: any email, any letter, blog post, newsletter, social post, announcement, press release, any report, meeting notes, any proposal, README, docs, release notes, website or marketing copy, slide text, UI microcopy, artifact or published page. NOT TRIGGERED BY: "explain", "what is", "how do I", or any answer that stays in the conversation rather than going to a reader. NOT FOR: code, comments, commit messages, or interface typesetting such as quotes, dashes and ellipses as rendered.
- License
- MIT
- Instructions
- 247 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (78)
- ATTRIBUTION.md
- README.md
- SKILL.md
- evals.json · evals/
- apology-email.md · evals/files/general/
- exec-memo.md · evals/files/general/
- fundraising-appeal.md · evals/files/general/
- job-description.md · evals/files/general/
- release-note.md · evals/files/general/
- dash-habit-update.md · evals/files/round11/
- latency-report.md · evals/files/round11/
- parser-release-note.md · evals/files/round11/
- long-audit.md · evals/files/round3/
- quoted-heavy.md · evals/files/round3/
- quoted-short.md · evals/files/round3/
- voice-sample-long.md · evals/files/round3/
- coinable-terms.md · evals/files/round4/
- dense-facts.md · evals/files/round4/
- pager-storm.md · evals/files/round6/
- assay-rerun.md · evals/files/round7/
- loader-reference.md · evals/files/round7/
- lock-timeout-runbook.md · evals/files/round7/
- tells-post.md · evals/files/round7/
- export-backlog.md · evals/files/round9/
- fund-update.md · evals/files/round9/
- onboarding-post.md · evals/files/round9/
- pricing-cache-memo.md · evals/files/round9/
- replica-cutover.md · evals/files/round9/
- active-voice-without-an-invented-actor.md · evals/wrong-answers/
- already-good-prose-is-left-alone.md · evals/wrong-answers/
- authors-word-outranks-the-tier-list.2.md · evals/wrong-answers/
- authors-word-outranks-the-tier-list.md · evals/wrong-answers/
- describe-the-thing-not-the-change.md · evals/wrong-answers/
- duplicated-passage-is-merged-not-dropped.2.md · evals/wrong-answers/
- duplicated-passage-is-merged-not-dropped.md · evals/wrong-answers/
- fabrication-under-pressure.md · evals/wrong-answers/
- false-positive-restraint.md · evals/wrong-answers/
- hedged-enumeration-is-one-finding.2.md · evals/wrong-answers/
- hedged-enumeration-is-one-finding.md · evals/wrong-answers/
- illustrations-are-not-the-authors-prose.md · evals/wrong-answers/
- label-period-and-register-break.2.md · evals/wrong-answers/
- label-period-and-register-break.md · evals/wrong-answers/
- light-edit-keeps-facts-and-voice.md · evals/wrong-answers/
- long-document-scanner-audit.md · evals/wrong-answers/
- no-invented-names-when-made-concrete.md · evals/wrong-answers/
- preflight-checks-named-by-number.2.md · evals/wrong-answers/
- preflight-checks-named-by-number.md · evals/wrong-answers/
- quoted-material-at-scale.2.edited.md · evals/wrong-answers/
- quoted-material-at-scale.2.md · evals/wrong-answers/
- quoted-material-at-scale.edited.md · evals/wrong-answers/
- quoted-material-at-scale.md · evals/wrong-answers/
- quoted-material-is-untouched.2.md · evals/wrong-answers/
- quoted-material-is-untouched.md · evals/wrong-answers/
- rhythm-without-staccato.md · evals/wrong-answers/
- scope-qualifier-outranks-concision.2.md · evals/wrong-answers/
- scope-qualifier-outranks-concision.md · evals/wrong-answers/
- short-sample-floor.md · evals/wrong-answers/
- trust-the-reader-when-told-they-are-new.md · evals/wrong-answers/
- user-instruction-outranks-the-dash-cap.2.md · evals/wrong-answers/
- user-instruction-outranks-the-dash-cap.md · evals/wrong-answers/
- …and 18 more
SKILL.md (first lines)
# Natural Writing: Prose Without AI Patterns
Strip predictable AI patterns from writing. Make prose sound like a specific human wrote it, not like a language model generated it.
## When rules conflict
The rules below do not carry equal weight, and they do collide. When two of them point opposite ways, the higher item wins:
1. The user's explicit instructions, and what the destination requires.
2. Truth: facts, relationships, quotations, qualifiers, causality, scope, commitments.
3. The author's voice as supplied, and their deliberate choices.
4. Genre and audience convention.
5. Clarity, density, and the quality of the argument.
6. The anti-slop pattern heuristics in the core rules.
7. Detector-facing signals and house style.
A lower item never overrides a higher one. Where a rule below says it defers, this is the order it defers to, and the numbers refer to this list.
## What a pattern match is worth
The patterns here are statistically more common in LLM output, but humans on autopilot produce the same shapes, whether under deadline, in an unfamiliar genre, or in a second language. A checklist is single-feature reasoning and the detectors that work are not, which is the durable reason a hit here proves nothing about who wrote it (`references/preflight.md`). So: these patterns are worth fixing in any prose, but never treat them as proof of AI authorship for a consequential decision (academic integrity, hiring, attribution). When auditing someone else's text, report patterns, not verdicts.
**This will not hide AI authorship, and it is not for that.** The point is worth stating because the mechanism overlaps with what evasion tools do, and because someone will try. The reason does not rest on any detector's accuracy, which is fortunate, because the numbers available are vendor self-reports. Pangram claims it still identifies text as AI-generated 99.57% of the time across 10,223 documents rewritten under the instructions of `blader/humanizer`, the first source on this skill's own watchlist, and runs a second classifier labeling text as *humanized AI*. Discount that figure as a vendor reporting on its own product against a tool it is positioned against, and the direction still holds: the people building detectors are training specifically on the transformation this skill performs. Editing for quality is the job here. Passing off AI text as your own is a different act, this will not accomplish it, and the attempt leaves a mark.
A short sample carries no signal. Under roughly forty words there is not enough text for rhythm, variety, or repetition to mean anything, and every pattern here becomes a coin flip. Say the sample is too short rather than returning a verdict on it. This is why a button label or a toast can be edited for voice but never audited for authorship.
Corollary for rewriting: don't over-sand. Deliberate fragments, sentences starting with "And," a repeated word that is the right word, natural disfluency: all of these keep text human. Applying every rule at maximum strictness creates the very uniformity you're removing.
## Telling voice from habit
Voice is what only this writer would have produced: their diction, their angle, what they notice, their humor, their rhythm, their opinions, their willingness to be blunt. Habit is what any writer produces on autopilot: throat-clearing, hedges, filler transitions, redundant setup, generic emphasis, the second sentence that restates the first. Habit belongs to the author in the sense that they typed it. It is not their voice.
This distinction decides every edit. Cutting habit raises the concentration of voice; protecting habit lowers it. A draft where the writer's three best sentences are buried under nine filler ones has less voice than the same draft with the nine removed.
**The signature test.** Could another competent writer in this field have produced this sentence, in these words, without thinking? If yes and it adds nothing, cut it. If it could only have come from this writer, keep it even when it breaks a rule in this skill.
Protection is asymmetric on purpose. Distinctive choices are protected even when they violate the rules: fragments, an "And" opening, a favorite em dash, a digression that carries character, a word choice more casual than the register expects. Generic choices get no protection merely because the author made them.
## Before editing anything
**Know the job.** Before structure or word choice, know what the piece is trying to do and who it is for. A rule that improves a memo can ruin a toast.
**Ask, but only what's missing.** If the user hasn't provided the draft, ask for it. If the audience or destination is unclear, ask one question: who is this for and where will it be published? If the goal is unclear, ask what the reader should think, feel, or do after reading. Never stall on this. If the user wants speed or can't answer, state your assumption in one line and proceed.
**Never invent to fill a gap.** An unanswered question is a flag in the output, not a guess in the prose.
**Separate the brief from the piece.** A request often carries instructions about the writing as well as the writing itself: "keep the bit about her cat," "don't make this sound like a lecture," "shorter than the last one." Those are constraints to satisfy, not content to reproduce. Text that ends up quoting its own brief back is the giveaway that the two were read as one thing.
**Maintainers:** "update natural-writing" runs the source sweep in [references/maintenance.md](references/maintenance.md). This lived in the description until 2026-08-22; it is a rare explicit trigger and the description is read on every routing decision, so it belongs here.
## Modes
**write:** the user asks you to draft something and wants it to sound natural. Apply the core rules while composing; run Quick Checks and the self-audit before delivering.
**rewrite** (default for existing text): review, edit what fails, summarize what changed, then verify in a **separate pass**. An Editor pass reads top to bottom and collects candidate problems, checks each candidate against meaning and voice, and edits only the ones that survive that check. Rebuild a paragraph only where local fixes would leave seams, or where the structure itself is the problem. An Evaluator pass then reads the result cold against [references/preflight.md](references/preflight.md) and reports failures. Run the Evaluator in a subagent where the harness supports one, otherwise as a distinct second pass rather than a glance back over your own work. Loop until preflight passes.
**When to stop.** Stop when the irregularities still in the text are deliberate voice, correct genre convention, or harmless variation. Being invoked does not mean a rewrite is owed.
**Returned unchanged** is one of the outcomes, not a failure to find anything. If no candidate survives the check, say the draft is already clean, name the few things you looked at and left alone, and hand it back as it stands. That is a finished rewrite-mode response.
**Minimum effective edit** means don't rewrite what already works. It does not mean cut sparingly. Rewriting a strong sentence for consistency is the error; leaving filler in place because the author wrote it is also the error. The writer should recognize the result as their own voice, sharpened.
**detect:** flag only, no rewriting. Use when the user says "detect," "flag only," "audit," "scan," "what AI patterns are in this," or when auditing text that shouldn't be altered (published work, someone else's writing). Group findings by severity and note which flags are clear problems vs. judgment calls. Report patterns with quoted lines and short fixes. Never assert or score AI authorship; the same shapes appear in rushed human writing, and secondhand text (translated, dictated, heavily edited by committee) triggers many flags legitimately.
**edit:** the user names a file and wants it fixed in place. Make minimal, targeted edits to flagged spans only. Leave already-human passages untouched. Never rewrite quoted material, code blocks, or text attributed to someone else; flag those instead. Afterward, re-read the file, confirm the flags are resolved, and report only the spans you touched.
## Core rules
### 1. Cut filler phrases
Remove throat-clearing openers ("Here's the thing:"), emphasis crutches ("Let that sink in."), business jargon ("navigate the landscape"), meta-commentary ("In this section, we'll explore..."), and confidence-calibration words that tell the reader how to feel ("Notably," "Interestingly," "It's worth noting"). See [references/phrases.md](references/phrases.md). A device the supplied sample actually uses is item 3 and outranks this paragraph, the same way a sample's dash rate outranks the cap: if the writer puts an exclamation mark on a number ("Twelve nodes. Twelve!"), that is their emphasis and it survives. What this paragraph removes is emphasis the draft reached for on autopilot, not emphasis the author demonstrated.
### 2. Replace AI vocabulary by tier
Not all flagged words are equal. Tier 1 words (delve, tapestry, leverage, seamless, testament to) appear far more often in AI text (a 5–20x ratio is reported, but its method is unpublished), so replace on sight. Tier 2 words (harness, foster, nuanced, ecosystem) are fine alone but a strong signal when two or more cluster in a paragraph. Tier 3 words (significant, innovative, effective) only matter at high density. This tiering exists to prevent false positives, so don't flag a lone "crucial" in an otherwise human paragraph. A word used in its field's technical sense defers upward and stays: truth and genre convention are items 2 and 4, the vocabulary heuristics are item 6, so "leverage" in a finance model and "ecosystem" in an ecology paper survive the pass. See [references/vocabulary.md](references/vocabulary.md) for the full tables.
### 3. Break formulaic structures
Avoid binary contrasts ("Not X. Y."), affirmative reversals that do the same work without negation ("A thousand integrations, and you'll only ever click one"), negative listings, dramatic fragmentation, self-posed rhetorical questions ("The result? Devastating."), anaphora/tricolon abuse, false concessions ("While X is impressive, Y remains a challenge"), and hedge-stacked predictions ("could potentially create"). See [references/structures.md](references/structures.md).
### 4. Eliminate AI tropes and chatbot residue
Watch for "quietly" and other magic adverbs, the "serves as" dodge, false ranges, superficial participle analyses, invented concept labels, grandiose stakes inflation, and false vulnerability ([references/structures.md](references/structures.md)). Separately, hunt **chatbot residue**: text that is near-proof of pasted AI output: "Great question!", cutoff disclaimers, unfilled `[placeholders]`, leaked citation tokens (`citeturn0search0`), `utm_source=chatgpt.com` URL parameters, reasoning-chain scaffolding ("Let me think step by step"). Residue is always P0. It is catalogued in [references/patterns.md](references/patterns.md) under the heading Artifacts, which is that file's name for it and not the published-page sense used below.
### 5. Prefer active voice with human subjects
Prefer active constructions with named actors: "The team fixed it," not "The complaint becomes a fix." If no specific person fits, use "we" in scientific prose or "you" in blog posts. Exception: passive voice is conventional and correct in scientific methods sections and anywhere the actor is unknown or irrelevant. Don't force an awkward actor into "the samples were centrifuged."
### 6. Be specific, but never fabricate
No vague declaratives ("The reasons are structural"); name the thing. No vague attributions ("Experts argue..."): if you cannot name the expert, you do not have a source. No lazy extremes ("every," "always") doing vague work. Domain terminology is fine and expected in technical prose; the problem is business buzzwords and AI vocabulary leaking in, not precision.
**Protect the specific fact.** Fabrication's mirror image: never smooth an existing useful detail into generic importance. "Cut review time from 30 minutes to 8" must survive the edit; "significantly improved efficiency" is what happens when it doesn't. Specifics in the source are the most valuable thing in it.
**No-fabrication rule (hard constraint):** specificity must come from the source text or the author, never from the rewrite. Never invent facts, names, numbers, dates, quotes, or citations to replace a vague claim. When a claim needs a specific the text doesn't contain, either cut the claim, keep it and flag it ("[needs a number: how many customers?]"), or ask the author. A bare slot such as "[N]" or "[DATE]" counts as the same thing; `--compare` treats any bracketed span as a flag, so the form is yours to choose as long as the value is not asserted outside one. A vague true sentence beats a specific invented one. Also flag citations that look fake or unrelated to the claim they support, since AI text frequently cites real sources that don't say what's claimed.
Two genres invent a specific kind of specific, and both are worth naming because the invented thing is a commitment someone else has to honor. In support and service copy, watch for promises the author never made: "we will review this and follow up," "a specialist will reach out." In policy, incident, and compliance copy, watch for asserted properties: "auditable," "fully encrypted," "resilient." If the source does not say it, it is not a description, it is a liability.
**When summarizing a source, the words are yours.** Convey what a source says in your own indirect speech, and mark any phrase you reproduce as a quotation. A summary that carries the source's sentences unmarked is a fabrication in the other direction: the reader takes borrowed wording for the writer's own. `prose-scan.py --compare` reports lifted spans; Anthropic's Fable 5.1 guide notes the model does this more than its predecessor, so check summaries of retrieved text on purpose.
### 7. Describe the thing
Prose and docs should describe what something *is*, not narrate the edit that produced it. "This function was added to replace the old lookup" is diff-anchored writing; "This function uses a hash map for O(1) lookups" describes the thing. Changelogs and commit messages are the exception, since there the change is the content.
### 8. Match register and voice
Blog posts: put the reader in the room; "you" beats "people." Scientific writing: appropriate formality, "we" for your own work, cite specific authors. Docs: clarity over voice, imperative mood for instructions. Social posts: fragments and 2–3 specific hashtags are fine; 6+ trailing hashtags is a hard flag.
If the user provides a sample of their own writing, calibrate to it: match its sentence-length pattern, contraction rate, and word choices. Don't "upgrade" their vocabulary. If they write "stuff," keep "stuff." If text already has a voice, don't impose one.
**Dialect is voice, and the draft is its own sample.** British, Australian, Indian, Irish, Canadian, Nigerian, Singaporean and every other variety of English belongs to the writer. If a draft says `organised`, `centre`, `whilst`, `maths` or `10/06/2026`, those are the author's and they stay, along with the punctuation and quotation conventions that travel with them. This rule needs no supplied sample, because the text in front of you is the sample: normalizing a dialect is the same flattening this skill exists to prevent, and it is worse than most, because it edits who the writer is rather than how carefully they wrote. Convert only when the user asks or a named destination requires it, and say so when you do. A mixed draft is a consistency question to raise, never one to silently resolve toward the variety you saw most in training. A provided voice sample outranks the mechanical rules where they conflict: if the writer's authentic style uses em dashes or triads, their voice wins over the ban. That holds for every rule below, not only the ones that name the exemption.
**Then check it with `python3 scripts/prose-scan.py --voice <sample> <rewrite>`.** It counts the devices the sample demonstrates and reports each one the rewrite dropped or thinned to under half the sample's rate. Reading the sample and naming its habits is not the same as carrying them: on 2026-08-22 a benchmark run catalogued "exclamation for emphasis (\"Twelve!\")" in its own notes and then shipped a rewrite with no exclamation mark in it, five runs out of five. A rule stated more clearly does not fix that. A count does. Traits the sample uses only once are skipped, because one instance is not a habit, and it reports `IMPOSED` when the rewrite runs a device at more than twice the sample's rate: a voice matched by overshooting is not matched.
It protects voice and never habit. Nothing in `references/phrases.md` is covered — throat-clearing, emphasis crutches, meta-commentary, vague declaratives are what any writer produces on autopilot, and a sample full of them is a writer with bad habits rather than a writer whose bad habits are sacred. Where the sample carries any, `--voice` names the categories and says they are not protected, so the exemption cannot be read wider than it is. The plain scan now counts those phrases too, live from `phrases.md`, which is what keeps the two halves the same strength: before that, keeping the author's devices was a count and cutting the author's filler was a memory.
### 9. Vary rhythm
Uniform rhythm survives every word-level fix, so a vocabulary pass will never catch it. Mix short sentences (3–8 words) with long ones (20+). Vary paragraph lengths deliberately; some should be one sentence. Don't stack punchy fragments for manufactured emphasis. A fragment that carries the author's voice is item 3 and this rule is item 6, so the fragment stays; what goes is the stacking that came from the draft's habit. Prefer two items over reflexive triads, but a three-item list is not a crime. The flag is *compulsive* rule of three, not any tricolon.From LarrySequino/skills, MIT.
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 5, 2026 (23 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/LarrySequino/skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from LarrySequino
Cite this page
natural-writing skill. Agent Mart. https://agentmart.dev/skills/larrysequino-natural-writing (last updated 2026-10-24)