Design extract
Skill t0ddharris/compound-marketing/.claude/skills/design-extract
Extract a website's design system (colors, typography, spacing, buttons) and populate the brand guide. Trigger with /design-extract or when the user mentions 'extract design,' 'pull brand from website,' 'design tokens from site,' 'scrape brand colors,' or 'extract visual identity.' Requires Node 20+ and installs designlang globally if not present.From its SKILL.md
npx -y skills add t0ddharris/compound-marketing --skill design-extractAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 1 stars1 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.
SKILL.md
4.9 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it
Design Extract
Extract a live website's design system and write the results into brain/brand-guide/brand-guide.md.
Uses designlang — a headless-browser tool that reads the design system off the live DOM and emits structured tokens.
Prerequisites
- Node 20+
designlangCLI (installed automatically if missing)
Workflow
Step 1: Get the URL
Ask the user:
What website URL should I extract the design system from?
If they already provided a URL in their message, confirm it.
Optional follow-ups:
- "Should I extract dark mode too?" (adds
--darkflag) - "Any pages behind auth I should include?" (adds
--cookieflag)
Step 2: Install designlang if needed
Check if designlang is available:
command -v designlang || npm list -g designlang 2>/dev/null
If not installed, use npx to avoid global install permission issues:
npx -y designlang <url> ...
Alternatively, if the user prefers a global install:
npm i -g designlang
Step 3: Run extraction
Run designlang's brand subcommand against the URL. This generates a full editorial brand-guidelines document (13 chapters, print-ready) along with design tokens:
designlang brand <url> --out ./design-extract-output --name brand --verbose
If the brand subcommand fails or produces insufficient output, fall back to the default extraction:
designlang <url> --out ./design-extract-output --name brand --full --verbose
Flags to consider based on user input:
--dark— if they want dark mode tokens--depth 2— if they want to crawl beyond the homepage--cookie "name=value"— if pages require auth
Step 4: Parse the output
Read the generated files from ./design-extract-output/:
brand-design-language.md— the full 19-section design system docbrand-design-tokens.json— W3C DTCG tokens (colors, typography, spacing)brand-voice.json— tone, CTA verb inventory (pass to tone-mapping if present)
Extract and organize:
- Colors: core palette, accent colors, semantic colors (success, error, warning), gradients
- Typography: font families, weights, sizes, line heights, font sources
- Spacing: base unit, scale tokens
- Buttons: primary/secondary styles, border radius, padding, hover states
- Design principles: inferred from patterns (dark-first vs light, density, whitespace approach)
Step 5: Review with user
Present the extracted design system in a summary table format:
Extracted from: [url]
Colors:
Primary Background #1a1a2e
Card Background #16213e
Primary Text #ffffff
Body Text #a8b2d1
Primary Accent #0f3460 (buttons, CTAs)
Secondary Accent #e94560 (highlights)
Typography:
Headings Inter 700 fallback: system-ui
Body Inter 400 fallback: system-ui
Code JetBrains Mono 400 fallback: monospace
Spacing: 4px base unit (4, 8, 12, 16, 24, 32, 48, 64)
Buttons:
Primary #0f3460 bg, #fff text, 8px radius
Secondary transparent bg, #0f3460 border
Ask: "Does this look right? Anything to adjust before I write the brand guide?"
Step 6: Write brand-guide.md
Write the extracted values into brain/brand-guide/brand-guide.md, replacing [FILL IN] placeholders with real values. Preserve the template structure exactly — only replace placeholders.
If the extraction found values not covered by the template (gradients, shadows, z-index), add them as new sections at the bottom following the same formatting conventions.
Step 7: Clean up
Remove the design-extract-output/ directory:
rm -rf ./design-extract-output
Tell the user:
Brand guide updated at
brain/brand-guide/brand-guide.md. All visual skills (brand-design, web-design, hubspot-email, etc.) will now use these values.
If brand-voice.json contained tone/voice data, mention:
I also found voice/tone data. Run
/tone-mappingto build a full voice profile.
Rules
- Never overwrite existing brand-guide values without confirming with the user
- If the brand guide already has values filled in, show a diff of what would change and ask
- If designlang fails (site blocks headless browsers, JS-heavy SPA that doesn't render), tell the user and offer manual entry as fallback
- Keep the design-extract-output directory until the user confirms the brand guide looks good, then clean up
- If the site has both light and dark modes, extract both and present both, letting the user pick which is primary
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.