Loading...
Loading...
Establish or formalize your design system foundation. Create design tokens (color, typography, spacing, shadows, borders), define component architecture, document design principles, and build the structure that enables consistency and scalability. Works with Tailwind CSS and framework-agnostic approaches.
npx skill4agent add sanky369/vibe-building-skills design-foundationGlobal Tokens:
├── Colors
│ ├── Primary: #3B82F6
│ ├── Secondary: #8B5CF6
│ ├── Success: #10B981
│ ├── Warning: #F59E0B
│ ├── Error: #EF4444
│ ├── Neutral-50: #F9FAFB
│ ├── Neutral-100: #F3F4F6
│ └── ... (up to Neutral-950)
├── Typography
│ ├── Font-Family-Base: Inter, system-ui, sans-serif
│ ├── Font-Size-Base: 16px
│ ├── Line-Height-Base: 1.5
│ └── Font-Weight: (300, 400, 500, 600, 700, 800)
├── Spacing
│ ├── Space-0: 0
│ ├── Space-1: 0.25rem (4px)
│ ├── Space-2: 0.5rem (8px)
│ ├── Space-3: 0.75rem (12px)
│ └── ... (up to Space-12+)
├── Shadows
│ ├── Shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05)
│ ├── Shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1)
│ └── ...
└── Border Radius
├── Radius-sm: 0.25rem (4px)
├── Radius-md: 0.375rem (6px)
├── Radius-lg: 0.5rem (8px)
└── ...Semantic Tokens:
├── Colors
│ ├── Background-Primary: {Global.Neutral-50}
│ ├── Background-Secondary: {Global.Neutral-100}
│ ├── Text-Primary: {Global.Neutral-950}
│ ├── Text-Secondary: {Global.Neutral-600}
│ ├── Border-Primary: {Global.Neutral-200}
│ ├── Interactive-Primary: {Global.Primary}
│ ├── Interactive-Hover: {Global.Primary-600}
│ ├── Interactive-Active: {Global.Primary-700}
│ ├── State-Success: {Global.Success}
│ ├── State-Warning: {Global.Warning}
│ └── State-Error: {Global.Error}
├── Typography
│ ├── Heading-1: (Font-Size: 32px, Line-Height: 1.2, Font-Weight: 700)
│ ├── Heading-2: (Font-Size: 24px, Line-Height: 1.3, Font-Weight: 600)
│ ├── Body-Large: (Font-Size: 18px, Line-Height: 1.5, Font-Weight: 400)
│ ├── Body-Regular: (Font-Size: 16px, Line-Height: 1.5, Font-Weight: 400)
│ ├── Body-Small: (Font-Size: 14px, Line-Height: 1.5, Font-Weight: 400)
│ └── Caption: (Font-Size: 12px, Line-Height: 1.4, Font-Weight: 500)
├── Spacing
│ ├── Padding-Component: {Global.Space-4}
│ ├── Padding-Section: {Global.Space-8}
│ ├── Margin-Component: {Global.Space-3}
│ └── Gap-Component: {Global.Space-4}
└── Shadows
├── Elevation-1: {Global.Shadow-sm}
├── Elevation-2: {Global.Shadow-md}
└── Elevation-3: {Global.Shadow-lg}Component Tokens:
├── Button
│ ├── Button-Primary-Background: {Semantic.Interactive-Primary}
│ ├── Button-Primary-Background-Hover: {Semantic.Interactive-Hover}
│ ├── Button-Primary-Text: {Semantic.Text-Inverse}
│ ├── Button-Padding: {Semantic.Padding-Component}
│ └── Button-Border-Radius: {Global.Radius-md}
├── Card
│ ├── Card-Background: {Semantic.Background-Primary}
│ ├── Card-Border: {Semantic.Border-Primary}
│ ├── Card-Padding: {Semantic.Padding-Component}
│ ├── Card-Border-Radius: {Global.Radius-lg}
│ └── Card-Shadow: {Semantic.Elevation-1}
└── Input
├── Input-Background: {Semantic.Background-Primary}
├── Input-Border: {Semantic.Border-Primary}
├── Input-Border-Hover: {Semantic.Border-Secondary}
├── Input-Text: {Semantic.Text-Primary}
├── Input-Padding: {Semantic.Padding-Component}
└── Input-Border-Radius: {Global.Radius-md}tailwind.config.jsmodule.exports = {
theme: {
// Global Tokens
colors: {
primary: {
50: '#EFF6FF',
100: '#DBEAFE',
500: '#3B82F6',
600: '#2563EB',
700: '#1D4ED8',
950: '#0C2340',
},
secondary: {
50: '#F3E8FF',
500: '#8B5CF6',
600: '#7C3AED',
950: '#2E1065',
},
success: '#10B981',
warning: '#F59E0B',
error: '#EF4444',
neutral: {
50: '#F9FAFB',
100: '#F3F4F6',
600: '#4B5563',
950: '#030712',
},
},
// Semantic Tokens (via CSS variables or custom utilities)
extend: {
backgroundColor: {
'bg-primary': 'var(--color-bg-primary)',
'bg-secondary': 'var(--color-bg-secondary)',
},
textColor: {
'text-primary': 'var(--color-text-primary)',
'text-secondary': 'var(--color-text-secondary)',
},
spacing: {
'component': 'var(--space-component)',
'section': 'var(--space-section)',
},
},
},
};"I'm using the design-foundation skill. Can you audit my current design system?
- Analyze my Tailwind config
- Identify inconsistencies in colors, spacing, typography
- Suggest improvements
- Create a design token system based on what I have""I'm starting from scratch. Can you help me create a design foundation?
- Define design principles for my product
- Create a color system (I want a modern, professional look)
- Create a typography system
- Create a spacing system
- Create a component library structure""We have a design system that's not well-documented. Can you:
- Extract design tokens from our current Tailwind config
- Document our component library
- Create design principles based on our current design
- Suggest improvements and inconsistencies""Can you create comprehensive documentation for our design system?
- Design principles
- Color system with usage guidelines
- Typography system with examples
- Spacing system with examples
- Component library with all variants and states
- Accessibility guidelines
- Responsive design guidelines""Can you evaluate my design foundation?
- Is my color system coherent?
- Are my typography scales appropriate?
- Is my spacing system logical?
- Are there inconsistencies I'm missing?
- What's one thing I could improve immediately?"// Global tokens (same for both modes)
colors: {
primary: '#3B82F6',
neutral: { 50: '#F9FAFB', 950: '#030712' },
}
// Semantic tokens (mode-specific)
// Light mode
backgroundColor: { 'bg-primary': '{neutral.50}' }
textColor: { 'text-primary': '{neutral.950}' }
// Dark mode
@media (prefers-color-scheme: dark) {
backgroundColor: { 'bg-primary': '{neutral.950}' }
textColor: { 'text-primary': '{neutral.50}' }
}// Button variants
button: {
primary: {
background: '{interactive.primary}',
text: '{text.inverse}',
},
secondary: {
background: '{background.secondary}',
text: '{text.primary}',
},
ghost: {
background: 'transparent',
text: '{interactive.primary}',
},
}// Typography that scales with viewport
fontSize: {
'heading-1': ['32px', { lineHeight: '1.2' }], // desktop
'@sm': { fontSize: '24px' }, // tablet
'@xs': { fontSize: '20px' }, // mobile
}