From Brand Identity to
Automated Generation
A practical guide for design architects
February 2026 · Prepared by Bob for Ako
This isn't science fiction. It's achievable today —
if you structure your design system for AI consumption.
It's NOT just a component library.
Think: operating system for your product's visual language
Each layer builds on the one below · Change a token → everything updates
Every visual decision → a named, structured value
| Category | Examples | What It Controls |
|---|---|---|
| Colors | brand-primary, text-secondary, error | Every color in the product |
| Typography | font-family, size-base, weight-bold | All text styling |
| Spacing | spacing-sm (8px), spacing-md (16px) | Padding, margins, gaps |
| Elevation | shadow-sm, shadow-md, shadow-lg | Depth & layering |
| Motion | duration-fast (200ms), easing-default | Animations & transitions |
| Border Radius | radius-default (8px), radius-full | Corner rounding |
W3C Design Tokens standard · Platform-agnostic · Single source of truth
Raw palette values
{
"blue-500": "#3B82F6",
"blue-700": "#1D4ED8",
"neutral-900": "#171717",
"red-500": "#EF4444"
}
⚠️ AI shouldn't use these directly
Tokens with meaning
{
"brand-primary": {
"value": "{blue-500}",
"description": "CTAs,
links, active states"
},
"feedback-error": {
"value": "{red-500}",
"description": "Error
states only"
}
}
✅ AI uses these — intent is clear
① Design Principles — 3-5 statements that guide all decisions
② Mood Boards — Visual references that capture the feeling
③ Style Tiles — Test visual decisions without full mockups
④ Token Foundation — Every decision as a named value
tokens.json — the "constitution" of your design system
From Figma to Code
Design tokens → Style Dictionary → Components → Storybook
Outputs from one source:
├── variables.css — CSS custom properties
├── tokens.scss — SCSS variables
├── tokens.ts — TypeScript constants
├── colors.xml — Android resources
└── tokens.swift — iOS/macOS
Tools: Style Dictionary (Amazon) · Tokens Studio (Figma) · Specify
{
"color": {
"brand-primary": {
"$value": "#3B82F6",
"$type": "color",
"$description": "Primary brand color — CTAs, links, active states"
}
},
"spacing": {
"md": {
"$value": "16px",
"$type": "dimension",
"$description": "Default component spacing — most common value"
}
},
"radius": {
"default": {
"$value": "8px",
"$type": "dimension",
"$description": "Standard border radius for cards, buttons, inputs"
}
},
"shadow": {
"sm": {
"$value": "0 1px 3px rgba(0,0,0,0.08)",
"$type": "shadow",
"$description": "Subtle lift — cards at rest"
}
}
}
W3C Design Tokens format · $description is what makes it AI-readable
:root {
/* Colors */
--color-brand-primary: #3B82F6;
--color-brand-primary-hover: #2563EB;
--color-text-primary: #1F2937;
--color-text-secondary: #6B7280;
--color-background: #FFFFFF;
--color-surface: #F9FAFB;
--color-border: #E5E7EB;
--color-error: #EF4444;
--color-success: #22C55E;
/* Spacing (base-4) */
--spacing-xs: 4px;
--spacing-sm: 8px;
--spacing-md: 16px; /* Most common */
--spacing-lg: 24px;
--spacing-xl: 32px;
/* Typography · Radius · Shadows */
--font-sans: 'Inter', system-ui, sans-serif;
--radius-default: 8px;
--shadow-sm: 0 1px 3px rgba(0,0,0,0.08);
--shadow-md: 0 4px 12px rgba(0,0,0,0.12);
--transition-fast: 150ms ease;
}
Components consume variables · Change token → everything updates
Brad Frost's methodology for component composition
AI needs to know: which atoms exist → don't reinvent, compose
// Button.tsx — Uses ONLY design tokens
type ButtonVariant = 'primary' | 'secondary'
| 'destructive' | 'ghost';
interface ButtonProps {
variant?: ButtonVariant;
size?: 'sm' | 'md' | 'lg';
loading?: boolean;
children: React.ReactNode;
}
export const Button: React.FC<ButtonProps> = ({
variant = 'primary',
size = 'md',
loading,
children,
...props
}) => (
<button
className={`btn btn-${variant} btn-${size}`}
disabled={loading}
{...props}
>
{loading && <Spinner />}
{children}
</button>
);
var(--color-brand-primary), var(--spacing-md), var(--radius-default)
One brand decision → flows through tokens → Figma → code → docs → product
Making It AI-Ready
The key insight: design systems are AI guardrails
"A design system is already a set of constraints.
Constraints are exactly what AI needs
to produce consistent output."
🤖 Without constraints
Arbitrary colors
Random spacing
Invented border radius
Wrong fonts
Looks like nothing
🤖 With design system
Your exact tokens
Your spacing scale
Your border radius
Your typography
Looks like your product
# My Design System — AI Guide
## Color Tokens (NEVER use raw hex)
- `--color-primary`: #3B82F6 — CTAs, links
- `--color-text`: #1F2937 — Body text
- `--color-error`: #EF4444 — Errors ONLY
## Component Rules
- **Button**: Max 1 primary per section
- **Card**: 16px padding, never nest cards
- **Form**: Label above input, always
## ❌ NEVER DO
- Use raw hex values
- Create custom spacing values
- Skip hover/focus states
- Make text smaller than 12px
## ✅ ALWAYS DO
- Use semantic HTML
- Include aria-label on icon buttons
- Use CSS custom properties only
- Include loading + error states
This single file = 90% of the value · 10% of the effort
# Component: Button
## Variants
- `primary`: Main actions (1 per section)
- `secondary`: Supporting actions
- `destructive`: Delete, irreversible
## Token Usage
| Property | Token |
|------------- |-----------------------------|
| Background | `--color-brand-primary` |
| Text | `--color-text-on-primary` |
| Padding | `--spacing-sm` `--spacing-md`|
| Radius | `--radius-default` |
| Min height | 40px (touch target) |
## Rules
- NEVER use raw hex values
- Maximum 1 primary button per section
- Destructive buttons require confirmation
Each component becomes a contract that AI follows
Tutorial: Build Your Own
5 steps · Copy-paste ready · Test with Claude or GPT
{
"color-primary": { "value": "#3B82F6",
"description": "CTAs, links, active states" },
"font-family": { "value": "Inter, system-ui, sans-serif",
"description": "All text in the product" },
"spacing-md": { "value": "16px",
"description": "Default padding & gaps" },
"radius-default": { "value": "8px",
"description": "Cards, buttons, inputs" },
"shadow-sm": { "value": "0 1px 3px rgba(0,0,0,0.08)",
"description": "Subtle lift for cards" }
}
That's it. Five decisions define 80% of your visual language.
:root {
--color-primary: #3B82F6;
--color-primary-hover: #2563EB;
--color-text: #1F2937;
--color-text-secondary: #6B7280;
--color-bg: #FFFFFF;
--color-surface: #F9FAFB;
--color-border: #E5E7EB;
--font-sans: 'Inter', system-ui, sans-serif;
--spacing-sm: 8px;
--spacing-md: 16px;
--spacing-lg: 24px;
--radius-default: 8px;
--shadow-sm: 0 1px 3px rgba(0,0,0,0.08);
--shadow-md: 0 4px 12px rgba(0,0,0,0.12);
--transition-fast: 150ms ease;
}
Tokens → CSS custom properties · Components will consume these
# Design System AI Guide
## Rules
- Use ONLY CSS variables (--color-*, --spacing-*)
- NEVER use raw hex colors or pixel values
- All interactive elements need hover + focus states
- Semantic HTML always (<button>, <nav>, <main>)
## Token Reference
- Primary: var(--color-primary) — CTAs, links
- Text: var(--color-text) — body copy
- Spacing: var(--spacing-md) — default gaps
- Radius: var(--radius-default) — all components
- Shadow: var(--shadow-sm) — card resting state
## ❌ Don't
- Raw hex colors
- Nest cards inside cards
- Custom spacing values
- Skip error/loading states
Feed this to Claude or GPT as system context → try it now!
Using my design system
(SKILL.md above):
Create a "Feature Card" with:
- An emoji icon
- A title
- A 2-line description
- A "Learn More" link
Follow my rules exactly.
Sub-100ms response times globally with edge computing.
✅ Uses your tokens
✅ Follows your rules
Common failures → SKILL.md fixes
| AI Fails To… | Add to SKILL.md |
|---|---|
| Uses raw hex values | "NEVER use raw hex — ALWAYS CSS variables" |
| Invents new spacing | "ONLY these values: sm, md, lg" |
| Skips hover states | "ALL buttons MUST have :hover" |
| Wrong font size | "Body = 16px, small = 14px, NOTHING ELSE" |
| Nests cards | "NEVER nest .card inside .card" |
Every failure → new anti-pattern → system gets stronger 💪
% = AI output accepted without changes
Today's tutorial gets you to L3 — that's already 70% accuracy
tokens.json in W3C format🔄 Phase 5 (ongoing): Generate → Review → Fix gaps → Repeat
🎨 Material Design 3 — Google's comprehensive system
Dynamic color, motion system, adaptive layouts · m3.material.io
🍎 Apple HIG — Opinionated and deep
Platform patterns, accessibility, spatial computing · developer.apple.com/design
🐜 Ant Design — Enterprise-grade, open source
Complete React library + design tokens · ant.design
⬛ Shadcn/ui — Modern, composable, copy-paste
Not a library, a collection of components · ui.shadcn.com
🔵 Fluent Design — Microsoft's cross-platform system
Depth, motion, material, light · fluent2.microsoft.design
1️⃣ Design systems are more than component libraries — they're knowledge bases
2️⃣ Design tokens with $description = AI-readable design
3️⃣ Semantic tokens over primitives — intent matters more than values
4️⃣ Your design system IS the AI guardrail — no separate layer needed
5️⃣ SKILL.md + component specs = an AI that follows your rules
6️⃣ Start with 5 tokens + 1 SKILL.md → iterate from failures
① Define 5 tokens with $description
② Write a SKILL.md with rules + anti-patterns
③ Test: ask Claude to generate a card component
④ Iterate: add every failure as an anti-pattern
90% of the value · 10% of the effort
Thank you! 🙏
Research & presentation by Bob · February 2026