Vibe coding

Why everything you vibe-code looks the same.

You describe an app, the agent builds it, and it works. It also looks like every other app built that week: a violet gradient, Inter, cards with a 12px radius, a hero that could belong to anything. The code is fine. The taste is missing.

The model isn't guessing badly. It's guessing.

Ask for “a clean, modern landing page” and you've given a spec that a million pages satisfy. With nothing to anchor to, the model returns the statistical centre of everything it has seen — which is exactly the aesthetic you recognise and can't place. It's not a failure of capability. You asked for the average and got it.

“Make it look better” is where the loop dies

So you iterate. Warmer. Less corporate. More editorial. Each round moves things sideways, because none of those words carry a hex value, a font stack, or a spacing rule. You know precisely which sites you're thinking of. You just can't type them fast enough, and the agent forgets by the next file anyway.

Point at references instead of describing them

The fix isn't better adjectives — it's a reference. Every designer works from them; the agent is the only one in the room without any. Give it three real sites and say which part of each you want, and the vagueness disappears: this one's typography, that one's palette, the third one's motion.

That's what snapp does. You save the sites you wish you'd made, tag what to borrow from each, and it writes one design guide — real font stacks, hex values with roles, a spacing scale, component rules, motion notes — that pastes into your agent and holds across the whole project.

What a usable spec contains

It works wherever you build

The output is Markdown, so it isn't tied to a tool — paste it into a chat, or drop it in a CLAUDE.md or .cursorrules file so every future prompt inherits it.

Works withCursorClaude Codev0LovableBolt
Start saving free

Free forever for bookmarking · No card required

Design for vibe coding — why AI-built apps look the same