Skip to content

Releases: seochecks-ai/slopless

v0.2.22

03 Jun 20:27
e0d6d31

Choose a tag to compare

  • 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

02 Jun 18:26
156226e

Choose a tag to compare

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 --help surfaced 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: read and SHA-pinned every GitHub Action.
  • Supply chain: forced the patched qs 6.15.2 across the dependency tree (CVE-2026-8723) for local/CI installs; Dependabot now ignores @types/node semver-major to track the Node-22 baseline and waits out pnpm's release-age gate.

slopless 0.2.20

02 Jun 15:24
98ae683

Choose a tag to compare

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 phrasing
    • self-help-cliches - motivational/self-help filler
    • seo-filler - SEO boilerplate phrasing
    • weasel-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-overuse flags 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

01 Jun 21:08
7582219

Choose a tag to compare

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

01 Jun 18:14
bae5a7f

Choose a tag to compare

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

01 Jun 17:23
91e1c83

Choose a tag to compare

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

01 Jun 16:30
f4593f4

Choose a tag to compare

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

01 Jun 16:11
208fd3d

Choose a tag to compare

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-disable ignore comments now actually work (the comments filter was silently dropped under textlint 15).

v0.2.14

23 May 18:49
60b6a9e

Choose a tag to compare

What's Changed

Full Changelog: v0.2.13...v0.2.14

v0.2.13

23 May 17:54
ece876d

Choose a tag to compare

What's Changed

Full Changelog: v0.2.12...v0.2.13