Skip to content
Writing
Skill

/deslopify

De-slop pass for any text. Scans for the statistical fingerprints of AI writing (negative parallelism / "not X but Y", em-dash density, rule-of-three, false ranges, puffery vocabulary, uniform cadence, hedged both-sidesing), rewrites by meaning, then re-scans until the text is

BOOST
From plugin
juliusbrussee-skills
1678 skills
Install
$ npx -y skills add juliusbrussee/skills --skill deslopify --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/deslopify

Context preview

The summary Claude sees to decide when to auto-load this skill.

De-slop pass for any text. Scans for the statistical fingerprints of AI writing (negative parallelism / "not X but Y", em-dash density, rule-of-three, false ranges, puffery vocabulary, uniform cadence, hedged both-sidesing), rewrites by meaning, then re-scans until the text is

SKILL.md

deslopify.SKILL.md
name: deslopify
description: >
  De-slop pass for any text. Scans for the statistical fingerprints of AI
  writing (negative parallelism / "not X but Y", em-dash density,
  rule-of-three, false ranges, puffery vocabulary, uniform cadence, hedged
  both-sidesing), rewrites by meaning, then re-scans until the text is clean
  and sits in the right register for its genre: academic article, tweet,
  reddit post, email, blog, docs, marketing. Use when the user says
  "deslopify", "deslop", "de-slop this", "remove the AI tells", "humanize
  this", "make this not sound like AI", or invokes /deslopify. Also use
  before publishing any agent-drafted prose.

Deslopify

Strip the AI fingerprints out of a text and make it good in its genre. The target is prose that reads like one person wrote it for one audience about something they actually know. Detector scores are beside the point; text can score human and still be unreadable.

Why this loops

The "not X but Y" family and its relatives are generative habits. Preference tuning rewards balanced, contrastive, comprehensive-sounding framing, so the contrast move sits deep in the model's priors and surfaces about once a paragraph. Two consequences shape this skill:

1. **You cannot see your own slop.** The priors that produce the pattern also make it invisible on re-read. So detection runs mechanically, as regex against a fixed catalog. "Does this look AI to me?" is not a detection method. 2. **Rewriting reintroduces slop.** Ask a model to remove "it's not just X, it's Y" and out comes "this is less about X than Y", the same move in a wig. Every rewrite therefore gets re-scanned, and the loop runs until a scan comes back clean.

Workflow: **Scan → Diagnose → Rewrite by meaning → Re-scan → (repeat) → Register check.**

Phase 0: Fix the target

Before touching the text, establish:

  • **Genre and venue.** Academic article, tweet, reddit post, LinkedIn, email, blog, docs, marketing. Ask when it isn't stated and isn't obvious from the text. Genre decides which tells are fatal and what "good" means; see [references/voices.md](references/voices.md).
  • **Audience and stance.** Who reads it, and what the author actually claims. Slop fills the space where a claim should be, so you cannot remove it without knowing the claim.
  • **Constraints.** Length limits, required citations, house style.

Phase 1: Mechanical scan

Run the detection patterns from [references/tells.md](references/tells.md) against the text. If the text is in a file, or you can write it to a temp file, run the grep commands in that reference literally: the catalog is written as runnable `grep -Ein` patterns. Otherwise apply each pattern by hand, line by line.

Produce a finding list: line or sentence, matched pattern, tell category. Then run the two structural checks regex can't catch:

  • **Cadence.** Flag any run of 3+ consecutive sentences within ±4 words of the same length, and any paragraph where every sentence has the same shape (subject, verb, elaboration).
  • **Formatting.** Bold scattered through prose, emoji-decorated headers or bullets, "**Term:** definition" bullet lists, headers on a text too short to need them, a tidy intro-three-points-conclusion skeleton.

Report the findings to the user as a short table before rewriting: category, count, worst example. The user should see the diagnosis.

Phase 2: Rewrite by meaning

Go finding by finding. The cardinal rule: never fix a pattern by paraphrasing the pattern. Decide what the sentence asserts, then assert that.

The "not X but Y" family: three-way triage

Every negative parallelism gets exactly one of these treatments:

1. **Strawman negation** (nobody believes X). Delete the X half and assert Y directly, with whatever evidence the text has.

  • *"It's not just a tool, it's a fundamental shift in how teams work"* → *"Teams that adopted it stopped holding standups within a month."*

2. **Real contrast** (people genuinely hold X). Earn it: name who holds X, say concretely why Y beats it. A real contrast survives being made specific; slop doesn't. 3. **Empty claim** (the contrast decorates a sentence that asserts nothing). Delete the sentence. Most cases are this one.

Banned escape hatches, all the same move, all counted as new findings: "less about X than Y", "X matters, but Y matters more", "the real X is Y", "the question isn't X, it's Y", "X? Y." (the rhetorical-question variant), and the em-dash form "— not X, but Y".

Everything else

  • **Puffery and inflated vocabulary** (pivotal, seismic, testament, tapestry, landscape, delve…). Replace with the plain word, or with the concrete fact the puffery hides. "Plays a vital role in" → "does".
  • **Rule-of-three lists.** Keep the strongest item, cut the rest. Where all three carry distinct information, keep them and break the rhythm with different lengths and different syntax.
  • **False ranges** ("from X to Y"). If you can't name a meaningful midpoint between X and Y, name the two things plainly or cut one.
  • **Hedged both-sidesing** ("it's worth noting", auto-counterpoints, "while X, it's also true that Y"). Commit. One opinion, stated, owned. A counterpoint stays only where the author genuinely concedes it.
  • **Uniform cadence.** Vary deliberately. Follow a long sentence with a short one. Fragments are legal. Avoid formulas, since alternating long and short is its own tell; read the paragraph aloud and break wherever the rhythm goes metronomic.
  • **Low specificity.** Replace "many companies" / "studies show" / "recent research" with actual names, numbers, and dates, drawn **only** from the source text, the conversation, or research you actually do. Never invent specifics. Where the author has to supply one, leave a marked placeholder: `[ADD: which study?]`.
  • **Stock skeleton.** Kill throat-clearing openers ("In today's fast-paced world…"), summary conclusions ("In conclusion… Ultimately…"), and engagement-bait endings ("What do you think?"). Start where the
Read more
Ships withjuliusbrussee-skills

Eight personal agent skills for now: Caveman base, Interface Kit, Grill Me, Loop Factory, Junior to Senior, Deslopify, Context Canary, and The Last 20%. This repo is shaped by eight things: Caveman - 70k-star token compression without technical loss.

Get the whole plugin
Stats
168
Stars
13
Forks
Maintained
Maintenance
JavaScript
Language
MIT
License
2mo ago
Last commit
4mo ago
Created
12h ago
Added

Repo: juliusbrussee/skills

Other skills on juliusbrussee-skills.