Releases: seochecks-ai/slopless
v0.2.22
- README now opens with the pitch: "Give it to your writing agent and it stops handing you AI-slop prose ..."
- Added "Set up the CLI" / "Set up the textlint preset" usage sections - slopless works as a textlint preset (
"preset-slopless": true), not just the bundled CLI. - Internal: removed dead frontend lint tooling, fixed the pre-commit hook (builds on install), and cleaned up CI.
Published from GitHub Actions with SLSA provenance - verify with npm audit signatures slopless.
slopless 0.2.21
slopless 0.2.21
Docs and supply-chain housekeeping on top of 0.2.20. No rule or behavior changes.
- README: new "What it catches" example (structural/rhetorical slop, no duplicated spans),
npx slopless --helpsurfaced in the usage loop, removed the rate-limited minzip and broken snyk-advisor badges, added a credit to Graham Rowe. - CI hardening: scoped workflow token permissions to
contents: readand SHA-pinned every GitHub Action. - Supply chain: forced the patched
qs6.15.2 across the dependency tree (CVE-2026-8723) for local/CI installs; Dependabot now ignores@types/nodesemver-major to track the Node-22 baseline and waits out pnpm's release-age gate.
slopless 0.2.20
slopless 0.2.20
A precision-focused release: five new checks, the first warning/error severity tier, and a corpus-validated precision pass that removes the bulk of the historical false positives without dropping genuine slop catches. 62 → 67 rules.
New checks
- Four new slop-category rules
genre-cliches- stock genre/marketing cliche phrasingself-help-cliches- motivational/self-help fillerseo-filler- SEO boilerplate phrasingweasel-attribution- vague "studies have shown" style attribution without a citation
actually-overuse- density-based, not a flat ban. It never flags a single use; it warns above one "actually" per 1,000 words and errors above two per 1,000. Targets the AI tic of stacking "actually" while leaving normal contrastive use alone.- Expanded coverage in
corporate-speak,cliches, and the lead-in opener checks (boilerplate-framing).
New capability: warning vs error severity
slopless previously emitted every finding at error severity. It now supports a per-finding severity tier (severity: 1 warning, severity: 2 error) in the JSON output. Detection stays separate from judgment: rules detect occurrences, and the reporter decides the level. actually-overuse is the first rule to use it.
Precision (corpus sentence audit)
Every rule was audited sentence-by-sentence against a large human + AI corpus, classifying each flag as a genuine slop catch or a misfire on valid usage.
- Dropped 104 false-positive phrases across the phrase rules (e.g. "in other words", "as such", "of course", "best practices", "when it comes to", plus citation phrasing that is legitimate when actually cited).
- Guardrailed 14 rules so they target genuinely weak writing instead of valid usage:
prohibited-words(dropped the bare "actually" ban in favor of the density rule),perception-verb-density(kept narrative verbs, dropped generic/noun senses like "peer review"),universalizing-claims(no longer flags plain counts like "several factors"),generic-signposting(dropped the "as such" connective),softening-language(fixed an "in some cases" double-count),triple-repeat(skips tables of contents and list markers),boilerplate-framing(gates "when it comes to" to opener position),negation-reframe(skips additive "not only X but Y" correlatives), and more. - Net effect on a 5,923-document corpus: about 2,020 fewer false positives on human prose, with the AI/human discrimination preserved or improved (e.g.
actually-overuseflags AI prose roughly 5x more often than human prose).
Internal
- Density and severity judgment is decoupled from the detection rules into a reusable reporting module (
src/reporting/density.ts), so rules detect signals and the reporter decides whether a signal is acceptable, a warning, or an error.
No breaking changes. Output shape is unchanged; warning-level findings simply carry severity: 1.
slopless 0.2.19
Expanded prose-slop coverage, validated against new technical-human and synthetic corpora to keep false positives near zero.
- Honesty / throat-clearing openers: truth be told, if I'm being honest, let me level with you, here's the deal, the fact of the matter is, and more (sentence-initial).
- Hype / business clichés (corporate-speak): secret sauce, force multiplier, boil the ocean, best-of-breed, bleeding-edge, move fast and break things, drive value, empower your team, and more.
- Inflated-verb clichés: serves as a reminder/testament to, ushers in a new era, speaks volumes about, represents a paradigm shift, leaves an indelible mark, and more.
- New rule: significance-density - significance signposting (notably, importantly, it's worth noting that, it's important to note, ...) is now flagged by document-level density, not per instance. A single hedge passes; over-signposting (>=3 per piece and >=3 per 1,000 words) is flagged. The per-instance flags for these were removed, fixing false positives on technical and academic writing.
Precision: terms that are correct in technical writing (single source of truth, end-to-end, scalable, real-time, digital transformation, ...) were tested against a software-engineering corpus and excluded. Hype/clichés hit 95% of synthetic marketing slop with 0% false positives on 1,914 technical docs and 193 Paul Graham essays; significance-density hit 87.5% of synthetic slop with 0% false positives on 750 technical/developer docs.
slopless 0.2.18
New slop signals, from comparing against grahamrowe82/antislop and reviewing each against real text.
- Honesty-advertising and throat-clearing openers: "To be clear,", "Honestly,", "Frankly,", "Here's the thing", "In all honesty", and similar, flagged at the start of a sentence.
- Hype/business clichés: world-class, next-level, supercharge, table stakes, north star, best-in-class.
- "stands as a testament to".
A proposed en-dash check was tested against the corpus and the fixture set, then dropped: it produced only false positives (legitimate compounds and symbol definitions), no real slop. The closed em dash is unchanged.
slopless 0.2.17
Removed the redundant avg-sentence-length rule.
A fixture-coverage audit found it was the only rule with no triggering fixture. The three readability metrics (Flesch Reading Ease, Gunning Fog, Coleman-Liau) all already factor average sentence length into their scores, so long sentences still get flagged. No coverage gap from the removal.
slopless 0.2.16
Density-based precision for two more rules, from the false-positive audit over a corpus of pre-AI human writing.
- simplicity and llm-vocabulary now fire only when complex/stock diction clusters, not on each single word. Both fire 0 on 100 Wikipedia files (were hundreds of per-instance hits); cluster detection retained. Single-word slop like "delve" is still caught by prohibited-words.
slopless 0.2.15
Rule precision fixes from a false-positive audit over a corpus of genuine pre-AI human writing.
- triple-repeat: gate bare single-word openers to non-stop-words and skip empty openers (fixes the empty-opener bug). ~96% fewer false positives on human reference text; all intended frame cases preserved.
- negation-reframe: require an abstract payoff on the inline connector branch, so empty reframes ("not a failure, but a signal") still flag while ordinary "not X but Y" prose does not. ~90% fewer false positives; all 275 fixture cases preserved.
- fix:
textlint-disableignore comments now actually work (the comments filter was silently dropped under textlint 15).
v0.2.14
What's Changed
- Swap @lunarisapp/readability for text-readability (bundle -200x) by @tartakovsky in #48
- Release slopless 0.2.14 by @tartakovsky in #49
Full Changelog: v0.2.13...v0.2.14
v0.2.13
What's Changed
- Prepare repo for promotion: provenance release, scorecard, metadata by @tartakovsky in #46
- Release slopless 0.2.13 by @tartakovsky in #47
Full Changelog: v0.2.12...v0.2.13