Claude Code skill · Open source

kill-the-ai-slop

A Claude Code skill that reviews UI like a blunt design director: 20 tells, greppable evidence, and a 0-100 Slop Score with fixes you can execute without taste.

Status
Open source
Stack
Claude Code, Markdown rubric, Shell
Links
GitHub ↗

The problem

Teams argue about whether a UI “looks AI-generated” the way people argue about taste: loudly, and without evidence. Meanwhile the tells are sitting right there in the markup. The indigo-to-pink gradient, the sparkle pill announcing a launch that never happened, the testimonial from a person who does not exist. Generators do not make bad choices. They make no choices, and a non-choice is detectable.

So instead of arguing, I wrote the argument down.

What I built

kill-the-ai-slop is a Claude Code skill that critiques landing pages, dashboards, components, and screenshots in the voice of a design director with fifteen years of shipped product. The core is a 900-line rubric of 20 tells. Each tell has greppable detection signals, a point weight, and carve-outs, so a deliberate choice that happens to be unfashionable never gets punished. The output is a Slop Report: findings that quote exact classes and copy with file and line references, and a 0-100 Slop Score.

Slop is not ugliness. Slop is the absence of decisions.

Real output, not a mockup

Both pairs below are real files in the repo, rendered in a real browser. The “before” is exactly what a generator emits; the “after” is the same slot after every fix in the skill’s report was executed.

Generated hero section with an indigo-to-pink gradient, sparkle announcement pill, gradient headline, and centered layout Redesigned invoicing product hero with a restrained background, left-aligned headline, and a real invoice component
Before: “Modern SaaS hero section” as generated. Slop Score 72/100. After: The report’s fixes, executed. A product you can name.
Generated analytics dashboard with cyan-to-purple accents, hardcoded chart data, and placeholder activity bars Redesigned analytics dashboard with a restrained neutral palette, clear metric hierarchy, and an honest activity feed
Before: “Sleek AI analytics dashboard” as generated. Slop Score 78/100. After: Color signals state, and every piece of data earns its place.

The report that produced that first pair reads like this, verbatim: “Every detection signal for this tell at once, plus one the rubric didn’t anticipate: the sparkle rendered twice, icon and emoji, on an announcement whose link goes to #. There is no v2.0; there is no v1.0.”

How it works

For code, the skill reads every UI file in scope plus the token layer: tailwind config, global CSS, and font registration. For a live URL it fetches the raw markup, because markdown-converting fetchers strip the class attributes that are the evidence.

Each tell documents its carve-outs. A purple gradient a brand owns, a centered hero on a manifesto page, or an emoji in a genuinely playful product may be a deliberate decision. The skill checks that context before it scores.

In screenshot mode, the skill scores only what an image can show. It skips code-only checks such as hrefs, focus states, and motion, then says so in the finding.

Why it exists

I kept giving the same design review to AI-generated UI, one comment at a time. This skill is that review, encoded once and executable by anyone, including people who do not trust their own taste yet. Writing taste down turns out to be a design problem, and that is the part I enjoyed most.