algorithmic-color-pale…
Derive a full UI colour palette algorithmically from one or two brand colours. Darker and lighter variants for interactive states, desaturated greys from the…
Extract a complete design system — colors, typography, spacing, components, shadows, and W3C design tokens — from any live website using Dembrandt. Runs a headless browser against the URL and returns real computed values from the DOM. Use when you need a site's actual design
$ npx -y skills add dembrandt/dembrandt-skills --skill extract-design --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/extract-designContext preview
The summary Claude sees to decide when to auto-load this skill.
Extract a complete design system — colors, typography, spacing, components, shadows, and W3C design tokens — from any live website using Dembrandt. Runs a headless browser against the URL and returns real computed values from the DOM. Use when you need a site's actual design
name: extract-design
description: Extract a complete design system — colors, typography, spacing, components, shadows, and W3C design tokens — from any live website using Dembrandt. Runs a headless browser against the URL and returns real computed values from the DOM. Use when you need a site's actual design tokens, want to reverse-engineer a visual design, or need to seed a design system from an existing product.
metadata:
priority: 9
requires: "dembrandt>=0.23.1"
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", "--package", "dembrandt", "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`. 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` | One extra HTTP header, e.g. `"Authorization: Bearer ...
UX and design-system skills for AI agents. Install once, and your agent knows how to design. --all installs every skill at once. They load only when a prompt needs them, so there is no runtime cost to having them all. Want to pick by hand?
Repo: dembrandt/dembrandt-skills
Derive a full UI colour palette algorithmically from one or two brand colours. Darker and lighter variants for interactive states, desaturated greys from the…
The persistent shell around an application — the top bar, the app launcher, the tenant and environment cue, and in heavy tools a status bar. In an estate of…
Product visuals — hero shots, demos, screenshots, landing-page panels — must reproduce the real product, not a stylised poster of it. Design with real content…
A brand's visual tone — playful or serious, rounded or angular — should be consistent across all UI elements. Shape language in typography, border-radius, and…
Every interactive element needs a complete set of visual states — rest, hover, active/pressed, focus, disabled, and loading. States should be derived…
Rebuild an existing web page 1:1 from measurement instead of by eye — into Figma, Penpot, or code. Captures the rendered page, the raw source and the computed…