zero-slop 2.12.10 → 2.12.12
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 +4 -2
- package/SKILL.md +8 -2
- package/data/corpus/must-flag/manifest.json +13 -0
- package/data/corpus/must-flag/opus-effort-recap.md +1 -0
- package/data/learned-log.md +7 -1
- package/data/learned.json +2 -2
- package/docs/cli.md +1 -1
- package/gemini-extension.json +1 -1
- package/package.json +1 -1
- package/plugin.json +1 -1
- package/references/eval.md +6 -1
- package/references/fresh-eyes.md +2 -0
- package/references/readalong.md +3 -1
- package/references/tells.md +2 -0
package/README.md
CHANGED
|
@@ -5,13 +5,15 @@
|
|
|
5
5
|
|
|
6
6
|
# Zero Slop
|
|
7
7
|
|
|
8
|
+
[](https://mcpvault.io/servers/zeroslop/health?utm_source=external_badge&utm_medium=referral&utm_campaign=mcp_health_report)
|
|
9
|
+
|
|
8
10
|
Find and remove AI slop in your writing. Get rid of workslop without losing your core intent and message.
|
|
9
11
|
|
|
10
12
|
Zero Slop is a free, open-source agent skill that finds and removes AI slop while checking that the core details of your message survive the edit. If your AI setup does not support agent skills, [try the browser editor](https://zero-slop.ai/try/) or use our [MCP connector](https://mcp.zero-slop.ai/mcp).
|
|
11
13
|
|
|
12
14
|
<p align="center">
|
|
13
15
|
<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>
|
|
14
|
-
<img alt="Version 2.12.
|
|
16
|
+
<img alt="Version 2.12.12" src="https://img.shields.io/badge/version-2.12.12-72528F?color=C15732">
|
|
15
17
|
<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>
|
|
16
18
|
<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>
|
|
17
19
|
<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>
|
|
@@ -171,7 +173,7 @@ python3 scripts/slopscore.py --batch drafts/ --gate 25
|
|
|
171
173
|
The CLI sends a file to the hosted editor without changing the file on disk:
|
|
172
174
|
|
|
173
175
|
```sh
|
|
174
|
-
npx --yes zero-slop@2.12.
|
|
176
|
+
npx --yes zero-slop@2.12.12 deslop draft.md --genre professional
|
|
175
177
|
```
|
|
176
178
|
|
|
177
179
|
Use `-` for stdin and `--json` for structured output. `--require-approved` prints the result but exits nonzero when review is needed. Requires Node.js 22+; offline `score` also needs Python 3. [CLI options and privacy](docs/cli.md).
|
package/SKILL.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: zero-slop
|
|
3
3
|
license: MIT
|
|
4
4
|
metadata:
|
|
5
|
-
version: "2.12.
|
|
5
|
+
version: "2.12.12"
|
|
6
6
|
author: manavmishra
|
|
7
7
|
description: Edit drafts into natural prose, inspect AI-sounding patterns, or review how a specified audience might respond passage by passage. Zero Slop runs inside the user's existing AI assistant with local tools that protect source details. Use for humanizing or de-slopping writing, polishing outward-facing prose, social drafts, final editorial checks, or an explicit simulated reader review. Preserve facts, voice and format; reader simulations are hypotheses, not human feedback.
|
|
8
8
|
---
|
|
@@ -104,6 +104,12 @@ stays missing: “not measured beyond the first month” does not establish that
|
|
|
104
104
|
first month was measured, and a missing feature in a new product does not establish
|
|
105
105
|
that the old product had it.
|
|
106
106
|
|
|
107
|
+
Delete attention-directing frames when the fact carries its own weight: “The number
|
|
108
|
+
I keep coming back to is 119,000” becomes the sentence that states what 119,000
|
|
109
|
+
measures. Then apply the removal test to the next sentence too. If “The price cut paid
|
|
110
|
+
for the extra thinking” only restates that lower token prices offset higher token use,
|
|
111
|
+
delete it rather than preserving the recap as voice or rewriting its metaphor.
|
|
112
|
+
|
|
107
113
|
Keep local and AI responsibilities distinct:
|
|
108
114
|
|
|
109
115
|
1. **Scorer — local tools.** Point to exact phrases and problems with rhythm,
|
|
@@ -1022,7 +1028,7 @@ the draft or future edits in a private overlay.
|
|
|
1022
1028
|
context boundaries, skim preview, notes-only follow-ups and revision comparison.
|
|
1023
1029
|
`scripts/reader_review.py` prepares passage packets and a local review page;
|
|
1024
1030
|
it does not simulate readers or call a model itself.
|
|
1025
|
-
- `references/tells.md` — the master taxonomy (
|
|
1031
|
+
- `references/tells.md` — the master taxonomy (115 tells, 6 families) with fixes.
|
|
1026
1032
|
It is the human-readable catalogue; `data/patterns.json` is its machine
|
|
1027
1033
|
implementation. Together with the reviewed shared overlay, the current
|
|
1028
1034
|
release carries 294 weighted regexes because some tells need more than one.
|
|
@@ -150,6 +150,19 @@
|
|
|
150
150
|
"span": "Same assay, two units."
|
|
151
151
|
}
|
|
152
152
|
]
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"file": "opus-effort-recap.md",
|
|
156
|
+
"expect": [
|
|
157
|
+
{
|
|
158
|
+
"check": "Interpretive metadiscourse",
|
|
159
|
+
"span": "The number I keep coming back to is 119,000"
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"check": "Removal test",
|
|
163
|
+
"span": "The price cut paid for the extra thinking."
|
|
164
|
+
}
|
|
165
|
+
]
|
|
153
166
|
}
|
|
154
167
|
]
|
|
155
168
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
At max effort, Opus 5.5 uses 119,000 output tokens per task, compared with roughly 27,000 for Astra and 73,000 for Opus 5. The number I keep coming back to is 119,000. Artificial Analysis found that the lower token price offset the higher token use, leaving cost per task nearly unchanged. The price cut paid for the extra thinking.
|
package/data/learned-log.md
CHANGED
|
@@ -6,7 +6,13 @@
|
|
|
6
6
|
SKILL.md now names experiential/interior claims as fabrication explicitly.
|
|
7
7
|
|
|
8
8
|
One line per change to `learned.json` or `patterns.json`: date, what, why,
|
|
9
|
-
example that motivated it.
|
|
9
|
+
and the example that motivated it.
|
|
10
|
+
|
|
11
|
+
- 2026-09-22 — v2.12.11 production-edit regression. Expanded the existing
|
|
12
|
+
lingering-attention rule from lines and ideas to numeric emphasis frames such
|
|
13
|
+
as “The number I keep coming back to…”. Added a contextual fixture for deleting
|
|
14
|
+
a metaphorical recap when the preceding sentence already states the same causal
|
|
15
|
+
result. Reasoned return-to-an-idea clauses remain exempt.
|
|
10
16
|
|
|
11
17
|
- 2026-08-25 — v2.5.8. Added `generic-benefit-stack` (weight 1) after the
|
|
12
18
|
frozen quality panel exposed five passages whose product noun and multiple
|
package/data/learned.json
CHANGED
|
@@ -124,11 +124,11 @@
|
|
|
124
124
|
{
|
|
125
125
|
"name": "lingering-attention",
|
|
126
126
|
"cat": "performed",
|
|
127
|
-
"rx": "\\b(?:the|that|this)\\s+(?:one\\s+)?(?:line|quote|bit|part|idea|point|framing|comment|thing|phrase)\\s+(?:that\\s+)?i\\s+keep\\s+(?:coming\\s+back\\s+to|thinking\\s+about)\\b|\\bi\\s+can(?:'|’)?t\\s+stop\\s+thinking\\s+about\\b|\\b(?:has|have|had|been|be)\\s+(?:been\\s+)?rattling\\s+around\\s+(?:in\\s+)?my\\s+(?:head|brain)\\b|\\bi(?:'|’)?ve\\s+been\\s+chewing\\s+on\\s+(?:this|that)\\b",
|
|
127
|
+
"rx": "\\b(?:the|that|this)\\s+(?:one\\s+)?(?:line|quote|bit|part|idea|point|framing|comment|thing|phrase|number|figure|metric|result|stat|statistic)\\s+(?:that\\s+)?i\\s+keep\\s+(?:coming\\s+back\\s+to|thinking\\s+about)\\b|\\bi\\s+can(?:'|’)?t\\s+stop\\s+thinking\\s+about\\b|\\b(?:has|have|had|been|be)\\s+(?:been\\s+)?rattling\\s+around\\s+(?:in\\s+)?my\\s+(?:head|brain)\\b|\\bi(?:'|’)?ve\\s+been\\s+chewing\\s+on\\s+(?:this|that)\\b",
|
|
128
128
|
"hints": ["i keep", "i can't", "i can’t", "rattling", "been chewing"],
|
|
129
129
|
"w": 3.5,
|
|
130
130
|
"first_seen": "2026-08-26",
|
|
131
|
-
"last_confirmed": "2026-
|
|
131
|
+
"last_confirmed": "2026-09-22",
|
|
132
132
|
"source": "conorbronsdon/avoid-ai-writing@40328bd"
|
|
133
133
|
},
|
|
134
134
|
{
|
package/docs/cli.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Use `deslop` for hosted editing with MCP parity. Use `score` for offline checks.
|
|
4
4
|
|
|
5
5
|
```sh
|
|
6
|
-
npm install --global zero-slop@2.12.
|
|
6
|
+
npm install --global zero-slop@2.12.12
|
|
7
7
|
zero-slop deslop draft.md --genre professional
|
|
8
8
|
zero-slop deslop - --genre email < draft.txt
|
|
9
9
|
zero-slop deslop draft.md --json --require-approved
|
package/gemini-extension.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zero-slop",
|
|
3
|
-
"version": "2.12.
|
|
3
|
+
"version": "2.12.12",
|
|
4
4
|
"description": "An editing skill, offline writing checks, and a CLI for the hosted Zero Slop MCP pipeline. Find stock AI phrasing, rewrite, and check source details.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"zero-slop": "bin/zero-slop.mjs"
|
package/plugin.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
|
|
3
3
|
"name": "zero-slop",
|
|
4
|
-
"version": "2.12.
|
|
4
|
+
"version": "2.12.12",
|
|
5
5
|
"description": "Find and fix canned AI writing while preserving the facts, voice, and format.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Manav Mishra",
|
package/references/eval.md
CHANGED
|
@@ -101,6 +101,9 @@ the report even when they are zero.
|
|
|
101
101
|
claim is a judgment and not a match. A zero on the anchored count is not an
|
|
102
102
|
answer to this check and never closes it: the stems match the shapes they were
|
|
103
103
|
built from, and this family's whole character is that it arrives in new ones.
|
|
104
|
+
Personal attention frames belong here too: “The number I keep coming back to is
|
|
105
|
+
119,000” becomes the sentence that explains what 119,000 measures. Keep “I keep
|
|
106
|
+
coming back to X because Y” when Y adds a real reason rather than staging emphasis.
|
|
104
107
|
17. **Weasel attribution.** "Studies show." "Experts agree." Name the source, or flag
|
|
105
108
|
it for the writer. Never invent one. An unnamed validator is the same defect —
|
|
106
109
|
"an external checker", "a third-party audit", "an independent review" — name the
|
|
@@ -161,7 +164,9 @@ the report even when they are zero.
|
|
|
161
164
|
31. **Removal test.** Does every paragraph lose something real when deleted? Check
|
|
162
165
|
individual sentences too. Replacing “Efficiency is paramount” with “Efficiency
|
|
163
166
|
is crucial” fails when the whole sentence is empty. Cut sentences that merely
|
|
164
|
-
restate a nearby benefit
|
|
167
|
+
restate a nearby benefit or cause: after a sentence says lower token prices offset
|
|
168
|
+
higher token use, “The price cut paid for the extra thinking” adds only metaphor.
|
|
169
|
+
Preserve substantive opinions and useful transitions.
|
|
165
170
|
32. **Relevance test.** Does every paragraph serve the brief, audience, and argument?
|
|
166
171
|
33. **Front-loading, applied selectively.** Conclusions arrive early where that helps
|
|
167
172
|
the reader, without forcing every section into the same point-then-detail shape.
|
package/references/fresh-eyes.md
CHANGED
|
@@ -27,6 +27,8 @@ rewriter to approve its own work.
|
|
|
27
27
|
all legitimate lists, tables, code, headings, citations, links, and layout.
|
|
28
28
|
- **Last-mile polish.** Correct a safe leftover repetition, vague handoff, awkward
|
|
29
29
|
phrase, or mechanical inconsistency that survived the earlier passes.
|
|
30
|
+
- **Adjacent meaning.** Delete a follow-up sentence that merely recasts the result or
|
|
31
|
+
cause just stated, even when the recap sounds polished or metaphorical.
|
|
30
32
|
|
|
31
33
|
## Boundaries
|
|
32
34
|
|
package/references/readalong.md
CHANGED
|
@@ -57,7 +57,9 @@ safe correction for:
|
|
|
57
57
|
Each test gets its own paragraph that opens with what it checks in plain words,
|
|
58
58
|
numbers after the setup.
|
|
59
59
|
- **Repetition.** Fix a word, phrase, sentence shape, or idea repeated close enough
|
|
60
|
-
to sound accidental.
|
|
60
|
+
to sound accidental. Run the removal test across adjacent sentences: after “lower
|
|
61
|
+
token prices offset higher token use,” delete “the price cut paid for the extra
|
|
62
|
+
thinking.” The metaphor repeats the result rather than adding one.
|
|
61
63
|
- **Register slips.** Rewrite sudden marketing gloss, generic formality, or folksy
|
|
62
64
|
filler to match the document's established voice.
|
|
63
65
|
- **Process-language leaks.** In outward-facing prose, replace internal labels such
|
package/references/tells.md
CHANGED
|
@@ -122,6 +122,8 @@ Contextual review names six checks explicitly: paragraph-order dependence, unsup
|
|
|
122
122
|
| Staccato antithesis: two short balanced sentences, the second landing the twist — "Not perfect. Honest.", "Slop isn't a vibe. It's measurable.", "The draft was cheap. The signal it sent was not." | One plain sentence with the claim; at most one antithesis per piece |
|
|
123
123
|
| Unmarked antithesis: the same figure with no negation marker at all, so the whole "not X, it's Y" family walks past it. Four shapes — bare subject swap ("Llama is open-weights. Dolma releases the data."); isocolon, one verb frame with both arguments swapped ("Open weights let you adapt a model. An open stack lets you adapt the machinery that created it."); the stock closer ("Ai2 argues for a principle. This is what that principle looks like."); unmarked reversal ("No frontier lab had to decide. Thai researchers made that call themselves.") | State the claim once, plainly. The meter now catches the last three (`isocolon-ditransitive`, `this-is-what-looks-like`, `no-x-had-to`); bare subject swap stays a judgment call. **Count them** — one is a device, three in a short piece is the register |
|
|
124
124
|
| Significance scaffolding: a sentence announcing that a point matters instead of delivering it — "Here's the detail that matters:", "This is what that principle looks like when it works." | Delete the announcement and keep the point. Budget: zero |
|
|
125
|
+
| Personal emphasis scaffolding: “The number I keep coming back to is 119,000” tells the reader where to look instead of stating what 119,000 measures | Start with the measured fact. Keep a reasoned return to an idea only when the reason adds a claim. |
|
|
126
|
+
| Metaphorical recap: “The price cut paid for the extra thinking” follows a sentence that already says lower token prices offset higher token use | Delete the recap. Do not rewrite repeated meaning into a fresher metaphor. |
|
|
125
127
|
| Extended conceit: a process or abstraction dressed as physical drama — billing ("the bill lands on reputation", "gets billed to a reader"), courtroom ("never allowed to convict"), forensics ("rhythm leaves prints"), machinery ("opens the hood"), recipe ("has four ingredients") | At most one metaphor per piece, then plain language; name the actual mechanism |
|
|
126
128
|
| Vibe-slang: "just a vibe", "vibe check", "argue with vibes", "has receipts" | The plain word: impression, judgment, evidence |
|
|
127
129
|
| One-word drama beat: "Fine." dropped between claims as a rhythm device | Cut it or fold it into the sentence it interrupts |
|