anti-slop
Router for the anti-slop toolkit. Use when someone asks to review, clean, de-slop, humanize, or quality-check prose,…
Read-only slop review of prose, documentation, reports, agent output, commit messages or PR descriptions. Use when someone asks what is wrong with a draft, asks for an editorial or quality review, asks whether text is padded, vague, puffed up, unsourced or hollow, or asks
$ npx -y skills add AgriciDaniel/anti-slop --skill slop-review --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/slop-reviewContext preview
The summary Claude sees to decide when to auto-load this skill.
Read-only slop review of prose, documentation, reports, agent output, commit messages or PR descriptions. Use when someone asks what is wrong with a draft, asks for an editorial or quality review, asks whether text is padded, vague, puffed up, unsourced or hollow, or asks
name: slop-review description: > Read-only slop review of prose, documentation, reports, agent output, commit messages or PR descriptions. Use when someone asks what is wrong with a draft, asks for an editorial or quality review, asks whether text is padded, vague, puffed up, unsourced or hollow, or asks whether writing "sounds like AI". Produces a fixed findings report where every finding carries a verbatim quote, a severity (HIGH for a fabricated fact, citation or API, MEDIUM for padding or filler that changes nothing if cut, LOW for stylistic tells) and a separate confidence (low, medium, high), plus the artifact from the structural test that produced it. This skill diagnoses only. It cannot write or edit files, it never rewrites the text it is judging, and it never states or implies who or what wrote the text. Hand its findings to slop-rewrite when the user wants repair. when_to_use: > A diagnosis is wanted, not a repair, and the surface is prose or documentation rather than source code. disallowed-tools: Write, Edit, NotebookEdit license: CC-BY-4.0
These four rules bind this skill and hold even when the user asks for the opposite.
1. **Never emit an authorship verdict.** Report defects, not origin. Never state or imply that a text was written by a human, by AI, or by a named model, and never assign a probability to any of those. 2. **Never hard-fail on a stylistic marker alone.** A marker is a routing hint. Its only legitimate output is "run a structural test on this span". 3. **Severity is impact. Confidence is certainty.** Two axes. Never merge them into one score, never trade one against the other. 4. **Never let the model gate its own rewrite.** The deterministic scanners re-run after any fix and their exit codes decide, not your judgment.
**Every finding carries a verbatim quote.** No quote, no finding. Copy the span exactly as it appears, including its own punctuation. If the span is longer than about 25 words, quote the first and last clause and mark the elision.
**Every finding carries the artifact of the test that produced it.** For a deletion finding, that is the cut span plus the named loss. For an inversion finding, that is the negation written out. For a stranger finding, that is the specific fact you named. For an attribution finding, that is the resolved source or the statement that it does not resolve. A finding with no artifact is a vibe and does not go in the report.
**You never rewrite.** You have no Write, Edit or NotebookEdit tool, on purpose. Do not paste a suggested rewrite into the report either. Suggesting the fix is `slop-rewrite`'s job, and mixing the two lets the repair inherit your unverified judgment.
**Run Layer 0 before Layer 1.** Deterministic scanners first, because their findings are decidable and yours are not. Quote their exit codes and output. Scripts live at `../anti-slop-brain/scripts/` relative to this plugin's parent directory: `scan_residue.py`, `scan_placeholders.py`, `scan_refs.py`, `scan_packages.py`, `lint_voice.py`, `score_substance.py`. Do not reimplement them and do not guess their flags. Exit codes are uniform: 0 clean, 1 findings, 2 usage error.
Two defaults you must report accurately. `scan_refs.py` and `scan_packages.py` are **offline by default** and decide nothing about resolution or registry existence without `--online`, so an offline exit 0 goes in the table as "offline, resolution unchecked", never as "clean". `score_substance.py` scores a note vault via `--vault DIR` and a frontmatter `--note-type`; it is not a general prose scanner, so if the artifact is not a vault, list it under "Scanners not run" with that reason.
**Markers never appear as findings on their own.** A tier 1 marker selects a span. The structural test on that span is what you report. If the structural test comes back clean, there is no finding, and you delete the marker hit from your notes rather than downgrading it to LOW.
**Cluster or nothing.** A single marker in isolation is not reportable at any severity. Wikipedia's own rule is that one or two of these words may be coincidence and that a cluster is what carries signal. Apply the same rule here and say in the report how many independent signals a LOW finding rests on.
**Do not report a number you cannot source.** No detection percentages, no "this reads as 80% generated", no invented corpus statistics.
**Read `../../references/false-positives.md` before you write any finding whose evidence is style rather than substance,** and always before reviewing text written by a non-native English speaker. That file carries the ACL 2026 evidence on who gets wrongly flagged, and it is the reason LOW findings need a higher bar than HIGH ones, not a lower one.
| Severity | Definition | Examples | |---|---|---| | HIGH | A fabricated fact, citation, or API. Something that is not true and that a reader would act on. | A DOI that resolves to a different paper. An invented function signature. A quoted statistic with no source. An imported package that does not exist in its registry. | | MEDIUM | Padding or filler that changes nothing if cut. The deletion test comes back "nothing was lost". | A "Challenges and Future Prospects" paragraph asserting no specific challenge. An -ing clause tacked on that adds no fact. A sentence that survives the inversion test as vacuous. | | LOW | A stylistic tell, corroborated by a cluster and by at least one structural test. | Copula avoidance across a whole section combined with a failed stranger test. Puffery vocabulary in a paragraph that also fails deletion. |
Severity is about the reader's exposure, not about how confident you are. A fabricated citation you are only 60% sure about is still HIGH.
| Confidence | When | |---|---| | high | A deterministic scanner fired, or the structural artifact is una
Find and repair substance defects in AI-assisted prose, code, documentation, and agent output. It reports defects. It never reports authorship.
Router for the anti-slop toolkit. Use when someone asks to review, clean, de-slop, humanize, or quality-check prose,…
Slop review and repair for source code, tests, configuration, generated documentation, README files, commit messages and pull…
Repair pass that consumes an existing slop-review findings report and fixes only what it lists. Use when someone asks to clean…
Verification pass for citations, links, package names and vendor residue. Use when someone asks whether the sources in a document…