unslop 0.1.7

Deterministic linter for essays, posts, email, reports, and docs that finds AI writing patterns
Documentation

unslop

A deterministic linter for formulaic writing patterns: filler, hedging, puffery, stock transitions, and the punctuation habits that travel with them. Point it at an essay, a blog post, an email, a report, documentation, a short post, or a thread comment. It reports the exact span that matched, the rule that matched it, and the question a person has to answer about it.

A Rust source file is rejected with exit 40. Pass the prose instead, or wrap the code in a fenced block. unslop lints source in other languages as prose, so its punctuation shows up in the findings.

Install

cargo install unslop

Use

unslop check --profile general-writing --output text draft.md
unslop check --profile email message.txt

--profile is required and has no default. --output text is the human report and --output json is the machine one, which is the default.

Exit Meaning
0 completed with no unwaived blocking finding
2 usage error
10 violations, or a failed verify
20 unresolved blocking candidates
30 instrumentation error, fail closed
40 unsupported input, fail closed

Profiles

Profile For
general-writing Argued and personal writing, where first person and opinion are the content
blog-post Published articles, with presentation rules at full strength
email Correspondence, where the chat-assistant register is strictest
report Findings someone acts on, where attribution and hedging fire hardest
doc Reference and instructional writing, the strictest plain-speech profile
social-post Short public posts, with length and structure rules off
comment Thread replies, where the assistant register is stricter still and voice runs softer

What it looks for

Ninety-six rules in twenty-two families. Ornamental and promotional vocabulary, puffery, filler and transition tics, intensifiers and unquantified claims, contrast rhetoric, and stock attribution. Dash and colon habits, title case, boldface, and emoji. The chat-assistant register, verbatim self-duplication, and passive voice with the actor still in the sentence. Some rules only see the document whole, like paragraph uniformity and the contrast rate per 1000 words.

Each rule states what it matches and why. Each rule that needs a human decision ships the question with the finding.

Findings are three kinds. A violation is mechanical and blocking. A candidate carries a judge question and blocks until someone answers it. A coverage hint is instrumentation and never gates.

The skill

skills/unslop/ holds an agent skill that runs the whole loop. Blind read first, then pick the profile, run the check, adjudicate each finding, revise, and re-run until it exits 0. Then read once more for the tells no rule catches. The skill carries the full pattern list with fix guidance and a generated rule reference. The waiver and approval paths are documented there.

Two sibling tools

ai-slop gates the prose a code repository ships, including its commits, changelogs, and package metadata. slop-detector reads text someone else sent you. unslop gates ordinary writing before it goes out.

License

Licensed under either of

at your option.