Design System Extractor
Extract a website's design tokens and generate a spec-compliant DESIGN.md file.
Installation
- Make sure Claude is on your device and in your terminal.
Skills load from
~/.claude/skills/when Claude Code starts up — so you need it on your machine first. If you don't have it yet, install it once with the command below, then runclaudein any terminal to verify.One-time setupnpm i -g @anthropic-ai/claude-codeAlready have it? Skip ahead.
- Paste into Claude Code or into your terminal.
This copies the whole skill folder into
~/.claude/skills/ai-assist-design-creator-jparkerweb/— the SKILL.md plus any scripts, reference docs, or templates the skill ships with. Safe default: works for every skill.Faster alternative (instruction-only skills)
Skips the clone and grabs only the SKILL.md file. Don't use this if the skill ships Python scripts, reference markdowns, or asset templates — they won't be downloaded and the skill will fail when it tries to load them.
Quick install (SKILL.md only)Sign up to copy - Restart Claude Code.
Quit and reopen Claude Code (or any other agent that loads from
~/.claude/skills/). New skills are picked up on startup. - Just ask Claude.
Skills auto-activate when your request matches the skill's description — no slash command needed. Trigger phrases live in the skill's own frontmatter; you can read them in the “What this skill does” section above.
Prefer to read the source first? Open on GitHub.
When Claude uses it
Reverse-engineer a website's visual design system from a URL and produce a fully spec-compliant DESIGN.md file (https://github.com/google-labs-code/design.md). The output includes both machine-readable YAML design tokens (colors, typography, spacing, rounded corners, components) and human-readable markdown rationale sections (Overview, Colors, Typography, Layout, Elevation & Depth, Shapes, Components, Do's and Don'ts). Use this skill whenever the user wants to generate a DESIGN.md, create a design system file from a website, capture a site's visual identity, extract design tokens, build a design spec from a URL, clone a site's look and feel, or scaffold a DESIGN.md from scratch. Also triggers on: 'design system from URL', 'generate DESIGN.md', 'extract colors from site', 'what are this site's design tokens', 'capture design from website'.
What this skill does
DESIGN.md Creator
Reverse-engineer a website's visual design system and produce a fully spec-compliant DESIGN.md file following the google-labs-code/design.md format.
What this produces
A DESIGN.md file with two layers:
- YAML frontmatter — machine-readable design tokens: colors, typography, spacing, rounded corners, components
- Markdown body — human-readable rationale for each design decision, in 8 canonical sections
The output is ready for agents to consume immediately — no post-processing needed.
Step 1: Get the URL
If the user provided a URL via $ARGUMENTS, use it. Otherwise ask:
What website should I reverse-engineer? Provide the URL and I'll generate a DESIGN.md from its visual design.
Optionally, also tell me:
- Where to save the file (default:
DESIGN.mdin the current directory)- Whether this is a dark-mode or light-mode site (I'll detect this automatically if you don't know)
- Any specific components you want captured (buttons, cards, inputs, nav, etc.)
Wait for the URL before proceeding.
Step 2: Fetch and analyze the site
Fetch the page and all significant visual signals:
- Fetch the main URL — use whichever method your agent environment supports:
curl(works in any agent with shell access):curl -sL --max-time 15 -A "Mozilla/5.0" "<URL>"— captures raw HTML including<style>blocks and inline CSSwebfetchtool (if your agent provides it natively): use it directly for cleaner content extraction- If the initial fetch returns no CSS (JS-heavy SPA), also fetch the page's linked
.cssfiles: extract<link rel="stylesheet" href="...">URLs from the HTML, resolve each href to an absolute URL using the page's final URL after redirects (e.g.,/assets/app.css→https://example.com/assets/app.css,//cdn.example.com/app.css→https://cdn.example.com/app.css), de-duplicate, thencurleach one
- Identify key sub-pages — if the site has a component library, style guide, or "About" page, fetch those too (up to 2–3 additional pages) to improve coverage
- Look for existing design system artifacts — check for
/design-tokens.json,/tokens.json,tailwind.config.js, or any design system links in the page source
What to extract from the fetched content:
| Signal | Where to look |
|---|---|
| Brand colors | CSS variables (--color-*, --primary, etc.), inline styles, og:image colors, logo |
| Typography | font-family, font-size, font-weight, line-height, letter-spacing in CSS |
| Spacing scale | --spacing-*, padding/margin patterns, grid gutter values |
| Corner radii | border-radius values across buttons, cards, inputs |
| Elevation | box-shadow, backdrop-filter, z-index layering patterns |
| Component styles | Button, card, input, nav, badge styles from class names or CSS |
| Design personality | Logo, imagery, copy tone, overall layout density |
Note: You're inferring from observed CSS/HTML. Be honest about what you can directly observe vs. what you're inferring from visual patterns. Dark-mode sites typically have low-luminance surface colors and high-contrast text; light-mode sites are the inverse. When you can't determine an exact hex value, make a design-coherent choice and note it in the prose.
Step 3: Build the DESIGN.md
Read references/design-md-spec.md for the complete token schema and section rules.
Token extraction rules
Colors — Extract the site's full color role set. At minimum:
primary— main brand/action colorsecondary— supporting accent or secondary brand colorneutral/surface— background/surface coloron-primary,on-surface— text colors on those surfaces- Include semantic colors if detectable:
error,warning,success - Name tokens semantically (
primary,secondary,tertiary,neutral) or use Material Design role names if the site uses a Material-style palette
Typography — Identify the main type scale. Typically 5–12 levels:
- Display/headline levels (large, impactful headings)
- Body levels (body-lg, body-md, body-sm)
- Label levels (captions, tags, small UI text)
- Include all detectable properties:
fontFamily,fontSize,fontWeight,lineHeight,letterSpacing - Dimensions must include units:
px,em, orrem
Spacing — Extract the spacing scale. Common pattern: a base unit (4px or 8px) with named steps: xs, sm, md, lg, xl. Also include layout-specific values like gutter, margin, container-max.
Rounded — Extract corner radius values. Name them: sm, DEFAULT, md, lg, xl, full (for pill shapes).
Components — Capture 4–8 key components. For each, include as many valid properties as observed: backgroundColor, textColor, typography (token ref), rounded (token ref), padding, height, width. Use token references like {colors.primary} instead of hardcoded hex values wherever possible. Include hover variants as separate entries (e.g., button-primary-hover).
Sections to write
Write all 8 sections in canonical order. Each section combines YAML tokens (defined in frontmatter) with prose rationale. For sections where tokens aren't applicable (Elevation, Shapes, Do's and Don'ts), write prose only.
-
Overview — Brand personality, target audience, emotional tone, design style (flat, glassmorphism, neumorphism, material, etc.), key design decisions. 2–4 sentences that give a coherent aesthetic picture.
-
Colors — Describe the role of each color palette entry. What does each color mean in the design? When is it used? Reference the token names.
-
Typography — Describe the font strategy: which typefaces, why they were chosen, how the scale is organized, any special treatments (tight tracking on headlines, text-shadow on dark backgrounds, etc.).
-
Layout — Grid system (fluid, fixed, 12-column?), spacing philosophy (8px grid, dense vs. airy), max-width, container strategy.
-
Elevation & Depth — How visual hierarchy is communicated: shadows, tonal layers, glassmorphism, borders, z-axis layering. If flat design, describe what replaces shadows.
-
Shapes — Corner radius philosophy: sharp/technical, soft/organic, fully rounded pills, mixed. Which components use which radius.
-
Components — Walk through the key component tokens and explain the design rationale for each group (action elements, containers, inputs, typography application).
-
Do's and Don'ts — 3–5 concrete rules for maintaining design consistency. Things like "always use
{colors.primary}for CTAs, never{colors.secondary}" or "never use pure black (#000000) for text — useon-surface".
YAML frontmatter structure
---
name: <Site/Brand Name>
description: <optional one-line brand tagline>
colors:
primary: "#XXXXXX"
...
typography:
headline-lg:
fontFamily: <font>
fontSize: <Npx>
fontWeight: <number>
lineHeight: <1.2 or 24px>
letterSpacing: <-0.02em or 1px>
...
rounded:
sm: <Npx or Nrem>
...
spacing:
base: <Npx>
...
components:
button-primary:
backgroundColor: "{colors.primary}"
...
...
---
Step 4: Validate and save
After generating the content:
-
Self-check these things before writing the file:
- All token references (
{path.to.token}) resolve to a defined token - Color values start with
#followed by 6 hex digits - All dimension values have units (
px,em,rem) — no bare numbers except: font weights, unitless line-height multipliers, andspacingvalues (which may be unitless ratios or column counts per the spec) - Section order matches the canonical order (Overview → Colors → Typography → Layout → Elevation & Depth → Shapes → Components → Do's and Don'ts)
- Component properties: canonical keys (
backgroundColor,textColor,typography,rounded,padding,size,height,width) pass the linter silently; unknown keys are accepted by the spec but will produce a linter warning — flag them in the confidence notes
- All token references (
-
Check for an existing file at the target path before writing:
- If
DESIGN.md(or the user-specified path) already exists, warn the user: "ADESIGN.mdalready exists at this path. Overwrite, save asDESIGN-<site-name>.md, or cancel?" Wait for their choice before writing. - If no file exists, proceed directly.
- If
-
Save the file as
DESIGN.mdin the current working directory (or the path the user specified). -
Tell the user what was generated:
DESIGN.mdsaved.Design system: [Name]
Style: [e.g., Glassmorphism / Flat / Material / Custom]
Colors: [N tokens] — [brief palette description]
Typography: [N levels] — [font family names]
Components: [list of captured components]Confidence notes:
- [Any values that were inferred rather than directly observed]
- [Any sections that had limited CSS data and required design judgment]
Want me to refine any section, add more components, or lint the file with
npx @google/design.md lint DESIGN.md?
Recovery
| Situation | How to handle |
|---|---|
webfetch not available | Fall back to curl -sL --max-time 15 -A "Mozilla/5.0" "<URL>" — available in any agent with shell access |
| Site blocks fetch (403/429) | Ask user to paste relevant CSS, screenshot, or describe the design manually |
| JS-heavy SPA with no inline CSS | Fetch the JS bundle URL if visible; also try fetching linked .css files directly; ask user for computed styles or a screenshot as a last resort |
| Can't determine exact hex values | Make design-coherent color choices; note them as "inferred" in prose and confidence notes |
| Site uses a known design system (Material, Ant, Chakra, Tailwind UI) | Note this in the Overview — tokens will align with that system's defaults |
| No typography found | Default to system fonts (Inter, -apple-system) and note it |
| User wants lint | Run npx @google/design.md lint DESIGN.md and surface any errors/warnings |
Rules
- Never fabricate specific brand hex values with false certainty — if you inferred a color, say so
- All token cross-references must point to defined tokens — no dangling refs
- Dimensions must always have units (exception: unitless
lineHeightmultipliers like1.5are valid) - The YAML frontmatter is normative; prose is explanatory context — don't contradict one with the other
- Output goes in the current working directory as
DESIGN.mdunless the user specifies otherwise - If a section has genuinely no applicable content (e.g., a flat design with no elevation), include it briefly and explain: "This design system uses flat tonal layering rather than shadows — see Colors for the tonal surface stack"
Related skills
Generative Code Art
anthropics
Create algorithmic art with p5.js using randomness and interactive parameters.
UI/UX Pro Max
anthropics
Build production-grade web components and interfaces with distinctive, polished design.
Artifact Theme Toolkit
anthropics
Apply professional color and font themes to slides, docs, and web pages.
Multi-Component Web Artifacts
anthropics
Build complex React artifacts with Tailwind CSS and shadcn/ui components.