---
name: "anti_slop_design"
description: "Review AI-generated code, UI, or docs for slop patterns: speculative abstraction, swallowed errors, hallucinated deps, filler prose, generic design. Use before shipping AI-built software, during PR review, or when output looks passably right but feels cheap."
---

# anti-slop-design

## Purpose

AI output passes the eye test while hiding real problems: plausible-but-wrong logic, phantom dependencies, over-abstraction, redundant comments, generic SaaS design, filler prose. This skill gives agents a detection-and-repair workflow with a concrete pattern catalog (see `references/slop-patterns.md`), worked before/after fixes, and a ship/no-ship gate (`references/review-checklist.md`).

Judge purpose and value, not surface traits. A long doc that carries unique information is not filler. An abstraction that removes real duplication is not fake complexity. An animation that conveys state is not decoration. False positives waste trust faster than missed slop.

## Workflow

1. **Scope the review.** One file, one diff, one screen, or one document at a time. Name what the artifact is supposed to do before looking at it.

2. **Pass 1: correctness and safety.** Before style. Check the high-severity patterns from `references/slop-patterns.md` sections 1-4: hallucinated APIs or packages, swallowed errors and silent fallbacks, missing authorization or trust-boundary checks, secrets in code or logs, retries without timeouts or backoff, N+1 queries and unbounded result sets.

3. **Pass 2: structure.** Check for speculative abstraction (one-implementation interfaces, single-product factories, plugin systems with one consumer), reinvented standard libraries, god functions, shotgun diffs, architecture layer violations, generic naming.

4. **Pass 3: surface.** Check for redundant comments, defensive bloat, dead code, test slop (assertions that cannot fail, tests that mirror the bug), filler prose (buzzwords, warm-up openers, preview-then-repeat structure), and generic design cliches (meaningless glassmorphism, gradients without purpose, interchangeable card grids, hero sections that could belong to any product).

5. **Repair, don't just flag.** For every confirmed pattern, apply the fix from `references/slop-patterns.md`. Delete beats rewrite: a redundant comment, a fake wrapper, a filler paragraph should be removed, not polished.

6. **Gate.** Run `references/review-checklist.md`. The artifact ships only when every must-fix item is resolved or explicitly rejected with a reason. Record rejected items and the doubt; a false positive acknowledged is better than one silently forced through.

## Output Contract

Emit a slop report in this shape:

```text
## Slop report: <artifact>

P0 (ship-blockers):
- <pattern>: <file/section:line> - <one-line evidence>. Fix: <what you did or will do>

P1 (should fix):
- ...

P2 (nit):
- ...

Rejected (looked sloppy, was justified):
- ...

Verdict: SHIP | SHIP WITH FIXES | BLOCKED
```

Verdicts mean: SHIP (no P0s, P1s fixed or consciously deferred), SHIP WITH FIXES (P1s identified, fixes specified, trust the owner to apply them), BLOCKED (any unresolved P0).

## Operating Rules

1. Never invent numbers, dates, quotes, or events. Unverifiable claims get cut or framed as opinion, never stated as fact.
2. Never flag something as slop merely because it is long, abstract, animated, componentized, AI-generated, unconventional, or sophisticated. Surface trait alone is not evidence.
3. Run, don't skim, anything that executes: build the code, call the function with a real-ish input, hit the boundary cases (empty, null, big, failure).
4. Add at least one boundary or sad-path test you wrote yourself for every AI-generated function you keep. Tests the AI wrote often only assert that the code does what the code does.
5. Comments document the why, the non-obvious edge case, the business reason. Anything that restates what the code says gets deleted.
6. Match the codebase: naming, file layout, logging, error types. Output that sticks out will confuse the next person.
7. When an element is borderline, it passes and the doubt is recorded. Aggressive over-flagging makes the gate useless.
