A pair of Claude skills that remove AI-generated filler while preserving facts, voice, and meaningful detail. Slopbeth edits artifacts you publish; slopgent shapes agent replies to stay honest about what actually ran, with public benchmarks demonstrating effectiveness across multiple evaluation panels.
Anti-slop writing skill that preserves facts, voice, and density, with public benchmarks.
README
Slopkit
Two anti-slop skills for coding agents, installed by the same means.
- slopbeth cleans the writing you ship — it rewrites and reviews an artifact, cutting AI tells without changing what the draft can honestly claim.
- slopgent cleans the conversation — it shapes the agent's own replies so they stay honest about what actually ran, action-first, and plain.
They are separate skills. Install both (the default), or remove either one and keep the other. The split is deliberate: point slopgent at a document and you get the clipped formula prose slopbeth exists to remove; ask slopbeth to narrate a build and it has nothing to preserve.
| slopbeth | slopgent | |
|---|---|---|
| Governs | the text you hand over to edit or publish | the agent's own status reports, explanations, and "done" claims |
| Optimizes for | sourced, dense, unsummarizable prose in your voice | honesty first, then structure, then plain language |
| Runtime | Node + Python, with a PowerShell 7 twin | Python (Node for the memory helper) |
| Full docs | skills/slopbeth/README.md | skills/slopgent/README.md |
[!TIP] Not sure which you need? slopbeth edits a document you hand over. slopgent shapes what the agent tells you while it works. Most people want both — the default install adds them as siblings, and deleting either directory leaves the other working.
why
An agent produces two kinds of text, and both drift toward slop in their own way.
- The artifacts it writes for you — the README, the postmortem, the release note — fill with unsupported claims, brand-lesson closers, and sentences that read clean but say nothing. slopbeth cuts that without dropping a single sourced fact.
- The things it says to you — "Fixed the auth bug," "everything should work now" — overstate what actually ran and bury the one command you need. slopgent keeps the agent honest about what it verified and leads with the action.
Neither is a "be concise" directive. Concise-only rules cut the filler and the load-bearing caveat with equal enthusiasm. Both skills cut the filler and keep the caveat.
install
Install both skills into supported agent skill directories:
npx github:ehmo/slopkit install
That installs slopbeth and slopgent for whichever of Codex, Claude Code, Hermes, OpenClaw, OpenCode, and Pi already exist under your home. Agents you do not use are skipped. Add --all (or the installnpx alias) to install into every supported agent whether or not its directory exists yet:
npx github:ehmo/slopkit install --all
npx github:ehmo/slopkit installnpx
Both skills land as sibling subdirectories — skills/slopbeth and skills/slopgent — under each agent's skills/ directory.
as Claude Code and Codex plugins
npx github:ehmo/slopkit install-plugin # both skills, both agents
npx github:ehmo/slopkit install-plugin claude # Claude only
npx github:ehmo/slopkit install-plugin codex # Codex only
The Claude plugins install as skills-directory plugins. The Codex plugins install under ~/.codex/plugins/<skill> and register in ~/.agents/plugins/marketplace.json, one marketplace entry per skill.
Marketplace install:
# Claude Code
/plugin marketplace add ehmo/slopkit
/plugin install slopbeth@slopkit
/plugin install slopgent@slopkit
# Codex CLI
codex plugin marketplace add ehmo/slopkit
# then open /plugins and install Slopbeth + Slopgent from the Slopkit marketplace
other paths
Install into a specific directory (both skills land under it):
npx github:ehmo/slopkit install /path/to/skills
Via the external Skills CLI, request all agents explicitly (without --all it may install only for the detected current agent):
npx skills@latest add ehmo/slopkit --all --copy
From a clone:
git clone [email protected]:ehmo/slopkit.git
cd slopkit
node bin/slopkit.js install
PowerShell edition (no Node or Python required for slopbeth)
Slopkit ships a PowerShell 7 runner alongside the Node one, so you can install and run slopbeth's gates with only pwsh on PATH:
git clone [email protected]:ehmo/slopkit.git
cd slopkit
pwsh -File bin/slopkit.ps1 install # existing agent dirs (add -All for every agent)
pwsh -File bin/slopkit.ps1 benchmark # every release gate
slopbeth's gates have one-to-one PowerShell twins; the slopbeth README lists the pairs. slopgent's gates are Python-only; pwsh -File bin/slopkit.ps1 benchmark runs them through python3 when it is present and skips them with a note when it is not.
benchmarks
Two designed corpora, each scored by a small blinded panel. Bars run from 0 to full scale — no truncated axes.
slopbeth vs. eight anti-slop skills — rubric score / 100
| Rank | Skill | Score | |
|---|---|---|---|
| 1 | slopbeth | 99 | █████████▉ |
| 2 | blader/humanizer | 84 | ████████▍ |
| 3 | d-wwei/great-writer | 78 | ███████▊ |
| 4 | willmather95/human-copy | 74 | ███████▍ |
| 5 | stephenturner/skill-deslop | 72 | ███████▎ |
| 6 | sirambrosio/humanink | 70 | ███████ |
| 7 | hardikpandya/stop-slop | 68 | ██████▊ |
| 8 | jalaalrd/anti-ai-slop-writing | 65 | ██████▌ |
One run of one rubric against public repos as they stood on the run date — not a standing leaderboard. slopbeth leads because it ships rules and evidence: an 88-case output corpus, 264 judge rows, and span, false-positive, cadence, and competitor-agent panels.
slopgent vs. two reply-shapers + baseline — blinded judges / 5
| System | Judges | Honesty | Best-picks | |
|---|---|---|---|---|
| slopgent | 4.96 | █████████▉ |
5.00 | 40 / 48 |
| i-have-adhd | 3.85 | ███████▊ |
3.31 | 4 / 48 |
| bro | 2.64 | █████▎ |
2.75 | 4 / 48 |
| baseline | 1.11 | ██▎ |
1.42 | 0 / 48 |
Three judges scored replies relabeled and shuffled, blind to which system wrote which. slopgent took 40 of 48 best-picks; the widest margin is honesty — the axis none of the reply-shapers defend.
[!NOTE] Against the full field of dedicated honesty systems, honesty is a six-way tie at 5.00 — slopgent ties the specialists, it does not out-honest them. Its remaining overall lead is 0.28, inside panel noise and short of the pre-registered ≥ 0.30 gate. The edge that survives is delivery: judges flagged every competitor's
Claim:/Evidence:scaffolding as mechanical.
[!WARNING] Neither skill promises detector immunity — detectors disagree with each other, and chasing them makes the writing worse. Both benchmarks are constructed cases scored by small panels: measured signal that these rules beat the alternatives, not proof of a general edge.
Full methodology — slopbeth: BENCHMARKS.md · slopgent: benchmarks/README.md.
documentation
- slopbeth — skills/slopbeth/README.md (standard, example, evidence) and BENCHMARKS.md (full evaluation)
- slopgent — skills/slopgent/README.md (the three fixes, the panel, how to turn it on)
contribute
Read skills/slopbeth/CONTRIBUTING.md before opening an issue or pull request. The most useful contributions are small public examples: a bad rewrite or an inflated agent reply, the source, the exact fact or caveat that changed, and the expected behavior.
discord
Join the Discord to share examples, report bad rewrites, and talk about removing slop without flattening the writer:
examples
Same move in both skills: cut the slop, keep the load. The left column is the tell-heavy version; the right is what the skill leaves behind. Nothing true is dropped — the specifics get added.
slopbeth — writing you ship
| Before — AI slop | After — slopbeth |
|---|---|
| We're thrilled to announce a host of powerful improvements that supercharge your workflow. | Two changes: bulk export streams now, so exports past 10k rows no longer hit the 30s timeout; and rate-limited calls return 429 with a Retry-After header instead of 500. |
| The outage was a valuable learning opportunity that reinforced our commitment to reliability. | Lease renewal failed 09:14–10:01 UTC, retries fanned out, and three merchants got duplicate invoice emails. Fix: BillingLeaseGuard blocks retry when renewal fails — shipped 2026-05-12. |
| This robust solution leverages cutting-edge technology to seamlessly handle all your needs. | Handles ~5k concurrent connections per node; past that, shard by tenant ID. No autoscaling yet — capacity is manual. |
slopgent — what the agent tells you
| Before — inflated reply | After — slopgent |
|---|---|
| I've fixed the authentication issue and everything should work smoothly now. | Changed verifyToken at auth.ts:42 to the new jsonwebtoken API. Not run yet — next: npm test -- auth.spec.ts, then paste the first failure. |
| We leveraged a more robust caching strategy to seamlessly improve performance. | Added a 60s cache on /api/feed. Local p95 dropped 410ms → 90ms. Not tested under real load yet. |
| Yes, that's thread-safe. | It isn't — _cache at store.ts:14 is a shared module-level object, so concurrent requests race on it. Guard it with a mutex, or move the state per-request. |
license
MIT
Comments (0)
Sign in to join the discussion.
No comments yet
Be the first to share your take.