{"slug": "i-got-sick-of-my-claude-code-ui-slop-so-i-crystallized-it-into-a-go-cli", "title": "I Got Sick of My Claude Code UI Slop, So I Crystallized It into a Go CLI", "summary": "\"uislop,\" a Go CLI tool created by a developer frustrated with the repetitive, AI-generated design patterns found on startup landing pages. The tool scores a webpage from 0 to 100 by analyzing its HTML and JavaScript for common AI aesthetic markers, such as specific fonts (Inter, Space Grotesk), color schemes (purple gradients), and UI elements (shadcn/ui, Lucide icons). The author emphasizes the tool is not for shaming but serves as a \"forcing function\" to encourage more unique design choices.", "body_md": "Every time I asked Claude Code to \"build me a landing page,\" I got the same page back.\n\nCentered 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`\n\n, `shield-check`\n\n, `sparkles`\n\n. 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.\"\n\nAfter about the twentieth one I started seeing it in my sleep. So I stopped complaining and built a tool.\n\n## `uislop`\n\n: a Go CLI that scores how AI-generated a page looks\n\nIt 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.\n\n``` bash\n$ uislop https://some-ai-startup.ai\n  font:Inter            hits=12  weight=2  add=24\n  color:purple          hits=8   weight=3  add=24\n  color:gradient        hits=14  weight=2  add=28\n  css:shadcn            hits=4   weight=4  add=16\n  icon:svg_lucide       hits=11  weight=2  add=22\n  layout:centered       hits=7   weight=2  add=14\n  layout:allCaps        hits=9   weight=1  add=9\n  ----\n87\n```\n\n0 means \"looks human-built or pre-2022.\" 100 means \"this was vibe-coded last Tuesday.\"\n\nWhy 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.\n\n## The signals I crystallized\n\nAfter eyeballing a few hundred AI startup landing pages, the patterns are weirdly consistent.\n\n### Fonts\n\n-\n`Inter`\n\non literally everything -\n`Space Grotesk`\n\nwhen feeling fancy -\n`Geist Sans`\n\n/`Geist Mono`\n\nin the year-of-Vercel -\n`Instrument Serif`\n\nfor one italic word in the H1 (\"the only ~platform~ you need\") -\n`CameraPlainVariable`\n\nserved from`cdn.gpteng.co`\n\n, basically a Lovable fingerprint\n\n### Colors\n\n- VibeCode purple (#8b5cf6, #7c3aed)\n- Gradients on the H1, the CTA, the icon backgrounds, the nav border, everywhere\n- Dark mode with\n`bg-zinc-950`\n\n- Body text at\n`text-zinc-400`\n\nover`bg-zinc-900`\n\n, 3.8:1 contrast, fails WCAG, \"looks clean\" - Soft colored glows behind every primary button\n\n### Layout\n\n- Centered hero with\n`max-w-3xl text-center`\n\n- Tiny pill badge above the H1 (\n`rounded-full bg-primary/10`\n\n) - Three feature cards,\n`grid-cols-3 gap-8`\n\n, each with an icon on top - Numbered\n`01 - Sign up / 02 - Get started / 03 - Win`\n\nsteps - All-caps section labels with\n`tracking-wider`\n\n- Stat banner row (\"10k+ users,\" \"99.9% uptime,\" \"$0 cost\")\n\n### The icons\n\nAlways Lucide. Always the same five: `zap`\n\n, `shield-check`\n\n, `bot`\n\n, `sparkles`\n\n, `rocket`\n\n. If a page has all five visible above the fold, it is a tell.\n\n### The CSS giveaways\n\n- shadcn primitives in the bundle\n-\n`backdrop-blur-md bg-white/10`\n\non the nav - Tailwind utility soup\n-\n`cdn.gpteng.co`\n\nin the asset URLs\n\n## What I learned shipping it\n\nA few things surprised me.\n\n-\n**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. -\n**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. -\n**The pattern travels.** Once you have the score, you start seeing it everywhere. Half the recent YC batch lands in the 80s. -\n**The cure for being part of the problem is to look at your own page.** Mine scored 72. I shipped the tool anyway.\n\n## What this is and is not\n\nIt is not a tool to shame anyone. Shipping anything is hard. If shadcn + Lucide + purple gradient is what gets you to revenue, ship it.\n\nIt 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.\n\nOne 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.", "url": "https://wpnews.pro/news/i-got-sick-of-my-claude-code-ui-slop-so-i-crystallized-it-into-a-go-cli", "canonical_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_at": "2026-05-18 19:05:11+00:00", "updated_at": "2026-05-18 19:32:55.753888+00:00", "lang": "en", "topics": ["developer-tools", "artificial-intelligence", "startups", "products", "open-source"], "entities": ["Claude Code", "Go", "Inter", "Space Grotesk", "Geist Sans", "Lucide", "shadcn/ui", "Vercel"], "alternates": {"html": "https://wpnews.pro/news/i-got-sick-of-my-claude-code-ui-slop-so-i-crystallized-it-into-a-go-cli", "markdown": "https://wpnews.pro/news/i-got-sick-of-my-claude-code-ui-slop-so-i-crystallized-it-into-a-go-cli.md", "text": "https://wpnews.pro/news/i-got-sick-of-my-claude-code-ui-slop-so-i-crystallized-it-into-a-go-cli.txt", "jsonld": "https://wpnews.pro/news/i-got-sick-of-my-claude-code-ui-slop-so-i-crystallized-it-into-a-go-cli.jsonld"}}