Skip to main content

slopometer

slopometer measures prose against a range of reference-prose rules. The rules merge GOV.UK/GDS house style with the discipline of ASD-STE100, including 26 numbered tells, banned-word lists, and a reference register. It also has rules covering a range of best practices for clear technical communication, including paragraph length, referant tracking, and restatement.

slopometer is for anyone shipping READMEs, docstrings, PR text, or agent responses. It catches slop mechanically, in milliseconds, with no LLM in the loop. Every finding cites a rule, quotes a span, and carries a weight.

Install

pip install slopometer

The first score on a machine downloads spaCy’s en_core_web_md model (about 40MB, once) into ~/.cache/slopometer and loads it by path. The model never enters a virtual environment. One copy serves every project. Environment syncs cannot remove it.

Use

from slopometer.score import score_text, score_path
score_text("This section describes our approach. It isn't just a linter - it's a comprehensive paradigm for quality.")
density 252.9 (weight 43 on 17 prose words), worst 10
1: [10] notxbuty (tell 16, not-X-but-Y): "isn't just a"
1: [10] splice (tell 1, splices): ' - '
1: [10] banned: 'comprehensive' -> 'complete'
1: [10] banned: 'paradigm'
1: [3] throat_clearing (tell 13, throat-clearing): 'This section describes'

Density is weighted findings per 100 words across paragraphs, headings, and list items. Heading and list markers do not count as words. Code blocks and other content excluded from scoring do not enter the denominator.

score_path does the same for a file, and its rows carry lineno|hash| addresses in the exhash format, ready for hash-verified editors. The command line wraps both:

slopometer README.md
git log -1 --format=%B | slopometer
slopometer draft.md --threshold 10

The threshold turns the density into an exit code for CI. The command runs warm through warmpy. The first call loads the model in a background process. Later calls answer in milliseconds. After thirty idle minutes the process exits.

What it checks, and what it cannot

The rules live in notebooks that teach each family beside its code. Each rule states its tell, shows a violating example, and shows the plain rewrite. The lexicon notebook holds the word and phrase rules. The syntax notebook builds sentence rules on spaCy’s parse. The para notebook builds its rules on word vectors. The score notebook assembles the pipeline. A drift test asserts that every write_docs tell maps to a rule or to an explicit unscoreable registry. The meter and the style guide cannot drift apart silently.

A rule ships only when its false-positive rate on clean reference prose is near zero. The meter scores the style guide’s own clean passage at exactly 0.0. The score notebook measures the blind spot instead of hiding it: mechanically chopped prose passes every surface rule while staying opaque. Agent review (check_docs) and an optional, explicitly invoked Pangram check cover that residue. Vale, write-good, and proselint solve neighboring problems. The lexicon notebook records what came from them. It also credits the GOV.UK words-to-avoid list (OGL v3).

Metadata

Release files for slopometer 0.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for slopometer 0.0.3
File Size Uploaded
slopometer-0.0.3.tar.gz 29.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for slopometer 0.0.3
File Interpreter ABI Platform
slopometer-0.0.3-py3-none-any.whl Python 3 none any Details

Total release size: 61.4 kB

Release files / slopometer-0.0.3.tar.gz

Download URL slopometer-0.0.3.tar.gz
Size 29.1 kB
Tags Source
SHA-256 checksum
How to use checksums
b640aa8f983839aa188270ef1ce379afbb49946b65cc521acfbee25248f511c8
BLAKE2b-256 checksum
How to use checksums
e8f5e81308a54fa0c024faa504d882f4a6406836e7bf82ae0e987457a03adafc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release files / slopometer-0.0.3-py3-none-any.whl

Download URL slopometer-0.0.3-py3-none-any.whl
Size 32.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e5347f0061cada2216500f81e7d9332d8cf235966301e995a744ed83261e223f
BLAKE2b-256 checksum
How to use checksums
d574b9c2ce2b1a6549b10d84f72c13fe63de5bddc0bf672654f6de91bf753f27
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release history Release notifications | RSS feed

0.0.4

2 release files

This release

0.0.3 This release

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page