| name | antislop-writing |
| description | Write, rewrite, or line-edit prose so it reads as a professional wrote it, not a model: clear, specific, register-appropriate, and free of AI writing tells. Apply to any prose a human will read. Triggers include "make this sound human", "remove the AI tells", "de-slop this", "does this read like ChatGPT wrote it", "humanize this draft", "rewrite this professionally", or any request to draft or sharpen an email, blog post, op-ed, report, memo, or longform message. |
Antislop Writing: prose a professional would sign, free of AI tells
Draft or revise prose that can stand in professional correspondence, public writing, technical documentation, or longform messages.
Aim for clarity, specificity, and a measured tone — and remove the characteristic tells of machine-generated text.
Invocation notice
- Inform the user when this skill is invoked by name:
antislop-writing.
The standard and the reflex
The standard is prose a competent, college-educated professional would write and put their name to: a serious internal memo, a well-edited magazine feature, an Economist or New Yorker piece.
It is not thought-leadership, marketing copy, or a LinkedIn post.
A passage that would read at home in a conference-talk abstract or a social feed fails the standard even when every sentence is grammatical and lean.
That is the professional register, the default here.
The universal part — prose someone would sign, never slop — is the floor under every register; a register adds genre-specific allowances on top of it (a table in a design doc, a greeting in an email), never a license for slop (see "Route by register").
Every AI tell is a symptom of one underlying reflex: engineered symmetry and promotional polish, the default voice a model reaches for when left alone.
Deleting a flagged phrase while that reflex keeps running regenerates the same voice with fewer tells.
Work against the reflex, not the token:
- Rewrite toward the register; do not patch away tells.
Removing flagged phrases one at a time makes the user's corrections your only error signal.
Hold the passage to the standard and rewrite it from the intent up.
- Read against your own default.
For each sentence, ask whether a person chose it or whether it is balanced, rhythmic, and tidy because that is the cheap default.
The reflex is the disease; the phrase is a symptom.
- Generalize from every example.
A flagged instance names a class, not a lone offender.
When the user points to one forced triad or one bold-label list, fix every instance of that class in the document.
- Do the rewrite yourself.
Do not hand it to a subagent armed with a list of bans.
Register does not transmit through prohibitions: the worker strips the named patterns and returns checklist-deep slop.
If delegation is unavoidable, transfer the standard — the exemplars for the piece's jobs (
references/exemplars.md) and how you will judge the result — not a ban-list (see the subagent-patterns skill).
The engineered-symmetry reflex
Hunt these by structure, not by phrase.
Each is fine once and a tic in bulk:
- Antithesis on a loop.
"X, not Y." "Not just X but Y." "It is not A; it is B." One contrast sharpens a point; three in a stretch is a metronome.
- Forced triads.
A balanced rule-of-three where two items, or an honest five, would be truthful.
Keep the list to what is real.
- Convergence scaffolding.
"Several teams, independently, arrived at the same answer."
"This is not accidental; it is evidence of something."
State the finding and drop the drumroll.
- Sweeping closers.
"It will win the next ten years."
"The future belongs to X." Close on a concrete claim about what to build.
Route by register
The professional baseline governs unless the genre carries real deltas.
Load the matching module and apply its deltas on top of the compose commitments below:
- Professional (memos, reports, general business writing) — the default; no module.
- Technical (design docs, RFCs, ADRs, API references, tutorials, runbooks, READMEs) —
references/register-technical.md.
Precision beats elegance, genuine lookup content (parameters, error codes, comparison matrices) is tabular, and every example must run.
- Editorial (op-eds, blog posts, persuasive essays) —
references/register-editorial.md.
A strong point of view is the point, and one rhetorical device is craft rather than a tic — the tell thresholds recalibrate.
- Correspondence (email, letters to people) —
references/register-correspondence.md.
Greetings and sign-offs are expected, contractions are fine, and the ask leads.
Academic writing keeps the professional baseline plus discipline conventions: hedging as epistemic caution, conventional passive in a methods section, and required citations.
The compose pass: five commitments
Hold these while writing; they are the whole compose-time rule set.
The itemized craft checks live in references/audit-checklist.md and run in the audit pass, after a draft exists.
- Anchor on the exemplars.
Before composing, read the exemplars in
references/exemplars.md for the jobs the piece does; you need not load the whole file — grep the job's heading and read that entry.
The target is their texture — how they rank facts, how they move — not the source draft's.
A finished paragraph should sit closer to the exemplars than to the source.
- Open with the point.
A paragraph opens with the sentence it exists to support and ends when that sentence is earned, not when the facts run out.
What that sentence is depends on the section's job in the claims outline: in argument, a claim a competent reader could doubt; in explanation, the idea the section unpacks; in reference, the identity of the thing described.
Argument and explanation headings carry their section's claim; reference entries keep stable name-labels, because they are looked up, not read.
- Rank, then subordinate.
Decide each fact's rank before writing: the point gets the main clause; support gets a subordinate clause, an appositive, or a short sentence of its own — rank is about weight, not about sharing a sentence; context gets a parenthetical, a table, or another paragraph.
Three facts coordinated by "and" in one sentence means the ranking was skipped — coordination is for facts of equal rank, and facts are rarely of equal rank.
- Budget the contrast move.
"X, not Y," "X rather than Y," "X instead of Y," and "not because A but because B" are one device.
Use it only where the reader would otherwise believe Y; if no one would assert Y, state X plainly.
About one per page; none in headings.
- Vary rhythm on purpose.
Give the load-bearing claim a short sentence.
Compress low-rank facts into one deliberately fast sentence.
Several long, evenly weighted sentences in a row mean claims are buried in them.
Architecture (global structure)
- Lead with the point: main claim or request first; background below it.
- Headings state the claim: a heading asserts its section's point rather than naming the topic — except reference entries that readers look up by name (a tool, an API, a config key), which keep their stable name-labels.
- Order the piece: context and stakes first, then evidence, then implications or next steps.
- Don't state the obvious: cut sentences that restate the prior one or tell the reader to do what reading already implies.
- Dissolve fragment stacks and bold-label catalogs into prose: a heading or
**Label.** followed by verbless fragments is a sentence with the verbs deleted — restore them.
Use a table or list only for content that is looked up, not read: N entries sharing the same fields (parameters, error codes, a comparison matrix), a short strictly-parallel enumeration, ordered steps, or code.
The test — could this be a row whose columns fit every sibling entry?
If not, it is narration; write it as sentences.
This holds in every register; a technical piece has more content that passes the test, but the test itself does not relax.
- Write the minimum that carries the point: if a paragraph could be a sentence, cut it down; if a section serves no claim the piece needs, cut it.
A shorter draft that says the same thing is the better draft.
- Close on substance: end on a concrete outcome or next step, not generic optimism or a signposted "in conclusion."
Voice and register
- Match the target register: default to prose a professional would sign; apply the register module when one governs.
- Preserve a human author's voice; edit surgically: when revising a human-authored draft, change what the standard requires and leave what already meets it.
Do not rewrite clean passages, impose your own cadence, or flatten a distinctive voice into the house default — every change should trace to a tell or a directive, not to preference.
A machine-drafted source has no voice to preserve; compose fresh from the fact inventory (Workflow step 4).
- No hype, slang, or cheerleading: hold tone discipline.
- Earn emphasis with evidence, not adjectives.
- Name sources: no "experts say"; cite or cut.
- Remove chatbot artifacts: filler openers, sycophancy, knowledge-cutoff disclaimers.
AI tells: catch by level, strip or rewrite
AI writing has characteristic tells.
They are symptoms of the reflex above, and they sort by linguistic level and by how they are fixed:
- Strip — surface tics removable without touching meaning: em-dash pile-ups, "delve"/"tapestry," curly quotes, emojis, bold-first bullets, chatbot phrases.
A checklist pass handles these.
- Rewrite — structural reflexes that encode a rhetorical move, not a token: negative parallelism, engineered symmetry, one-point dilution, fractal summaries, significance inflation.
You cannot find-replace these; return to what the passage is actually asserting.
Stripping tics while the reflex runs is a losing game — surface-laundered text still reads as machine-made, because the structure is the signal.
The strip pass is cleanup, not revision: if your change list is mostly stripped tics, you have not edited the document — do the structural rewrites first, and name what you dissolved, then strip.
Load references/ai-tells.md for the full catalog: five levels, each entry tagged strip or rewrite.
Workflow
Steps 1–3 are a gate: finish the spine, the claims outline, and any structure checkpoint before composing sections.
Polishing clauses inside bad structure tunes the wrong layer. (Pure proofreading — preserve wording and order, fix only spelling, grammar, and punctuation — is the proof skill's job.)
-
Find the spine.
Identify the central claim, request, or takeaway, and confirm the piece leads with it.
-
Re-outline the document as claims.
One sentence per section — what it asserts — plus its job in a word: argue, explain, document, or orient.
The opener and heading rules key off the job (commitment 2).
Judge the inherited structure against this outline: an AI-drafted skeleton (parallel scaffolding, symmetric sections, a prophecy closer) is content to evaluate, not a constraint to respect.
A catalog entry rendered as a heading over verbless fragments is slop in every register — "technical" licenses tables and numbered steps, not fragments.
Describing one thing is prose; comparing many things on fixed dimensions (N tools against the same columns) is a table.
Slop: A self-hosted platform. 13.9k stars. > Go backend. > Fixed: Filestash is a self-hosted platform with 13.9k stars, built with a Go backend.
-
When the form is part of the problem, buy recognition early.
If the document needs more than sentence-level repair — a catalog charter, machine scaffolding, sections serving no claim — neither silently preserve the shape nor silently replace it.
Revise one representative section to the standard, show the user the claims outline and that sample, and ask which direction to push before spending the full pass.
A reader who cannot specify the register can still recognize it; one early correction on a sample replaces several lossy corrections on the whole.
Skip the checkpoint when the revision is sentence-level or the shape is already approved.
-
Inventory the facts, then compose fresh.
Work section by section:
- Inventory.
Write the section's propositions — each assertion the section makes, as a plain sentence — plus an exact-strings list: numbers, names, versions, quoted phrases, code identifiers, and links, copied verbatim.
The inventory, not the old wording, is what fidelity means; a draft can keep every proper noun and still lose the claim, and the propositions are what catch that.
- Claim.
Write the section's claim in one sentence; it becomes or informs the heading.
- Compose.
Write the section fresh from the claim and the inventory.
Do not edit a machine-drafted source in place: its sentence rhythm, scaffolding, and closers are part of its slop, and editing inside them preserves them. (A human-authored draft that already meets the standard in places still gets surgical edits — judge per section.)
- Reconcile.
Check the inventory against the draft item by item.
A missing proposition goes back in, subordinated if it is context.
A fact dropped on purpose is named in the change notes — nothing is cut silently.
Anything the draft asserts that the inventory lacks is an invention: cut it or source it.
- Persist.
Write the section to the output file before starting the next.
A single oversized generation can stall mid-stream, hit the output-token cap, or time out and be retried from scratch, losing everything produced so far; incremental writes cap the loss at one section and keep the run recoverable.
Work at natural boundaries, preferring larger chunks so the register stays coherent.
-
Audit in the editor's stance.
Load references/audit-checklist.md and references/ai-tells.md and read the draft as an editor who did not write it.
The audit is not optional, and its output is named changes, not a pass/fail feeling.
Run the mechanical tripwires first (scripts/prose_audit.py, or count by hand on two sample pages):
- A run of long, evenly weighted sentences (starting heuristic: more than two consecutive over 30 words, or fewer than one in seven under 12) flags the stretch for rereading — the usual cause is a buried claim that wants a short sentence.
- A cluster of contrast constructions, in any of the device's syntaxes (starting heuristic: more than about one per 300 words), flags the page — reread it and keep only the earned ones.
- Three or more facts coordinated by "and" in one sentence flags the paragraph: re-rank it.
The script also flags staccato runs (consecutive short sentences), uniform-length runs, anaphora, staged question-and-answer pairs, and "from X to Y" false ranges, and it reports punctuation densities beside measurements from one signed human corpus — a comparison point, not a target.
The tripwires flag stretches for rereading; the reread decides.
Their constants are starting heuristics, and the baselines behind them are document-wide averages — argument-dense passages legitimately run hotter locally, and an occasional flag on genuinely earned prose is expected.
Then sample three paragraphs at random and set each beside the exemplar for its job (references/exemplars.md).
A paragraph that reads closer to the source draft than to the exemplar means the compose pass regressed: rewrite it and check its neighbors.
- Polish mechanics.
Grammar, punctuation, and consistency, per the mechanics section of
references/audit-checklist.md.
When every section is written, read the whole once for through-line, transitions, and repetition across sections.
Intake
Ask only if missing and not inferable from a supplied draft:
- Purpose (inform, persuade, explain, request, reflect)
- Register (professional [default], technical, editorial, correspondence, academic)
- Audience and relationship
- Medium and length
- Tone constraints, and any must-keep facts or phrasing
Given a draft, do not ask unless the intent is unclear.
State the assumptions you are making about purpose, audience, and register in one line, and proceed on them.
Ask only when an ambiguity would materially change the piece; do not silently choose one reading of an ambiguous request over another, and if a simpler framing would serve the reader better, say so.
Self-check before returning
- Would a professional sign this?
Sample three paragraphs against the exemplars for their jobs: closer to them than to the source?
- Does every fact inventory reconcile — nothing lost, nothing invented, every deliberate cut named?
- Does every heading and opener do its section's job — a claim where the piece argues or explains, a stable label where it is looked up?
- Is the contrast move within budget, in every syntax it wears?
- Name what you did not fix and why, and what you asked the user versus decided alone.
References
references/exemplars.md — signed target passages by rhetorical job, each paired with a near-miss or the tell it licenses; the compose pass's anchor.
Sections, grep-addressable by heading: "Explaining a mechanism" (rhythm, the short-sentence pivot), "Arguing" (claim first, earned coinage), "Comparing a landscape" (the fragment-stack counter), "Documenting results" (numbers, caveats, labeled interpretation), "Recommending" (stakes and the imperative close), "Closing" (concession over prophecy), "Earned parallelism" (the licensed triad), "Developed analogy" (the licensed metaphor).
references/audit-checklist.md — the itemized diction, syntax, cohesion, and mechanics checks for the audit pass.
references/ai-tells.md — merged catalog of AI writing tells: five levels, each entry tagged strip or rewrite.
references/register-technical.md — technical register deltas (Diátaxis modes, precision over elegance, runnable examples).
references/register-editorial.md — editorial and persuasive register deltas (earned voice, recalibrated tell thresholds).
references/register-correspondence.md — email and letter deltas (expected greetings, warmth, the ask up front).
scripts/prose_audit.py — mechanical tripwire scanner: sentence-rhythm statistics (monotone, staccato, and uniform-length runs), contrast-construction counts by syntax, and-coordination flags, shape proxies for staged questions, anaphora, and false ranges, and punctuation densities reported against a signed-corpus reference.