Zero Slop
Score and rewrite AI-assisted prose while preserving names, numbers, quotes, links, and facts.
Open source Repository Open in the app JSON README (API)
About
Score and rewrite AI-assisted prose while preserving names, numbers, quotes, links, and facts.
Details
- Kind
- MCP servers
- Topic
- No topic detected
- Publisher
- manavmishra
- Origin
- official
- Category
- ferramentas
- Transport
- http
- Version
- 2.10.1
- Stars
- 118
- Forks
- 1
- Open pull requests
- 5
- Last push
- 2026-09-13T06:22:20Z
- Repository state
- ativo
- Language
- Python
- License
- MIT
- Added
- 2026-09-04 04:00:54
- Updated
- 2026-09-07 23:04:22
- Origin id
io.github.manavmishra/zero-slop
README
<p align="center">
<a href="https://zero-slop.ai">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="assets/logo/zero-slop-logo-reversed.svg">
<img src="assets/logo/zero-slop-logo-primary.svg" width="360" alt="Zero Slop">
</picture>
</a>
</p>
Zero Slop is installed about 1,600 times a week on npm.
<p align="center"><strong>Find AI-sounding tells and slop in your writing.</strong></p>
<p align="center">
Zero Slop finds slop- stock phrasing, mechanical rhythm, vague claims, and canned formatting in writing.<br>
Your existing AI assistant edits the draft; local checks guard its names, numbers, links, quotations, code, tables, and paths.
</p>
<p align="center">
<a href="https://zero-slop.ai/try/"><strong>Try it in your browser</strong></a>
·
<a href="#install">Install the skill</a>
·
<a href="#evidence-and-limits">See the evidence</a>
·
<a href="https://github.com/manavmishra/ZeroSlop/releases/latest">Latest release</a>
·
<a href="https://zero-slop.ai/brand/">Brand assets</a>
</p>
<p align="center">
<a href="https://github.com/manavmishra/ZeroSlop/actions/workflows/validate.yml"><img alt="Validate" src="https://github.com/manavmishra/ZeroSlop/actions/workflows/validate.yml/badge.svg"></a>
<img alt="Version 2.12.1" src="https://img.shields.io/badge/version-2.12.1-72528F?color=C15732">
<a href="https://www.npmjs.com/package/zero-slop"><img alt="npm version" src="https://img.shields.io/npm/v/zero-slop?color=C15732"></a>
<a href="https://www.npmjs.com/package/zero-slop"><img alt="npm downloads" src="https://img.shields.io/npm/dm/zero-slop?color=17634F"></a>
<a href="https://github.com/manavmishra/ZeroSlop/stargazers"><img alt="GitHub stars" src="https://img.shields.io/github/stars/manavmishra/ZeroSlop?style=flat&color=C15732"></a>
<a href="LICENSE"><img alt="MIT license" src="https://img.shields.io/badge/license-MIT-141412"></a>
<a href="https://hol.org/registry/plugins/manav-mishra%2Fzero-slop"><img alt="Listed in the HOL plugin registry" src="https://img.shields.io/badge/HOL%20registry-listed-2C6E8F"></a>
</p>
```sh
npx skills add manavmishra/ZeroSlop --global
```
<a href="assets/zero-slop-demo.mp4?v=dark-shell-restored-20260906">
<picture>
<source media="(prefers-reduced-motion: reduce)" srcset="assets/zero-slop-demo-poster.png?v=dark-shell-restored-20260906">
<source type="image/webp" srcset="assets/zero-slop-demo.webp?v=dark-shell-restored-20260906">
<img src="assets/zero-slop-demo.gif?v=dark-shell-restored-20260906" width="900" alt="Dark-shell demo: install Zero Slop, edit with your assistant, and check scores while preserving 40%.">
</picture>
</a>
## Before and after
A launch post, as AI wrote it:
> We're thrilled to announce that our team has leveraged cutting-edge machine learning to deliver a seamless onboarding experience, reducing setup time by 40%.
The scorer rates that draft 99.3/100 and flags four phrases: “We're thrilled
to,” “leveraged,” “cutting-edge,” and “seamless.”
The rewrite, limited to the draft's stated claims:
> We used machine learning to reduce onboarding setup time by 40%.
```text
Writing score: 9.5/100 [clear]
Flagged phrases : 0 across 10 words
```
The rewrite retains the draft's stated result. See four complete, reproducible pairs in [`examples/`](examples/).
Use it for launch posts, changelogs, emails, research summaries, or batch checks.
Scores describe writing patterns, not authorship.
## Install
[Try the free browser editor](https://zero-slop.ai/try/), or install:
| Environment | Fastest route |
|---|---|
| Claude Code, Codex, Cursor, OpenCode, Warp, Zed | `npx skills add manavmishra/ZeroSlop --global` |
| Gemini CLI | `gemini extensions install https://github.com/manavmishra/ZeroSlop --auto-update` |
| Claude Code plugin | `/plugin marketplace add manavmishra/ZeroSlop`, then `/plugin install zero-slop@zero-slop` |
| Any assistant with file uploads | Download the [single-file bundle](https://github.com/manavmishra/ZeroSlop/releases/latest/download/zero-slop-single-file.md) |
| Claude.ai | Upload the [latest skill ZIP](https://github.com/manavmishra/ZeroSlop/releases/latest/download/zero-slop.zip) |
| ChatGPT, Claude, Grok, Gemini, Cursor, or another MCP client | Connect the optional [hosted MCP server](mcp/README.md) |
Ask your assistant to edit:
```text
/zero-slop (your writing)
```
Inspect without editing:
```text
/zero-slop inspect (your writing)
```
Score locally:
```sh
npx zero-slop score draft.md
```
From a cloned checkout, gate a folder:
```sh
python3 scripts/slopscore.py --batch drafts/ --gate 25
```
Installed checks run locally. Skill editing follows your assistant's privacy settings; [MCP editing is remote](mcp/README.md).
### Hosted MCP
```text
https://mcp.zero-slop.ai/mcp
```
[Connection options and listing status](DISTRIBUTION.md).
## CLI
Edit a file through MCP:
```sh
npx --yes zero-slop@2.12.1 deslop draft.md --genre professional
```
Use `-` for stdin and `--json` for structured output. `--require-approved` exits nonzero
when review is needed; the result is still printed. Files stay unchanged. Node.js 22+;
offline `score` also needs Python 3. [CLI reference and privacy](docs/cli.md).
## REST API
```sh
curl --fail-with-body --max-time 75 https://mcp.zero-slop.ai/v1/deslop \
-H 'Content-Type: application/json' \
--data '{"text":"Maya owns the pricing review.","genre":"professional"}'
```
Same pipeline and result as MCP. Check `status` before using the edit. Free, shared
capacity; up to 20,000 Unicode code points per draft after trimming. Hosted CLI
editing and REST process drafts remotely without storing them.
[API reference](docs/rest-api.md) · [OpenAPI contract](https://mcp.zero-slop.ai/openapi.json)
## What the workflow adds
| A prompt alone | Zero Slop |
|---|---|
| “Make this sound human” leaves the target vague. | A 0–100 meter points to exact phrases and structural problems. |
| One rewrite can quietly alter source details. | A local fact gate checks protected strings before the edit is returned. |
| The model tends to overcorrect into fragments or forced casualness. | An overcorrection pass checks readability, rhythm, grammar, and voice. |
| Each session starts from scratch. | Optional, reason-labelled preferences can be learned privately. |
Zero Slop ships no model. Your AI assistant reads and edits the draft in context,
using Claude, GPT, or another compatible model. The repository supplies the
workflow and local tools for scoring and source checks.
## What it catches
The scorer combines 294 weighted patterns with a 96-term lexicon. Examples include:
- binary contrast formulas: “It's not X. It's Y.”
- canned openers: “We're thrilled to…” and “Here's the thing…”
- vague attribution: “experts agree” and “studies show”
- significance inflation: “marks a pivotal moment” and “a testament to”
- promotional riders: “robust,” “seamless,” and “leverage” when used as hype
- repeated sentence shapes, crowded statistics, and overworked formatting
Marketing terms are scored in context, so an ordinary technical use of a word need not trigger the same penalty. [`references/eval.md`](references/eval.md) documents all 80 checks.
Unedited AI drafts averaged 77 in [`bench/examples.json`](bench/examples.json).
Human writing scored 9 to 21 in
[`data/corpus/must-not-flag/`](data/corpus/must-not-flag/). These are reference
points for the scorer, not authorship boundaries.
## How it works

Eight responsibilities form one workflow. They are jobs, not separate models.
Research supports the checks, not the number eight, which is an engineering
choice.
| Stage | Job |
|---|---|
| 1. Scorer | Find exact phrases, pacing problems, readability issues, and overworked formatting. |
| 2. Interpreter | Read the claims, audience, structure, and voice before editing. |
| 3. Rewriter | Remove stock language without inventing detail. |
| 4. Fact gate | Check names, numbers, quotations, links, code, tables, paths, and structure locally. |
| 5. Copy desk | Fix grammar, usage, spelling, and consistency. |
| 6. Read-aloud editor | Catch stumbles, repetition, and awkward transitions. |
| 7. Verifier | Compare the edit with the source for meaning, qualifiers, voice, and format. |
| 8. Fresh-eyes finalizer | Apply only safe final polish, then run one last local check. |
The free web editor combines the five AI responsibilities into one response and
makes at most one live model call. A single response does not provide independent review.
Any final change receives one final local recheck.
If repair fails, return the safest edit with a warning. No open-ended rewrite loop.
### Review the reader's side
Ask: **“Review this for backend engineers. Where would they stop reading?
Don't rewrite it.”** Optional skim, passage reactions, and notes-only recall
produce comments and revision strips. Simulations cannot establish human behavior;
sequential review requires isolated contexts. The [workflow](references/reader-review.md)
explains privacy, limits, and reporting. Hosted calls are unchanged.
Inspired by [First Reader](bench/first-reader/), a review-only skill. Zero Slop
also rewrites and checks source details. Neither has established human-reader
accuracy; First Reader gets no invented rewrite score.
## Evidence and limits
### Same model, same 18 drafts
A saved replay ran Zero Slop and three comparable open-source instruction sets over the same drafts with GPT-5.4, high reasoning, and pinned instructions. The outputs are frozen and reproducible.
| Method | Mean writing score ↓ | Passed local gates | Source check passed | Mean length change |
|---|---:|---:|---:|---:|
| Original drafts | 76.3 | 0/18 | — | — |
| **Zero Slop** | **12.8** | **18/18** | **18/18** | -8.9% |
| avoid-ai-writing | 23.3 | 15/18 | 18/18 | -14.6% |
| no-ai-slop | 28.4 | 12/18 | 17/18 | -13.7% |
| humanizer | 35.4 | 9/18 | 17/18 | -7.2% |

This small LLM-reviewed regression study measures repeatable behavior; it does not establish universal writing quality. The drafts, hashes, method versions, prompts, and limitations are in [`bench/README.md`](bench/README.md).
Zero Slop's frozen outputs came from v2.5.9; newer versions only rescore those
saved outputs. The current scorer matched the prior 84.2% result on the fixed
38-item editorial panel. These fixed-sample checks are not field accuracy.
<details>
<summary>More validation</summary>
- A method-hidden editorial preference replay: [`bench/incumbent-blind-replay/`](bench/incumbent-blind-replay/)
- External-checker clean rates: [`assets/bench-external-checker.png`](assets/bench-external-checker.png)
- Method-hidden quality ranking: [`assets/bench-blind-quality.png`](assets/bench-blind-quality.png)
- Current-model corpus measurements: [`assets/bench-raid-plus.png`](assets/bench-raid-plus.png)
- Antithesis regression set: [`assets/bench-antithesis.png`](assets/bench-antithesis.png)
On the 75 labelled antithesis pairs, the current reading pass reached 91.2% recall across the full set, 100% recall on shapes in reach, and 100% precision. The labels are maintainer-authored and the pairs are constructed, so this is a regression floor rather than field accuracy.
Local speed measurements cover the checks, with editing time excluded. On one
Apple silicon Mac, the scorer processed 1,000 documents in a median of 1.9929
seconds (501.8 per second); the five runs ranged from 1.9614 to 2.0945 seconds.
It scored a 15,201-word document in a median of 0.3223 seconds. The slowest
stress case took 2.2932 seconds, and learning from an 8,000-word edit took
0.1592 seconds. The measurements and machine details are in
[`bench/performance-results.json`](bench/performance-results.json).
Across 12 interleaved runs against 2.7.7, we measured 0.26% lower median throughput,
within the 5% regression limit. Local timing, not an SLA. The two-way replay used
Zero Slop v2.6.0.
The [RAID+ audit](bench/raid-plus-corpus/README.md) checks how the scorer responds
to output from different models. Its pinned sample contains 7,627 usable
generations:
| Model | Texts scored | Mean writing score ↓ | At or above 25 |
|---|---:|---:|---:|
| DeepSeek V3 | 1,995 | 14.5 | 10.1% |
| Gemini 3.1 Pro | 1,998 | 17.0 | 18.2% |
| Gemma 3 27B | 1,634 | 21.6 | 30.4% |
| Llama 3.3 70B | 2,000 | 25.5 | 41.7% |
RAID+ labels record which model produced each text; they do not grade writing
quality. The [Beemo paired-edit audit](bench/beemo-corpus/README.md) checks how
scores change after human editing: raw responses averaged 30.2, expert edits
25.3, and human answers 20.0. Beemo also lacks writing-quality labels.
</details>
### Documented capability audit

This chart says nothing about writing quality or which tool writes better. It
records documented features at pinned commits; the data and reproduction notes
are in [`bench/README.md`](bench/README.md).
The design follows research on [predictable wording in machine text](https://arxiv.org/abs/2301.11305) and [overused vocabulary](https://arxiv.org/abs/2406.07016). It deliberately avoids authorship claims because detectors can [misclassify non-native English](https://arxiv.org/abs/2304.02819).
## Private learning
Learning begins only when you provide an original output and your reason-labelled edit. Zero Slop does not monitor files, browsers, or publishing tools. Private data stays under `$ZERO_SLOP_HOME`; it is not committed to this repository and does not retrain the model.
A profile selected by name can exempt existing watchlist words. It does not
learn cadence, tone, or a complete writing style.
## Repository map
| Path | Purpose |
|---|---|
| [`SKILL.md`](SKILL.md) | The complete detect, rewrite, verify, and learn workflow |
| [`scripts/slopscore.py`](scripts/slopscore.py) | Offline meter and source-detail gate |
| [`scripts/register.py`](scripts/register.py) | Performed-register and reading pass |
| [`references/`](references/) | Genre guidance, tells, safeguards, and evaluation rules |
| [`examples/`](examples/) | Reproducible before-and-after edits |
| [`bench/`](bench/) | Frozen benchmarks, provenance, and limitations |
| [`mcp/`](mcp/) | Optional hosted MCP server documentation |
| [`DISTRIBUTION.md`](DISTRIBUTION.md) | Direct installs, marketplace submissions, and release synchronization |
## Contributing and support
Bug reports, false positives, examples, and carefully tested pattern improvements are welcome. Read [`CONTRIBUTING.md`](CONTRIBUTING.md) before opening a pull request, use the structured [issue forms](https://github.com/manavmishra/ZeroSlop/issues/new/choose), or start a [Discussion](https://github.com/manavmishra/ZeroSlop/discussions).
For setup help and responsible disclosure, see [`SUPPORT.md`](SUPPORT.md) and [`SECURITY.md`](SECURITY.md).
## Credits
Ideas from [First Reader](https://github.com/Shubhamsaboo/awesome-llm-apps/tree/f56f4febaac4eb869c2e98859e78612889913d3e/agent_skills/first-reader), [no-ai-slop](https://github.com/petergyang/no-ai-slop), [humanizer](https://github.com/blader/humanizer), [de-slop](https://github.com/isatimur/de-slop), [stop-slop](https://github.com/hardikpandya/stop-slop), [unslop-text](https://github.com/JCarterJohnson/vibecoded-design-tells/tree/main/unslop-ai-text), and [avoid-ai-writing](https://github.com/conorbronsdon/avoid-ai-writing).
## License
[MIT](LICENSE)