Plan-only authenticity / AI-slop audit across prose, UI, code, and IA. Use when "looks like AI slop", "reads like ChatGPT", or "authenticity burndown". One-page UX apply → enhance-web-ux. Visual polish → enhance-web-ui.
Installs into .claude/skills of the current project.
Are you the author of Plan Antislop?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/kensaurus-plan-antislop-skills)
---
name: plan-antislop
description: >
Plan-only authenticity / AI-slop audit across prose, UI, code, and IA.
Use when "looks like AI slop", "reads like ChatGPT", or "authenticity
burndown". One-page UX apply → enhance-web-ux. Visual polish →
enhance-web-ui.
license: MIT
effort: high
---
# Anti-Slop Audit + Authenticity Burndown Plan
**Degree of freedom: HIGH** — inventory tells, score, plan. Stay
**plan-only**. No rewrites until each phase is approved.
## This skill vs neighbors
| Skill | Owns |
|---|---|
| **plan-antislop** (this) | Authenticity / slop burndown (plan only) |
| `enhance-web-ui` / `enhance-web-ux` | Apply polish after the plan |
| `plan-uiux-unification` | Design-system + IA unification |
| `plan-dead-code` | Provably unreachable code, deps, duplication |
## How to reason (every plan item)
1. **Propose** — direction to remove a tell (not the rewrite)
2. **Risk** — how loudly it reads as machine-made, and who sees it first
3. **Keep-working** — copy/UI/code that already sounds or looks intentional
4. **Phase** — copy → visual → IA → code (do not execute)
## Worked example
> **Propose:** replace the hero dual-clause ("It's not just a tracker, it's a companion") with the concrete benefit already in the docs.
> **Risk:** first-screen cadence is the loudest AI tell; readers bounce.
> **Keep-working:** settings microcopy is already terse and product-specific.
> **Phase:** Phase 1 — copy pass via `docs-writer`.
**Role:** Senior editor + product designer + staff engineer (authenticity lens).
**Task:** Inventory machine-generated tells across prose, visual/UI, code, and structure/IA.
Score each finding by recognizability × effort, cluster into phased burndowns, emit
`plan-antislop.md`. **Audit & plan only — no rewrites until each phase is approved.**
**Find the AI tells. Plan their removal. Change nothing until approved.**
"Slop" is content that is *recognizably* machine-generated: technically fine,
semantically empty, and uniform in a way no human hand would produce. This skill
is the **audit-and-plan** half of de-slopping. It inventories slop across four
surfaces, ranks each finding by *recognizability × effort*, and emits a phased
burndown the user approves before any rewrite happens.
This skill never rewrites. It produces `plan-antislop.md`. Execution is handed to
`enhance-web-ux`, `enhance-web-ui`, `enhance-web-landing`, `design-frontend`,
`audit-i18n`, or `docs-writer` after approval — same contract as every `plan-*`
skill in this repo.
---
## When this fires
Trigger phrases: *"this feels AI-generated"*, *"de-slop this"*, *"reads like
ChatGPT"*, *"make it sound human"*, *"every page looks identical"*, *"it's
generic/templated/soulless"*, *"strip the AI smell before launch"*, *"voice and
authenticity pass"*.
Do **not** fire for: functional bugs (`debug-*`), security/RLS
(`plan-security-audit`), missing tests (`plan-test-coverage`), or designing a new
surface from scratch (`design-frontend`). Slop is about *recognizability*, not
correctness — code can be 100% working and still be 100% slop.
---
## The four slop surfaces [HIGH freedom]
Audit each surface the codebase actually has. Skip surfaces that don't apply
(a backend-only repo has no visual surface).
### 1 · Prose & copy slop
The most detectable surface. Scan all user-facing strings, marketing copy,
READMEs, microcopy, error messages, and comments for:
- **Cadence tells** — "It's not just X, it's Y." / "In today's fast-paced world…"
/ "Let's dive in." / "The result? …" / "But here's the thing:" / rhetorical
question → one-line answer.
- **Filler vocabulary** — *delve, tapestry, realm, landscape, leverage,
seamless, robust, elevate, unlock, empower, navigate, foster, testament,
bustling, vibrant, game-changer, at the end of the day.*
- **Hedge-and-pad** — "it's important to note that", "it's worth mentioning",
"in conclusion", triple-adjective stacks, sentences that restate the heading.
- **Punctuation tics** — em-dash overuse, "—and that's the point.", emoji as
bullet points, Title Case Everywhere, bolded **every** other phrase.
- **Empty symmetry** — three benefits that are the same benefit, "Fast. Simple.
Powerful." triads, conclusions that summarize a 2-paragraph page.
Output for each: file/line, the tell, *why a human wouldn't write it*, and a
direction for the fix (not the fix itself).
### 2 · Visual & UI slop
The "I've seen this exact app 400 times" surface:
- **Default-palette tell** — untouched shadcn violet/zinc, the default Tailwind
blue-600 CTA, no brand color anywhere.
- **Card-grid monotony** — every section is a 3-up grid of identical rounded
cards with an icon, a bold title, and two lines of gray text.
- **Centered-everything** — every section center-aligned, max-w-2xl, same
vertical rhythm, no asymmetry, no intentional focal point.
- **Iconography slop** — a lucide icon on every feature whether it means
anything or not; emoji in headings.
- **No hierarchy** — all sections weighted equally; nothing is the hero, nothing
recedes; uniform spacing top to bottom.
- **Generic motion** — fade-in-on-scroll on everything, or no motion at all.
Cross-check against the project's design tokens if `audit-uiux-design-system`
data or a tokens file exists — slop is often *divergence from* the design system
plus *convergence toward* the framework default.
### 3 · Code slop
Working code that no engineer would have left as-is:
- **Placeholder residue** — `// TODO: implement`, `// your logic here`,
`foo`/`bar`/`data`/`handleClick` naming, `lorem ipsum`, commented-out
scaffolding, `console.log('here')`.
- **Comment slop** — comments restating the code (`// increment i by 1`),
docstrings that paraphrase the function name, banner comments around trivial
blocks.
- **Over-abstraction** — a factory + interface + strategy for one concrete case;
`utils/helpers/index.ts` dumping grounds; premature generics.
- **Copy-paste uniformity** — five near-identical components that should be one
parameterized component; the same try/catch boilerplate everywhere.
- **Defensive theater** — `if (!data) return null` guards that can't trigger;
empty catch blocks; types widened to `any` to silence the compiler.
This overlaps `audit-code-quality` — here the lens is specifically *"looks
auto-generated"*, not general correctness. Flag, don't fix.
It also overlaps `plan-dead-code`, which owns *provable unreachability*
(a module-graph fact). Split by which judgment you are making: commented-out
scaffolding and guards that can't trigger are slop **because a human would
not have left them**, not because a tool proved nothing reaches them. Counts
and deletion of unused files, exports, deps, and duplication belong there.
### 4 · Structure & IA slop
The shape of the thing:
- **Listicle-brain** — everything is a bulleted list because the model defaults
to lists; no prose, no flow, no argument.
- **Symmetrical IA** — every page has identical Hero → Features → Testimonials →
CTA scaffolding regardless of purpose.
- **README slop** — emoji-headers, a feature table no one asked for, "## Getting
Started" boilerplate, badges that don't link anywhere, a "Contributing"
section on a solo throwaway.
- **Empty completeness** — sections that exist because the template had them
(FAQ with invented questions, "Roadmap" with placeholder quarters).
---
## Procedure [HIGH freedom]
1. **Scope.** Identify which of the four surfaces exist. State assumptions. If
the user pointed at a specific route/file, scope to it; otherwise sweep the
user-facing surface area.
2. **Inventory.** Walk each in-scope surface. Collect concrete findings with
`path:line` (or route + screenshot region for visual). Quote the *minimum*
needed to identify the tell — never paste whole files.
3. **Score.** Rate each finding **Recognizability** (how loudly it screams "AI
wrote this": High / Med / Low) × **Effort** (S / M / L). High-recognizability +
Small-effort items are the top of the burndown — biggest authenticity gain per
minute.
4. **Cluster into phases.** Group findings so each phase is independently
shippable and maps to one execution skill. Suggested default ordering:
- **Phase 1 — Copy pass** (`docs-writer` / `audit-i18n`): kill cadence tells &
filler vocab. Highest signal, lowest risk, no visual regression.
- **Phase 2 — Visual identity** (`enhance-web-ui` / `design-frontend`): break
the default palette, introduce hierarchy and one intentional focal point per
view, de-monotonize the card grids.
- **Phase 3 — UX & flow** (`enhance-web-ux` / `enhance-web-landing`): fix IA,
replace symmetrical scaffolding with purpose-driven structure.
- **Phase 4 — Code cleanup** (`audit-code-quality` / `workflow-refactor`):
placeholder residue, comment slop, over-abstraction.
5. **Emit the report.** Write `plan-antislop.md` (template below), then end the turn with a standalone recap in chat: the two or three highest-impact findings and the first phase to approve. The file is the deliverable — write it before the recap.
**Do not start Phase 1.** Wait for explicit approval per phase — the
`approved-plan-execution.mdc` handoff contract applies.
---
## Guardrails [LOW freedom — run exactly]
- **Plan only.** No rewrites, no edits, no "while I'm here" fixes. The deliverable
is the report.
- **Slop ≠ broken.** Don't flag working code as slop just because it's simple.
Simple-and-intentional is the *goal*, not a defect. The test is "would a human
engineer/writer have left this exact thing?" — not "could this be fancier?"
- **Voice is the user's, not yours.** Recommend *directions* ("warm up the CTA
copy to match the conversational tone of the docs"), never ghost-write the
replacement in the plan. The whole point is to remove generic voice, so don't
inject a different generic voice.
- **Don't over-correct into anti-slop slop.** Forced quirkiness, ironic
lowercase, gratuitous em-dashes-the-other-way, and "edgy" copy are *also* slop.
Flag the tendency; aim for intentional, not performative.
- **Cite the design system.** When flagging visual slop, reference the project's
actual tokens/brand if they exist. "Diverges from your defined `--brand-500`"
is actionable; "use nicer colors" is not.
- **Minimal quoting.** Identify tells by location and short excerpt; never
reproduce large blocks of the source.
## Self-critique before the burndown [LOW freedom — do not skip]
1. **evidenced-not-assumed** — `path:line` (or route + region) plus the tell
2. **plan-only** — direction only; no rewrite and no ghost-written replacement
3. **phase justified** — high-recognizability + small-effort leads; copy before code
4. **right-owner** — functional bugs → `debug-*`; new surface from scratch → `design-frontend`
5. **no-false-safety** — simple-and-intentional is not slop; don't invent anti-slop slop
---
## Report template — `plan-antislop.md`
```markdown
# Anti-Slop Burndown — <repo/route>
_Audit-only. Nothing changes until each phase is approved._
## Scope
- Surfaces audited: [ ] Prose [ ] Visual [ ] Code [ ] Structure
- Out of scope / assumptions: …
## Slop score (at a glance)
| Surface | Findings | High-recognizability | Top quick win |
|------------|----------|----------------------|---------------|
| Prose | n | n | … |
| Visual | n | n | … |
| Code | n | n | … |
| Structure | n | n | … |
## Findings
### Prose & copy
| # | Location | Tell | Why it reads as AI | Recog | Effort | Direction |
|---|----------|------|--------------------|-------|--------|-----------|
| P1 | hero/page.tsx:24 | "It's not just a tracker, it's a companion" | dual-clause hype cadence | High | S | state the concrete benefit plainly |
### Visual & UI
| # | Route/region | Tell | Recog | Effort | Direction |
|---|--------------|------|-------|--------|-----------|
### Code
| # | path:line | Tell | Recog | Effort | Direction |
|---|-----------|------|-------|--------|-----------|
### Structure & IA
| # | Location | Tell | Recog | Effort | Direction |
|---|----------|------|-------|--------|-----------|
## Phased burndown
- **Phase 1 — Copy pass** → `docs-writer` / `audit-i18n` — items P1, P3, P7…
- **Phase 2 — Visual identity** → `enhance-web-ui` / `design-frontend` — V1, V2…
- **Phase 3 — UX & flow** → `enhance-web-ux` / `enhance-web-landing` — S1, S4…
- **Phase 4 — Code cleanup** → `audit-code-quality` / `workflow-refactor` — C2…
## Execution handoff
Approve a phase to run it. Suggested order maximizes authenticity-per-effort.
Re-run `plan-antislop` after execution to confirm the burndown closed.
```
---
## Chains with
- **Six-skill plan loop** — slots beside `plan-uiux-unification`; run after it so
visual-slop findings inherit the design-system burndown.
- **Execution:** `enhance-web-ux`, `enhance-web-ui`, `enhance-web-landing`,
`design-frontend`, `audit-i18n`, `docs-writer`, `workflow-refactor`.
- **Verify:** after execution, `test-playwright` (does it still work?) and a
second `plan-antislop` pass (did the slop actually drop?).
> Plan at high effort. Execute after approval at the default effort under `approved-plan-execution.mdc` (no reward hacking, no feature deletion). The plan says *which* slop to remove; the rule constrains *how*.