zero-slop 2.5.8 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,193 +1,204 @@
1
- # Zero Slop: AI Writing Editor and Slop Detector
1
+ # Zero Slop
2
2
 
3
3
  <p align="center">
4
4
  <img alt="MIT" src="https://img.shields.io/badge/license-MIT-202521">
5
5
  <img alt="tests" src="https://img.shields.io/badge/tests-passing-227B5B">
6
6
  <img alt="dependencies" src="https://img.shields.io/badge/runtime%20dependencies-0-227B5B">
7
7
  <img alt="privacy" src="https://img.shields.io/badge/learning-private-227B5B">
8
- <img alt="version" src="https://img.shields.io/badge/version-2.5.8-72528F">
8
+ <img alt="version" src="https://img.shields.io/badge/version-2.7.0-72528F">
9
9
  </p>
10
10
 
11
- <p align="center">
12
- <strong><a href="https://zero-slop.ai">zero-slop.ai</a></strong> &middot; examples, benchmarks, and blog
13
- </p>
11
+ Score your writing 0 to 100 for AI slop, then edit it out without changing a single fact.
14
12
 
15
- **Less slop, more pop.**
13
+ ![A scored sentence before and after editing](assets/demo.png)
16
14
 
17
- Zero Slop is an Agent Skill, not an AI model. Claude, GPT, or another compatible model
18
- edits inside your assistant; Zero Slop supplies local checks that protect meaning,
19
- voice, and format.
15
+ ## Problem
20
16
 
21
- The 0-to-100 writing score flags generic AI-style language and lists flagged phrases;
22
- it does not identify the author. In the test sets, human samples
23
- scored 9 to 21; unedited AI drafts averaged 77. These are reference points, not
24
- universal cutoffs.
17
+ AI writing has an accent: "It's not X. It's Y." "Here's the thing nobody tells you."
18
+ "This marks a pivotal moment." Ask an AI to fix it and it sands off the vocabulary and
19
+ cadence that made the writing yours, and rewrites your numbers on the way.
25
20
 
26
- ![A scored sentence before and after editing](assets/demo.png)
27
21
 
28
- ## Install Zero Slop
22
+ Zero Slop is an Agent Skill and ships no model. Claude, GPT, or another compatible model
23
+ does the editing; Zero Slop supplies the workflow, the meter, and the checks that refuse
24
+ any change to a name, number, quotation or link.
25
+
26
+ ## How to install Zero Slop
29
27
 
30
- Paste this into Claude Code, Codex, Cursor, OpenCode, Warp, Zed, or another
31
- Agent Skills-compatible assistant:
28
+ Paste this into Claude Code, Codex, Cursor, OpenCode, Warp, or Zed:
32
29
 
33
30
  ```text
34
- Install or update Zero Slop from https://github.com/manavmishra/ZeroSlop for
35
- this agent.
36
-
37
- 1. Find active installations. Report each path, version, and method. Do not duplicate
38
- or remove one without asking.
39
- 2. For updates, keep the existing install method. In Codex, use $skill-installer for
40
- `skills/zero-slop`; in Claude Code or Cowork, use the plugin marketplace. Otherwise
41
- use `npx skills add manavmishra/ZeroSlop --global` to install or
42
- `npx skills update zero-slop --global` to update.
43
- 3. Preserve ZERO_SLOP_HOME (default: ~/.zero-slop) and its private data.
44
- 4. Verify the version. When Python is available, run
45
- `python3 scripts/calibrate.py --selftest`.
46
- 5. Report the path, method, version, validation result, and restart requirement.
47
-
48
- Do not modify the current project or unrelated configuration. Ask before falling
49
- back to a project-local installation.
31
+ Install the Zero Slop skill globally from https://github.com/manavmishra/ZeroSlop
50
32
  ```
51
33
 
52
- Direct terminal install:
34
+ Or install it with `npx`:
53
35
 
54
- ```bash
36
+ ```sh
55
37
  npx skills add manavmishra/ZeroSlop --global
