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)
- Propose — direction to remove a tell (not the rewrite)
- Risk — how loudly it reads as machine-made, and who sees it first
- Keep-working — copy/UI/code that already sounds or looks intentional
- 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]
- 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.
- 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.
- 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.
- 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.
- Emit the report. Write
plan-antislop.md (template below). End the turn.
Do not start Phase 1. Wait for explicit approval per phase — the
composer-2.5-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]
- evidenced-not-assumed —
path:line (or route + region) plus the tell
- plan-only — direction only; no rewrite and no ghost-written replacement
- phase justified — high-recognizability + small-effort leads; copy before code
- right-owner — functional bugs →
debug-*; new surface from scratch → design-frontend
- no-false-safety — simple-and-intentional is not slop; don't invent anti-slop slop
Report template — plan-antislop.md
# 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 with a strong reasoning model; execute with composer-2.5-execution.mdc
riding along. The plan says which slop to remove; the rule constrains how.
1---2name: plan-antislop-23description: 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.4license: MIT5---67# Anti-Slop Audit + Authenticity Burndown Plan89**Degree of freedom: HIGH** — inventory tells, score, plan. Stay10**plan-only**. No rewrites until each phase is approved.1112## This skill vs neighbors1314| Skill | Owns |15|---|---|16| **plan-antislop** (this) | Authenticity / slop burndown (plan only) |17| `enhance-web-ui` / `enhance-web-ux` | Apply polish after the plan |18| `plan-uiux-unification` | Design-system + IA unification |19| `plan-dead-code` | Provably unreachable code, deps, duplication |2021## How to reason (every plan item)22231. **Propose** — direction to remove a tell (not the rewrite)242. **Risk** — how loudly it reads as machine-made, and who sees it first253. **Keep-working** — copy/UI/code that already sounds or looks intentional264. **Phase** — copy → visual → IA → code (do not execute)2728## Worked example2930> **Propose:** replace the hero dual-clause ("It's not just a tracker, it's a companion") with the concrete benefit already in the docs.31> **Risk:** first-screen cadence is the loudest AI tell; readers bounce.32> **Keep-working:** settings microcopy is already terse and product-specific.33> **Phase:** Phase 1 — copy pass via `docs-writer`.3435**Role:** Senior editor + product designer + staff engineer (authenticity lens).3637**Task:** Inventory machine-generated tells across prose, visual/UI, code, and structure/IA.38Score each finding by recognizability × effort, cluster into phased burndowns, emit39`plan-antislop.md`. **Audit & plan only — no rewrites until each phase is approved.**4041**Find the AI tells. Plan their removal. Change nothing until approved.**4243"Slop" is content that is *recognizably* machine-generated: technically fine,44semantically empty, and uniform in a way no human hand would produce. This skill45is the **audit-and-plan** half of de-slopping. It inventories slop across four46surfaces, ranks each finding by *recognizability × effort*, and emits a phased47burndown the user approves before any rewrite happens.4849This skill never rewrites. It produces `plan-antislop.md`. Execution is handed to50`enhance-web-ux`, `enhance-web-ui`, `enhance-web-landing`, `design-frontend`,51`audit-i18n`, or `docs-writer` after approval — same contract as every `plan-*`52skill in this repo.5354---5556## When this fires5758Trigger phrases: *"this feels AI-generated"*, *"de-slop this"*, *"reads like59ChatGPT"*, *"make it sound human"*, *"every page looks identical"*, *"it's60generic/templated/soulless"*, *"strip the AI smell before launch"*, *"voice and61authenticity pass"*.6263Do **not** fire for: functional bugs (`debug-*`), security/RLS64(`plan-security-audit`), missing tests (`plan-test-coverage`), or designing a new65surface from scratch (`design-frontend`). Slop is about *recognizability*, not66correctness — code can be 100% working and still be 100% slop.6768---6970## The four slop surfaces [HIGH freedom]7172Audit each surface the codebase actually has. Skip surfaces that don't apply73(a backend-only repo has no visual surface).7475### 1 · Prose & copy slop7677The most detectable surface. Scan all user-facing strings, marketing copy,78READMEs, microcopy, error messages, and comments for:7980- **Cadence tells** — "It's not just X, it's Y." / "In today's fast-paced world…"81 / "Let's dive in." / "The result? …" / "But here's the thing:" / rhetorical82 question → one-line answer.83- **Filler vocabulary** — *delve, tapestry, realm, landscape, leverage,84 seamless, robust, elevate, unlock, empower, navigate, foster, testament,85 bustling, vibrant, game-changer, at the end of the day.*86- **Hedge-and-pad** — "it's important to note that", "it's worth mentioning",87 "in conclusion", triple-adjective stacks, sentences that restate the heading.88- **Punctuation tics** — em-dash overuse, "—and that's the point.", emoji as89 bullet points, Title Case Everywhere, bolded **every** other phrase.90- **Empty symmetry** — three benefits that are the same benefit, "Fast. Simple.91 Powerful." triads, conclusions that summarize a 2-paragraph page.9293Output for each: file/line, the tell, *why a human wouldn't write it*, and a94direction for the fix (not the fix itself).9596### 2 · Visual & UI slop9798The "I've seen this exact app 400 times" surface:99100- **Default-palette tell** — untouched shadcn violet/zinc, the default Tailwind101 blue-600 CTA, no brand color anywhere.102- **Card-grid monotony** — every section is a 3-up grid of identical rounded103 cards with an icon, a bold title, and two lines of gray text.104- **Centered-everything** — every section center-aligned, max-w-2xl, same105 vertical rhythm, no asymmetry, no intentional focal point.106- **Iconography slop** — a lucide icon on every feature whether it means107 anything or not; emoji in headings.108- **No hierarchy** — all sections weighted equally; nothing is the hero, nothing109 recedes; uniform spacing top to bottom.110- **Generic motion** — fade-in-on-scroll on everything, or no motion at all.111112Cross-check against the project's design tokens if `audit-uiux-design-system`113data or a tokens file exists — slop is often *divergence from* the design system114plus *convergence toward* the framework default.115116### 3 · Code slop117118Working code that no engineer would have left as-is:119120- **Placeholder residue** — `// TODO: implement`, `// your logic here`,121 `foo`/`bar`/`data`/`handleClick` naming, `lorem ipsum`, commented-out122 scaffolding, `console.log('here')`.123- **Comment slop** — comments restating the code (`// increment i by 1`),124 docstrings that paraphrase the function name, banner comments around trivial125 blocks.126- **Over-abstraction** — a factory + interface + strategy for one concrete case;127 `utils/helpers/index.ts` dumping grounds; premature generics.128- **Copy-paste uniformity** — five near-identical components that should be one129 parameterized component; the same try/catch boilerplate everywhere.130- **Defensive theater** — `if (!data) return null` guards that can't trigger;131 empty catch blocks; types widened to `any` to silence the compiler.132133This overlaps `audit-code-quality` — here the lens is specifically *"looks134auto-generated"*, not general correctness. Flag, don't fix.135136It also overlaps `plan-dead-code`, which owns *provable unreachability*137(a module-graph fact). Split by which judgment you are making: commented-out138scaffolding and guards that can't trigger are slop **because a human would139not have left them**, not because a tool proved nothing reaches them. Counts140and deletion of unused files, exports, deps, and duplication belong there.141142### 4 · Structure & IA slop143144The shape of the thing:145146- **Listicle-brain** — everything is a bulleted list because the model defaults147 to lists; no prose, no flow, no argument.148- **Symmetrical IA** — every page has identical Hero → Features → Testimonials →149 CTA scaffolding regardless of purpose.150- **README slop** — emoji-headers, a feature table no one asked for, "## Getting151 Started" boilerplate, badges that don't link anywhere, a "Contributing"152 section on a solo throwaway.153- **Empty completeness** — sections that exist because the template had them154 (FAQ with invented questions, "Roadmap" with placeholder quarters).155156---157158## Procedure [HIGH freedom]1591601. **Scope.** Identify which of the four surfaces exist. State assumptions. If161 the user pointed at a specific route/file, scope to it; otherwise sweep the162 user-facing surface area.1632. **Inventory.** Walk each in-scope surface. Collect concrete findings with164 `path:line` (or route + screenshot region for visual). Quote the *minimum*165 needed to identify the tell — never paste whole files.1663. **Score.** Rate each finding **Recognizability** (how loudly it screams "AI167 wrote this": High / Med / Low) × **Effort** (S / M / L). High-recognizability +168 Small-effort items are the top of the burndown — biggest authenticity gain per169 minute.1704. **Cluster into phases.** Group findings so each phase is independently171 shippable and maps to one execution skill. Suggested default ordering:172 - **Phase 1 — Copy pass** (`docs-writer` / `audit-i18n`): kill cadence tells &173 filler vocab. Highest signal, lowest risk, no visual regression.174 - **Phase 2 — Visual identity** (`enhance-web-ui` / `design-frontend`): break175 the default palette, introduce hierarchy and one intentional focal point per176 view, de-monotonize the card grids.177 - **Phase 3 — UX & flow** (`enhance-web-ux` / `enhance-web-landing`): fix IA,178 replace symmetrical scaffolding with purpose-driven structure.179 - **Phase 4 — Code cleanup** (`audit-code-quality` / `workflow-refactor`):180 placeholder residue, comment slop, over-abstraction.1815. **Emit the report.** Write `plan-antislop.md` (template below). End the turn.182 **Do not start Phase 1.** Wait for explicit approval per phase — the183 `composer-2.5-execution.mdc` handoff contract applies.184185---186187## Guardrails [LOW freedom — run exactly]188189- **Plan only.** No rewrites, no edits, no "while I'm here" fixes. The deliverable190 is the report.191- **Slop ≠ broken.** Don't flag working code as slop just because it's simple.192 Simple-and-intentional is the *goal*, not a defect. The test is "would a human193 engineer/writer have left this exact thing?" — not "could this be fancier?"194- **Voice is the user's, not yours.** Recommend *directions* ("warm up the CTA195 copy to match the conversational tone of the docs"), never ghost-write the196 replacement in the plan. The whole point is to remove generic voice, so don't197 inject a different generic voice.198- **Don't over-correct into anti-slop slop.** Forced quirkiness, ironic199 lowercase, gratuitous em-dashes-the-other-way, and "edgy" copy are *also* slop.200 Flag the tendency; aim for intentional, not performative.201- **Cite the design system.** When flagging visual slop, reference the project's202 actual tokens/brand if they exist. "Diverges from your defined `--brand-500`"203 is actionable; "use nicer colors" is not.204- **Minimal quoting.** Identify tells by location and short excerpt; never205 reproduce large blocks of the source.206207## Self-critique before the burndown [LOW freedom — do not skip]2082091. **evidenced-not-assumed** — `path:line` (or route + region) plus the tell2102. **plan-only** — direction only; no rewrite and no ghost-written replacement2113. **phase justified** — high-recognizability + small-effort leads; copy before code2124. **right-owner** — functional bugs → `debug-*`; new surface from scratch → `design-frontend`2135. **no-false-safety** — simple-and-intentional is not slop; don't invent anti-slop slop214215---216217## Report template — `plan-antislop.md`218219```markdown220# Anti-Slop Burndown — <repo/route>221222_Audit-only. Nothing changes until each phase is approved._223224## Scope225- Surfaces audited: [ ] Prose [ ] Visual [ ] Code [ ] Structure226- Out of scope / assumptions: …227228## Slop score (at a glance)229| Surface | Findings | High-recognizability | Top quick win |230|------------|----------|----------------------|---------------|231| Prose | n | n | … |232| Visual | n | n | … |233| Code | n | n | … |234| Structure | n | n | … |235236## Findings237### Prose & copy238| # | Location | Tell | Why it reads as AI | Recog | Effort | Direction |239|---|----------|------|--------------------|-------|--------|-----------|240| 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 |241242### Visual & UI243| # | Route/region | Tell | Recog | Effort | Direction |244|---|--------------|------|-------|--------|-----------|245246### Code247| # | path:line | Tell | Recog | Effort | Direction |248|---|-----------|------|-------|--------|-----------|249250### Structure & IA251| # | Location | Tell | Recog | Effort | Direction |252|---|----------|------|-------|--------|-----------|253254## Phased burndown255- **Phase 1 — Copy pass** → `docs-writer` / `audit-i18n` — items P1, P3, P7…256- **Phase 2 — Visual identity** → `enhance-web-ui` / `design-frontend` — V1, V2…257- **Phase 3 — UX & flow** → `enhance-web-ux` / `enhance-web-landing` — S1, S4…258- **Phase 4 — Code cleanup** → `audit-code-quality` / `workflow-refactor` — C2…259260## Execution handoff261Approve a phase to run it. Suggested order maximizes authenticity-per-effort.262Re-run `plan-antislop` after execution to confirm the burndown closed.263```264265---266267## Chains with268269- **Six-skill plan loop** — slots beside `plan-uiux-unification`; run after it so270 visual-slop findings inherit the design-system burndown.271- **Execution:** `enhance-web-ux`, `enhance-web-ui`, `enhance-web-landing`,272 `design-frontend`, `audit-i18n`, `docs-writer`, `workflow-refactor`.273- **Verify:** after execution, `test-playwright` (does it still work?) and a274 second `plan-antislop` pass (did the slop actually drop?).275276> Plan with a strong reasoning model; execute with `composer-2.5-execution.mdc`277> riding along. The plan says *which* slop to remove; the rule constrains *how*.