When to Use
- Use when: starting a new project with no design tokens defined
- Use when: user asks "what design system should I use for a [type] app?"
- Use when: user says "set up colors and fonts for this project"
- Do NOT use when: design tokens already exist — extend or refactor them instead
- Do NOT use when: an aesthetic anchor has already been set — use
aesthetic-anchor to derive tokens from that anchor instead
Product Type Reference
Choose the product category first — it determines the emotional register of the system.
| Type |
Tone |
Color tendency |
Typography |
| SaaS / Dev Tool |
Confident, precise |
Neutral base + one blue/violet accent |
Inter, Geist, DM Sans |
| Fintech / Finance |
Trustworthy, stable |
Deep navy + gold or green accent |
Sora, IBM Plex Sans |
| Healthcare |
Calm, clear, reassuring |
Soft blue/teal + high contrast text |
Source Sans, Nunito |
| E-commerce |
Energetic, conversion-focused |
Brand color + high-contrast CTA |
Poppins, Plus Jakarta Sans |
| Creative / Portfolio |
Expressive, distinctive |
Monochrome + one bold accent or full aesthetic anchor |
Clash Display, Cabinet Grotesk |
| Marketplace |
Friendly, trustworthy |
Warm neutral + accent |
Outfit, Manrope |
| AI / Data |
Intelligent, technical |
Dark with electric blue/green |
Space Grotesk, Geist Mono |
| Lifestyle / Wellness |
Warm, human, approachable |
Warm pastels + muted tones |
Lato, Raleway, Quicksand |
How It Works
- Identify product type — ask if not stated
- Choose aesthetic register (see table above)
- Generate the 5 token layers in order
- Validate against WCAG AA — text/background contrast ≥ 4.5:1
- Output as CSS custom properties — or Tailwind config if requested
The 5 Token Layers
Layer 1 — Color
--color-bg-base: (page background)
--color-bg-surface: (card, panel — slightly elevated from base)
--color-bg-overlay: (modal, tooltip — highest elevation)
--color-text-primary: (headings, main content)
--color-text-secondary:(labels, captions — lower contrast)
--color-text-muted: (placeholders, disabled)
--color-accent: (primary action, links, active states)
--color-accent-hover: (10-15% darker than accent)
--color-danger: (errors, destructive actions — #E53E3E baseline)
--color-success: (confirmations — #38A169 baseline)
--color-warning: (caution — #D69E2E baseline)
--color-border: (dividers, input borders)
Layer 2 — Typography
--font-display: (headings — personality font)
--font-body: (body copy — readable font)
--font-mono: (code, data — monospace)
--text-xs: 0.75rem / line-height: 1.0rem
--text-sm: 0.875rem / line-height: 1.25rem
--text-base: 1rem / line-height: 1.5rem
--text-lg: 1.125rem / line-height: 1.75rem
--text-xl: 1.25rem / line-height: 1.75rem
--text-2xl: 1.5rem / line-height: 2rem
--text-3xl: 1.875rem / line-height: 2.25rem
--text-4xl: 2.25rem / line-height: 2.5rem
Layer 3 — Spacing
4px base unit. All values are multiples.
--space-1: 4px --space-2: 8px --space-3: 12px --space-4: 16px
--space-5: 20px --space-6: 24px --space-8: 32px --space-10: 40px
--space-12: 48px --space-16: 64px --space-20: 80px --space-24: 96px
Layer 4 — Elevation (Shadows)
--shadow-sm: 0 1px 2px rgba(0,0,0,0.05)
--shadow-md: 0 4px 6px rgba(0,0,0,0.07), 0 2px 4px rgba(0,0,0,0.05)
--shadow-lg: 0 10px 15px rgba(0,0,0,0.10), 0 4px 6px rgba(0,0,0,0.05)
--shadow-xl: 0 20px 25px rgba(0,0,0,0.10), 0 10px 10px rgba(0,0,0,0.04)
Layer 5 — Shape
--radius-sm: 4px (inputs, small badges)
--radius-md: 8px (cards, buttons)
--radius-lg: 12px (panels, modals)
--radius-xl: 16px (large cards)
--radius-full: 9999px (pills, avatars)
Output Format
Output in this order:
- Product type identified + rationale (2 sentences)
- Complete
:root { } block with all tokens filled in
- Font import line (Google Fonts or system stack)
- Contrast check: text-primary on bg-base ratio (must be ≥ 4.5:1)
/* Design System — [Product Type] | [Tone] */
/* Generated by YAMTAM design-system-gen */
@import url('...'); /* font import */
:root {
/* Color */
--color-bg-base: ...;
...
/* Typography */
--font-display: ...;
...
/* Spacing — 4px base */
--space-1: 4px;
...
/* Elevation */
--shadow-sm: ...;
...
/* Shape */
--radius-md: 8px;
...
}
/* Contrast check: --color-text-primary on --color-bg-base = X.X:1 ✓/✗ */
Gotchas
- Never use pure black (#000000) for body text — use #1A1A1A or #111827 for softer reading
- Never use pure white (#FFFFFF) for backgrounds in wellness/organic products — use a warm off-white
- Accent color must work on both light and dark surfaces — verify both contrast ratios
- If adapting this system to Tailwind: map tokens to
extend.colors and extend.fontFamily, not override
- Healthcare: avoid red as accent — red triggers alarm responses; use teal or blue instead
Anti-Fake-Pass Rules
Before claiming the design system is done, you MUST show:
Reference: gates/anti-fake-pass-gate.md | gates/ui-quality-gate.md
1---2name: design-system-gen3description: Generate a complete design token system for a new project — color palette, typography scale, spacing, shadows, and border radius — tailored to the product type (SaaS, e-commerce, healthcare, fintech, creative, etc.). Use when starting a new project with no design system, when the user asks to "set up design tokens", "create a design system", or "what colors/fonts should I use for a [product type]". Do NOT use when the project already has tokens — use ui-redesign instead.4license: MIT © 2026 nextlevelbuilder5---6
7<!-- Adapted from nextlevelbuilder/ui-ux-pro-max-skill (MIT) — product-type taxonomy and
8 design system generation concept. All content written original for YAMTAM.
9 No Python code or search engine logic ported. -->
10
11## When to Use
12
13- Use when: starting a new project with no design tokens defined
14- Use when: user asks "what design system should I use for a [type] app?"
15- Use when: user says "set up colors and fonts for this project"
16- Do NOT use when: design tokens already exist — extend or refactor them instead
17- Do NOT use when: an aesthetic anchor has already been set — use `aesthetic-anchor` to derive tokens from that anchor instead
18
19## Product Type Reference
20
21Choose the product category first — it determines the emotional register of the system.
22
23| Type | Tone | Color tendency | Typography |
24|------|------|----------------|------------|
25| **SaaS / Dev Tool** | Confident, precise | Neutral base + one blue/violet accent | Inter, Geist, DM Sans |
26| **Fintech / Finance** | Trustworthy, stable | Deep navy + gold or green accent | Sora, IBM Plex Sans |
27| **Healthcare** | Calm, clear, reassuring | Soft blue/teal + high contrast text | Source Sans, Nunito |
28| **E-commerce** | Energetic, conversion-focused | Brand color + high-contrast CTA | Poppins, Plus Jakarta Sans |
29| **Creative / Portfolio** | Expressive, distinctive | Monochrome + one bold accent or full aesthetic anchor | Clash Display, Cabinet Grotesk |
30| **Marketplace** | Friendly, trustworthy | Warm neutral + accent | Outfit, Manrope |
31| **AI / Data** | Intelligent, technical | Dark with electric blue/green | Space Grotesk, Geist Mono |
32| **Lifestyle / Wellness** | Warm, human, approachable | Warm pastels + muted tones | Lato, Raleway, Quicksand |
33
34## How It Works
35
361. **Identify product type** — ask if not stated
372. **Choose aesthetic register** (see table above)
383. **Generate the 5 token layers** in order
394. **Validate against WCAG AA** — text/background contrast ≥ 4.5:1
405. **Output as CSS custom properties** — or Tailwind config if requested
41
42## The 5 Token Layers
43
44### Layer 1 — Color
45```
46--color-bg-base: (page background)
47--color-bg-surface: (card, panel — slightly elevated from base)
48--color-bg-overlay: (modal, tooltip — highest elevation)
49--color-text-primary: (headings, main content)
50--color-text-secondary:(labels, captions — lower contrast)
51--color-text-muted: (placeholders, disabled)
52--color-accent: (primary action, links, active states)
53--color-accent-hover: (10-15% darker than accent)
54--color-danger: (errors, destructive actions — #E53E3E baseline)
55--color-success: (confirmations — #38A169 baseline)
56--color-warning: (caution — #D69E2E baseline)
57--color-border: (dividers, input borders)
58```
59
60### Layer 2 — Typography
61```
62--font-display: (headings — personality font)
63--font-body: (body copy — readable font)
64--font-mono: (code, data — monospace)
65
66--text-xs: 0.75rem / line-height: 1.0rem
67--text-sm: 0.875rem / line-height: 1.25rem
68--text-base: 1rem / line-height: 1.5rem
69--text-lg: 1.125rem / line-height: 1.75rem
70--text-xl: 1.25rem / line-height: 1.75rem
71--text-2xl: 1.5rem / line-height: 2rem
72--text-3xl: 1.875rem / line-height: 2.25rem
73--text-4xl: 2.25rem / line-height: 2.5rem
74```
75
76### Layer 3 — Spacing
77```
784px base unit. All values are multiples.
79--space-1: 4px --space-2: 8px --space-3: 12px --space-4: 16px
80--space-5: 20px --space-6: 24px --space-8: 32px --space-10: 40px
81--space-12: 48px --space-16: 64px --space-20: 80px --space-24: 96px
82```
83
84### Layer 4 — Elevation (Shadows)
85```
86--shadow-sm: 0 1px 2px rgba(0,0,0,0.05)
87--shadow-md: 0 4px 6px rgba(0,0,0,0.07), 0 2px 4px rgba(0,0,0,0.05)
88--shadow-lg: 0 10px 15px rgba(0,0,0,0.10), 0 4px 6px rgba(0,0,0,0.05)
89--shadow-xl: 0 20px 25px rgba(0,0,0,0.10), 0 10px 10px rgba(0,0,0,0.04)
90```
91
92### Layer 5 — Shape
93```
94--radius-sm: 4px (inputs, small badges)
95--radius-md: 8px (cards, buttons)
96--radius-lg: 12px (panels, modals)
97--radius-xl: 16px (large cards)
98--radius-full: 9999px (pills, avatars)
99```
100
101## Output Format
102
103Output in this order:
1041. Product type identified + rationale (2 sentences)
1052. Complete `:root { }` block with all tokens filled in
1063. Font import line (Google Fonts or system stack)
1074. Contrast check: text-primary on bg-base ratio (must be ≥ 4.5:1)
108
109```css
110/* Design System — [Product Type] | [Tone] */
111/* Generated by YAMTAM design-system-gen */
112
113@import url('...'); /* font import */
114
115:root {
116 /* Color */
117 --color-bg-base: ...;
118 ...
119
120 /* Typography */
121 --font-display: ...;
122 ...
123
124 /* Spacing — 4px base */
125 --space-1: 4px;
126 ...
127
128 /* Elevation */
129 --shadow-sm: ...;
130 ...
131
132 /* Shape */
133 --radius-md: 8px;
134 ...
135}
136
137/* Contrast check: --color-text-primary on --color-bg-base = X.X:1 ✓/✗ */
138```
139
140## Gotchas
141
142- Never use pure black (#000000) for body text — use #1A1A1A or #111827 for softer reading
143- Never use pure white (#FFFFFF) for backgrounds in wellness/organic products — use a warm off-white
144- Accent color must work on both light and dark surfaces — verify both contrast ratios
145- If adapting this system to Tailwind: map tokens to `extend.colors` and `extend.fontFamily`, not override
146- Healthcare: avoid red as accent — red triggers alarm responses; use teal or blue instead
147
148## Anti-Fake-Pass Rules
149
150Before claiming the design system is done, you MUST show:
151- [ ] Product type identified and stated
152- [ ] All 5 layers output — no layer skipped
153- [ ] Contrast ratio shown for text-primary on bg-base (number, not just "✓")
154- [ ] Font names are real, loadable fonts (Google Fonts, system stack, or specified CDN)
155
156Reference: `gates/anti-fake-pass-gate.md` | `gates/ui-quality-gate.md`