Design tokens
Use when the user asks for design tokens, DTCG tokens, theme systems, color/typography/spacing/radius/elevation/motion tokens, translating tokens, exporting tokens, making a Compose color scheme from a palette, auditing tokens, or sharing a single token source across web and native. Generates, audits, and translates W3C DTCG tokens to Tailwind v4 @theme, CSS variables, Compose Material3 ColorScheme/Typography, SwiftUI Color/Font extensions, and WinUI ResourceDictionary while preserving semantic naming and platform constraints. SKIP when no token/theme-system work is involved.From its SKILL.md
npx -y skills add f0d010c/stark --skill design-tokensAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 23 stars23 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 1 command, including `../../scripts/token_export.py`.
SKILL.md
4.7 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it
design-tokens — single source, every platform
Goal: one DTCG-format JSON, four platform outputs. No drift.
What This Skill Can Do
- Generate and audit W3C DTCG token bundles for color, typography, spacing, radius, motion, shadow/elevation, and semantic state roles.
- Translate one source token JSON to Tailwind, CSS variables, Compose, SwiftUI, and WinUI using
../../scripts/token_export.py. - Catch token drift, raw/semantic naming mistakes, unsupported platform values, circular references, and single-platform-only token systems.
- Advise when tokens are wrong for the job, such as bespoke campaign pages that need art direction more than a reusable system.
Step 1 — Source format: W3C DTCG
Every token bundle this skill produces or consumes is in W3C Design Tokens Community Group format. Keys:
$value— the literal value$type—color | dimension | fontFamily | fontWeight | duration | shadow | typography$description— human-readable rationale (kept in the token; not a comment)
Example:
{
"color": {
"brand": {
"primary": { "$value": "#3b1c0f", "$type": "color", "$description": "Hero accent — used like a weapon" },
"primary-hover": { "$value": "{color.brand.primary}", "$type": "color" }
}
},
"spacing": {
"xs": { "$value": "4px", "$type": "dimension" },
"sm": { "$value": "8px", "$type": "dimension" }
},
"type": {
"display": {
"$value": { "fontFamily": "PP Editorial New", "fontSize": "72px", "fontWeight": 400, "lineHeight": 1.05 },
"$type": "typography"
}
}
}
Step 2 — Platform translation matrix
| Platform | Output target |
|---|---|
| Web (Tailwind v4) | @theme { --color-brand-primary: ...; } block |
| Web (CSS) | :root { --color-brand-primary: ...; } |
| Apple (SwiftUI) | extension Color { static let brandPrimary = ... } + Color asset catalog JSON |
| Android (Compose) | ColorScheme(primary = Color(0xFF...), ...) + Typography |
| Windows (WinUI 3) | <ResourceDictionary> with <Color>, <SolidColorBrush>, <x:Double> |
Use ../../scripts/token_export.py for the translation — never hand-translate. Tokens drift fast.
Step 3 — When you should NOT generate tokens
Three cases where token work is wrong:
- The user wants ONE platform — let that platform skill use its native idiom directly. Tokens are for reuse.
- The brief is "Awwwards-tier landing page" — tokens flatten the bespoke choices that make it distinctive.
- The team has no system to maintain. Tokens without governance become stale faster than they help.
State this explicitly if the user asks to "tokenize everything." Push back once.
Step 4 — Auditing existing tokens
When asked to audit a token set:
- Coverage check — does it cover the 5 layers? color (semantic + raw), spacing, typography, motion, elevation/material.
- Semantic vs raw discipline — are there "primary-button-bg" tokens (semantic) AND "blue-500" tokens (raw)? Both layers, no shortcuts.
- Reference resolution — semantic tokens must reference raw, never the inverse.
- Dark mode parity — every semantic color has a dark variant.
- Platform-specific bans — flag any token that won't survive translation (e.g. CSS
box-shadowfor native, where elevation is tonal).
Step 5 — Anti-slop ban list (token-specific)
- Hex colors with no semantic name (
#3b82f6exposed as a token name) - 100+ raw colors with no semantic layer
- Spacing scales that aren't 4-based on Windows/Android, 8-based on Apple, fluid on web
- One token bundle declared "the source of truth" but only generated for web (the most common failure)
- Tailwind classes baked into tokens (defeats translation)
- Skipping
$type(some tools won't validate without it)
Step 6 — Reference token bundles
Shipped in ../../assets/tokens/:
fluent-2.json— Microsoft Fluent 2 referencematerial3-expressive.json— M3E reference (M3E adds wave/morph tokens vs M3)apple-system.json— iOS/macOS semantic system colorsawwwards-editorial.json— bespoke "editorial Swiss" exampleawwwards-brutalist.json— bespoke "tactile brutalist" example
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.
Gives 0 of the 12 instructions most css styling skills give in ~1.1k tokens
Counted across 512 of the 512 authors here whose files we hold, read 2026-09-06
- Animate only transform and opacityin 32 of 512, across 30 files
- Respect prefers-reduced-motionin 21 of 512
- Support reduced motion preferencesin 16 of 512, across 6 files
- Use Tailwind CSS for stylingin 14 of 512, across 13 files
- Specify AnimatePresence mode explicitlyin 12 of 512, across 2 files
- Set initial states explicitlyin 12 of 512, across 2 files
- Use semantic HTML elementsin 11 of 512, across 10 files
- Use oklch for color valuesin 11 of 512, across 10 files
- Honor prefers-reduced-motion in animationsin 10 of 512
- Provide a reduced-motion fallback for animationsin 10 of 512, across 9 files
- Use property names in camelCasein 9 of 512, across 4 files
- Ensure UI animations stay under 300msin 9 of 512, across 6 files
Said here and by no other author read
- Run the token export script
- Audit token coverage across five layers
- Enforce semantic versus raw discipline
- Verify dark mode parity for colors
- Flag tokens incompatible with translation
- Push back on tokenizing bespoke pages
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.