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 CHANGED
@@ -5,13 +5,15 @@
5
5
 
6
6
  # Zero Slop
7
7
 
8
+ [![MCPVault: claimed](https://mcpvault.io/badge/zeroslop.svg)](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.10" src="https://img.shields.io/badge/version-2.12.10-72528F?color=C15732">
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.10 deslop draft.md --genre professional
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.10"
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 (113 tells, 6 families) with fixes.
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.
@@ -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-08-26",
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.10
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zero-slop",
3
- "version": "2.12.10",
3
+ "version": "2.12.12",
4
4
  "description": "Find and fix canned AI writing while preserving the facts, voice, and format.",
5
5
  "mcpServers": {
6
6
  "zero-slop": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zero-slop",
3
- "version": "2.12.10",
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.10",
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",
@@ -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; preserve substantive opinions and useful transitions.
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.
@@ -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
 
@@ -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
@@ -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 |