kuler .ai
Gallery / Tools / DESIGN.md Generator

DESIGN.md Generator

Build a spec-compliant DESIGN.md file from your color palette. The open standard for giving AI coding agents — Claude Code, Cursor, Windsurf, Stitch, and more — persistent knowledge of your design system.

Design System Info

Color Palette

Primary
Secondary
Accent
Background
Surface
Text
DESIGN.md
Live preview
---
version: "alpha"
name: "My Design System"
description: "A custom design system generated by kuler.ai."

colors:
  primary: "#6366f1"
  on-primary: "#1A1A1A"
  secondary: "#a855f7"
  on-secondary: "#1A1A1A"
  tertiary: "#06b6d4"
  surface: "#fafafa"
  surface-container: "#ffffff"
  on-surface: "#111827"
  neutral: "#6B7280"
  error: "#DC2626"

typography:
  headline-lg:
    fontFamily: Inter
    fontSize: 32px
    fontWeight: 700
    lineHeight: 40px
    letterSpacing: "-0.02em"
  headline-md:
    fontFamily: Inter
    fontSize: 24px
    fontWeight: 600
    lineHeight: 32px
  body-lg:
    fontFamily: Inter
    fontSize: 18px
    fontWeight: 400
    lineHeight: 28px
  body-md:
    fontFamily: Inter
    fontSize: 16px
    fontWeight: 400
    lineHeight: 24px
  body-sm:
    fontFamily: Inter
    fontSize: 14px
    fontWeight: 400
    lineHeight: 20px
  label-lg:
    fontFamily: Inter
    fontSize: 14px
    fontWeight: 600
    lineHeight: 20px
    letterSpacing: "0.01em"
  label-sm:
    fontFamily: Inter
    fontSize: 12px
    fontWeight: 600
    lineHeight: 16px
    letterSpacing: "0.04em"

rounded:
  none: 0px
  sm: 4px
  md: 8px
  lg: 16px
  xl: 24px
  full: 9999px

spacing:
  xs: 4px
  sm: 8px
  md: 16px
  lg: 24px
  xl: 32px
  2xl: 48px

components:
  button-primary:
    backgroundColor: "{colors.primary}"
    textColor: "{colors.on-primary}"
    typography: "{typography.label-lg}"
    rounded: "{rounded.lg}"
    height: 44px
    padding: "0 20px"
  button-primary-hover:
    backgroundColor: "{colors.secondary}"
  button-secondary:
    backgroundColor: "{colors.surface-container}"
    textColor: "{colors.on-surface}"
    typography: "{typography.label-lg}"
    rounded: "{rounded.lg}"
    height: 44px
    padding: "0 20px"
  card:
    backgroundColor: "{colors.surface-container}"
    textColor: "{colors.on-surface}"
    rounded: "{rounded.lg}"
    padding: "{spacing.lg}"
  input-field:
    backgroundColor: "{colors.surface-container}"
    textColor: "{colors.on-surface}"
    typography: "{typography.body-md}"
    rounded: "{rounded.md}"
    padding: "12px 16px"
    height: 44px
---

# My Design System

> Generated by [kuler.ai](https://kuler.ai) — OKLCH-first color palettes for AI-native builders.

## Overview

A custom design system generated by kuler.ai.

This design system emphasizes clarity and consistency. The palette is built on the OKLCH color space for perceptual uniformity — every color is intentionally chosen to maintain visual harmony across light surfaces, dark variants, and interactive states. Use it as a complete foundation for web applications, marketing sites, and product interfaces.

## Colors

The palette is organized by semantic role. Each color has a specific purpose in the interface hierarchy:

- **Primary** (`#6366f1`) — Brand color. Use for CTAs, links, focus rings, and primary actions.
- **Secondary** (`#a855f7`) — Supporting brand color for secondary actions and visual accents.
- **Tertiary** (`#06b6d4`) — Accent color for highlights, badges, and status indicators.
- **Surface** (`#fafafa`) — Page background.
- **Surface Container** (`#ffffff`) — Cards, panels, modals.
- **On Surface** (`#111827`) — Primary text, headings, and body copy.
- **Neutral** (`#6B7280`) — Secondary text, borders, and muted elements.
- **Error** (`#DC2626`) — Destructive actions and error states.

All text/background combinations must meet WCAG AA (4.5:1 contrast ratio for normal text, 3:1 for large text).

## Typography

The type system uses **Inter** — a neutral, geometric sans-serif optimized for screen readability.

- **Headlines** (headline-lg, headline-md): Semi-bold to bold, tight letter-spacing for visual weight.
- **Body** (body-lg, body-md, body-sm): Regular weight, generous line-height for comfortable reading.
- **Labels** (label-lg, label-sm): Semi-bold with slight letter-spacing for small UI text, buttons, and metadata.

Headlines set in `on-surface`. Body text in `on-surface` or `neutral` depending on emphasis. Labels in `neutral` unless interactive.

## Layout

The layout follows an 8px base grid. All spacing values are multiples of this unit:

- **xs** (4px): Tight gaps between inline elements (icon + label).
- **sm** (8px): Internal padding for compact components.
- **md** (16px): Standard gaps between elements, card padding.
- **lg** (24px): Section padding, card spacing.
- **xl** (32px): Large section margins.
- **2xl** (48px): Page-level section breaks.

Container max-width: 1280px with 16px horizontal padding (mobile) / 24px (desktop).

## Elevation & Depth

Depth is communicated through surface color and subtle shadows, not strong drop-shadows:

- **Level 0** — Page background (`surface`). The base canvas.
- **Level 1** — Cards and panels (`surface-container`). Sits above the background through color contrast alone.
- **Level 2** — Dropdowns, modals. Add `box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08)`.
- **Level 3** — Tooltips, popovers. Add `box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12)`.

Keep shadows neutral and soft. Never use colored shadows.

## Shapes

The shape language is modern and approachable with rounded corners:

- **Buttons**: `rounded-lg` (16px) for a soft, tactile feel.
- **Cards**: `rounded-lg` (16px) for content containers.
- **Inputs**: `rounded-md` (8px) for form elements — slightly tighter than cards.
- **Badges/chips**: `rounded-full` (pill shape) for status indicators and tags.
- **Avatars**: `rounded-full` for user photos.

## Components

### Buttons

Primary buttons use the brand `primary` color with `on-primary` text. Hover state shifts to `secondary`. Secondary buttons use `surface-container` with `on-surface` text and a 1px border in `neutral` at 20% opacity.

All buttons use `label-lg` typography, 44px height, and `rounded-lg`.

### Cards

Cards use `surface-container` background with `rounded-lg` and `lg` (24px) padding. No border by default — elevation is communicated through the background color contrast against `surface`.

### Inputs

Text inputs use `surface-container` background, `rounded-md`, and a 1px border in `neutral` at 20% opacity. Focus state replaces the border with a 2px ring in `primary`. Placeholder text uses `neutral`.

## Do's and Don'ts

**Do:**
- Use `primary` for all main CTAs and interactive links
- Maintain 4.5:1 contrast for all body text against its background
- Use `surface-container` for elevated components (cards, modals)
- Keep the color palette exactly as defined — no ad-hoc hex values
- Use `neutral` for secondary text, borders, and muted UI elements

**Don't:**
- Use `surface` or `surface-container` as text colors
- Mix colors from other palettes without updating this file
- Use low-contrast combinations for text (check with a contrast tool)
- Apply `primary` to large background areas — reserve it for interactive elements
- Skip hover and focus states on interactive components