tailwind-design-system
wshobson/agents
Build production-ready design systems with Tailwind CSS v4, design tokens, and component libraries.
What is tailwind-design-system?
A skill for creating scalable design systems using Tailwind CSS v4's CSS-first configuration, design tokens, and component variants. Use this when building component libraries, implementing design systems, standardizing UI patterns, or migrating from Tailwind v3 to v4.
- Define semantic design tokens using OKLCH color space and CSS custom properties
- Configure dark mode with native CSS @custom-variant instead of config files
- Build responsive and accessible components with Tailwind v4 utilities
- Create animation tokens and keyframes within @theme blocks
- Implement component variants and states following a base-to-override hierarchy
- Migrate Tailwind v3 projects to v4 CSS-first patterns
How to install tailwind-design-system
npx skills add https://github.com/wshobson/agents --skill tailwind-design-system- Tailwind CSS v4 (2024+) installed in your project
- Understanding of CSS custom properties and @layer syntax
- Node.js and npm or equivalent package manager
How to use tailwind-design-system
- 1.Replace your tailwind.config.ts with CSS-first @theme configuration in app.css
- 2.Import Tailwind v4 using @import "tailwindcss" at the top of your CSS file
- 3.Define semantic color tokens (primary, secondary, muted, destructive, etc.) using OKLCH values
- 4.Add animation tokens and @keyframes definitions inside the @theme block
- 5.Configure dark mode with @custom-variant dark (&:where(.dark, .dark *))
- 6.Apply tokens to base styles using @layer base and component classes
Use cases
- Creating a reusable component library with consistent theming across projects
- Implementing dark mode support using CSS custom properties and class-based variants
- Standardizing color palettes and spacing scales across a large codebase
- Building accessible form components with focus states and ring tokens
- Setting up animation tokens for consistent entrance and exit animations
- Design system engineers
- Frontend developers building component libraries
- Teams standardizing UI patterns across multiple products
- Projects migrating from Tailwind v3 to v4
tailwind-design-system FAQ
v4 uses CSS-first configuration with @theme in CSS files instead of tailwind.config.ts, @import "tailwindcss" instead of @tailwind directives, and @custom-variant for dark mode instead of config options. Animation tokens are now defined as @keyframes within @theme.
OKLCH provides better perceptual uniformity and more intuitive color manipulation compared to hex or RGB values, making it easier to create accessible color palettes and maintain consistency across light and dark modes.
Use @custom-variant dark (&:where(.dark, .dark *)) in your CSS, then override token values in a .dark selector block. This replaces the darkMode config option from v3.
While v4 is CSS-first, you can still use a config file for non-theme settings, but design tokens should be defined in @theme blocks within your CSS for best results.
Detailed pattern documentation and worked examples are available in the references/details.md file included with this skill.
Full instructions (SKILL.md)
Source of truth, from wshobson/agents.
name: tailwind-design-system description: Build scalable design systems with Tailwind CSS v4, design tokens, component libraries, and responsive patterns. Use when creating component libraries, implementing design systems, or standardizing UI patterns.
Tailwind Design System (v4)
Build production-ready design systems with Tailwind CSS v4, including CSS-first configuration, design tokens, component variants, responsive patterns, and accessibility.
Note: This skill targets Tailwind CSS v4 (2024+). For v3 projects, refer to the upgrade guide.
When to Use This Skill
- Creating a component library with Tailwind v4
- Implementing design tokens and theming with CSS-first configuration
- Building responsive and accessible components
- Standardizing UI patterns across a codebase
- Migrating from Tailwind v3 to v4
- Setting up dark mode with native CSS features
Key v4 Changes
| v3 Pattern | v4 Pattern |
|---|---|
tailwind.config.ts | @theme in CSS |
@tailwind base/components/utilities | @import "tailwindcss" |
darkMode: "class" | @custom-variant dark (&:where(.dark, .dark *)) |
theme.extend.colors | @theme { --color-*: value } |
require("tailwindcss-animate") | CSS @keyframes in @theme + @starting-style for entry animations |
Quick Start
/* app.css - Tailwind v4 CSS-first configuration */
@import "tailwindcss";
/* Define your theme with @theme */
@theme {
/* Semantic color tokens using OKLCH for better color perception */
--color-background: oklch(100% 0 0);
--color-foreground: oklch(14.5% 0.025 264);
--color-primary: oklch(14.5% 0.025 264);
--color-primary-foreground: oklch(98% 0.01 264);
--color-secondary: oklch(96% 0.01 264);
--color-secondary-foreground: oklch(14.5% 0.025 264);
--color-muted: oklch(96% 0.01 264);
--color-muted-foreground: oklch(46% 0.02 264);
--color-accent: oklch(96% 0.01 264);
--color-accent-foreground: oklch(14.5% 0.025 264);
--color-destructive: oklch(53% 0.22 27);
--color-destructive-foreground: oklch(98% 0.01 264);
--color-border: oklch(91% 0.01 264);
--color-ring: oklch(14.5% 0.025 264);
--color-card: oklch(100% 0 0);
--color-card-foreground: oklch(14.5% 0.025 264);
/* Ring offset for focus states */
--color-ring-offset: oklch(100% 0 0);
/* Radius tokens */
--radius-sm: 0.25rem;
--radius-md: 0.375rem;
--radius-lg: 0.5rem;
--radius-xl: 0.75rem;
/* Animation tokens - keyframes inside @theme are output when referenced by --animate-* variables */
--animate-fade-in: fade-in 0.2s ease-out;
--animate-fade-out: fade-out 0.2s ease-in;
--animate-slide-in: slide-in 0.3s ease-out;
--animate-slide-out: slide-out 0.3s ease-in;
@keyframes fade-in {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes fade-out {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
@keyframes slide-in {
from {
transform: translateY(-0.5rem);
opacity: 0;
}
to {
transform: translateY(0);
opacity: 1;
}
}
@keyframes slide-out {
from {
transform: translateY(0);
opacity: 1;
}
to {
transform: translateY(-0.5rem);
opacity: 0;
}
}
}
/* Dark mode variant - use @custom-variant for class-based dark mode */
@custom-variant dark (&:where(.dark, .dark *));
/* Dark mode theme overrides */
.dark {
--color-background: oklch(14.5% 0.025 264);
--color-foreground: oklch(98% 0.01 264);
--color-primary: oklch(98% 0.01 264);
--color-primary-foreground: oklch(14.5% 0.025 264);
--color-secondary: oklch(22% 0.02 264);
--color-secondary-foreground: oklch(98% 0.01 264);
--color-muted: oklch(22% 0.02 264);
--color-muted-foreground: oklch(65% 0.02 264);
--color-accent: oklch(22% 0.02 264);
--color-accent-foreground: oklch(98% 0.01 264);
--color-destructive: oklch(42% 0.15 27);
--color-destructive-foreground: oklch(98% 0.01 264);
--color-border: oklch(22% 0.02 264);
--color-ring: oklch(83% 0.02 264);
--color-card: oklch(14.5% 0.025 264);
--color-card-foreground: oklch(98% 0.01 264);
--color-ring-offset: oklch(14.5% 0.025 264);
}
/* Base styles */
@layer base {
* {
@apply border-border;
}
body {
@apply bg-background text-foreground antialiased;
}
}
Core Concepts
1. Design Token Hierarchy
Brand Tokens (abstract)
└── Semantic Tokens (purpose)
└── Component Tokens (specific)
Example:
oklch(45% 0.2 260) → --color-primary → bg-primary
2. Component Architecture
Base styles → Variants → Sizes → States → Overrides
Detailed patterns and worked examples
Detailed pattern documentation lives in references/details.md. Read that file when the navigation tier above is insufficient.
Related skills
More from wshobson/agents and the wider catalog.
typescript-advanced-types
Master TypeScript's advanced type system: generics, conditional types, mapped types, and utility types for type-safe applications.
nodejs-backend-patterns
Build production-ready Node.js backends with Express/Fastify, middleware patterns, auth, and database integration.
python-performance-optimization
Profile and optimize Python code using cProfile, memory profilers, and performance best practices.
brand-landingpage
Brand-first landing page designer with guided interviews and Stitch-powered iteration.
python-testing-patterns
Implement comprehensive testing strategies with pytest, fixtures, mocking, and test-driven development.
api-design-principles
Master REST and GraphQL API design principles to build intuitive, scalable, and maintainable APIs.