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
- Typography with actual families, weights and fallbacks — not “a modern sans”.
- Colour as hex values with roles attached: background, surface, text, accent, border.
- Spacing and shape — a scale, container widths, a radius rule the agent can apply consistently.
- Motion described in durations and easings rather than “smooth”.
- Attribution, so you can see which decision came from which reference and change your mind later.
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.
Free forever for bookmarking · No card required