惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
V2EX
小众软件
小众软件
GbyAI
GbyAI
B
Blog RSS Feed
月光博客
月光博客
A
About on SuperTechFans
Microsoft Security Blog
Microsoft Security Blog
Blog — PlanetScale
Blog — PlanetScale
U
Unit 42
云风的 BLOG
云风的 BLOG
P
Proofpoint News Feed
Recent Announcements
Recent Announcements
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Vercel News
Vercel News
F
Fortinet All Blogs
Apple Machine Learning Research
Apple Machine Learning Research
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
雷峰网
雷峰网
Google DeepMind News
Google DeepMind News
MongoDB | Blog
MongoDB | Blog
Engineering at Meta
Engineering at Meta
aimingoo的专栏
aimingoo的专栏
博客园_首页
G
Google Developers Blog

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
I Got Sick of My Claude Code UI Slop, So I Crystallized I...
Alexander Mi · 2026-05-19 · via DEV Community

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.

$ 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

Enter fullscreen mode Exit fullscreen mode

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.

  1. 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.
  2. 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.
  3. The pattern travels. Once you have the score, you start seeing it everywhere. Half the recent YC batch lands in the 80s.
  4. 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.