design-tokens
julianoczkowski/designer-skills
Generate design tokens (CSS variables or Tailwind config) with light/dark palettes, spacing, typography, and component tokens based on aesthetic philosophy.
What is design-tokens?
This skill generates foundational design tokens for a project, including color palettes, spacing scales, typography ramps, and layout tokens in light and dark modes. Use it when starting a new project, establishing a visual system, or when a design brief mentions tokens or design systems.
- Scans codebase for existing tokens and extends rather than replaces them
- Generates semantic color tokens for backgrounds, text, borders, accents, and status states
- Creates consistent spacing scales (4px or 8px base) and typography ramps tailored to design philosophy
- Produces both light and dark mode palettes with intentional color choices, not just inversions
- Outputs tokens in the format matching your tech stack (Tailwind config, CSS variables, or theme.js)
- Includes layout tokens (max-widths, border-radius, shadows) and motion tokens (durations, easing curves)
How to install design-tokens
npx skills add https://github.com/julianoczkowski/designer-skills --skill design-tokens- A design brief (optional but recommended; can be at `.design/*/DESIGN_BRIEF.md`)
- Existing codebase with package.json to detect tech stack (Tailwind, Material UI, Chakra, etc.)
How to use design-tokens
- 1.Run the skill and let it scan your codebase for existing tokens, theme files, and UI framework setup
- 2.Provide or confirm the design philosophy/aesthetic direction (or let it read from your design brief)
- 3.Review the generated tokens file in the appropriate format for your tech stack
- 4.Integrate the tokens into your project and reference them in all component styles going forward
- 5.Test both light and dark mode palettes to ensure contrast and intentionality
Use cases
- Starting a new project and need a complete token system before building components
- Establishing a visual system based on a specific design philosophy (Dieter Rams, Brutalism, Swiss, etc.)
- Extending existing tokens with missing categories like dark mode or motion tokens
- Creating a design-to-code bridge by generating tokens from a design brief
- Setting up tokens that all future components will reference instead of hardcoding values
- Product designers establishing design systems
- Frontend developers building component libraries
- Teams starting new projects with defined aesthetic philosophies
- Design system maintainers extending or refactoring token structures
design-tokens FAQ
The skill scans for existing tokens and extends them rather than replacing. It identifies gaps (missing dark mode, incomplete spacing) and fills those in.
The skill matches your tech stack: Tailwind projects get a config extension and globals.css update, CSS projects get a tokens.css file, CSS-in-JS projects get theme.ts/js. If unclear, it defaults to CSS custom properties.
Dark mode palettes are intentionally designed for the chosen philosophy, not simply inverted. They include adjusted contrast, warmer/cooler backgrounds, and modified shadows—all supporting both prefers-color-scheme media queries and data-theme attributes.
Yes. Name a philosophy (Dieter Rams, Brutalism, Swiss, Japanese Minimalism, etc.) and the skill derives token values from its parameters. Spacing base units, color approaches, and typography choices all align with the philosophy.
Color (semantic backgrounds, text, borders, accents, status), Spacing (consistent scale), Typography (families, sizes, weights, line-height), Layout (max-widths, border-radius, shadows), Motion (durations, easing), and Responsive Breakpoints.
Full instructions (SKILL.md)
Source of truth, from julianoczkowski/designer-skills.
name: design-tokens description: Generate a design tokens file (CSS variables or Tailwind config) based on a chosen aesthetic philosophy, with light and dark mode palettes, spacing scale, type ramp, and component-level tokens. Use when starting a new project, establishing a visual system, setting up tokens, or mentions "tokens" or "design system".
This skill generates the foundational design tokens for a project. Run this after the design brief and before building any components. Every component built after this references these tokens instead of hardcoding values.
Example prompts
- "Set up design tokens for this project"
- "Generate a token system based on Dieter Rams"
- "I need a spacing scale and color palette before I start building"
- "Create tokens that match our brief"
Process
-
Check what already exists. Before generating anything, scan the codebase for:
- CSS variable definitions (
:root,[data-theme], custom property files) - Tailwind config (
tailwind.config.js,tailwind.config.ts) and any theme extensions - Theme provider files (Material UI
createTheme, ChakraextendTheme, shadcnglobals.css) - Design token JSON files (Style Dictionary format, Figma token exports)
- Any
tokens.css,variables.css,theme.css, or similarly named files package.jsonfor UI framework dependencies (tailwindcss, @mui/material, @chakra-ui/react, etc.)
If tokens already exist, extend them rather than replacing. Identify gaps (missing dark mode, incomplete spacing scale, no motion tokens) and fill those.
- CSS variable definitions (
-
Read the brief. Look for a design brief at
.design/*/DESIGN_BRIEF.md. If multiple subfolders exist, use the most recently modified one, or ask the user which feature they are working on. If a philosophy is named, use the parameters from/frontend-designto derive token values. If no brief exists, ask the user what direction they want. -
Generate tokens in the format that matches the project's tech stack:
- Tailwind project → extend
tailwind.config.jsand write toglobals.css - CSS/HTML project → write to a
tokens.cssfile - CSS-in-JS project → write to a
theme.tsortheme.jsfile - If unclear, default to CSS custom properties (most portable)
- Tailwind project → extend
-
Always generate both light and dark mode palettes. Use
[data-theme="dark"]orprefers-color-schememedia query. Both palettes should feel intentional for the chosen philosophy, not just inverted values.
Token Categories
Color
/* Semantic color tokens, not raw values */
--color-bg-primary: /* Main background */
--color-bg-secondary: /* Secondary/card background */
--color-bg-tertiary: /* Subtle background (inputs, wells) */
--color-bg-inverse: /* Inverted background */
--color-text-primary: /* Main text */
--color-text-secondary: /* Subdued text */
--color-text-tertiary: /* Placeholder, disabled text */
--color-text-inverse: /* Text on inverse backgrounds */
--color-text-link: /* Link color */
--color-border-primary: /* Default borders */
--color-border-secondary: /* Subtle borders */
--color-border-focus: /* Focus ring color */
--color-accent-primary: /* Primary action color */
--color-accent-primary-hover:
--color-accent-primary-active:
--color-accent-secondary: /* Secondary action color */
--color-status-success:
--color-status-warning:
--color-status-error:
--color-status-info:
--color-surface-overlay: /* Modal/dropdown backdrop */
Spacing
Generate a consistent scale. The base unit should match the philosophy:
- Tight philosophies (Brutalist, Swiss): 4px base
- Balanced philosophies (Rams, Scandinavian): 4px or 8px base
- Spacious philosophies (Japanese Minimalism, Editorial): 8px base with larger multipliers
--space-0: 0;
--space-1: /* base * 0.25 */
--space-2: /* base * 0.5 */
--space-3: /* base * 0.75 */
--space-4: /* base * 1 */
--space-5: /* base * 1.5 */
--space-6: /* base * 2 */
--space-7: /* base * 3 */
--space-8: /* base * 4 */
--space-9: /* base * 6 */
--space-10: /* base * 8 */
--space-11: /* base * 12 */
--space-12: /* base * 16 */
Typography
--font-family-display: /* Headline/display font */
--font-family-body: /* Body text font */
--font-family-mono: /* Code/monospace font */
--font-size-xs:
--font-size-sm:
--font-size-base:
--font-size-md:
--font-size-lg:
--font-size-xl:
--font-size-2xl:
--font-size-3xl:
--font-size-4xl: /* Hero/display size */
--font-weight-normal:
--font-weight-medium:
--font-weight-semibold:
--font-weight-bold:
--line-height-tight: /* Headings: 1.1-1.3 */
--line-height-normal: /* Body: 1.4-1.6 */
--line-height-relaxed: /* Spacious body: 1.6-1.8 */
--letter-spacing-tight: /* Display type */
--letter-spacing-normal:
--letter-spacing-wide: /* All-caps, labels */
Layout
--max-width-content: /* Max reading width (65-75ch equivalent) */
--max-width-wide: /* Wide content area */
--max-width-page: /* Full page max width */
--border-radius-sm:
--border-radius-md:
--border-radius-lg:
--border-radius-full: /* Pill/circle */
--shadow-sm:
--shadow-md:
--shadow-lg:
--shadow-focus: /* Focus ring shadow */
Motion
--duration-instant: 50ms;
--duration-fast: 150ms;
--duration-normal: 250ms;
--duration-slow: 400ms;
--duration-slower: 600ms;
--easing-default: cubic-bezier(0.4, 0, 0.2, 1);
--easing-in: cubic-bezier(0.4, 0, 1, 1);
--easing-out: cubic-bezier(0, 0, 0.2, 1);
--easing-bounce: cubic-bezier(0.34, 1.56, 0.64, 1);
Responsive Breakpoints
--breakpoint-sm: 375px; /* Mobile */
--breakpoint-md: 768px; /* Tablet */
--breakpoint-lg: 1024px; /* Small desktop */
--breakpoint-xl: 1280px; /* Desktop */
--breakpoint-2xl: 1536px; /* Wide desktop */
Dark Mode
Always generate dark mode tokens alongside light mode. Rules:
- Do not simply invert colors. Dark backgrounds should be warm or cool depending on the philosophy.
- Reduce contrast slightly in dark mode (pure white text on pure black is harsh).
- Shadows should use darker, more transparent values in dark mode, not the same shadows as light.
- Accent colors may need lightness adjustments to maintain contrast ratios.
- Include a
prefers-color-schememedia query AND a[data-theme="dark"]attribute selector so the user can support both system preference and manual toggle.
:root {
/* Light mode tokens */
}
[data-theme="dark"] {
/* Dark mode overrides */
}
@media (prefers-color-scheme: dark) {
:root:not([data-theme="light"]) {
/* System-preference dark mode, unless user explicitly chose light */
}
}
Output
Save the tokens file in the appropriate location for the project's tech stack. State which philosophy the tokens are derived from and note any deviations or choices made.
Related skills
More from julianoczkowski/designer-skills and the wider catalog.

grill-me
Relentlessly interview users about plans and designs to stress-test thinking and reach shared understanding.

design-review
Run structured design critiques against your brief and codebase with visual verification.

information-architecture
Define the structural skeleton of a product or site before visual design begins.

frontend-design
Build distinctive, production-grade frontend interfaces guided by named aesthetic philosophies.

design-flow
Run the complete design-to-build workflow as a guided sequence, orchestrating all designer skills in order.

design-brief
Create structured design briefs through interactive interviews and codebase analysis.