Skip to content
don’t make it ugly
All packs

Pack No design background needed

First Vibe-Coded App

Defaults that are hard to get wrong, for people who have never built software before.

A contract for your first app: warm off-white pages, one teal, soft corners, one friendly typeface in five sizes. Nothing here needs design knowledge. The agent reads the file, uses only what is in it, and runs a check that tells it what to fix in plain language.

Install the pack before you ask for a single screen. Then build with v0 or your agent, use tweakcn if you are on shadcn, and paste a Checklist Design list into your prompt so the empty state and the focus ring don't get forgotten. Auto Animate is the one motion library you need. When something looks off, run the check and hand the report to the agent.

Type
DM Sans + DM Mono
Colours
15 tokens
Stack
React, Next.js, Tailwind CSS
Checks
/

For agents: this pack as markdown · install manifest

Reference screens

Look at these before you write a prompt, so you’re describing something real. Take the principle, not the pixels.

  • Preview of Godly

    Godly

    What good looks like. You don't need to copy any of it; you need to have seen it before you describe what you want.

    Look at: how much empty space there is, how few colours each site uses

  • Preview of tweakcn

    tweakcn

    A theme editor for shadcn apps. Ten minutes here does more than an afternoon of prompting.

    Look at: how one radius and one accent change the whole feel

  • Preview of Checklist Design

    Checklist Design

    What every screen should include. Paste a checklist into your prompt so the agent stops forgetting things.

    Look at: the form and empty-state checklists

The contract

A DESIGN.md on Google’s open format: tokens in the front matter, the reasoning in prose. Your agent reads the whole thing; you can read the summary.

Colours

  • paper#f8f7f4
  • surface#ffffff
  • surface-2#efede8
  • ink#17181a
  • ink-2#55575c
  • ink-3#7d8087
  • line#e3e1dc
  • line-strong#c9c6bf
  • primary#0f766e
  • primary-soft#e6f4f2
  • on-primary#ffffff
  • success#15803d
  • success-soft#ecfdf3
  • error#b42318
  • error-soft#fef3f2

Type

  • DM Sanstitle · 32px / 600
  • DM Sansheading · 20px / 600
  • DM Sansbody · 16px / 400
  • DM Sanssmall · 14px / 400
  • DM Sanslabel · 14px / 500
  • DM Monomono · 14px / 400

Spacing

base
4px
xs
4px
sm
8px
md
16px
lg
24px
xl
32px
2xl
48px
3xl
64px
gutter
16px
measure
640px

Radii

sm
6px
md
8px
lg
12px
full
9999px
Read the whole file170 lines
---
version: alpha
name: First Vibe-Coded App
description: Safe, good-looking defaults for someone building their first app with an agent. Nothing here needs a design vocabulary.
colors:
  paper: "#f8f7f4"
  surface: "#ffffff"
  surface-2: "#efede8"
  ink: "#17181a"
  ink-2: "#55575c"
  ink-3: "#7d8087"
  line: "#e3e1dc"
  line-strong: "#c9c6bf"
  primary: "#0f766e"
  primary-soft: "#e6f4f2"
  on-primary: "#ffffff"
  success: "#15803d"
  success-soft: "#ecfdf3"
  error: "#b42318"
  error-soft: "#fef3f2"
typography:
  title:
    fontFamily: DM Sans
    fontSize: 32px
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: -0.02em
  heading:
    fontFamily: DM Sans
    fontSize: 20px
    fontWeight: 600
    lineHeight: 1.3
  body:
    fontFamily: DM Sans
    fontSize: 16px
    fontWeight: 400
    lineHeight: 1.6
  small:
    fontFamily: DM Sans
    fontSize: 14px
    fontWeight: 400
    lineHeight: 1.5
  label:
    fontFamily: DM Sans
    fontSize: 14px
    fontWeight: 500
    lineHeight: 1.4
  mono:
    fontFamily: DM Mono
    fontSize: 14px
    fontWeight: 400
    lineHeight: 1.5
rounded:
  sm: 6px
  md: 8px
  lg: 12px
  full: 9999px
spacing:
  base: 4px
  xs: 4px
  sm: 8px
  md: 16px
  lg: 24px
  xl: 32px
  2xl: 48px
  3xl: 64px
  gutter: 16px
  measure: 640px
components:
  button-primary:
    backgroundColor: "{colors.primary}"
    textColor: "{colors.on-primary}"
    typography: "{typography.label}"
    rounded: "{rounded.md}"
    padding: "{spacing.md}"
    height: 40px
  button-secondary:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.ink}"
    typography: "{typography.label}"
    rounded: "{rounded.md}"
    padding: "{spacing.md}"
    height: 40px
  card:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.ink}"
    rounded: "{rounded.lg}"
    padding: "{spacing.lg}"
  input:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.ink}"
    typography: "{typography.body}"
    rounded: "{rounded.md}"
    padding: "{spacing.sm}"
    height: 40px
  badge:
    backgroundColor: "{colors.primary-soft}"
    textColor: "{colors.primary}"
    typography: "{typography.small}"
    rounded: "{rounded.full}"
    padding: "{spacing.xs}"
  list-item:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.ink}"
    padding: "{spacing.md}"
    rounded: "{rounded.md}"
---

# First Vibe-Coded App

## Overview

