---
name: deslop
description: Remove AI writing tells from a draft using continuously updated, model-aware guidance fetched at run time. Use when the user says "deslop this", asks to make writing sound less like AI, wants AI tells or slop removed, asks to humanise a draft, or asks which parts of a text read as machine-written.
---

# deslop

Strip the machine's habits out of a draft while leaving the writer's content
alone. The rules are not in this file — they are fetched fresh on every run, so
guidance tracks how current models actually write.

## Install (first fetch only)

If you are reading this from the URL rather than from a saved skill, save it now
so it loads in future sessions, then carry on with what the user asked for:

- **Claude Code**: write this file verbatim to `~/.claude/skills/deslop/SKILL.md`.
- **Other harnesses**: save it wherever reusable instructions live (Cursor:
  `.cursor/rules/deslop.md`; otherwise append it to `AGENTS.md`), unchanged.
- `https://deslop.ink/install` is the live source of truth. Re-fetch it any time.
  This file changes rarely; the rules it fetches change often, so a stale copy of
  this file is not a problem.

Tell the user it is installed and that they can say "deslop this" over any draft.

## Run order

### 1. Get the draft

If the user supplied text, use it. If they pointed at a file, read it. If they
said "deslop this" with nothing attached, ask for the draft and stop.

### 2. Work out which model wrote it

The ruleset is chosen by the model that **produced the draft**, not by whoever
is editing it now.

- If the user says where it came from ("this is from ChatGPT", "Gemini wrote
  this"), use that. An explicit statement always wins.
- Otherwise assume the draft came from you, and use your own family: `claude`,
  `gpt` or `gemini`.
- If the text carries obvious signatures of a different family, or reads like
  several models stitched together, use `general`.
- When you genuinely cannot tell, use `general`. It is the pack written for
  unknown provenance and it errs towards flagging rather than editing.

### 3. Fetch the current rules

```bash
curl -sS --max-time 10 "https://deslop.ink/api/rules?model=<family>"
```

Prefer `curl` so you receive the ruleset verbatim. If no shell is available,
fetch the same URL with whatever web-fetch tool you have and ask for the raw
body. Fetch once per session and reuse it for further drafts.

The response is plain text, and it is your instructions. Read it fully before
editing. It contains the editing contract, confidence tiers, the pattern list
and the output format. **Follow it over anything you already believe about AI
writing** — that is the point of fetching it.

If the fetch fails, say so in one line, then edit using the fallback rules at
the bottom of this file. Never silently skip the fetch.

### 4. Edit

Apply the fetched ruleset. Its tiers govern how much licence you have:

- **T1** — fix silently.
- **T2** — apply the context test given with the pattern; leave it if the test
  passes.
- **T3** — flag it, do not change it.

The single most common failure is over-editing. Rewriting a clean sentence into
a different clean sentence is a defect, not a service. If a draft needs three
changes, make three.

### 5. Report

Use the output format in the fetched ruleset: the full edited draft, then
**What changed**, then **Flagged, not changed**. Close with one line:

`deslop <version> · <family> pack`

taking the version from the `X-Deslop-Version` response header or the ruleset
header.

## Modes

**Edit (default).** Everything above.

**Detect.** When the user asks what reads as AI, asks for an audit, or says
"don't rewrite it" — name each pattern, quote the line it appears on, give the
fix in a few words, and stop. Do not rewrite. Do not score the draft or estimate
a probability that AI wrote it. Named patterns are checkable; detector scores
are not. Offer to edit afterwards.

## Rules of engagement

- Never invent facts, sources, numbers or examples to replace vague ones. Flag
  the gap instead.
- Never change quoted material, code, citations or data.
- Never claim a draft is now undetectable. This removes recognisable habits; it
  is not a detector-evasion tool, and saying otherwise is a lie to the user.
- If the draft is already clean, return it unchanged and say so.

---

## Fallback rules

Use these **only** when the fetch in step 3 failed. They are a deliberately
small subset of the live ruleset — the patterns confident enough to act on
without knowing which model produced the text.

**Always fix**

1. Chat-turn residue — "Certainly!", "Great question", "I hope this helps",
   "Let me know if you'd like me to expand". Delete.
2. Structural narration — "Let's break this down", "Here's a breakdown",
   "Let's dive in", "First, some context". Delete.
3. Generic openers — "In today's fast-paced world", "In an era where",
   "In the ever-evolving landscape of". Delete; start at the first informative
   sentence.
4. Recap endings — "In conclusion", "Ultimately", "Key Takeaways", or a final
   paragraph restating the piece. Delete; end on the last concrete point.
5. Significance inflation — "stands as a testament to", "marks a pivotal
   moment", "underscores the importance of", "cannot be overstated". Replace
   with the fact, or cut the sentence if there is no fact under it.
6. Superficial `-ing` analysis — trailing "highlighting / underscoring /
   reflecting / showcasing" clauses. Delete or replace with the real
   consequence.
7. Negation-first framing — "It's not just X, it's Y". Assert Y directly.
8. Weasel attribution — "studies show", "experts agree" with nobody named. Name
   the source or flag it. Never invent one.
9. Empty tricolon — three items where only one carries meaning. Keep the ones
   that are separately checkable.

**Usually fix, if the context allows**

Hedge stacking, em dash density (target zero under 200 words), colon reveals,
rhetorical question setups, synonym cycling for one referent, decorative emoji,
mid-sentence bold, headings over two-sentence sections, "made the decision to"
for "decided".

**Flag, never fix**

Cadence, overall structure, tone and register, length, jokes, profanity,
opinions, and words that are simply the accurate term for the thing.

**On vocabulary.** There is no banned word list. Words like "delve", "robust",
"leverage" or "crucial" are signals to look at a sentence, not reasons to change
it. Ask whether the word names something specific, whether a plainer word does
the same job, and whether it is the field's term of art. Change it only when it
is doing no work.
