with one click
with one click
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | slop-detector |
| description | Detect AI-generated markers in prose. |
| globs | **/*.md |
| alwaysApply | false |
| category | writing-quality |
| tags | ["ai-detection","slop","writing","cleanup","documentation","quality"] |
| tools | [] |
| complexity | medium |
| model_hint | fast |
| estimated_tokens | 4200 |
| progressive_loading | true |
| modules | ["modules/vocabulary-patterns.md","modules/structural-patterns.md","modules/fiction-patterns.md","modules/document-economy.md","modules/identity-and-voice-leaks.md","modules/hallucination-detection.md","modules/stub-and-deferral.md","modules/evidence-backed-claims.md","modules/anti-goals.md","modules/cleanup-workflow.md","modules/empirical-baseline.md","modules/structured-finding-output.md","modules/remediation-strategies.md","modules/language-handling.md","modules/config-file.md","modules/reporting.md","modules/ci-integration.md"] |
| dependencies | ["scribe:shared"] |
| role | library |
Slop is a density problem, not a word problem.
A single "delve" is fine. Five "delves" near a "tapestry" and an "embark" is generated text. This skill scores density per 100 words, marker clustering, and whether the overall register fits the document type. It does not ban words; it flags concentrations.
Identify target files and classify them as technical docs, narrative prose, or code comments. Classification feeds context-aware scoring: tier-1 markers in marketing copy score lower than the same markers in API reference.
--lang parameter (en, de, fr, es)data/languages/{lang}.yamlmodules/language-handling.md for cultural calibration and concrete pattern setsLoad: @modules/vocabulary-patterns.md
Markers fall into three confidence tiers. Tier 1 words ("delve", "multifaceted", "leverage") appear far more often in AI text than human text. Tier 2 covers context-dependent transitions ("moreover", "subsequently"). Tier 3 covers vapid phrases ("In today's fast-paced world", "cannot be overstated").
| Word | Context | Human Alternative |
|---|---|---|
| delve | "delve into" | explore, examine, look at |
| tapestry | "rich tapestry" | mix, combination, variety |
| realm | "in the realm of" | in, within, regarding |
| embark | "embark on a journey" | start, begin |
| beacon | "a beacon of" | example, model |
| spearheaded | formal attribution | led, started |
| multifaceted | describing complexity | complex, varied |
| comprehensive | describing scope | thorough, complete |
| pivotal | importance marker | key, important |
| nuanced | sophistication signal | subtle, detailed |
| meticulous/meticulously | care marker | careful, detailed |
| intricate | complexity marker | detailed, complex |
| showcasing | display verb | showing, displaying |
| leveraging | business jargon | using |
| streamline | optimization verb | simplify, improve |
Common but context-dependent:
| Category | Words |
|---|---|
| Transition overuse | moreover, furthermore, indeed, notably, subsequently |
| Intensity clustering | significantly, substantially, fundamentally, profoundly |
| Hedging stacks | potentially, typically, often, might, perhaps |
| Action inflation | revolutionize, transform, unlock, unleash, elevate |
| Empty emphasis | crucial, vital, essential, paramount |
| Phrase | Score | Issue |
|---|---|---|
| "In today's fast-paced world" | 4 | Vapid opener |
| "It's worth noting that" | 3 | Filler |
| "At its core" | 2 | Positional crutch |
| "Cannot be overstated" | 3 | Empty emphasis |
| "A testament to" | 3 | Attribution cliche |
| "Navigate the complexities" | 4 | Business speak |
| "Unlock the potential" | 4 | Marketing speak |
| "Treasure trove of" | 3 | Overused metaphor |
| "Game changer" | 3 | Buzzword |
| "Look no further" | 4 | Sales pitch |
| "Nestled in the heart of" | 4 | Travel writing cliche |
| "Embark on a journey" | 4 | Melodrama |
| "Ever-evolving landscape" | 4 | Tech cliche |
| "Hustle and bustle" | 3 | Filler |
Load: @modules/structural-patterns.md
Count em dashes (—) per 1000 words:
# Count em dashes in file
grep -o '—' file.md | wc -l
AI loves groups of three with alliteration:
Pattern: adjective, adjective, and adjective with similar sounds.
Count bullet points vs paragraph sentences:
Measure standard deviation of sentence lengths:
AI produces "blocky" text with uniform paragraph lengths. Check whether paragraphs cluster around the same word count.
Load: @modules/identity-and-voice-leaks.md
Some patterns are not slop: they are direct evidence that AI generated text leaked into a published artifact. A single match in this class fails review independently of any other score.
Scan for:
See the module for the full pattern catalogue and false- positive guidance.
Especially relevant for conversational or instructional content (complements Class 2 of the identity-and-voice-leaks module):
| Phrase | Issue |
|---|---|
| "I'd be happy to" | Servile opener |
| "Great question!" | Empty validation |
| "Absolutely!" | Over-agreement |
| "That's a wonderful point" | Flattery |
| "I'm glad you asked" | Filler |
| "You're absolutely right" | Sycophancy |
These phrases add no information and signal generated content.
slop_score = (tier1_count * 3 + tier2_count * 2 + phrase_count * avg_phrase_score) / word_count * 100
| Score | Rating | Action |
|---|---|---|
| 0-1.0 | Clean | No action needed |
| 1.0-2.5 | Light | Spot remediation |
| 2.5-5.0 | Moderate | Section rewrite recommended |
| 5.0+ | Heavy | Full document review |
Load: @modules/document-economy.md
Sentence cleanliness is necessary, not sufficient. A document can score 0 on slop density and still waste reader time by being too long, lacking a thesis, or repeating everything except the one message that matters.
Score the document on three checks (0-2 each):
Combine sentence-level slop score with document-economy score.
Both must pass. See modules/document-economy.md for the full
rubric, the reader-time budget table, and a worked example.
Load: @modules/hallucination-detection.md and
@modules/stub-and-deferral.md.
Hallucination is not slop: it is wrongness with confident phrasing. Always P0.
Scan for:
pip install / cargo install / npm install must
resolve on the relevant registry (slopsquatting
defense).todo!(), unimplemented!(),
NotImplementedError): defects in any path reachable
from a public API.See modules for detection commands and severity matrix.
Load: @modules/evidence-backed-claims.md
Every quality claim must point to evidence in the same repository. No evidence, delete the claim.
For each claim of "production-ready", "fast", "memory- safe", "scalable", etc., verify the corresponding evidence (CI workflow, benchmark directory, audit markers, etc.) actually exists. The module contains the full claim → required-evidence table and language- specific detection commands.
This step is highest-leverage for crate/library/project READMEs, where feature-list buzzword soup is the most common AI-generated failure mode.
Load: @modules/anti-goals.md
Aggressive de-slopping has its own failure modes.
Before applying any fix surfaced by the prior steps, verify it does not violate the anti-goals:
// SAFETY:,
// INVARIANT:, etc.) on unsafe, locked, or
contract-bearing code.confidence: low findings —
surface them for human decision.When in doubt: leave the match flagged, do not delete.
For systematic project-wide cleanup, run the multi-pass
workflow in order. See @modules/cleanup-workflow.md for
the full ten-pass methodology and the rationale for the
ordering. Summary:
| Pass | Focus |
|---|---|
| 0 | Pre-slop sweep: secrets, agent configs |
| 1 | Surface lint floor (formatter + linter) |
| 2 | Hallucination & stubs (modules: hallucination, stub-and-deferral) |
| 3 | Identity & voice leaks |
| 4 | Comment slop (translation, marketing, banner, deferral) |
| 5 | Prose slop (vocabulary + structural + document-economy + evidence-backed-claims) |
| 6 | Code idiom (delegate to language-specific plugins) |
| 7 | Architecture (judgment-heavy; see anti-goals) |
| 8 | Tests (tautology, mocks, snapshots) |
| 9 | README & public docs |
| 10 | Establish guardrails (CI, lints, constitution) |
Cardinal rules: one pass per commit; deletion beats rewriting; do not silently apply low-confidence fixes; stop when a pass finds nothing.
Load: @modules/empirical-baseline.md for the 2025-Q1
2026 research baseline that justifies the severity
weighting. Headline numbers:
When a finding's severity is challenged in review, cite from this module rather than asserting from authority.
For per-finding output that reviewers can accept or reject
independently, use the canonical structured format defined
in @modules/structured-finding-output.md. Each finding
carries file, line, category, severity,
confidence, evidence, rationale, fix, and (for
high-confidence) diff. Auto-apply policy is set by
confidence; never auto-apply confidence: low.
Summary report format (human-readable):
## Slop Detection Report: [filename]
**Overall Score**: X.X / 10 (Rating)
**Word Count**: N words
**Markers Found**: N total
### CRITICAL (P0, must resolve before merge)
- Line 8: "As a large language model". IDENTITY LEAK
- Line 47: References `Client.connect_with_timeout(...)` —
HALLUCINATION (method does not exist; closest match is
`Client.connect`)
- Line 102: "production-ready" claim with no CI workflow
. UNVERIFIED CLAIM
### High-Confidence Markers (vocabulary)
- Line 23: "delve into" -> consider: "explore"
- Line 45: "rich tapestry" -> consider: "variety"
### Structural Issues
- Em dash density: 8/1000 words (HIGH)
- Bullet ratio: 72% (ELEVATED)
- Sentence length SD: 3.2 words (LOW VARIANCE)
### Phrase Patterns
- Line 12: "In today's fast-paced world" (vapid opener)
- Line 89: "cannot be overstated" (empty emphasis)
- Line 134: "Let's dive into" (self-narration of structure)
### Stub & Deferral
- Line 56: bare `// TODO: handle expired tokens` (no
tracked issue link)
- Line 71: "for now, we recommend" (deferral language)
### Document Economy Score: X / 6
- Thesis-first: 1/2 (thesis present but buried in para 3)
- Sentence weight: 1/2 (~65% of sentences earn weight)
- Repetition: 2/2 (thesis echoed; ambient repetition cut)
### Recommendations
1. **CRITICAL**: delete line 8 identity leak before merge
2. **CRITICAL**: replace `Client.connect_with_timeout`
with `Client.connect(opts)` and update example
3. **CRITICAL**: either add CI + version >= 1.0 to back
"production-ready", or delete the claim
4. Replace [specific word] with [alternative]
5. Convert bullet list at line 34-56 to prose
6. Hoist the thesis (line 47) into the lead paragraph
7. Link bare TODOs to tracked issues or delete code path
### Confidence-low findings (require human decision)
- Line 89: bullet count of 8 may be appropriate for this
enumeration; do not auto-flatten
- Line 156: `Manager` suffix may be domain-meaningful;
verify before renaming
Per anti-goals.md: surface confidence: low findings
in a separate section. Do not silently apply them.
modules/fiction-patterns.md for narrative-specific slop markersmodules/remediation-strategies.md for fix recommendationsAfter detection, invoke Skill(scribe:doc-generator) with
the --remediate flag to apply fixes, or manually edit using
the report as a guide.