Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Author/validate/export Google's DESIGN.md token spec files.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -21% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 27% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 53% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 31% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 53% | 0% |
DESIGN.md is Google's open spec (Apache-2.0, google-labs-code/design.md) for describing a visual identity to coding agents. One file combines:
Tokens give exact values. Prose tells agents why those values exist and how to apply them. The CLI (npx @google/design.md) lints structure + WCAG contrast, diffs versions for regressions, and exports to Tailwind or W3C DTCG JSON.
For purely visual inspiration or layout examples, use popular-web-designs instead. For process and taste when designing a one-off HTML artifact from scratch (prototype, deck, landing page, component lab), use claude-design. This skill is for the formal spec file itself.
md--- version: alpha name: Heritage description: Architectural minimalism meets journalistic gravitas. colors: primary: "#1A1C1E" secondary: "#6C7278" tertiary: "#B8422E" neutral: "#F7F5F2" typography: h1: fontFamily: Public Sans fontSize: 3rem fontWeight: 700 lineHeight: 1.1 letterSpacing: "-0.02em" body-md: fontFamily: Public Sans fontSize: 1rem rounded: sm: 4px md: 8px lg: 16px spacing: sm: 8px md: 16px lg: 24px components: button-primary: backgroundColor: "{colors.tertiary}" textColor: "#FFFFFF" rounded: "{rounded.sm}" padding: 12px button-primary-hover: backgroundColor: "{colors.primary}" --- ## Overview Architectural Minimalism meets Journalistic Gravitas... ## Colors - **Primary (#1A1C1E):** Deep ink for headlines and core text. - **Tertiary (#B8422E):** "Boston Clay" — the sole driver for interaction. ## Typography Public Sans for everything except small all-caps labels... ## Components `button-primary` is the only high-emphasis action on a page...
| Type | Format | Example | |------|--------|---------| | Color | any CSS color (hex, rgb(), oklch(), named) | "#1A1C1E", "oklch(62% 0.18 250)" | | Dimension | number + unit (px, em, rem) | 48px, -0.02em | | Token reference | {path.to.token} | {colors.primary} | | Typography | object with fontFamily, fontSize, fontWeight, lineHeight, letterSpacing, fontFeature, fontVariation | see above |
Component property whitelist: backgroundColor, textColor, typography, rounded, padding, size, height, width. Variants (hover, active, pressed) are separate component entries with related key names (button-primary-hover), not nested.
Sections are optional, but present ones should appear in this order. The linter flags out-of-order sections (section-order, warning) and duplicate headings — consumers per the spec reject duplicates, so fix both before returning the file.
Unknown sections are preserved, not errored. Unknown token names are accepted if the value type is valid. Unknown component properties produce a warning.
direction. If they provided a site, image, or vibe, translate it to the token shape above.
DESIGN.md in their project root using write_file. Alwaysinclude name: and colors:; other sections optional but encouraged.
{colors.primary}) in the components: sectioninstead of re-typing hex values. Keeps the palette single-source.
before returning.
exports next to the file (tailwind.theme.json, tokens.json).
The CLI is @google/design.md (Node). Use npx — no global install needed.
bash# Validate structure + token references + WCAG contrast npx -y @google/design.md lint DESIGN.md # Compare two versions, fail on regression (exit 1 = regression) npx -y @google/design.md diff DESIGN.md DESIGN-v2.md # Export to Tailwind v3 theme JSON (`tailwind` is a back-compat alias) npx -y @google/design.md export --format json-tailwind DESIGN.md > tailwind.theme.json # Export to a Tailwind v4 CSS @theme block (--color-*, --text-*, --radius-*, ...) npx -y @google/design.md export --format css-tailwind DESIGN.md > theme.css # Export to W3C DTCG (Design Tokens Format Module) JSON npx -y @google/design.md export --format dtcg DESIGN.md > tokens.json # Print the spec itself — useful when injecting into an agent prompt npx -y @google/design.md spec --rules-only --format json
All commands accept - for stdin. lint returns exit 1 on errors (warnings alone exit 0). export exits 0 on a successful export regardless of lint findings in the source — run lint separately to gate on those. Output is JSON by default; parse it if you need to report findings structurally.
On Windows, the design.md bin name can collide with the .md file association (silent no-op or the file opens in an editor). Use the dot-free alias: npx -y -p @google/design.md designmd lint DESIGN.md.
broken-ref (error) — {colors.missing} points at a non-existent tokencontrast-ratio (warning) — component textColor vs backgroundColorbelow WCAG AA (4.5:1)
missing-primary (warning) — colors defined but no primary tokenmissing-typography (warning) — colors defined but no typography tokensorphaned-tokens (warning) — color tokens never referenced by a componentsection-order (warning) — sections out of the canonical orderunknown-key (warning) — top-level YAML key that looks like a typo of aschema key (colours: → colors:); custom extension keys stay silent
token-summary, missing-sections (info) — counts and absent optionalsections
When the user cares about accessibility, call this out explicitly in your summary — WCAG findings are the most load-bearing reason to use the CLI.
button-primary.hover is wrong;button-primary-hover as a sibling key is right.
# ortruncate values like #1A1C1E oddly.
letterSpacing: -0.02em parses asa YAML flow — write letterSpacing: "-0.02em".
gives you prose in a random order, reorder it to match the canonical list before saving — spec-compliant consumers expect it.
typo like fontwight: produces no finding and the value vanishes from exports — double-check sub-property names against the schema (fontFamily, fontSize, fontWeight, lineHeight, letterSpacing, fontFeature, fontVariation).
version: alpha is the current spec version (as of Jul 2026, CLI0.3.0). The spec is marked alpha — watch for breaking changes.
{colors.primary} works;{primary} does not.
@google/design.md on npmthe spec itself is Apache-2.0.
Other measured skills in the registry, with their headline benchmark lift.