Deslop
Agent Skills that strip AI writing tells from copy - em dashes, 'it's not X, it's Y' constructions, hedging, and bloat - so text reads like a human wrote it, with evals to verify.
npx -y skills add Paldom/noslop --skill deslopAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 17 days oldThe repository was created 17 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Rewrites copy to strip AI-writing tells while preserving meaning and voice - bounded edits on flagged spans only, protected quotes/code/numbers, dialect-safe, with a deterministic post-check. Use when the user asks to deslop, de-AI, strip AI slop or AI tells, or make a draft read human. Not for scoring-only requests, judging an existing edit pair, grammar or tone fixes, or authorship detection.
SKILL.md
5.8 KB, as published. Nobody here has run it
deslop
Purpose
Strip AI-writing tells (negative parallelism, significance inflation, hedge stacks, formatting reflexes, era vocabulary, uniform rhythm) from a draft so it reads human — with the edits bounded by deterministic tooling. It fixes the two observed failures of prompt-only humanizers: silent damage (facts, quotes, and code drift during "improvement") and over-correction (real writers, especially non-native ones, get sanded flat; absolute rules like "zero em dashes" produce a new tell instead of removing one).
When to use
- "deslop / de-AI this", "strip the AI slop / tells", "this reads machine-written — clean it up", "make it read human without changing meaning"
- Cleaning AI-assisted drafts before publishing, with proof nothing broke
When NOT to use
- Score or report only, no edit wanted →
slop-lint. - Checking an edit that already happened →
deslop-verify. - Grammar/typo fixing, tone shifts, shortening, translation — different jobs; never smuggle them into a de-slop pass.
- "Beat the AI detector" requests: decline the detector-evasion framing; offer editorial cleanup instead (this skill improves writing, not evasion).
Workflow
Sibling scripts (installed together with this skill):
LINT="${CLAUDE_SKILL_DIR}/../slop-lint/scripts/slop_lint.py",
VERIFY="${CLAUDE_SKILL_DIR}/../deslop-verify/scripts/verify_edit.py".
If a sibling is missing (partial install), do not edit blind — the no-op
gate, span bounds, and verification all depend on the tools. Say which tool
is missing, deliver playbook-based suggestions (a list of flagged spans and
proposed transforms, not an applied rewrite), and point to the full install.
- Lint first (no-op gate). Save the original to a temp file; run
python3 "$LINT" original.md --genre <genre> --json > lint.json. If the band isclean(score < 25), return the text untouched and say why — editing clean text is over-correction, not service. If confidence islow(under 150 words), the score gates don't apply: make bounded playbook edits to clearly flagged spans only, note the low confidence, and still verify in step 5. - Inventory before editing. Note: protected spans (quotes, code,
numbers, URLs, names), the writer's own habits (their dashes/triads are
their voice), and any consistent dialect/L2 features. Read
references/tells-playbook.mdfor the per-family transforms and the dialect guard — it is the edit contract, not advice. - Bounded edits. Edit only lint-flagged spans plus their sentence; copy every unflagged sentence verbatim. Apply the playbook transform for each active family; prefer deleting padding over swapping synonyms; never invent facts, anecdotes, typos, or slang to "add humanity".
- Re-lint the result. Accept the pass only if the score dropped ≥15
points or the band is now
clean. If not, do one more constrained pass on remaining flagged spans. Two passes maximum — then stop and report what remains rather than thrash. - Verify, fail closed.
python3 "$VERIFY" original.md edited.md --lint-report lint.json. On any non-zero exit: exit 2 (hard invariant broken) → restore the lost content or revert to the original; exit 1 (verify could not run) → treat the rewrite as unverified and do not present it as done. Never present a rewrite that failed or skipped verification. - Report. Deliver the edited text plus: before/after scores, families fixed, verify result (state it as surface integrity, not proven meaning), and anything deliberately left (dialect features, writer habits, meaning-bearing hedges, remaining warn-band items).
Output spec
The edited text, changed as little as possible: all hard invariants pass in
deslop-verify, edit ratio ≤ 0.30 (near 0 for clean input), length within
±25%, lint score reduced ≥15 points or banded clean, unflagged prose
byte-equal, and a report of before/after scores + verify status. On clean
input: the original text, unchanged, with the no-op explanation.
Gotchas
- The dialect/ESL guard is non-negotiable. Never convert nonstandard, regional, or L2 English toward Standard American English; if it could be dialect or error, leave it. Evidence and the full rule: the playbook's "Dialect and ESL guard" section (26% vs 92% marker retention; 61.2% detector false-positive rate on non-native writing).
- Meaning-bearing hedges are content. "May cause drowsiness" and "does not establish causation" must survive; only stacked hedges are tells.
- Zero em dashes is itself a tell. Reduce flagged clusters; never purge.
- Don't chase score 0. Below warn is done. Looping to a perfect score Goodharts the linter and flattens voice — two passes, then stop.
- A second deslop of your own output should change < 2%. If it doesn't, the first pass was over-editing; revert and report.
- Drafts produced late in a long chat session tend to carry more tells than fresh-session drafts — lint and deslop the final text in a fresh pass rather than polishing mid-thread.
- Rewriting wholesale because "everything sounds AI" is refused by design; the edit budget exists to protect the writer.
Pointers
references/tells-playbook.md— per-family transforms, what NOT to flag, dialect guard, evidence with primary sources.- Sibling tools:
slop-lint(scoring, thresholds provenance) anddeslop-verify(invariants, over-correction gates).