56
38
  ```
57
39
 
58
- Claude Code and Cowork use the plugin marketplace. ChatGPT users can
59
- download [`dist/zero-slop-single-file.md`](dist/zero-slop-single-file.md); Claude.ai
60
- users can download the release ZIP.
40
+ ChatGPT users can download [`dist/zero-slop-single-file.md`](dist/zero-slop-single-file.md).
41
+ Claude.ai users can upload [`dist/zero-slop.zip`](dist/zero-slop.zip). `npx skills update zero-slop --global` updates an existing CLI install later.
61
42
 
62
- ## How Zero Slop works
43
+ ## How to use Zero Slop
63
44
 
64
- ![One editing workflow, a private learning loop, and a separate release review](assets/engine.svg)
45
+ ```text
46
+ /zero-slop (your writing)
47
+ ```
65
48
 
66
- Seven roles form one workflow jobs, not separate models. Your AI assistant handles
67
- the editorial passes; local Python tools run repeatable checks.
49
+ You get the edited draft, a before-and-after score, and the flagged phrases quoted with
50
+ what needed work. `/zero-slop inspect (your writing)` reviews without rewriting.
51
+ For a folder, `slopscore.py --batch drafts/ --gate 25` exits non-zero above the threshold
52
+ and drops into CI.
53
+ ## The slop that Zero Slop catches
68
54
 
69
- | Role | Who does it | What it does |
70
- |---|---|---|
71
- | 1. Scorer | Local tools | Finds exact phrases, mechanical rhythm, dense passages, and distracting formatting; explains the writing score. |
72
- | 2. Interpreter | Your AI assistant | Reads claims, support, audience, structure, and voice before editing. |
73
- | 3. Rewriter | Your AI assistant | Removes stock wording and improves order, rhythm, and tone without inventing detail. |
74
- | 4. Fact gate | Local tools | Rejects versions that add or drop names, numbers, quotations, or links; selects the clearest one left. |
75
- | 5. Copy desk | Fresh AI pass | Corrects grammar, spelling, usage, and consistency. |
76
- | 6. Read-aloud editor | Fresh AI pass | Fixes stumbles, repetition, weak transitions, and awkward flow. |
77
- | 7. Verifier | Local tools and your AI assistant | Compares the final text with the source for facts, meaning, voice, format, and structure. A repair repeats both editorial passes and every check. |
55
+ 290 weighted patterns and a 96-term lexicon, including:
78
56
 
79
- ### Why separate the work?
57
+ 1. **Binary contrasts.** "It's not X. It's Y."
58
+ 2. **Throat-clearing openers.** "Here's the thing," "Let me be clear"
59
+ 3. **Faux-insight setups.** "What nobody tells you," "The part everyone misses"
60
+ 4. **Colon reveals.** "The best part: it learns."
61
+ 5. **Dramatic fragments.** "That's it. That's the whole thing."
62
+ 6. **Superficial analysis.** "highlighting the team's commitment to innovation"
63
+ 7. **Importance puffery.** "marks a pivotal moment," "a testament to"
64
+ 8. **Weasel attribution.** "experts agree," "studies show"
65
+ 9. **Synonym cycling.** The agent, the assistant, the tool, all one thing.
66
+ 10. **Marketing riders.** "robust" and "leverage" score only beside a marketing trigger, so a runbook stays quiet.
80
67
 
81
- Research supports the checks, not the number seven. Studies find
82
- [predictable wording](https://arxiv.org/abs/2301.11305) and
83
- [excess vocabulary](https://arxiv.org/abs/2406.07016) in machine text, while detectors
84
- can [misclassify non-native English](https://arxiv.org/abs/2304.02819). Writing and
85
- verification stay separate: the rewriter does not certify its own facts, and later
86
- passes catch surviving errors. Local tools use Python's standard library and never send
87
- drafts. The
88
- [research notes](references/evidence.md) cover the rationale and limits.
68
+ A reading pass covers what no pattern reaches, where the defect is the document rather
69
+ than any span: one shape repeated seven times, statistics piled into a paragraph,
70
+ paragraphs that shuffle without loss. [`references/eval.md`](references/eval.md) has all
71
+ 76 checks.
89
72
 
90
- ## Private learning from writer edits
73
+ Human writing scored 9 to 21 in [`data/corpus/must-not-flag/`](data/corpus/must-not-flag/);
74
+ unedited AI drafts averaged 77 across [`bench/examples.json`](bench/examples.json).
75
+ Neither number claims to identify who wrote the text.
91
76
 
92
- Learning requires the assistant's version and the writer's final version.
93
- Zero Slop never monitors files, browsers, or publishing systems.
77
+ ## How it works
94
78
 
95
- A named profile can exempt existing watchlist words in your sample. It applies only
96
- when selected by name and does not learn cadence, tone, or a complete writing style.
79
+ ![Eight editorial roles, a private learning loop, and a separate release review](assets/engine.svg)
97
80
 
98
- A phrase must be cut from three unrelated pieces before becoming a private rule; a
99
- single word needs five. New rules must keep known-human samples clean. Repeated fixes
100
- guide later edits; kept phrases can quiet a rule, and old rules fade. Private state
101
- under `$ZERO_SLOP_HOME` never retrains the AI model.
81
+ Eight roles form one workflow. Each is a job rather than a service: a single model can handle
82
+ several of them, each as its own pass, so nothing grades its own output.
102
83
 
103
- ## What the current release measured
84
+ | Role | Who does it | What happens |
85
+ |---|---|---|
86
+ | 1. Scorer | Local tools | Finds the exact wording, rhythm, readability, and formatting problems that raised the writing score. |
87
+ | 2. Interpreter | Your AI assistant | Reads the claims, purpose, audience, structure, and voice before changing anything. |
88
+ | 3. Rewriter | Your AI assistant | Removes stock language and rebuilds order, rhythm, and tone without inventing detail. |
89
+ | 4. Fact gate | Local tools | Rejects any version that changes names, numbers, quotations, links, code, tables, paths, or structure. |
90
+ | 5. Copy desk | Fresh AI pass | Corrects grammar, spelling, usage, and consistency in the actual deliverable. |
91
+ | 6. Read-aloud editor | Fresh AI pass | Fixes stumbles, repetition, weak transitions, and awkward flow. |
92
+ | 7. Verifier | Local tools and your AI assistant | Compares text with source for facts, meaning, qualifiers, voice, format, structure. |
93
+ | 8. Fresh-eyes finalizer | Fresh AI pass | Reads the verified text as a first-time reader, applying only safe polish. Any final polish restarts the final checks; the same text must return unchanged before release. |
104
94
 
105
- v2.5.8 keeps v2.5.7's context-first review and adds a check for generic lists of
106
- benefits. On the frozen 38-passage consensus panel, accuracy rose from 71.1% to 84.2%.
107
- The new check caught five passages the previous version missed. It did not change any
108
- passage the raters considered clean. Because two LLM editorial raters supplied the
109
- labels, this is a regression result, not human field accuracy.
95
+ Eight is an engineering choice; research supports the individual checks. Studies find
96
+ [predictable wording](https://arxiv.org/abs/2301.11305) and
97
+ [overused vocabulary](https://arxiv.org/abs/2406.07016) in machine text, and authorship
98
+ detectors can [misclassify non-native English](https://arxiv.org/abs/2304.02819). Local
99
+ tools use only Python's standard library.
110
100
 
111
- ### Recent model output: RAID+
101
+ ## Private learning from your edits
112
102
 
113
- [RAID+](https://huggingface.co/datasets/markstanl/RAID-Plus) extends the peer-reviewed,
114
- MIT-licensed RAID benchmark. We scored 8,000 pinned rows; 7,627 abstracts
115
- remained after excluding failed or empty generations.
103
+ Nothing is learned until you hand over both versions: what the assistant produced and
104
+ what you kept. Zero Slop watches nothing on its own: no file monitoring, no browser
105
+ hooks, no reaching into where you publish.
106
+
107
+ A phrase must disappear from three unrelated pieces before it becomes a private rule; a
108
+ single word needs five. Each must be new and stay silent on known-human text. Private
109
+ data stays under `$ZERO_SLOP_HOME`.
110
+
111
+ This is human-in-the-loop online learning. It never retrains Claude, GPT, or another
112
+ model, and involves no neural training or RLHF. A profile can exempt existing watchlist
113
+ words when selected by name; it does not learn cadence, tone, or a complete writing
114
+ style.
116
115
 
117
- | Model | Texts scored | Mean writing score ↓ | At or above 25 |
118
- |---|---:|---:|---:|
119
- | DeepSeek V3 | 1,995 | 14.5 | 10.1% |
120
- | Gemini 3.1 Pro | 1,998 | 17.0 | 18.2% |
121
- | Gemma 3 27B | 1,634 | 21.6 | 30.4% |
122
- | Llama 3.3 70B | 2,000 | 25.5 | 41.7% |
123
- | **Overall** | **7,627** | **19.6** | **24.8%** |
124
116
 
125
- ![Current Zero Slop writing scores across four RAID+ model families](assets/bench-raid-plus.png)
117
+ ## What's inside
126
118
 
127
- RAID+ records model origin, not editorial quality, so this is a score distribution,
128
- not an accuracy claim. In a fresh pass over 2,187 Beemo records, raw model responses
129
- averaged 30.2, expert edits 25.3, and independent human answers 20.0. Expert editing
130
- lowered the score in 52.2% of pairs; Beemo lacks quality labels.
119
+ [`SKILL.md`](SKILL.md) has the workflow and [`references/eval.md`](references/eval.md) the
120
+ 76 checks. [`scripts/slopscore.py`](scripts/slopscore.py) is the meter and fact gate,
121
+ with [`scripts/register.py`](scripts/register.py) running the reading pass.
122
+ [`bench/README.md`](bench/README.md) documents every benchmark with its limits.
131
123
 
132
- ### Five workflows, one fixed set of drafts
124
+ ## Evidence
133
125
 
134
- The 18 saved rewrites use Zero Slop 2.4.3 and pinned competitor instructions. They were
135
- not regenerated. Passing requires clean writing and layout without altered facts or
136
- invented feelings.
126
+ ### Against other tools, same model, same drafts
137
127
 
138
- | Method | Mean writing score ↓ | Passed all checks | Important details kept | Average length change |
128
+ We reran Zero Slop, [avoid-ai-writing](https://github.com/conorbronsdon/avoid-ai-writing),
129
+ [no-ai-slop](https://github.com/petergyang/no-ai-slop) and
130
+ [humanizer](https://github.com/blader/humanizer) on the same 18 obvious drafts, each with
131
+ GPT-5.4, high reasoning, batches of three, and its pinned instructions.
132
+
133
+ | Method | Mean writing score ↓ | Passed all Zero Slop checks | Important details kept | Average length change |
139
134
  |---|---:|---:|---:|---:|
140
135
  | Original drafts | 76.3 | 0/18 | — | — |
141
- | Zero Slop | 16.4 | 18/18 | 18/18 | -26.4% |
142
- | humanizer | 25.3 | 13/18 | 18/18 | -25.7% |
143
- | stop-slop | 25.7 | 13/18 | 18/18 | -34.4% |
144
- | no-ai-slop | 29.1 | 12/18 | 18/18 | -28.0% |
145
- | de-slop | 52.3 | 6/18 | 18/18 | -18.5% |
136
+ | Zero Slop | 12.8 | 18/18 | 18/18 | -8.9% |
137
+ | avoid-ai-writing | 23.3 | 15/18 | 18/18 | -14.6% |
138
+ | no-ai-slop | 28.4 | 12/18 | 17/18 | -13.7% |
139
+ | humanizer | 35.4 | 9/18 | 17/18 | -7.2% |
146
140
 
147
- ![The same 18 drafts after each editing workflow; lower scores mean fewer generic AI-style patterns](assets/bench-search-rewrites.png)
141
+ ![Fresh same-model editing replay on 18 drafts](assets/bench-search-rewrites.png)
148
142
 
149
- All 18 Zero Slop edits passed, but Zero Slop defines the rules and the rewrites predate
150
- this release. No available set combines current writing with independent human review,
151
- so no universal accuracy number exists. See
152
- [`bench/README.md`](bench/README.md).
143
+ Those checks are Zero Slop's own, so we also ran a method-hidden comparison against the pinned
144
+ incumbent. The GPT-5.4 reviewer favored Zero Slop on 13 drafts and avoid-ai-writing on 3,
145
+ with 2 unresolved; the passes agreed on 16 of 18. Our source check cleared 18/18 of our
146
+ rewrites and 16/18 of the incumbent's. On mean score across this second set we lost,
147
+ 17.8 to 17.0.
153
148
 
154
- ### The local tools are fast
149
+ ![Method-hidden editorial preference on 18 drafts](assets/bench-incumbent-hidden.png)
155
150
 
156
- On one Apple silicon Mac, the local checker processed 1,000 documents in 2.0147 seconds
157
- (496.4 per second). A 15,201-word document took 0.3222 seconds; the slowest stress case
158
- took 2.5180 seconds. An alternating six-pair comparison measured 29.4% higher median
159
- throughput than v2.5.7. The optimization produced the same complete result as v2.5.7
160
- on all 280 tracked documents. An 8,000-word learning pass took 0.1589 seconds. Time
161
- spent by the AI assistant is excluded.
151
+ This is a small LLM-reviewed regression study. It measures neither field accuracy nor a
152
+ universal ranking. Drafts, mappings, verdicts, hashes and limits:
153
+ [`bench/incumbent-blind-replay/`](bench/incumbent-blind-replay/). On the 38-item
154
+ editorial panel ([`bench/README.md`](bench/README.md)), v2.6.1 matched the prior 84.2% result. Its four new checks left all 114
155
+ frozen document scores unchanged and 18 human controls clear, while the four target cases
156
+ moved from 9.5 to between 30.7 and 65.1. Median throughput was 0.03% lower across 12
157
+ runs, which is local timing noise and no kind of speed claim.
162
158
 
163
- ## What Zero Slop adds
159
+ ### Speed
164
160
 
165
- Zero Slop builds on [no-ai-slop](https://github.com/petergyang/no-ai-slop),
166
- [humanizer](https://github.com/blader/humanizer),
167
- [de-slop](https://github.com/isatimur/de-slop), and
168
- [stop-slop](https://github.com/hardikpandya/stop-slop), and draws on
169
- [unslop-text](https://github.com/JCarterJohnson/vibecoded-design-tells/tree/main/unslop-ai-text)
170
- research. It adds a local writing score,
171
- fact protection, separate editorial passes, private learning, and release tests.
161
+ On one Apple silicon Mac: 1,000 documents in 1.9958 seconds (501.1 per second), a
162
+ 15,201-word document in 0.3223 seconds, slowest stress case 2.4438 seconds, an 8,000-word
163
+ learning pass 0.1627 seconds. Editing time sits outside these numbers. None is a
164
+ service-level guarantee.
172
165
 
173
- The chart records documented features. It does not decide which tool writes better.
174
- Details are in [`bench/README.md`](bench/README.md).
166
+ ### Current models
175
167
 
176
- ![Comparison of features documented in pinned repository versions](assets/competitor-capabilities.png)
168
+ The pinned [RAID+](https://huggingface.co/datasets/markstanl/RAID-Plus) sample yielded
169
+ 7,627 usable generations:
177
170
 
178
- ## Reproduce the tests and benchmarks
171
+ | Model | Texts scored | Mean writing score ↓ | At or above 25 |
172
+ |---|---:|---:|---:|
173
+ | DeepSeek V3 | 1,995 | 14.5 | 10.1% |
174
+ | Gemini 3.1 Pro | 1,998 | 17.0 | 18.2% |
175
+ | Gemma 3 27B | 1,634 | 21.6 | 30.4% |
176
+ | Llama 3.3 70B | 2,000 | 25.5 | 41.7% |
177
+
178
+ RAID+ labels capture which model produced a text and say nothing about quality. In
179
+ Beemo, raw responses averaged
180
+ 30.2, expert edits 25.3, human answers 20.0. Neither dataset carries quality labels.
181
+
182
+
183
+ ## Where Zero Slop came from
179
184
 
180
- ```bash
185
+ Zero Slop stands on no-ai-slop, humanizer, de-slop, stop-slop, unslop-text and
186
+ avoid-ai-writing, adding a writing score, source protection, separate editorial passes,
187
+ private learning, portfolio analysis and release tests.
188
+
189
+ ![Documented capabilities at pinned repository versions](assets/competitor-capabilities.png)
190
+
191
+ The chart records which features each project documents, and says nothing about writing
192
+ quality. Reproduce the shipped checks:
193
+
194
+ ```sh
181
195
  python3 tests/test_all.py
182
196
  python3 scripts/calibrate.py --selftest
183
- python3 bench/search-corpus/compare.py --check
184
- python3 bench/raid-plus-corpus/audit.py --check
185
- python3 bench/beemo-corpus/audit.py --check
186
- python3 bench/validate_corpus_registry.py
197
+ python3 scripts/register.py --selftest
187
198
  python3 bench/make_charts.py --check
188
199
  ```
189
200
 
190
- `SKILL.md` defines the skill; `scripts/` contains tools; `bench/` contains tests. See
191
- the [security policy](SECURITY.md) and [research notes](references/evidence.md).
192
201
 
193
- Released under the [MIT License](LICENSE).
202
+ ## License
203
+
204
+ MIT