# I Got Sick of My Claude Code UI Slop, So I Crystallized It into a Go CLI

> Source: <https://dev.to/alexander_mia_9/i-got-sick-of-my-claude-code-ui-slop-so-i-crystallized-it-into-a-go-cli-2hni>
> Published: 2026-05-18 19:05:11+00:00

Every time I asked Claude Code to "build me a landing page," I got the same page back.

Centered hero. Inter font for everything. Maybe Space Grotesk if it felt artsy. A purple-to-blue gradient on the H1. A small pill badge floating above the headline ("New," "Beta," "Now with AI"). Three identical feature cards underneath, each with a Lucide icon on top, usually `zap`

, `shield-check`

, `sparkles`

. A numbered 1-2-3 steps row. Glassmorphism on the nav. shadcn/ui everywhere. Dark mode with grey-on-darker-grey body text that fails contrast checks but "looks clean."

After about the twentieth one I started seeing it in my sleep. So I stopped complaining and built a tool.

## `uislop`

: a Go CLI that scores how AI-generated a page looks

It takes a URL, fetches the HTML and linked JS, runs a pile of regexes against it, and prints a single number between 0 and 100.

``` bash
$ uislop https://some-ai-startup.ai
  font:Inter            hits=12  weight=2  add=24
  color:purple          hits=8   weight=3  add=24
  color:gradient        hits=14  weight=2  add=28
  css:shadcn            hits=4   weight=4  add=16
  icon:svg_lucide       hits=11  weight=2  add=22
  layout:centered       hits=7   weight=2  add=14
  layout:allCaps        hits=9   weight=1  add=9
  ----
87
```

0 means "looks human-built or pre-2022." 100 means "this was vibe-coded last Tuesday."

Why Go? Same reason I defaulted my new projects to Go. One binary, runs anywhere, no virtualenv, no dependency drift. I can scp it to anything and grep the entire web.

## The signals I crystallized

After eyeballing a few hundred AI startup landing pages, the patterns are weirdly consistent.

### Fonts

-
`Inter`

on literally everything -
`Space Grotesk`

when feeling fancy -
`Geist Sans`

/`Geist Mono`

in the year-of-Vercel -
`Instrument Serif`

for one italic word in the H1 ("the only ~platform~ you need") -
`CameraPlainVariable`

served from`cdn.gpteng.co`

, basically a Lovable fingerprint

### Colors

- VibeCode purple (#8b5cf6, #7c3aed)
- Gradients on the H1, the CTA, the icon backgrounds, the nav border, everywhere
- Dark mode with
`bg-zinc-950`

- Body text at
`text-zinc-400`

over`bg-zinc-900`

, 3.8:1 contrast, fails WCAG, "looks clean" - Soft colored glows behind every primary button

### Layout

- Centered hero with
`max-w-3xl text-center`

- Tiny pill badge above the H1 (
`rounded-full bg-primary/10`

) - Three feature cards,
`grid-cols-3 gap-8`

, each with an icon on top - Numbered
`01 - Sign up / 02 - Get started / 03 - Win`

steps - All-caps section labels with
`tracking-wider`

- Stat banner row ("10k+ users," "99.9% uptime," "$0 cost")

### The icons

Always Lucide. Always the same five: `zap`

, `shield-check`

, `bot`

, `sparkles`

, `rocket`

. If a page has all five visible above the fold, it is a tell.

### The CSS giveaways

- shadcn primitives in the bundle
-
`backdrop-blur-md bg-white/10`

on the nav - Tailwind utility soup
-
`cdn.gpteng.co`

in the asset URLs

## What I learned shipping it

A few things surprised me.

-
**The signal is loud.** I expected to need ML. Regex on the HTML and one pass of linked JS gets you to 90%+ accuracy on the obvious cases. -
**Geist Sans skews the score harder than I thought.** Half the false positives are real human-built sites that just happen to use Vercel's font. -
**The pattern travels.** Once you have the score, you start seeing it everywhere. Half the recent YC batch lands in the 80s. -
**The cure for being part of the problem is to look at your own page.** Mine scored 72. I shipped the tool anyway.

## What this is and is not

It is not a tool to shame anyone. Shipping anything is hard. If shadcn + Lucide + purple gradient is what gets you to revenue, ship it.

It is a forcing function. When the default output of every model converges on the same aesthetic, "looks like everyone else" becomes the new "looks unstyled." The score is just a mirror.

One weird trick to drop your score: swap Inter for a real typeface, pick a color that is not on the violet wheel, and delete one feature card. Three minutes, ten points off.
