de-slop
Rejected
by the
red pen
A skill for every AI tool · v0.4.1

Make it survive a
hostile editor's red pen.

Strip the AI slop from prose and sharpen what's underneath — without trading it for louder slop.

Score your text ↓ Install for your tool stdlib-only · zero deps · MIT
MANUSCRIPT — para. 1red pen: on
✕ Before — flagged

It's worth noting that, in many cases, caching can often lead to significant improvements in performance for a wide variety of applications.

hedging buries a real claim ↘ slop_band · weak
✓ After — sharpened

Caching improves performance for many applications.

same claim, stated ✓ slop_band · strong
§ 01

Two hard rules, read first.

Most "humanizers" swap AI-slop for forced hot takes, em-dash theatrics, and fake first-person. This skill treats that as a failure, not a fix.

01

Fidelity over flair

Preserve the original meaning and claims exactly. Only subtract hedging and filler, and sharpen what's already there. Never inject stance or personality the content didn't earn.

Swapping AI-slop for edgy-slop is a failure.
02

Flag hollow spans, don't fabricate

Some prose is weak because it has no point to make — rewording can't save it. Those get flagged for a human, never faked with an invented hot take.

The bar is a thinking author, not a loud one.
§ 02

The loop: detect, judge, rewrite, prove.

Paragraph by paragraph. It reports rather than overwrites — you decide what to accept.

STEP 0 · 1

Scope & pre-flag

Skip code, headings, lists. A deterministic flag_slop.py pass surfaces obvious tells as candidates.

STEP 2

Judge

Score each paragraph against the rubric: strong · moderate · weak · fail, with a one-line reason.

STEP 3

Triage

The central call: is it rewordable (a real claim, buried) or hollow (no claim at all)?

STEP 4

Rewrite

Subtract the hedging, surface the buried claim, keep the meaning identical. Fidelity guardrails apply.

STEP 5

Self-score

Re-judge against the rubric. Bar is strong; cap is 3 passes. Can't reach it? Keep the best and flag it.

STEP 6

Report

Humanized text + a per-paragraph change log + flags. Non-destructive, fail-honest, idempotent.

§ 03

It's measurable — and it knows its limits.

A zero-dependency eval gates the detector on every push across Python 3.9–3.13. No pip install — that's the portability proof.

python3 tests/eval.py
de-slop detector eval
(tests DETECTOR behaviour only — not humanness)
corpus: 29 slop / 11 clean / 11 over-correction

  recall              1.0   gate >= 0.95   PASS
  clean_specificity   1.0   gate >= 0.95   PASS
  oc_recall           1.0   gate >= 1.00   PASS
  false_positives     0     gate <= 1      PASS

# the catch the thesis insists on:
over-correction recall 1.0  # louder-slop caught too

RESULT: PASS

Catches louder-slop too

The eval gates over-correction recall at 100%: performed candor, em-dash theatrics, and manufactured stakes must be caught — not just timid AI-slop.

Surface tells, not humanness

The slop_band score measures pattern density, never claim presence. A clean-scoring paragraph can still be hollow — and the skill says so.

Sentence-aware buzzwords

"We leverage connection pooling" stays silent; "seamless platform empowers teams to leverage cutting-edge X" flags the whole cluster.

Honest about its blind spots

A documented catalogue marks which tells regex can't see — hollowness, fabricated stance — so a quiet detector is never mistaken for clean prose.

29 tells, including stop-slop's

The taxonomy folds in the stop-slop corpus and its community PRs — assistant voice, transformation chains, corrective reveals — as weighted, idiom-anchored rules, not a blunt block-list.

§ 04

Score your own text for AI slop.

The repo's detector, ported to run in your browser. Paste prose, get a slop score and the flagged tells. Nothing is uploaded — it runs entirely on this page.

runs locally · your text never leaves the page · same rules as flag_slop.py
paste to score
humanness · 100 = no surface tells
failweakmoderatestrong

Surface tells only — not a humanness judge. A clean score means "no pattern-matched slop," never "good writing." Hollow prose with a real-sounding shape can still score high; only a human (or the full skill loop) catches an absent claim.

§ 05

Install for your tool.

One source, every harness. Each adapter is generated from the same SKILL.md — drop it in and ask "humanize this." Zero dependencies.

Claude Code skill

git clone https://github.com/isatimur/de-slop \
  ~/.claude/skills/de-slop

Then ask: "humanize this."

SKILL.md ↗

Cursor .mdc rule

mkdir -p .cursor/rules && curl -o \
 .cursor/rules/de-slop.mdc \
 https://raw.githubusercontent.com/isatimur/de-slop/main/adapters/cursor/de-slop.mdc
adapters/cursor/…mdc ↗

GitHub Copilot instructions

mkdir -p .github/instructions && curl -o \
 .github/instructions/de-slop.instructions.md \
 https://raw.githubusercontent.com/isatimur/de-slop/main/adapters/copilot/de-slop.instructions.md
adapters/copilot/… ↗

Codex & agents AGENTS.md

curl -o AGENTS.md \
 https://raw.githubusercontent.com/isatimur/de-slop/main/adapters/AGENTS.md

The cross-tool standard — also read by Amp, Jules, Pi, Hermes, OpenCLAW.

adapters/AGENTS.md ↗

Gemini CLI GEMINI.md

curl -o GEMINI.md \
 https://raw.githubusercontent.com/isatimur/de-slop/main/adapters/gemini/GEMINI.md
adapters/gemini/GEMINI.md ↗

Windsurf rule

mkdir -p .windsurf/rules && curl -o \
 .windsurf/rules/de-slop.md \
 https://raw.githubusercontent.com/isatimur/de-slop/main/adapters/windsurf/de-slop.md
adapters/windsurf/… ↗

Any chatbot paste-anywhere

Copy the self-contained prompt into ChatGPT, Claude, or Gemini, then paste your text under it. No install, no account, nothing to set up.

adapters/PROMPT.md ↗

CLI detector uv · pipx

# run the deterministic flagger anywhere — recommended: uv
uvx --from git+https://github.com/isatimur/de-slop \
  de-slop yourfile.md --score

# or install it as a standalone tool
uv tool install git+https://github.com/isatimur/de-slop
de-slop yourfile.md            # JSON of flagged tells

Zero runtime dependencies, stdlib only. pipx install works too.