Design System Selector
I. Philosophy
Design systems are not interchangeable. Stripe's authority differs from Notion's warmth
differs from Linear's precision. Each embeds a philosophy about who the user is, what
they value, and how they should feel while working.
The selector prevents the common mistake of picking a design system because it's popular
rather than because it fits. A fintech dashboard wearing Notion's soft pastels sends
the wrong message. A community platform dressed in Stripe's sharp minimalism feels cold.
Fit is not aesthetic preference -- it is alignment between brand intent and visual
language. This skill makes that alignment measurable.
II. When to Use
- Starting a new UI project and choosing visual direction
- Evaluating whether a project's current design tokens match its brand
- Comparing multiple design system options for a client presentation
- Migrating between design systems (need to know what you're moving toward)
- Building a custom design system by compositing traits from multiple references
Do NOT use when:
- The client has an existing brand guide with defined tokens (use those directly)
- You need to implement a specific design system (use the system's docs instead)
- You are doing a visual redesign within an existing system (audit the system instead)
- The project is a prototype where visual polish doesn't matter yet
III. Workflow
Step 1: Inventory Available DESIGN.md Files
Scan the design system reference library for available options:
Primary location: HTMLCraftStudio/templates/design-systems/
Structure: each system has a DESIGN.md with tokens, philosophy, and usage notes
Currently imported (8 systems):
| System |
Personality |
Primary Use Case |
| Linear |
Precise, focused, developer-tool aesthetic |
Task management, dev tools |
| Stripe |
Authoritative, clean, trust-building |
Fintech, payments, enterprise |
| Vercel |
Minimal, performant, developer-first |
Developer platforms, deployment |
| Notion |
Warm, flexible, content-first |
Productivity, wikis, collaboration |
| Resend |
Modern, bold, API-developer aesthetic |
Email infrastructure, dev APIs |
| Supabase |
Approachable, open-source-friendly, green |
Backend-as-a-service, databases |
| Cal.com |
Open, scheduling-focused, clean |
Booking, calendars, scheduling |
| Mintlify |
Documentation-native, readable, structured |
Developer docs, API references |
50+ additional systems available from VoltAgent/awesome-design-md for import.
Step 2: Classify Project Requirements
Score the project across five design dimensions:
A. Color Temperature
- Cool (blues, grays, whites) -- authority, trust, technical
- Neutral (balanced palette) -- flexibility, professionalism
- Warm (oranges, greens, earth tones) -- approachability, community, growth
B. Typography Style
- Geometric sans (Inter, Geist) -- modern, precise, technical
- Humanist sans (Source Sans, Lato) -- friendly, readable, approachable
- Monospace accent (JetBrains Mono, Fira Code) -- developer-focused, code-native
- Serif accent (Playfair, Merriweather) -- editorial, authoritative, traditional
C. Spatial Density
- Compact (4-8px base unit) -- data-dense, dashboards, power users
- Comfortable (8-12px base unit) -- balanced, general-purpose
- Spacious (12-16px+ base unit) -- content-first, reading, storytelling
D. Brand Personality
- Technical -- "we are engineers building for engineers"
- Warm -- "we are humans building for humans"
- Playful -- "work should feel light and creative"
- Editorial -- "information presented with authority and clarity"
- Minimal -- "reduce everything to its essence"
E. Interaction Philosophy
- Responsive -- subtle hover states, smooth transitions, polish
- Functional -- clear affordances, obvious click targets, efficiency
- Delightful -- micro-animations, easter eggs, personality in motion
Document each dimension with a 1-sentence justification tied to the project's users.
Step 3: Score Each DESIGN.md
For each available design system, score alignment on a 0-3 scale per dimension:
| Score |
Meaning |
| 0 |
Actively conflicts with requirement |
| 1 |
Neutral -- doesn't help or hurt |
| 2 |
Supports the requirement well |
| 3 |
Perfect alignment with requirement |
Build a scoring matrix:
Color Type Density Personality Interaction TOTAL
Linear 2 3 2 3 2 12
Stripe 3 2 2 3 3 13
Vercel 2 3 1 3 2 11
Notion 1 2 3 2 3 11
...
Weight dimensions if the project has clear priorities (e.g., a data dashboard
weights density 2x, a marketing site weights personality 2x).
Step 4: Present Top 3 Matches
For each of the top 3 scoring systems, provide:
- Match score and ranking
- Why it fits -- which dimensions align strongest (cite specific tokens)
- Where it diverges -- which dimensions are weakest (and whether that matters)
- Adaptation notes -- what you'd modify to improve fit (e.g., "swap primary blue for brand green, keep spacing and type scale")
Format as a comparison card the user can evaluate at a glance.
Step 5: Apply Selected Design System
Once the user selects a system:
- Copy token file from the DESIGN.md to the project's design directory
- Generate CSS custom properties from the token definitions:
:root {
--color-primary: [from tokens];
--font-family-sans: [from tokens];
--spacing-base: [from tokens];
/* ... */
}
- Create a project DESIGN.md that references the source system and documents any adaptations
- Validate the applied tokens render correctly in a sample component
IV. Best Practices
- Score before you feel. Gut reactions to design systems are valid but unreliable. Score first, then see if your intuition agrees. If they diverge, investigate why.
- Adaptation is expected. No reference system will be a 100% match. The goal is 80%+ alignment with clear, documented modifications for the rest.
- Consider the user, not the builder. A developer building a consumer app should pick for the consumer, not for their own aesthetic preferences.
- Check dark mode compatibility. Some design systems have excellent dark mode support; others assume light-only. If dark mode is required, this is a hard filter.
- Typography is the hardest to change. Colors are easy to swap. Spacing is mechanical. Typography choices cascade into line-height, measure, hierarchy, and readability. Pick a system whose type approach you can live with.
V. Quality Checklist
VI. Common Pitfalls
- Popularity bias. Picking Stripe's design system because Stripe is a good company, not because Stripe's visual language fits your product. Popularity is not fit.
- Ignoring density requirements. A spacious editorial system applied to a data dashboard wastes 40% of screen real estate. Density is a hard constraint, not a preference.
- Skipping adaptation documentation. If you modify 5 tokens from the source system but don't document which ones, the next developer will re-import the original and break your adaptations.
- Single-dimension matching. "They use Inter, we use Inter, so they're a match" -- typography is one of five dimensions. A single match doesn't make a system fit.
- Forgetting interaction patterns. Two systems can have identical colors and fonts but radically different interaction patterns (hover states, transitions, feedback). Interaction is a dimension, not a detail.
VII. Example
Project: Internal analytics dashboard for a data engineering team.
Requirements classification:
- Color: Cool (trust, technical precision)
- Typography: Geometric sans with monospace accent (developer audience)
- Density: Compact (data-dense, many tables and charts)
- Personality: Technical ("we are engineers building for engineers")
- Interaction: Functional (efficiency over delight)
Scoring results:
- Linear: 14/15 (precise, compact, developer-native, geometric type)
- Stripe: 12/15 (strong authority, slightly too spacious for dashboards)
- Vercel: 11/15 (good type, but interaction patterns lean marketing-site)
Selection: Linear design system with one adaptation -- swap primary purple for
the team's brand blue. All spacing, typography, and interaction tokens used as-is.
Applied: Tokens copied, CSS custom properties generated, project DESIGN.md created
documenting the color swap and referencing Linear DESIGN.md as source.
VIII. Related Skills
voice-before-structure -- Read design philosophy before writing structural artifacts
theme-factory -- Applies selected design tokens to artifacts (slides, reports, HTML)
web-artifacts-builder -- Builds HTML components using applied design system
canvas-design -- Visual art creation using design philosophy principles
brand-guidelines -- Applies organization-specific brand to artifacts
Output
- Scoring matrix table comparing all available systems across five dimensions
- Top 3 match cards with: score, fit rationale, divergence notes, adaptation notes
- Project DESIGN.md file created in the project directory referencing the selected source system and documenting any token adaptations
- CSS custom properties block generated from selected system's tokens
Examples
Scenario 1: "Which design system fits my internal analytics dashboard for a data engineering team?" -> Scoring matrix run against 8 systems; Linear scores 14/15 on technical/compact/precise axes; selection delivered with one adaptation noted (swap primary purple for brand blue); project DESIGN.md created
Scenario 2: "I need to pick a design reference for a community-focused open source project" -> Scoring identifies Supabase (approachable, open-source-friendly) as best fit over Stripe (too authoritative); adaptation notes document switching monospace accent to humanist sans for community warmth
Edge Cases
- Client already has a brand guide with defined tokens: Do not run the scoring workflow; map their existing tokens to the closest DESIGN.md system for reference, but use the brand guide as the authoritative token source
- No available system scores above 9/15: Report the top match with a list of required adaptations; flag that a custom system may be warranted if adaptations exceed 3 dimensions
- Dark mode is a hard requirement: Apply dark mode support as a pre-filter before scoring; eliminate any system without documented dark mode tokens
Anti-Patterns
- Selecting a system based on the builder's aesthetic preference rather than running the five-dimension scoring matrix
- Applying a system without documenting token adaptations — undocumented changes are invisible to the next developer and will be overwritten on re-import
- Using a single-dimension match ("they both use Inter") as sufficient justification — typography is one of five dimensions
1---2name: design-system-selector3description: Design System Selector4---56# Design System Selector78## I. Philosophy910Design systems are not interchangeable. Stripe's authority differs from Notion's warmth11differs from Linear's precision. Each embeds a philosophy about who the user is, what12they value, and how they should feel while working.1314The selector prevents the common mistake of picking a design system because it's popular15rather than because it fits. A fintech dashboard wearing Notion's soft pastels sends16the wrong message. A community platform dressed in Stripe's sharp minimalism feels cold.1718Fit is not aesthetic preference -- it is alignment between brand intent and visual19language. This skill makes that alignment measurable.2021## II. When to Use2223- Starting a new UI project and choosing visual direction24- Evaluating whether a project's current design tokens match its brand25- Comparing multiple design system options for a client presentation26- Migrating between design systems (need to know what you're moving toward)27- Building a custom design system by compositing traits from multiple references2829Do NOT use when:30- The client has an existing brand guide with defined tokens (use those directly)31- You need to implement a specific design system (use the system's docs instead)32- You are doing a visual redesign within an existing system (audit the system instead)33- The project is a prototype where visual polish doesn't matter yet3435## III. Workflow3637### Step 1: Inventory Available DESIGN.md Files3839Scan the design system reference library for available options:4041```42Primary location: HTMLCraftStudio/templates/design-systems/43Structure: each system has a DESIGN.md with tokens, philosophy, and usage notes44```4546**Currently imported (8 systems):**4748| System | Personality | Primary Use Case |49|--------|-------------|-----------------|50| **Linear** | Precise, focused, developer-tool aesthetic | Task management, dev tools |51| **Stripe** | Authoritative, clean, trust-building | Fintech, payments, enterprise |52| **Vercel** | Minimal, performant, developer-first | Developer platforms, deployment |53| **Notion** | Warm, flexible, content-first | Productivity, wikis, collaboration |54| **Resend** | Modern, bold, API-developer aesthetic | Email infrastructure, dev APIs |55| **Supabase** | Approachable, open-source-friendly, green | Backend-as-a-service, databases |56| **Cal.com** | Open, scheduling-focused, clean | Booking, calendars, scheduling |57| **Mintlify** | Documentation-native, readable, structured | Developer docs, API references |585950+ additional systems available from VoltAgent/awesome-design-md for import.6061### Step 2: Classify Project Requirements6263Score the project across five design dimensions:6465**A. Color Temperature**66- Cool (blues, grays, whites) -- authority, trust, technical67- Neutral (balanced palette) -- flexibility, professionalism68- Warm (oranges, greens, earth tones) -- approachability, community, growth6970**B. Typography Style**71- Geometric sans (Inter, Geist) -- modern, precise, technical72- Humanist sans (Source Sans, Lato) -- friendly, readable, approachable73- Monospace accent (JetBrains Mono, Fira Code) -- developer-focused, code-native74- Serif accent (Playfair, Merriweather) -- editorial, authoritative, traditional7576**C. Spatial Density**77- Compact (4-8px base unit) -- data-dense, dashboards, power users78- Comfortable (8-12px base unit) -- balanced, general-purpose79- Spacious (12-16px+ base unit) -- content-first, reading, storytelling8081**D. Brand Personality**82- Technical -- "we are engineers building for engineers"83- Warm -- "we are humans building for humans"84- Playful -- "work should feel light and creative"85- Editorial -- "information presented with authority and clarity"86- Minimal -- "reduce everything to its essence"8788**E. Interaction Philosophy**89- Responsive -- subtle hover states, smooth transitions, polish90- Functional -- clear affordances, obvious click targets, efficiency91- Delightful -- micro-animations, easter eggs, personality in motion9293Document each dimension with a 1-sentence justification tied to the project's users.9495### Step 3: Score Each DESIGN.md9697For each available design system, score alignment on a 0-3 scale per dimension:9899| Score | Meaning |100|-------|---------|101| 0 | Actively conflicts with requirement |102| 1 | Neutral -- doesn't help or hurt |103| 2 | Supports the requirement well |104| 3 | Perfect alignment with requirement |105106Build a scoring matrix:107108```109 Color Type Density Personality Interaction TOTAL110Linear 2 3 2 3 2 12111Stripe 3 2 2 3 3 13112Vercel 2 3 1 3 2 11113Notion 1 2 3 2 3 11114...115```116117Weight dimensions if the project has clear priorities (e.g., a data dashboard118weights density 2x, a marketing site weights personality 2x).119120### Step 4: Present Top 3 Matches121122For each of the top 3 scoring systems, provide:1231241. **Match score** and ranking1252. **Why it fits** -- which dimensions align strongest (cite specific tokens)1263. **Where it diverges** -- which dimensions are weakest (and whether that matters)1274. **Adaptation notes** -- what you'd modify to improve fit (e.g., "swap primary blue for brand green, keep spacing and type scale")128129Format as a comparison card the user can evaluate at a glance.130131### Step 5: Apply Selected Design System132133Once the user selects a system:1341351. **Copy token file** from the DESIGN.md to the project's design directory1362. **Generate CSS custom properties** from the token definitions:137 ```css138 :root {139 --color-primary: [from tokens];140 --font-family-sans: [from tokens];141 --spacing-base: [from tokens];142 /* ... */143 }144 ```1453. **Create a project DESIGN.md** that references the source system and documents any adaptations1464. **Validate** the applied tokens render correctly in a sample component147148## IV. Best Practices1491501. **Score before you feel.** Gut reactions to design systems are valid but unreliable. Score first, then see if your intuition agrees. If they diverge, investigate why.1512. **Adaptation is expected.** No reference system will be a 100% match. The goal is 80%+ alignment with clear, documented modifications for the rest.1523. **Consider the user, not the builder.** A developer building a consumer app should pick for the consumer, not for their own aesthetic preferences.1534. **Check dark mode compatibility.** Some design systems have excellent dark mode support; others assume light-only. If dark mode is required, this is a hard filter.1545. **Typography is the hardest to change.** Colors are easy to swap. Spacing is mechanical. Typography choices cascade into line-height, measure, hierarchy, and readability. Pick a system whose type approach you can live with.155156## V. Quality Checklist157158- [ ] Available DESIGN.md files inventoried with current count159- [ ] Project requirements classified across all 5 dimensions with justifications160- [ ] Scoring matrix completed for all available systems161- [ ] Dimension weighting applied if project has clear priorities162- [ ] Top 3 matches presented with fit reasoning and divergence notes163- [ ] Selected system's tokens copied to project164- [ ] CSS custom properties generated from tokens165- [ ] Project DESIGN.md created with source reference and adaptations166- [ ] Sample component rendered to validate token application167168## VI. Common Pitfalls169170- **Popularity bias.** Picking Stripe's design system because Stripe is a good company, not because Stripe's visual language fits your product. Popularity is not fit.171- **Ignoring density requirements.** A spacious editorial system applied to a data dashboard wastes 40% of screen real estate. Density is a hard constraint, not a preference.172- **Skipping adaptation documentation.** If you modify 5 tokens from the source system but don't document which ones, the next developer will re-import the original and break your adaptations.173- **Single-dimension matching.** "They use Inter, we use Inter, so they're a match" -- typography is one of five dimensions. A single match doesn't make a system fit.174- **Forgetting interaction patterns.** Two systems can have identical colors and fonts but radically different interaction patterns (hover states, transitions, feedback). Interaction is a dimension, not a detail.175176## VII. Example177178**Project:** Internal analytics dashboard for a data engineering team.179180**Requirements classification:**181- Color: Cool (trust, technical precision)182- Typography: Geometric sans with monospace accent (developer audience)183- Density: Compact (data-dense, many tables and charts)184- Personality: Technical ("we are engineers building for engineers")185- Interaction: Functional (efficiency over delight)186187**Scoring results:**188- Linear: 14/15 (precise, compact, developer-native, geometric type)189- Stripe: 12/15 (strong authority, slightly too spacious for dashboards)190- Vercel: 11/15 (good type, but interaction patterns lean marketing-site)191192**Selection:** Linear design system with one adaptation -- swap primary purple for193the team's brand blue. All spacing, typography, and interaction tokens used as-is.194195**Applied:** Tokens copied, CSS custom properties generated, project DESIGN.md created196documenting the color swap and referencing Linear DESIGN.md as source.197198## VIII. Related Skills199200- `voice-before-structure` -- Read design philosophy before writing structural artifacts201- `theme-factory` -- Applies selected design tokens to artifacts (slides, reports, HTML)202- `web-artifacts-builder` -- Builds HTML components using applied design system203- `canvas-design` -- Visual art creation using design philosophy principles204- `brand-guidelines` -- Applies organization-specific brand to artifacts205206## Output207208- Scoring matrix table comparing all available systems across five dimensions209- Top 3 match cards with: score, fit rationale, divergence notes, adaptation notes210- Project DESIGN.md file created in the project directory referencing the selected source system and documenting any token adaptations211- CSS custom properties block generated from selected system's tokens212213## Examples214215**Scenario 1:** "Which design system fits my internal analytics dashboard for a data engineering team?" -> Scoring matrix run against 8 systems; Linear scores 14/15 on technical/compact/precise axes; selection delivered with one adaptation noted (swap primary purple for brand blue); project DESIGN.md created216217**Scenario 2:** "I need to pick a design reference for a community-focused open source project" -> Scoring identifies Supabase (approachable, open-source-friendly) as best fit over Stripe (too authoritative); adaptation notes document switching monospace accent to humanist sans for community warmth218219## Edge Cases220221- **Client already has a brand guide with defined tokens:** Do not run the scoring workflow; map their existing tokens to the closest DESIGN.md system for reference, but use the brand guide as the authoritative token source222- **No available system scores above 9/15:** Report the top match with a list of required adaptations; flag that a custom system may be warranted if adaptations exceed 3 dimensions223- **Dark mode is a hard requirement:** Apply dark mode support as a pre-filter before scoring; eliminate any system without documented dark mode tokens224225## Anti-Patterns226227- Selecting a system based on the builder's aesthetic preference rather than running the five-dimension scoring matrix228- Applying a system without documenting token adaptations — undocumented changes are invisible to the next developer and will be overwritten on re-import229- Using a single-dimension match ("they both use Inter") as sufficient justification — typography is one of five dimensions