algorithmic-color-pale…
Derive a full UI palette from one or two brand colours — state variants, brand-tinted greys, semantic colours. Use when building…
Extract colours, typography, spacing, components and W3C design tokens from a live website with Dembrandt. Use when you need a site's real tokens or want to seed a design system from it.
Claude Code
$ npx -y skills add dembrandt/dembrandt-skills --skill extract-design --agent claude-code
Codex
$ npx skills add dembrandt/dembrandt-skills --skill extract-design -a codex -y
Cursor
$ npx skills add dembrandt/dembrandt-skills --skill extract-design -a cursor -y
Gemini CLI
$ npx skills add dembrandt/dembrandt-skills --skill extract-design -a gemini-cli -y
GitHub Copilot
$ npx skills add dembrandt/dembrandt-skills --skill extract-design -a github-copilot -y
OpenCode
$ npx skills add dembrandt/dembrandt-skills --skill extract-design -a opencode -y
Windsurf
$ npx skills add dembrandt/dembrandt-skills --skill extract-design -a windsurf -y
name: extract-design
description: Extract colours, typography, spacing, components and W3C design tokens from a live website with Dembrandt. Use when you need a site's real tokens or want to seed a design system from it.
metadata:
priority: 9
requires: "dembrandt>=0.39.0"
pathPatterns:
- "**/tokens/**"
- "**/theme/**"
- "tailwind.config.*"
- "**/design-system/**"
- "**/*.css"
- "**/*.scss"
- "**/styles/**"
promptSignals:
phrases:
- "extract design"
- "design tokens"
- "reverse engineer"
- "copy design"
- "extract colors"
- "extract typography"
- "brand tokens"
- "design system from"
- "extract from website"
- "dembrandt"
- "what colors does"
- "what fonts does"
- "design of this site"
retrieval:
aliases:
- extract design tokens
- reverse engineer design
- get colors from website
- extract brand
- design system extraction
- dembrandt
- copy design system
intents:
- extract design tokens from a live site
- reverse engineer a website's visual design
- seed a new design system from an existing product
- get exact colors, fonts, and spacing from a URL
- analyze a competitor's design system
- generate tailwind config from a real site
- generate shadcn theme from a real site
examples:
- extract the design system from stripe.com
- what colors and fonts does linear.app use
- reverse engineer vercel.com's design tokens
- get the tailwind config for this site
- copy the design system from this URL
- what is the primary color of this websiteDembrandt runs a headless Chromium browser against any URL, walks up to thousands of DOM elements, reads computed CSS, and returns a structured design system: colors with confidence scoring, typography styles, spacing scale, border radius, borders, shadows, and interactive component styles.
# Zero-install — npx fetches the package on first run (lowest friction) npx -y dembrandt https://dembrandt.com # Or install once (global), then call `dembrandt` directly npm i -g dembrandt # Basic extraction — outputs to terminal dembrandt https://dembrandt.com # JSON output — pipe into files or other tools dembrandt https://dembrandt.com --json-only > dembrandt-tokens.json # W3C DTCG format (design-tokens.org standard) dembrandt https://dembrandt.com --dtcg --save-output # Generate DESIGN.md (human + AI readable brand doc) dembrandt https://dembrandt.com --design-md # Multi-page crawl (follows internal links) dembrandt https://dembrandt.com --crawl 5 # Dark mode colors dembrandt https://dembrandt.com --dark-mode # Mobile viewport dembrandt https://dembrandt.com --mobile # Everything saved to output/ dembrandt https://dembrandt.com --save-output # Tailwind v4 @theme CSS — observed values only [dembrandt 0.28+] dembrandt https://dembrandt.com --tailwind src/app.css # Self-contained HTML report — open offline or attach as a CI artifact [dembrandt 0.19+] dembrandt https://dembrandt.com --html report.html # Drift gate — compare against a saved baseline; exits 1 on drift [dembrandt 0.19+] dembrandt https://app.example.com --compare baseline.json --html report.html
To expose Dembrandt as MCP tools, add this server to the agent's MCP config (no install — `npx` fetches it on first run):
{ "mcpServers": { "dembrandt": { "command": "npx", "args": ["-y", "dembrandt", "mcp"] } } }When using the Dembrandt MCP server, all extraction tools return a `job_id` immediately rather than blocking. Poll `get_job_status` until `status` is `"completed"`:
1. get_design_tokens({ url: "dembrandt.com", pages: 5 })
→ { job_id: "job_123_abc", status: "queued" }
2. get_job_status({ job_id: "job_123_abc" })
→ { status: "running" } // poll again
3. get_job_status({ job_id: "job_123_abc" })
→ { status: "completed", result: { ... } }
4. get_findings({ job_id: "job_123_abc" }) // no need to resend the extraction
→ { findings: [ ... ], contrast: { ... } }**Hand the `job_id` to the analysis tools instead of passing the extraction back.** Every pure tool accepts it, and the queue keeps the whole extraction for an hour, so a job started by a narrow tool such as `get_color_palette` still feeds `export_dtcg`. Passing the extraction inline works and wins when you give both, but a real extraction is far too large to travel back through the model as a tool argument. [dembrandt 0.29+]
Pass `sync: true` to any extraction tool to block and return the result directly (useful on fast networks, risks timeout on slow sites, and proportionally slower when `pages` is above 1).
Extraction tools: `get_design_tokens` (everything), `get_color_palette`, `get_typography`, `get_component_styles`, `get_surfaces`, `get_spacing`, `get_brand_identity`, `get_motion` (durations, easings, named keyframes, hover patterns, and the gradients that travel with them) [dembrandt 0.36+]. All accept `slow`, `mobile` (mobile viewport), and `cookie` (cookie string for authenticated pages); `get_design_tokens` and `get_color_palette` also accept `darkMode` and `wcag` (contrast analysis). [dembrandt 0.23.1+ for mobile/cookie/wcag]
Every extraction tool also crawls, which is the single biggest lever on token quality: one page gives you one page's tokens. [dembrandt 0.29+]
| Option | What | |---|---| | `pages` | Extract up to N pages and merge them into one token set (1 to 20). Pages come from DOM links, or from sitemap.xml when `sitemap` is true | | `paths` | Name the extra paths explicitly, e.g. `["/pricing", "/docs"]`. Overrides discovery | | `sitemap` | Discover from sitemap.xml. Alone it takes up to 20 pages; `pages` caps it | | `header` | Extra HTTP headers, a string or a list, e.g. `"Authorization: Bearer ..."`, for pages a cookie cannot reach | | `cookieFile` | Path to a saved sess
Enterprise UX secrets, now built into your AI agent. Your agent writes the component in seconds. It does not know the modal should be a drawer, or that the grey it picked fails contrast. These skills carry that judgment: what to do, and what breaks otherwise.
Derive a full UI palette from one or two brand colours — state variants, brand-tinted greys, semantic colours. Use when building…
Top bar, sidebar rail, app launcher, tenant and environment cue, status bar. Use when designing the persistent shell, a…
Product visuals must show the real product with real data. Use when building landing pages, hero sections, screenshots or demo…
Shape language across type, radius and icons carries brand personality. Use when starting a design system, picking icons or…
Rest, hover, active, focus, disabled and loading states, derived from the base colour. Use when designing buttons, links, inputs…
Rebuild a live web page 1:1 from measurement into Figma, Penpot or code, then verify it. Use when reproducing a page or checking…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.