Deslop
Slop is the absence of a decision — the statistically likeliest filler standing where a
choice should have been made. That is the test for every finding: was this chosen? The
same construction, picked deliberately in the author's voice, is not slop. The goal is
never "clean" text; it is text where every word survived a decision.
Two facts shape the method:
- You cannot see your own slop. Slop patterns are artifacts of preference tuning,
not vocabulary mistakes — the model that produces them rates them as good writing on
re-read. Verification is therefore mechanical (re-scan with the checks in
references/checks.md), never impressionistic.
- Overcorrection is also slop. Scrubbed-flat prose, fake typos, forced slang, and
mechanical long/short sentence alternation are their own recognizable genre. Voice
is protected before anything is subtracted.
Scope
This skill governs delivered prose — text a reader consumes as writing: copy, posts,
essays, emails, marketing, narrative documentation, anything whose job is to be read.
It does not govern working documents — reference files, specs, agent and skill
instructions, changelogs, schemas, routing tables, navigation furniture. There a character
is doing structural work, not rhetorical work: a · separating two links in a table is not
an aside, and a dash setting off a column label is not a dramatic pause. Applying the
typographic rules there produces churn without a reader who benefits.
The test: is this read as writing, or read to find something? Only the first is in scope.
Everything below — the dash budget and middle-dot ban especially, since they are about a
reader's ear for machine prose — assumes the first. This skill's own reference files are
out of scope by that rule, and are written accordingly.
Modes
| Mode |
Trigger |
What happens |
| Edit (default) |
text to deslop/humanize |
Full process below; rewrite delivered with a short change note |
| Detect |
"is this AI?", "find the tells" |
Name patterns, quote the lines. Never output an "AI likelihood" score — named patterns are evidence, detectors are guesses. Do not edit. |
| Code |
a diff or "deslop this code" |
Code checklist below, diff-scoped |
| UI |
pages, components, styling |
Route to the hallmark skill — do not improvise UI rules here |
Principles
- Protect voice first. Before editing, list 3–5 voice signals to preserve
(vocabulary level, cadence, bluntness, humor, uncertainty style, digressions,
punctuation habits). A user-supplied writing sample overrides every default in this
skill, including the dash budget. See references/voice.md.
- Delete first, rewrite second. Most slop guards nothing — cut it. Rewrite only
what carries meaning. Cap total deletion at ~25% of the piece; past that you are
gutting content, not removing slop.
- Rewrite by meaning, never by paraphrasing the pattern. Ask what the sentence
is for, then say that plainly. A paraphrase that preserves the move ("the real X
is Y" for "not X but Y") is a new finding, not a fix — the banned escape hatches
are listed in references/structures.md.
- Fake-profound lines are deleted, not re-metaphored. Replacing one purple kicker
with a better metaphor reproduces the disease.
- Never invent facts. Specificity comes from the source or from the author.
Where a concrete detail is missing, leave
[ADD: which study? what year?] — never
a plausible-sounding fill. Before delivering, answer explicitly: does the rewrite
state any fact, name, number, date, or citation not present in the source?
- One strong finding beats three weak ones. Bold + scare quotes + a dash aside on
the same phrase is one stacked tell, not three. Consolidate before reporting.
- Every rule carries its exemption. House-style Title Case, genuine tricolons,
term-definition bullets in docs, a single "however" — the exemption columns in the
reference files are as binding as the rules.
- Match the register. Reddit, academic, docs, and marketing have different fatal
tells and different legitimate structures — check the register guide in
references/voice.md before flagging.
Process (Edit mode)
- Read whole, capture voice. Read the full piece once. Note register + audience.
Write down the 3–5 protected voice signals.
- Scan. Sweep against references/patterns.md (surface
tells), references/structures.md (structural moves), and
the mechanical checks in references/checks.md. Collect
findings with quotes.
- Triage. Apply exemptions; consolidate stacked tells; drop anything that is a
defensible authorial choice or a protected voice signal.
- Rewrite. Delete-first. Per finding: what is this sentence for? Say that, in the
author's voice. No escape-hatch paraphrases.
- Verify mechanically. Re-run the scan against your own output. Any hit is a new
finding. Loop at most 3 passes; if a passage still fires, rewrite it from the bare
claim in plain declarative sentences.
- Fact check. Answer the invented-facts question from Principle 5.
- Deliver. Final text plus a change note of at most 8 lines, grouped by pattern.
If the note needs more than 8 lines, you changed too much — reconsider.
Quick checks (30 seconds, before delivering)
- Any middle-dot separator (
·) or em-dash (—)? In delivered prose, never use either;
both are top AI tells. Use normal punctuation or layout for lists and navigation. When
a dash is genuinely warranted, make it an en-dash (–). Dash budget stays near 0 (≤2 in
a long piece); never swap a dash for parentheses, restructure the sentence instead.
(Voice sample overrides. Working documents are out of scope — see Scope.)
- Any "not X but Y" — or any of its escape-hatch paraphrases?
- Any inanimate noun performing a human action ("the data tells us")?
- Three items where two would do? Three sentences of the same length in a row?
- Any sentence that sounds like a pull-quote? Delete it.
- Opener that clears its throat ("Here's the thing")? Ending that recaps or reassures?
- Any bold mid-prose, emoji in headings,
**Label:** restatement bullets?
- Any fact, number, or name the source doesn't contain?
- Would the author actually say this sentence out loud?
Code mode
Scope: the diff (git diff main or this session's changes), not the whole repo. Keep
behavior unchanged; minimal focused edits; match the file's existing style. Remove:
- Comments a human wouldn't write — narrating the obvious, explaining the change
to a reviewer ("// added to handle the new case"), restating the next line. Keep only
comments stating what the code cannot: constraints, whys, workarounds.
- Defensive bloat — try/catch, null checks, and validation abnormal for that area,
especially on trusted/already-validated codepaths; generic
except Exception /
empty catch blocks.
- Type evasion —
any casts and assertions used to silence the checker instead of
fixing the type.
- Placeholder naming —
data, result, temp, handleData, Manager/Helper
suffixes carrying no specificity.
- Ceremony — zero-information docstrings, single-use wrapper layers, speculative
abstraction, dead code, debug leftovers, README boilerplate ("This project aims
to..."), emoji in code or docs.
- Any other style inconsistent with the file.
Run the tests after. Report in 1–3 sentences.
Credits
Merged and reworked from: blader/humanizer
(Siqi Chen; the Wikipedia "Signs of AI writing" lineage — also the root of the Zed,
Hermes, jpeggdev, softaworks, and humanizer-zh forks),
hardikpandya/stop-slop,
juliusbrussee fuck-slop,
petergyang/no-ai-slop,
jpeggdev/humanize-writing,
realrossmanngroup/no_ai_slop_writing_rules,
nousresearch/hermes-agent humanizer,
worldwonderer/oh-story-claudecode story-deslop,
cursor/plugins deslop, and
brianlovin/agent-config deslop.
All doctrine belongs to its authors; this is a transformative merge with attribution.
1---2name: deslop3description: Remove AI slop from prose and code — the merged canon of the field's most effective deslop/humanizer skills (blader/humanizer, stop-slop, fuck-slop, no-ai-slop, humanize-writing, Rossmann's rules, story-deslop, cursor/deslop and others), deduplicated and reworked. Use when the user wants to deslop, humanize, de-AI, or naturalize text; remove AI patterns, tells, or "AI smell" from writing; check whether text reads as AI-generated; or clean AI slop from a code diff. For UI/design slop use the hallmark skill instead.4---56# Deslop78Slop is the absence of a decision — the statistically likeliest filler standing where a9choice should have been made. That is the test for every finding: *was this chosen?* The10same construction, picked deliberately in the author's voice, is not slop. The goal is11never "clean" text; it is text where every word survived a decision.1213Two facts shape the method:14151. **You cannot see your own slop.** Slop patterns are artifacts of preference tuning,16 not vocabulary mistakes — the model that produces them rates them as good writing on17 re-read. Verification is therefore mechanical (re-scan with the checks in18 [references/checks.md](references/checks.md)), never impressionistic.192. **Overcorrection is also slop.** Scrubbed-flat prose, fake typos, forced slang, and20 mechanical long/short sentence alternation are their own recognizable genre. Voice21 is protected before anything is subtracted.2223## Scope2425This skill governs **delivered prose** — text a reader consumes *as writing*: copy, posts,26essays, emails, marketing, narrative documentation, anything whose job is to be read.2728It does not govern **working documents** — reference files, specs, agent and skill29instructions, changelogs, schemas, routing tables, navigation furniture. There a character30is doing structural work, not rhetorical work: a `·` separating two links in a table is not31an aside, and a dash setting off a column label is not a dramatic pause. Applying the32typographic rules there produces churn without a reader who benefits.3334The test: *is this read as writing, or read to find something?* Only the first is in scope.35Everything below — the dash budget and middle-dot ban especially, since they are about a36reader's ear for machine prose — assumes the first. This skill's own reference files are37out of scope by that rule, and are written accordingly.3839## Modes4041| Mode | Trigger | What happens |42| --- | --- | --- |43| **Edit** (default) | text to deslop/humanize | Full process below; rewrite delivered with a short change note |44| **Detect** | "is this AI?", "find the tells" | Name patterns, quote the lines. Never output an "AI likelihood" score — named patterns are evidence, detectors are guesses. Do not edit. |45| **Code** | a diff or "deslop this code" | Code checklist below, diff-scoped |46| **UI** | pages, components, styling | Route to the `hallmark` skill — do not improvise UI rules here |4748## Principles49501. **Protect voice first.** Before editing, list 3–5 voice signals to preserve51 (vocabulary level, cadence, bluntness, humor, uncertainty style, digressions,52 punctuation habits). A user-supplied writing sample overrides every default in this53 skill, including the dash budget. See [references/voice.md](references/voice.md).542. **Delete first, rewrite second.** Most slop guards nothing — cut it. Rewrite only55 what carries meaning. Cap total deletion at ~25% of the piece; past that you are56 gutting content, not removing slop.573. **Rewrite by meaning, never by paraphrasing the pattern.** Ask what the sentence58 is *for*, then say that plainly. A paraphrase that preserves the move ("the real X59 is Y" for "not X but Y") is a new finding, not a fix — the banned escape hatches60 are listed in [references/structures.md](references/structures.md).614. **Fake-profound lines are deleted, not re-metaphored.** Replacing one purple kicker62 with a better metaphor reproduces the disease.635. **Never invent facts.** Specificity comes from the source or from the author.64 Where a concrete detail is missing, leave `[ADD: which study? what year?]` — never65 a plausible-sounding fill. Before delivering, answer explicitly: *does the rewrite66 state any fact, name, number, date, or citation not present in the source?*676. **One strong finding beats three weak ones.** Bold + scare quotes + a dash aside on68 the same phrase is one stacked tell, not three. Consolidate before reporting.697. **Every rule carries its exemption.** House-style Title Case, genuine tricolons,70 term-definition bullets in docs, a single "however" — the exemption columns in the71 reference files are as binding as the rules.728. **Match the register.** Reddit, academic, docs, and marketing have different fatal73 tells and different legitimate structures — check the register guide in74 [references/voice.md](references/voice.md) before flagging.7576## Process (Edit mode)77781. **Read whole, capture voice.** Read the full piece once. Note register + audience.79 Write down the 3–5 protected voice signals.802. **Scan.** Sweep against [references/patterns.md](references/patterns.md) (surface81 tells), [references/structures.md](references/structures.md) (structural moves), and82 the mechanical checks in [references/checks.md](references/checks.md). Collect83 findings with quotes.843. **Triage.** Apply exemptions; consolidate stacked tells; drop anything that is a85 defensible authorial choice or a protected voice signal.864. **Rewrite.** Delete-first. Per finding: what is this sentence for? Say that, in the87 author's voice. No escape-hatch paraphrases.885. **Verify mechanically.** Re-run the scan against your own output. Any hit is a new89 finding. Loop at most 3 passes; if a passage still fires, rewrite it from the bare90 claim in plain declarative sentences.916. **Fact check.** Answer the invented-facts question from Principle 5.927. **Deliver.** Final text plus a change note of at most 8 lines, grouped by pattern.93 If the note needs more than 8 lines, you changed too much — reconsider.9495## Quick checks (30 seconds, before delivering)9697- Any middle-dot separator (`·`) or em-dash (—)? In delivered prose, never use either;98 both are top AI tells. Use normal punctuation or layout for lists and navigation. When99 a dash is genuinely warranted, make it an en-dash (–). Dash budget stays near 0 (≤2 in100 a long piece); never swap a dash for parentheses, restructure the sentence instead.101 (Voice sample overrides. Working documents are out of scope — see Scope.)102- Any "not X but Y" — or any of its escape-hatch paraphrases?103- Any inanimate noun performing a human action ("the data tells us")?104- Three items where two would do? Three sentences of the same length in a row?105- Any sentence that sounds like a pull-quote? Delete it.106- Opener that clears its throat ("Here's the thing")? Ending that recaps or reassures?107- Any bold mid-prose, emoji in headings, `**Label:** restatement` bullets?108- Any fact, number, or name the source doesn't contain?109- Would the author actually say this sentence out loud?110111## Code mode112113Scope: the diff (`git diff main` or this session's changes), not the whole repo. Keep114behavior unchanged; minimal focused edits; match the file's existing style. Remove:115116- **Comments a human wouldn't write** — narrating the obvious, explaining the change117 to a reviewer ("// added to handle the new case"), restating the next line. Keep only118 comments stating what the code cannot: constraints, whys, workarounds.119- **Defensive bloat** — try/catch, null checks, and validation abnormal for that area,120 especially on trusted/already-validated codepaths; generic `except Exception` /121 empty catch blocks.122- **Type evasion** — `any` casts and assertions used to silence the checker instead of123 fixing the type.124- **Placeholder naming** — `data`, `result`, `temp`, `handleData`, `Manager`/`Helper`125 suffixes carrying no specificity.126- **Ceremony** — zero-information docstrings, single-use wrapper layers, speculative127 abstraction, dead code, debug leftovers, README boilerplate ("This project aims128 to..."), emoji in code or docs.129- **Any other style inconsistent with the file.**130131Run the tests after. Report in 1–3 sentences.132133## Credits134135Merged and reworked from: [blader/humanizer](https://github.com/blader/humanizer)136(Siqi Chen; the Wikipedia "Signs of AI writing" lineage — also the root of the Zed,137Hermes, jpeggdev, softaworks, and humanizer-zh forks),138[hardikpandya/stop-slop](https://github.com/hardikpandya/stop-slop),139[juliusbrussee fuck-slop](https://github.com/juliusbrussee/skills),140[petergyang/no-ai-slop](https://github.com/petergyang/no-ai-slop),141[jpeggdev/humanize-writing](https://github.com/jpeggdev/humanize-writing),142[realrossmanngroup/no_ai_slop_writing_rules](https://github.com/realrossmanngroup/no_ai_slop_writing_rules),143[nousresearch/hermes-agent humanizer](https://github.com/nousresearch/hermes-agent),144[worldwonderer/oh-story-claudecode story-deslop](https://github.com/worldwonderer/oh-story-claudecode),145[cursor/plugins deslop](https://github.com/cursor/plugins), and146[brianlovin/agent-config deslop](https://github.com/brianlovin/agent-config).147All doctrine belongs to its authors; this is a transformative merge with attribution.