Make AI output sound human. Strips AI-isms (sycophancy, stock vocab, hedging stacks, em-dash pileups), preserves code/URLs/headings. Plugin for Claude Code, Cursor, Windsurf, Codex, Cline, Copilot, Gemini.
> /plugin marketplace add MohamedAbdallah-14/unslop> /plugin install unslop@unslop-marketplace
Repo: MohamedAbdallah-14/unslop
What's inside
# Claude Code — paste both lines into any session, restart, type /unslop
/plugin marketplace add MohamedAbdallah-14/unslop
/plugin install unslop
Cursor, Windsurf, Cline, Gemini CLI, Codex, or the CLI work too. Install options →
Same facts. Different voice. The hero above is the visual; the table below is the readable form.
I am writing to express my profound enthusiasm for the Marketing Coordinator position at Acme Corp. With over five years of experience navigating the dynamic landscape of digital marketing, I am confident that my comprehensive skill set and passion for innovation make me a robust candidate. I am particularly drawn to Acme's cutting-edge approach, and I would welcome the opportunity to delve into how my background aligns with your team's goals.
Five years in digital marketing, most of it in small teams where nobody else writes the landing pages, so I end up doing it. I saw your Marketing Coordinator posting yesterday. The part about running campaigns end-to-end instead of handing them off to an agency is what pulled me in — that's the work I actually like.
21 out of 21 blind LLM-judge runs preferred the unslop rewrite over the original. See Measured results.
Mostly engineers cleaning up agent output before it ships, and people writing things real humans will read — cover letters, essays, LinkedIn posts. If you're the second category, the non-developer guide skips the jargon. If you're the first: it's a CLI plus a hook plus a regex pass.
[!TIP] Not a developer? Start with GETTING_STARTED.md. Plain English, three copy-pasted lines, real cover-letter examples.
Open any Claude Code session and paste:
/plugin marketplace add MohamedAbdallah-14/unslop
/plugin install unslop
Restart Claude. Type /unslop. Done.
You'll see a [unslop:BALANCED] badge appear in the statusline. Everything Claude writes from here on comes out in a human voice. Type stop unslop to turn it off, /unslop full to turn it up, /unslop-help to see everything.
git clone https://github.com/MohamedAbdallah-14/unslop.git
Open the folder in Cursor. The project rule at .cursor/rules/unslop.mdc loads automatically.
The repository also contains a Cursor Plugin manifest. Until the Marketplace listing is approved, test the installable plugin from a clone:
cd unslop
mkdir -p ~/.cursor/plugins/local
ln -s "$(pwd)" ~/.cursor/plugins/local/unslop
Restart Cursor or run Developer: Reload Window. The rules and skills appear under Customize. Remove the symlink when local testing is finished.
After Cursor approves the public listing, open Customize, search for unslop, select Install, and choose project or user scope. The listing is not live yet.
Open the cloned folder in your IDE. The bundled rule files at .windsurf/rules/unslop.md and .clinerules/unslop.md load automatically.
git clone https://github.com/MohamedAbdallah-14/unslop.git && cd unslop
gemini extensions install ./
Reads gemini-extension.json and loads GEMINI.md + the unslop skill into context.
Clone the repo and open it in Codex. Codex reads the root AGENTS.md before it starts work, so the repository's writing and review rules apply immediately.
To install the reusable bundle from this repository's marketplace:
codex plugin marketplace add MohamedAbdallah-14/unslop --ref main
codex plugin add unslop@unslop-agents-marketplace
The bundle lives at plugins/unslop/ and follows the Codex .codex-plugin/plugin.json format. Public-directory availability is a separate review; the repository marketplace works without claiming that listing is live.
For forks, air-gapped setups, or when you want to see exactly which files get written:
git clone https://github.com/MohamedAbdallah-14/unslop.git
cd unslop
bash hooks/install.sh # macOS / Linux
pwsh hooks/install.ps1 # Windows
What this does:
~/.claude/hooks/ (flat, not a subdirectory)SessionStart and UserPromptSubmit in ~/.claude/settings.json, merged safely via Node (never clobbers existing hooks)[unslop:FULL] shows when activeIdempotent. Re-run anytime to upgrade. The bash installer re-verifies settings.json state on each run; the PowerShell installer checks file presence only, so pass -Force on Windows if settings.json was hand-edited.
pipx install unslop
unslop --deterministic path/to/file.md
For API-backed LLM mode, install the optional SDK with pipx install 'unslop[llm]'. See unslop/README.md for the full CLI surface.
Blind LLM-as-judge preference test. Claude Sonnet 4.5 compares each unslop rewrite against the original without knowing which is which. Seven fixtures, randomized A/B sides, 3 independent runs per fixture = 21 judgments.
| Metric | Baseline | unslop (balanced, 3-run) |
|---|---|---|
| Blind humanness preference | — | 100 % (21/21) |
| Humanized wins / ties / original wins | — | 21 / 0 / 0 |
| AI-ism reduction (rule-counted) | 0 % | 92.1 % (9-fixture suite, 2026-04-28) |
| Flat-paragraph count across suite | 14 | 13 |
| Preservation of code / URLs / headings | — | byte-identical |
Every fixture wins 3/3 runs. Reproduce with python3 evals/perceived_humanness.py --runs 3 (needs ANTHROPIC_API_KEY). Archived at benchmarks/results/humanness/three-run-post-soul-fix-20260421.json.
[!NOTE] Humanness preference is measured by an LLM judge. Detector-score resistance is a different problem entirely. See How it stacks up and When it actually matters. Two different jobs; unslop is honest about both.
subtle keeps the shape, scrubs the fingerprints. balanced is the default. full rewrites with opinion. voice-match mimics a sample. anti-detector applies burstiness, contractions, and specificity moves aimed at ESL false-positive defense — not a GPTZero bypass guarantee.
Code blocks, inline code, URLs, headings, YAML frontmatter, tables, blockquotes — byte-identical on the way out. Deterministic mode fails the run if anything drifts. LLM mode gets the same preservation list as an explicit instruction.
Also catches the newer tells: curly quotes, knowledge-cutoff disclaimers, vague attributions, title-case headings, repeated - **Label:** bullet stacks.
Claude Code, Cursor, Windsurf, Cline, Gemini CLI, OpenAI Codex. The same skill loads in each one through whichever loading mechanism the platform supports. Single source of truth, synced by CI.
Opt-in CLI flag scores text against the TMR detector (99.28 % AUROC on RAID, 125 M RoBERTa), escalates through the mode ladder, prints what it tried.
Save a numeric profile from a sample of your own writing — sentence-length variance, contraction rate, pronoun ratios. Reuse across sessions. No text samples are stored, so the tool can't learn to flatter you over time.
Anthropic Custom Styles sets the ceiling at generation; unslop catches residue afterwards. The ICLR 2026 Antislop paper formalizes that split.
--surprisal-variance returns the DivEye signal — per-token log-probabilities from a local distilgpt2. Flat AI prose lands near 0.6–0.9; literary human prose often exceeds 1.5.
Strip <thinking> / <analysis> / <reasoning> / <scratchpad> wrappers and ## Plan sections from agent output before it ships. Opt-in. Sidecar file preserves the original trace.
FAQ
unslop is a Claude Code plugin with 6 hand-picked skills for content work, indexed on Flowy. Install it with the command on its page. It includes unslop-commit, unslop-file, unslop-help. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it