Anti-slop
SkillDocs & knowledgeRouter for the anti-slop toolkit. Use when someone asks to review, clean, de-slop, humanize, or quality-check prose, documentation, code, commit messages, PR descriptions, or agent output, or asks whether some writing "sounds like AI". Also use for verifying citations, DOIs, links and imported package names, for stripping vendor residue markers such as oaicite or cite spans, and for auditing padding, filler, puffery, vague attribution and hollow analysis. Explains the three layers (deterministic scanners, structural procedures, evidence-tiered soft signals) and picks the right leaf skill: slop-review for read-only findings, slop-rewrite for repair, slop-code for code and docs, slop-verify for citations, links and packages. Never produces an authorship verdict and never treats a stylistic marker as proof of anything. Use this hub only when the surface or the operation is unclear; otherwise invoke the leaf skill directly.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Anti-slop skill
What this skill tells your AI
The instructions your AI receives, as published by agricidaniel/anti-slop in anti-slop-plugin/skills/anti-slop/SKILL.md and read by ahel’s review.
The firewall
These four rules bind every skill and agent in this plugin. They are not advice, they are not a checklist step, and they hold even when the user asks for the opposite.
- 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. Say what is wrong with the artifact and where.
- 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".
- Severity is impact. Confidence is certainty. Two axes. Never merge them into one score, never trade one against the other.
- Never let the model gate its own rewrite. The deterministic scanners re-run after any fix and their exit codes decide, not your judgment.
Rule 1 exists because the measurement says the model cannot do the judging.
LLM-as-judge agreement with human slop labels is near zero (kappa 0.01 for
GPT-5, -0.01 for DeepSeek-V3, 0.03 for o3-mini; Shaib, Chakrabarty,
Garcia-Olano and Wallace, arXiv 2509.19163, rev. 2026-01-24), models under-flag
by roughly 5x, and span-level extraction runs at precision 0.14 and recall
0.11. Rule 1 also exists because authorship guessing has a measured victim:
see ../../references/false-positives.md.
The three layers
Layer 0, deterministic scanners. Python scripts with exit codes. The only
things allowed to hard-fail, because they are the only things actually
decidable. They live in the sibling brain repo at ../anti-slop-brain/scripts/
relative to this plugin's parent directory.
| Script | Decides |
|---|---|
scan_residue.py | vendor artifacts: oaicite, [cite: 1], lenticular-bracket citations, (start_span), grok-card, :::writing{, [attached_file:1], utm_source=chatgpt.com, referrer=grok.com |
scan_placeholders.py | [Your Name], INSERT_SOURCE_URL, access-date=2025-XX-XX, YYYY-MM-DD, TODO: quote |
scan_refs.py | DOI, ISBN and arXiv shape and checksums offline; resolution of DOIs, arXiv IDs and URLs with --online |
scan_packages.py | dependency inventory offline; registry existence with --online |
lint_voice.py | house style: no U+2014, no U+2013, no --, plus banned tokens from a voice file |
score_substance.py | near-duplicate, skeleton-reuse and specific-word-density floors over a note vault, via --vault DIR |
Run them, read their exit codes, quote their output. Exit codes are uniform: 0
clean, 1 findings, 2 usage error. Do not reimplement them and do not guess
their flags; run one with --help if you need options.
Two defaults matter and are easy to misreport. scan_refs.py and
scan_packages.py are offline by default and decide nothing about
resolution or registry existence until you pass --online. An offline run is
not a clean bill of health. scan_refs.py also does not compare a cited title
to the resolved title; that comparison is deliberately a Layer 1 attribution
test with a human-readable artifact, not a scanner output.
lint_voice.py enforces a house rule. Its findings are style violations, never
slop verdicts.
Layer 1, structural procedures. Five mechanical tests. Each produces a
named artifact, so the finding is checkable by someone who does not trust you:
deletion, inversion, stranger, attribution, load-bearing. Summarised below,
worked in ../../references/structural-tests.md.
Layer 2, evidence-tiered soft signals. Markers, ranked by how well the corpus evidence supports them. Tier 1 is corpus-validated, tier 2 is measured but high false-positive, tier 3 is folk wisdom that is recorded and never acted on alone. A Layer 2 hit does exactly one thing: it selects a span for a Layer 1 test.
The five structural tests
- Deletion. Cut the span. Name what was lost. If nothing was lost, it was padding. Artifact: the cut span plus the named loss.
- Inversion. Negate the claim and write the negation out. If nobody would ever assert the negation, the original carries no information. Artifact: the negation, in full.
- Stranger. Could someone who never read the source have written this? If yes, it is generic. Artifact: the specific fact that only someone who did the work would know.
- Attribution. Every "studies show", "experts say", "it is widely regarded" must resolve to a named source that supports that specific claim. Artifact: the resolved citation, or the finding.
- Load-bearing (code). Delete the comment, the wrapper, the try/except, the assertion-free test. What broke? Artifact: what broke, or nothing.
A test you did not actually run produces no artifact and therefore no finding. Never report a structural finding without its artifact.
Routing
| Ask | Skill |
|---|---|
| "review this", "is this slop", "what is wrong with this draft" | slop-review |
| "fix it", "clean this up", "de-slop this", "rewrite" | slop-rewrite |
| code, tests, comments, READMEs, commit messages, PR descriptions | slop-code |
| citations, DOIs, dead links, imported packages, vendor residue | slop-verify |
Order matters when more than one applies. slop-verify first, because
fabricated citations and hallucinated packages are the only HIGH-severity
defect class that a rewrite can silently launder. Then slop-review. Then
slop-rewrite, which consumes the review's findings and never re-derives them.
For a fresh-context second opinion, dispatch the slop-grader agent (read-only
findings) or the slop-verifier agent (adversarial check of an existing
review). Never dispatch either to approve your own output as finished; that is
firewall rule 4.
Standing prohibitions
- Never report a percentage, likelihood or score for "how AI-generated" a text is. There is no such number in this plugin.
- Never quote a statistic that is not in
../../references/or in the project's verification ledger. If you want a number that is not there, omit the number. - Never remove a marker without fixing the defect underneath it. Wikipedia's own guidance on the sign list is that the patterns are potential signs of a problem and not the problem itself, and that treating the signs as the thing to be fixed can just make the underlying problem harder to see.
- Never write U+2014 (em dash) or U+2013 (en dash) in any output. Use commas, periods, colons or parentheses.
- Never strip hedges, qualifiers or "filler" mechanically. Wikipedia's own observed human-writing signals include "in order to", "as a result of", "the fact that", "very", "perhaps" and "tends to". Removing them makes text read more generated, not less.
Depth, loaded on demand
- Read
../../references/structural-tests.mdwhen you are about to run a structural test and need the worked artifact format. - Read
../../references/markers-tier1.mdwhen you need the corpus-validated marker list and its citations. - Read
../../references/markers-tier2.mdwhen a finding rests on em-dash density, burstiness or sentence-length uniformity. - Read
../../references/markers-tier3.mdwhen you are tempted to flag a single word or an unsourced heuristic. - Read
../../references/code-markers.mdwhen the surface is code, tests, config or generated documentation. - Read
../../references/false-positives.mdbefore writing any finding whose evidence is style rather than substance, and always before reviewing text by a non-native English writer.
Signals
- GitHub stars
- 51
- Forks
- 11
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
anti-slop- Source
- github.com/agricidaniel/anti-slop