You are building something for the first time and you do not want it to look like a demo. This contract gives you a look that is hard to get wrong: warm off-white pages, dark grey text, one teal for buttons and links, soft corners, a friendly typeface. It is deliberately plain. Plain and consistent beats interesting and messy every time.

Everything in this file is a default. Change a value only when you have a reason you can say out loud.

## Colors

Five greys, one colour, two statuses. Learn what each is for and you will never need to pick a colour again.

- **Paper (#f8f7f4):** the page background. Not pure white, so white cards stand out a little.
- **Surface (#ffffff):** cards, forms, dialogs. Surface 2 (#efede8) is for things that sit back, like a sidebar or a disabled state.
- **Ink (#17181a):** headings and body text. Ink 2 for less important text. Ink 3 for hints and placeholders. Never lighter than ink 3 for anything someone has to read.
- **Line (#e3e1dc):** borders. All of them.
- **Primary (#0f766e):** teal. The main button, links, the active tab, the focus ring. One teal thing per screen is ideal; two is fine; a screen that is mostly teal is wrong.
- **Success and Error:** messages after the user does something. Not for decoration.

## Typography

One typeface, DM Sans, in five sizes. A second one, DM Mono, only for code or IDs.

- Page title 32px semibold. Section heading 20px semibold. Body 16px. Small text 14px. Buttons and form labels 14px medium.
- Line height is generous (1.6 on body). Text blocks stop at 640px wide.
- Do not add a third size between these. If something feels like it needs one, change its colour to ink 2 instead.

## Layout

Everything sits on a 4px grid: 8 between related things, 16 inside cards and between form fields, 24 between groups, 48 between sections. Page padding is 16px on mobile and 24px on desktop. The content column is at most 1040px wide and centred.

Put things in a single column until you have a reason for two. Mobile first: if it works at 390px wide, it will work everywhere.

## Elevation & Depth

Flat with one exception. Cards are white on paper with a line border and no shadow. Dialogs and dropdowns get one soft shadow because they float above the page. No gradients, no glow, no glass.

## Shapes

Softly rounded: 6px on badges and small controls, 8px on buttons and inputs, 12px on cards. Pills only for badges and avatars. Keep the same radius on every button.

## Components

- **Buttons:** 40px tall. Primary is teal with white text. Secondary is white with a line border. One primary button per screen.
- **Inputs:** 40px tall, white, line border, teal ring on focus. Label above in label style, help or error text below in small.
- **Cards:** white, line border, 12px radius, 24px padding, a heading and some body text. Not a card inside a card.
- **Lists:** rows with 16px padding and a hairline between them. Use Auto Animate so adding and removing rows feels smooth.
- **Badges:** pill, teal-soft background, teal text, small size.
- **Empty state:** one sentence saying what will appear here and one button to make it appear.
- **Navigation:** a top bar with the app name on the left and at most four links. Active link in teal.

## Do's and Don'ts

- Do use only DM Sans and DM Mono. If a font you did not choose shows up, remove it.
- Do use only the colours in this file. When you want a new one, use ink 2 or surface 2 instead.
- Do keep text readable: 4.5:1 contrast, 16px body, never grey-on-grey.
- Do respect `prefers-reduced-motion`: animations turn off when the user asks.
- Don't use gradients, purple, glow effects or glass. These are the tells of a generated app.
- Don't centre everything. Left-align text and let the layout breathe.
- Don't add icons to every button and heading. Icons go where they carry meaning.
- Don't ask the agent to "make it pop". Ask it to check this file.

Resources, in order

Chosen for this contract and ordered the way you’ll need them. Each one says whether your agent can install it or only look at it.

  • Godly
    Preview of Godly

    Godly

    01

    Astronomically good web design inspiration, hand-picked.

    GalleryFreelimited agent friendliness
    Staff pickUsed by me
  • tweakcn
    Preview of tweakcn

    tweakcn

    02

    A visual theme editor that makes a shadcn/ui app stop looking like every other shadcn/ui app.

    ToolFreeOpen sourcegood agent friendliness
    Staff pickUsed by me
  • Checklist Design
    Preview of Checklist Design

    Checklist Design

    03

    Checklists of what every common screen and component should include.

    GuideFreegood agent friendliness
    Staff pick
  • AutoAnimate
    Preview of AutoAnimate

    AutoAnimate

    04

    One line of code that animates list changes for you.

    PackageFreeOpen sourceexcellent agent friendliness
    Staff pick
  • v0
    Preview of v0

    v0

    05

    Vercel's generative UI tool: describe a screen, get a shadcn/ui implementation.

    Toolgood agent friendliness
  • Radix Colors
    Preview of Radix Colors

    Radix Colors

    06

    Colour scales designed for real UI, with light and dark modes that actually match.

    Asset libraryFreeOpen sourceexcellent agent friendliness
    Staff pick
  • Web Interface Guidelines
    Preview of Web Interface Guidelines

    Web Interface Guidelines

    07

    A concise, agent-readable checklist of what a well-built web interface must get right.

    GuideFreeOpen sourceexcellent agent friendliness
    Staff pickUsed by me
  • Playwright MCP
    Preview of Playwright MCP

    Playwright MCP

    08

    Give your agent a browser so it can see and test what it built.

    MCP serverFreeOpen sourceexcellent agent friendliness
    Staff pickUsed by me

What your agent is told

This block goes into AGENTS.md (and CLAUDE.md if you have one). Prefer to paste it yourself? Copy it.

Goes deeper