AI-Slop UI Auditor
Grades an existing page against the named tells of AI-generated UI and returns a ranked punch list with file and line, then rebuilds the structure in place without touching copy, routes, or brand.
What it does
Reads the UI code you point at and scores it against a catalogue of named anti-patterns: the purple-to-blue gradient hero, Inter and Poppins everywhere, the three-equal-column icon-card grid, cards nested inside cards, the background-clip gradient headline, the thick coloured side-stripe card, the full-viewport centred hero with every element on one axis, `transition: all`, a uniform `hover:scale-105` across unrelated elements, italic display headings, emoji used as feature icons, two icon libraries on the same page, re-drawn fake browser and phone chrome, and invented proof such as "trusted by 50,000+ teams". Every finding comes back as the named tell, the file and line range, a severity of critical, major, or minor, and a one-line fix, grouped by severity and with no edits made. Structure is graded separately from styling, so a page whose visual treatment is clean still fails when its skeleton is the hero to three-features to CTA to footer template, or when it repeats the fingerprint of another page in the same project. In redesign mode the section rhythm, heading placement, and component voice are rebuilt inside the existing implementation boundaries: copy intent, information architecture, routes, component ownership, and brand survive, deletions require explicit confirmation, and the files to be modified are named before anything is written. The anti-pattern catalogue, the severity rubric, and the pre-emit self-critique are distilled from Nutlope/hallmark (25,685 stars, 1,313 forks, MIT, built at Together AI).
When to use
- ✓A page you or an agent generated is technically correct but reads as machine-made, and you want the specific tells named at file and line instead of a vague instruction to make it look better
- ✓Redesigning an existing page where the copy, the route, and the brand must survive and only the visual and interaction layer changes
- ✓Keeping structural variety across a site, so two pages built from two different briefs do not ship the same skeleton in different colours
- ✓Checking a page against a project design.md and flagging per-page theme picks that drift from the declared system
When not to use
- ✗Designing something new from a brief with no existing code to grade: distinctive-ui-designer invents the visual direction, this skill judges one that already exists
- ✗An accessibility, focus-order, keyboard, or contrast compliance pass: use web-interface-guidelines-reviewer, which grades against interface guidelines rather than aesthetic tells
- ✗Reproducing a handed-off design file exactly, where any deviation is the failure: use figma-design-implementer
- ✗Copying the look of a specific site you admire; extracting structure and type pairing as a reference is in scope, cloning a page is not
Install
Download the .zip, then unzip into your Claude skills folder.
mkdir -p ~/.claude/skills
unzip ~/Downloads/ai-slop-ui-auditor.zip -d ~/.claude/skills/
# Restart Claude Code session.
# Skill is now available — Claude will use it when relevant.SKILL.md
---
name: ai-slop-ui-auditor
description: Use when an existing page or component looks AI-generated and needs the tells named, or when it needs a structural redesign that preserves copy, routes, and brand. Triggers on "does this look AI-generated", "audit my landing page", "this looks templated", "redesign this page", "why does our site look like every other SaaS site". Not for building new UI from a brief, and not for accessibility compliance.
---
# AI-Slop UI Auditor
Two modes, and picking the wrong one wastes the pass. **Audit** reads and grades, and edits nothing. **Redesign** rewrites the visual and interaction layer in place. If the request is ambiguous, audit first and offer the redesign afterwards, because a punch list is cheap and a rewrite is not.
## Audit mode
Read the target files. For every finding, report four things and nothing else:
| Field | Content |
|---|---|
| Tell | The named anti-pattern, not a paraphrase |
| Where | File path and line range |
| Severity | `critical` ships as slop · `major` reads as AI-generated · `minor` taste issue |
| Fix | One concrete correction, not a direction |
Group by severity and close with a count: `N critical · M major · K minor`. Make no edits in this mode, and do not slide into redesigning. A finding without a file and line is an opinion.
## The catalogue
These are the tells that carry real signal. One is a problem; two in the same viewport is a confirmation.
**Colour and type.** Purple-to-blue or cyan-to-magenta gradients anywhere, including `background-clip: text` headlines. Inter, Roboto, Open Sans, Poppins, or Lato as the display face. Pure `#000` or `#fff` as a base colour. Zero-chroma neutrals. More than three font families on the page. Italic on any heading, wordmark, stat figure, or an `<em>` inside a headline, which is among the most reliable tells there is.
**Layout.** The three-equal-column grid of icon-above-heading tiles. A card nested inside another card. A thick coloured side-stripe on a card. A hero that is `min-height: 100vh` with the eyebrow, title, lede, and CTA all stacked on one centred axis. Sections separated only by equal whitespace, with no rule, no ornament, and no colour shift.
**Motion.** `transition: all`. A uniform `hover:scale-105` applied across unrelated elements. Overshoot easings on buttons and modals. More than one hover effect on the same element. Animating `width`, `height`, `top`, `left`, `margin`, or `padding`. A focus ring that fades in, when keyboard users need it immediately. Motion with no `prefers-reduced-motion` fallback.
**Content and chrome.** Invented metrics: "+47% conversion", "trusted by 50,000+ teams", "10x faster", fabricated testimonials, logo walls for customers who do not exist. Placeholder names such as Jane Doe, or startup clichés such as Acme and Nexus. Emoji used as a feature-card or pricing-tier icon. Two or more icon libraries mixed on one page. Hand-drawn fake browser bars, fake phone frames, and fake IDE windows, when the reader already has real chrome around the page.
## Grade structure separately
A page can pass every styling gate and still be slop, because the skeleton is the tell. Flag as a critical structural finding when:
- The page runs the generic template: centred hero, three equal feature cards, CTA band, footer, with no asymmetry anywhere.
- The page shares its structural fingerprint with another page in the same project. Measure structural distance, not visual distance; a colour swap is not variety.
- The project has a `design.md` or `DESIGN.md` and the page uses tokens, fonts, or an accent that the system does not declare. On a system-managed project, a per-page theme pick is drift even when the page is internally coherent.
The inverse also holds. On a project with no declared system, pages that all share one macrostructure are the finding.
## Redesign mode
The content is fine; the shape is not. Change the shape, and do not become a rewrite of the product.
**Before editing, state the files you expect to modify, create, or delete.** Deletions need explicit confirmation. Never remove route files, component directories, or an existing site because a redesign would be tidier without them. Default to in-place edits of the named files, or additive components and tokens wired through the existing route. Treat READMEs, briefs, decks, and PDFs as material for understanding the product, never as page copy to paste verbatim.
Scope first. A single file is a single-page redesign. A directory, a glob, several named files, or "the whole site" is a multi-page redesign, and the rule inverts there: across pages of one product, consistency is the goal and variety is the bug. For multi-page work, write one `design.md` at the project root first, declaring genre, macrostructure family per page type, colour tokens, type pairing and scale, spacing scale, motion easings and reduced-motion fallback, and CTA voice. Every page then reads that file. Seventeen independently themed pages are a split-personality app even when each page is good.
## Before handing anything back
Score the output 1 to 5 on six axes and revise anything below 3:
1. **Philosophy** — is there a position here, or only a layout?
2. **Hierarchy** — can a reader tell what is primary within two seconds?
3. **Execution** — rule weights, focus rings, contrast, text wrapping, all in spec?
4. **Specificity** — does this look like this brief, or like any brief?
5. **Restraint** — has everything that is not earning its place been removed?
6. **Variety** — does this share a structural fingerprint with something else in the project?
Two revision passes is normal. A third usually means the brief is wrong rather than the design.
Then verify the page at 320, 375, 414, and 768 pixels. No horizontal scroll at any width between 320 and 1920, enforced with `overflow-x: clip` on both `html` and `body` rather than `hidden`, which would break sticky and fixed descendants. No clickable text wrapping to two lines. Image-bearing grid tracks use `minmax(0, 1fr)`, never a bare `1fr`.
## Deliverable
Audit mode returns the punch list and the count, and nothing was changed. Redesign mode returns the changed files, the structural choice that replaced the old one, and one sentence on what a reader now sees first.
Example prompts
Once installed, try these prompts in Claude:
- Audit app/(marketing)/page.tsx and its stylesheet for AI-generated design tells. Ranked punch list only, with file and line, severity, and a one-line fix for each. Do not edit anything.
- Our pricing page has the same shape as every other SaaS pricing page. Redesign the structure and component voice in place, keep the copy and the route, and list the files you plan to change before you change them.
- Aug 18, 2026New skill: audits an existing page against the named tells of AI-generated UI with file:line findings and severity, and redesigns structure in place while preserving copy, routes, and brand.