This skill generates distinctive, production-grade design systems that are derived from architecture context — not random aesthetic choices. Every design decision traces back to the product domain, target audience, component library, and accessibility requirements defined in the SDL.
Reference files to load alongside this skill:
references/design-systems.md — component library presets, personality guide, domain defaults, sub-domain differentiation
references/design-system-fonts.md — curated font pairing library by personality (49+ pairs including organic/retro/expressive/cinematic, rotation rules)
references/design-system-patterns.md — dark mode tokens, gradient/texture recipes, motion timing values, layout archetype spatial specs, 8 unconventional layout patterns with CSS
references/design-system-creative.md — 4 creative personalities (organic, retro, expressive, cinematic), consumer/creative domain defaults, personality × domain quick guide
The user has an SDL blueprint. This skill fills, refines, or validates the design section and produces actionable design artifacts.
Design Thinking — Context-Driven
Before making any design choice, ground it in the SDL:
- Read the SDL — extract
solution.name, solution.description, frontend components, target audience, product domain
- Derive personality — map domain + audience to a design personality:
- Fintech / Banking → corporate or editorial
- Healthcare → minimal
- E-commerce → playful or bold (B2C); corporate (B2B); luxury (D2C brand)
- Education → minimal or playful
- Developer tools → brutalist or minimal
- Enterprise SaaS → corporate
- Creative / Media → editorial or expressive
- Real estate → luxury
- Kids / Family → playful
- AI / ML → minimal
- Wellness / Nature / Food (artisan) → organic
- Music / Vintage / Craft → retro or cinematic
- Creative studio / Agency / Fashion (youth) → expressive
- Film / Gaming / Luxury experience → cinematic
- Personal portfolio (creative) → expressive or minimal
- Restaurant (fine dining) → luxury or organic
- Non-profit → minimal or editorial
- When unsure: read
references/design-system-creative.md personality × domain quick guide
- Derive palette — domain-appropriate colors, NEVER indigo/purple as default:
- Fintech → emerald or teal
- Healthcare → sky or cyan
- E-commerce → orange or rose
- Developer tools → green or lime
- Enterprise → blue or slate
- Creative → violet or fuchsia
- See
design-systems.md reference for full domain mapping
- Derive layout archetype — from component types in SDL:
- Admin/CRM/Dashboard frontends →
dashboard (sidebar + header + content)
- Marketing/Landing pages (standard) →
marketing (hero + sections + footer)
- Content-heavy apps →
editorial (wide content + typographic hierarchy)
- SaaS with auth →
saas (auth layout + dashboard + settings)
- Mobile-first web →
app-shell (top nav + responsive content)
- Creative/consumer sites — choose an unconventional layout from
references/design-system-patterns.md:
- Portfolio, brand contrast →
split-screen
- Feature showcase, app launch →
bento-grid
- Music artist, film, narrative →
full-bleed-panels
- Product storytelling, process →
sticky-scroll
- Event, fashion, bold sections →
diagonal
- Gallery, timeline, portfolio →
horizontal-scroll
- Agency, fashion, type-driven →
typography-forward
- Blog, news, lookbook →
magazine-grid
- Can combine: e.g.
full-bleed-panels for hero + bento-grid for features + magazine-grid for content
Design Principles
Adapted from Anthropic's frontend-design research — applied through an architecture lens:
Typography
- Choose fonts that are distinctive and context-appropriate — not generic
- NEVER default to Inter, Roboto, Arial, or system fonts for headings
- Pair a characterful display/heading font with a refined body font
- Match font personality to product personality (serif for editorial/luxury, geometric sans for corporate, mono for brutalist/dev)
- All fonts must be available via Google Fonts for scaffold integration
Color & Palette
- Commit to a dominant color with sharp accents — don't distribute color evenly
- Primary color derived from product domain (see domain mapping above)
- Semantic colors (success, warning, error, info) must be distinct from primary palette
- Surface mode (light/dark/auto) based on product context — dev tools default dark, enterprise defaults light
- All colors must meet WCAG contrast requirements per SDL accessibility level
Motion Language
- Define a motion philosophy, not individual animations
- One orchestrated page transition > scattered micro-interactions
- Match motion to personality: none/snappy for brutalist/corporate, smooth for luxury/editorial, expressive for playful
- Respect
reducedMotion accessibility setting when specified
- Specify transition timing, easing, and scroll behavior preferences
Spatial Composition
- Match density to personality: compact for corporate/brutalist, relaxed for editorial/luxury
- Define border radius, shadow depth, and border treatment as a cohesive system
- Specify max content width based on layout archetype
- Unexpected layouts are encouraged when personality supports it (bold, editorial) — asymmetry, overlap, grid-breaking elements
Backgrounds & Texture
- Create atmosphere appropriate to personality — not flat white everywhere
- Luxury/editorial: subtle gradients, noise textures, layered transparencies
- Brutalist: raw, high-contrast, no decoration
- Corporate: clean, structured, minimal texture
- Playful: gradient meshes, geometric patterns, bold fills
Output Specification
When generating a design system, produce ALL of the following:
1. SDL Design Section
Complete the SDL design section with all fields:
design:
preset: [component library — shadcn | material | ant | chakra | daisyui | bootstrap | custom]
personality: [derived from domain + audience]
palette:
primary: [domain-appropriate color]
secondary: [complementary color]
accent: [contrast color for CTAs and highlights]
neutral: [slate | gray | zinc | neutral | stone — matched to personality]
surface: [light | dark | auto — context-appropriate]
semantic:
success: [green variant]
warning: [amber variant]
error: [red variant]
info: [blue variant]
typography:
heading: [distinctive Google Font — NEVER Inter/Roboto/Arial]
body: [readable Google Font — paired for contrast]
mono: [monospace font for code blocks]
scale: [compact | default | spacious — matched to personality]
shape:
radius: [none | sm | md | lg | full — matched to personality]
density: [compact | default | relaxed]
shadows: [flat | subtle | elevated | dramatic]
borders: [none | subtle | visible | bold]
motion:
transitions: [none | snappy | smooth | expressive]
pageTransitions: [true | false]
layout:
maxWidth: [1024-1440 based on archetype]
style: [dashboard | marketing | editorial | app-shell | saas]
iconLibrary: [lucide | heroicons | phosphor | tabler — matched to personality]
componentLibrary: [full name e.g. "shadcn/ui", "Radix UI"]
accessibility:
wcag: [A | AA | AAA — default AA for most, AAA for healthcare/gov]
reducedMotion: [boolean]
highContrast: [boolean]
2. Design Language Brief
A human-readable 1-page markdown summary:
- Product context — what this product is and who it's for (from SDL)
- Aesthetic direction — the personality choice and why it fits
- Palette rationale — why these colors for this domain
- Typography pairing — the heading + body fonts and why they work together
- Motion philosophy — how this product moves and why
- Layout approach — the spatial logic and density
- Key differentiator — the one visual element that makes this design memorable
3. Design Tokens (JSON)
Machine-readable tokens for consumption by scaffold:
{
"colors": {
"primary": { "50": "...", "100": "...", "...", "950": "..." },
"secondary": { ... },
"accent": { ... },
"neutral": { ... },
"semantic": { "success": "...", "warning": "...", "error": "...", "info": "..." }
},
"typography": {
"heading": { "family": "...", "googleFont": true, "weights": [400, 600, 700] },
"body": { "family": "...", "googleFont": true, "weights": [400, 500] },
"mono": { "family": "...", "googleFont": true, "weights": [400] },
"scale": "default"
},
"shape": {
"radius": { "sm": "0.25rem", "md": "0.5rem", "lg": "1rem", "full": "9999px", "default": "0.5rem" },
"shadows": { "sm": "...", "md": "...", "lg": "..." },
"borders": { "width": "1px", "color": "..." }
},
"motion": {
"duration": { "fast": "150ms", "normal": "300ms", "slow": "500ms" },
"easing": { "default": "cubic-bezier(0.4, 0, 0.2, 1)", "bounce": "cubic-bezier(0.68, -0.55, 0.265, 1.55)" }
},
"layout": {
"maxWidth": "1280px",
"style": "dashboard"
}
}
4. Component Inventory
Map SDL architecture components to UI components needed:
| SDL Component |
UI Components Needed |
| Auth service |
Login form, signup form, forgot password, auth layout |
| User dashboard |
Sidebar nav, stat cards, data tables, charts |
| API service |
API key management, usage meters, code snippets |
| Payment integration |
Pricing cards, checkout form, billing history |
5. Tailwind Config Patch
Ready-to-merge Tailwind configuration:
// tailwind.config.ts extension
import type { Config } from 'tailwindcss'
export default {
theme: {
extend: {
colors: { /* from design tokens */ },
fontFamily: { /* from typography */ },
borderRadius: { /* from shape */ },
boxShadow: { /* from shape */ },
},
},
} satisfies Config
6. Sample Palette Preview
Single-file HTML that visually demonstrates:
- Color palette with all shades
- Typography specimens (heading + body + mono at different sizes)
- Shape system (radius, shadows, borders on sample cards)
- Button variants in the design language
- A mini layout demonstrating the chosen archetype
7. Dark Mode Tokens (when surface: dark or dark default domain)
When surface: dark is specified in SDL, or when the domain defaults to dark (developer tools, gaming, AI/ML at user preference), generate an additional dark token set alongside the light tokens.
Read references/design-system-patterns.md → Dark Mode Token Patterns section for exact values per personality.
Output dark tokens in design-tokens.json under a "dark" key:
{
"colors": { ... },
"dark": {
"background": "#09090b",
"surface": "#18181b",
"surface-elevated": "#27272a",
"border": "rgba(255,255,255,0.08)",
"text-primary": "#fafafa",
"text-secondary": "#a1a1aa",
"primary": "#60a5fa"
}
}
Also generate the CSS dual-mode token block (:root + .dark) for inclusion in the palette-preview.html.
Validation Rules
- Every color choice must trace to a domain rationale — no random picks
- Heading font must NOT be the same as body font
- Heading font must NOT be Inter, Roboto, Arial, Helvetica, or system-ui
- Palette must not use indigo/purple as primary unless the domain is creative/gaming
- WCAG contrast must be validated against the accessibility level in SDL
- Motion settings must be consistent with personality (brutalist ≠ expressive)
- All fonts must exist in Google Fonts catalog
- Design tokens must be valid JSON consumable by the scaffold phase
Diversity Rule
No two projects should ever look the same. Even within the same domain, vary:
- Font pairings (maintain a rotation — never converge on one "go-to" font like Space Grotesk)
- Color temperature (warm vs cool within the domain-appropriate range)
- Layout density and whitespace treatment
- Motion intensity within personality constraints
- Light vs dark surface default
The goal is design systems that feel intentionally crafted for this specific product — not templated output with a color swap.
1---2name: design-system3description: Generate a context-aware, production-grade design system from the SDL blueprint. Produces design tokens, typography, palette, motion language, and component inventory — grounded in the product domain, audience, and architecture. Use this skill when generating or refining the SDL design section, scaffolding frontend projects, or when the user asks about visual direction.4---56This skill generates distinctive, production-grade design systems that are **derived from architecture context** — not random aesthetic choices. Every design decision traces back to the product domain, target audience, component library, and accessibility requirements defined in the SDL.78**Reference files to load alongside this skill:**9- `references/design-systems.md` — component library presets, personality guide, domain defaults, sub-domain differentiation10- `references/design-system-fonts.md` — curated font pairing library by personality (49+ pairs including organic/retro/expressive/cinematic, rotation rules)11- `references/design-system-patterns.md` — dark mode tokens, gradient/texture recipes, motion timing values, layout archetype spatial specs, 8 unconventional layout patterns with CSS12- `references/design-system-creative.md` — 4 creative personalities (organic, retro, expressive, cinematic), consumer/creative domain defaults, personality × domain quick guide1314The user has an SDL blueprint. This skill fills, refines, or validates the `design` section and produces actionable design artifacts.1516## Design Thinking — Context-Driven1718Before making any design choice, ground it in the SDL:19201. **Read the SDL** — extract `solution.name`, `solution.description`, frontend components, target audience, product domain212. **Derive personality** — map domain + audience to a design personality:22 - Fintech / Banking → corporate or editorial23 - Healthcare → minimal24 - E-commerce → playful or bold (B2C); corporate (B2B); luxury (D2C brand)25 - Education → minimal or playful26 - Developer tools → brutalist or minimal27 - Enterprise SaaS → corporate28 - Creative / Media → editorial or expressive29 - Real estate → luxury30 - Kids / Family → playful31 - AI / ML → minimal32 - Wellness / Nature / Food (artisan) → organic33 - Music / Vintage / Craft → retro or cinematic34 - Creative studio / Agency / Fashion (youth) → expressive35 - Film / Gaming / Luxury experience → cinematic36 - Personal portfolio (creative) → expressive or minimal37 - Restaurant (fine dining) → luxury or organic38 - Non-profit → minimal or editorial39 - When unsure: read `references/design-system-creative.md` personality × domain quick guide403. **Derive palette** — domain-appropriate colors, NEVER indigo/purple as default:41 - Fintech → emerald or teal42 - Healthcare → sky or cyan43 - E-commerce → orange or rose44 - Developer tools → green or lime45 - Enterprise → blue or slate46 - Creative → violet or fuchsia47 - See `design-systems.md` reference for full domain mapping484. **Derive layout archetype** — from component types in SDL:49 - Admin/CRM/Dashboard frontends → `dashboard` (sidebar + header + content)50 - Marketing/Landing pages (standard) → `marketing` (hero + sections + footer)51 - Content-heavy apps → `editorial` (wide content + typographic hierarchy)52 - SaaS with auth → `saas` (auth layout + dashboard + settings)53 - Mobile-first web → `app-shell` (top nav + responsive content)54 - Creative/consumer sites — choose an unconventional layout from `references/design-system-patterns.md`:55 - Portfolio, brand contrast → `split-screen`56 - Feature showcase, app launch → `bento-grid`57 - Music artist, film, narrative → `full-bleed-panels`58 - Product storytelling, process → `sticky-scroll`59 - Event, fashion, bold sections → `diagonal`60 - Gallery, timeline, portfolio → `horizontal-scroll`61 - Agency, fashion, type-driven → `typography-forward`62 - Blog, news, lookbook → `magazine-grid`63 - Can combine: e.g. `full-bleed-panels` for hero + `bento-grid` for features + `magazine-grid` for content6465## Design Principles6667Adapted from Anthropic's frontend-design research — applied through an architecture lens:6869### Typography70- Choose fonts that are **distinctive and context-appropriate** — not generic71- NEVER default to Inter, Roboto, Arial, or system fonts for headings72- Pair a characterful display/heading font with a refined body font73- Match font personality to product personality (serif for editorial/luxury, geometric sans for corporate, mono for brutalist/dev)74- All fonts must be available via Google Fonts for scaffold integration7576### Color & Palette77- Commit to a **dominant color with sharp accents** — don't distribute color evenly78- Primary color derived from product domain (see domain mapping above)79- Semantic colors (success, warning, error, info) must be distinct from primary palette80- Surface mode (light/dark/auto) based on product context — dev tools default dark, enterprise defaults light81- All colors must meet WCAG contrast requirements per SDL accessibility level8283### Motion Language84- Define a motion philosophy, not individual animations85- **One orchestrated page transition > scattered micro-interactions**86- Match motion to personality: none/snappy for brutalist/corporate, smooth for luxury/editorial, expressive for playful87- Respect `reducedMotion` accessibility setting when specified88- Specify transition timing, easing, and scroll behavior preferences8990### Spatial Composition91- Match density to personality: compact for corporate/brutalist, relaxed for editorial/luxury92- Define border radius, shadow depth, and border treatment as a cohesive system93- Specify max content width based on layout archetype94- Unexpected layouts are encouraged when personality supports it (bold, editorial) — asymmetry, overlap, grid-breaking elements9596### Backgrounds & Texture97- Create atmosphere appropriate to personality — not flat white everywhere98- Luxury/editorial: subtle gradients, noise textures, layered transparencies99- Brutalist: raw, high-contrast, no decoration100- Corporate: clean, structured, minimal texture101- Playful: gradient meshes, geometric patterns, bold fills102103## Output Specification104105When generating a design system, produce ALL of the following:106107### 1. SDL Design Section108Complete the SDL `design` section with all fields:109110```yaml111design:112 preset: [component library — shadcn | material | ant | chakra | daisyui | bootstrap | custom]113 personality: [derived from domain + audience]114 palette:115 primary: [domain-appropriate color]116 secondary: [complementary color]117 accent: [contrast color for CTAs and highlights]118 neutral: [slate | gray | zinc | neutral | stone — matched to personality]119 surface: [light | dark | auto — context-appropriate]120 semantic:121 success: [green variant]122 warning: [amber variant]123 error: [red variant]124 info: [blue variant]125 typography:126 heading: [distinctive Google Font — NEVER Inter/Roboto/Arial]127 body: [readable Google Font — paired for contrast]128 mono: [monospace font for code blocks]129 scale: [compact | default | spacious — matched to personality]130 shape:131 radius: [none | sm | md | lg | full — matched to personality]132 density: [compact | default | relaxed]133 shadows: [flat | subtle | elevated | dramatic]134 borders: [none | subtle | visible | bold]135 motion:136 transitions: [none | snappy | smooth | expressive]137 pageTransitions: [true | false]138 layout:139 maxWidth: [1024-1440 based on archetype]140 style: [dashboard | marketing | editorial | app-shell | saas]141 iconLibrary: [lucide | heroicons | phosphor | tabler — matched to personality]142 componentLibrary: [full name e.g. "shadcn/ui", "Radix UI"]143 accessibility:144 wcag: [A | AA | AAA — default AA for most, AAA for healthcare/gov]145 reducedMotion: [boolean]146 highContrast: [boolean]147```148149### 2. Design Language Brief150A human-readable 1-page markdown summary:151- **Product context** — what this product is and who it's for (from SDL)152- **Aesthetic direction** — the personality choice and why it fits153- **Palette rationale** — why these colors for this domain154- **Typography pairing** — the heading + body fonts and why they work together155- **Motion philosophy** — how this product moves and why156- **Layout approach** — the spatial logic and density157- **Key differentiator** — the one visual element that makes this design memorable158159### 3. Design Tokens (JSON)160Machine-readable tokens for consumption by scaffold:161162```json163{164 "colors": {165 "primary": { "50": "...", "100": "...", "...", "950": "..." },166 "secondary": { ... },167 "accent": { ... },168 "neutral": { ... },169 "semantic": { "success": "...", "warning": "...", "error": "...", "info": "..." }170 },171 "typography": {172 "heading": { "family": "...", "googleFont": true, "weights": [400, 600, 700] },173 "body": { "family": "...", "googleFont": true, "weights": [400, 500] },174 "mono": { "family": "...", "googleFont": true, "weights": [400] },175 "scale": "default"176 },177 "shape": {178 "radius": { "sm": "0.25rem", "md": "0.5rem", "lg": "1rem", "full": "9999px", "default": "0.5rem" },179 "shadows": { "sm": "...", "md": "...", "lg": "..." },180 "borders": { "width": "1px", "color": "..." }181 },182 "motion": {183 "duration": { "fast": "150ms", "normal": "300ms", "slow": "500ms" },184 "easing": { "default": "cubic-bezier(0.4, 0, 0.2, 1)", "bounce": "cubic-bezier(0.68, -0.55, 0.265, 1.55)" }185 },186 "layout": {187 "maxWidth": "1280px",188 "style": "dashboard"189 }190}191```192193### 4. Component Inventory194Map SDL architecture components to UI components needed:195196| SDL Component | UI Components Needed |197|---|---|198| Auth service | Login form, signup form, forgot password, auth layout |199| User dashboard | Sidebar nav, stat cards, data tables, charts |200| API service | API key management, usage meters, code snippets |201| Payment integration | Pricing cards, checkout form, billing history |202203### 5. Tailwind Config Patch204Ready-to-merge Tailwind configuration:205206```typescript207// tailwind.config.ts extension208import type { Config } from 'tailwindcss'209210export default {211 theme: {212 extend: {213 colors: { /* from design tokens */ },214 fontFamily: { /* from typography */ },215 borderRadius: { /* from shape */ },216 boxShadow: { /* from shape */ },217 },218 },219} satisfies Config220```221222### 6. Sample Palette Preview223Single-file HTML that visually demonstrates:224- Color palette with all shades225- Typography specimens (heading + body + mono at different sizes)226- Shape system (radius, shadows, borders on sample cards)227- Button variants in the design language228- A mini layout demonstrating the chosen archetype229230### 7. Dark Mode Tokens (when surface: dark or dark default domain)231232When `surface: dark` is specified in SDL, or when the domain defaults to dark (developer tools, gaming, AI/ML at user preference), generate an additional dark token set alongside the light tokens.233234Read `references/design-system-patterns.md` → Dark Mode Token Patterns section for exact values per personality.235236Output dark tokens in `design-tokens.json` under a `"dark"` key:237238```json239{240 "colors": { ... },241 "dark": {242 "background": "#09090b",243 "surface": "#18181b",244 "surface-elevated": "#27272a",245 "border": "rgba(255,255,255,0.08)",246 "text-primary": "#fafafa",247 "text-secondary": "#a1a1aa",248 "primary": "#60a5fa"249 }250}251```252253Also generate the CSS dual-mode token block (`:root` + `.dark`) for inclusion in the palette-preview.html.254255## Validation Rules256257- Every color choice must trace to a domain rationale — no random picks258- Heading font must NOT be the same as body font259- Heading font must NOT be Inter, Roboto, Arial, Helvetica, or system-ui260- Palette must not use indigo/purple as primary unless the domain is creative/gaming261- WCAG contrast must be validated against the accessibility level in SDL262- Motion settings must be consistent with personality (brutalist ≠ expressive)263- All fonts must exist in Google Fonts catalog264- Design tokens must be valid JSON consumable by the scaffold phase265266## Diversity Rule267268**No two projects should ever look the same.** Even within the same domain, vary:269- Font pairings (maintain a rotation — never converge on one "go-to" font like Space Grotesk)270- Color temperature (warm vs cool within the domain-appropriate range)271- Layout density and whitespace treatment272- Motion intensity within personality constraints273- Light vs dark surface default274275The goal is design systems that feel **intentionally crafted for this specific product** — not templated output with a color swap.