Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Extract a complete design system from an existing website or screenshot into a DESIGN.md file. Analyses colours, typography, component styles, spacing, and atmosphere through browser automation and HTML inspection. Produces a semantic design system document optimised for consistent page generation. Triggers: 'extract design system', 'design system', 'create DESIGN.md', 'analyse the design', 'what design does this site use', 'extract styles from', 'reverse engineer the design'.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 39% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 98% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -18% | 0% |
| case-22 | ✗→✓ | ▲ Improved | 90% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 85% | 0% |
Analyse an existing website, HTML file, or screenshot and synthesise a semantic design system into a DESIGN.md file. The output is optimised for use with the design-loop skill and general page generation.
.design/DESIGN.md before running the design loopAsk the user for one of:
| Source | Method | |--------|--------| | Live URL | Browse via Playwright CLI or scraper, screenshot + extract HTML | | Local HTML file | Read the file directly | | Screenshot image | Analyse visually (limited — no exact hex extraction) | | Existing project | Scan site/public/ for HTML files to analyse | | Stitch project | Use @google/stitch-sdk to fetch screen HTML + design theme |
playwright-cli -s=design open {url} playwright-cli -s=design screenshot --filename=.design/screenshots/source-desktop.png
playwright-cli -s=design resize 375 812 playwright-cli -s=design screenshot --filename=.design/screenshots/source-mobile.png
playwright-cli -s=design closeRead the file directly and extract design tokens from the source.
Analyse the image visually. Note: colour extraction will be approximate without HTML source. Flag this limitation in the output.
If @google/stitch-sdk is installed and STITCH_API_KEY is set:
typescriptimport { stitch } from "@google/stitch-sdk"; // List projects to find the target const projects = await stitch.projects(); // Get project details (includes designTheme) const project = stitch.project(projectId); const screens = await project.screens(); // Get HTML from the main screen const screen = screens[0]; // or find by title const htmlUrl = await screen.getHtml(); const imageUrl = await screen.getImage();
The Stitch designTheme object provides structured tokens directly:
json{ "colorMode": "DARK", "font": "INTER", "roundness": "ROUND_EIGHT", "customColor": "#40baf7", "saturation": 3 }
Map these to DESIGN.md sections:
colorMode → Theme (Light/Dark)font → Typography font familyroundness → Component border-radius (ROUND_EIGHT = 8px, ROUND_SIXTEEN = 16px, etc.)customColor → Primary brand coloursaturation → Colour vibrancy (1-5 scale)Then also download and analyse the HTML for the full palette (Stitch's theme object only has the primary colour — the full palette is in the generated CSS).
Extract these from the HTML/CSS source:
Look in these locations (priority order):
:root { --primary: #hex; } or @theme blocks<script> block with tailwind.config or @theme in <style>style="color: #hex" or style="background: #hex"bg-blue-600, text-gray-900 (map to palette)For each colour found, determine its role:
| Role | How to identify | |------|-----------------| | Primary | Buttons, links, active states, brand elements | | Background | <body> or <html> background | | Surface | Cards, containers, elevated elements | | Text Primary | <h1>, <h2>, main body text | | Text Secondary | Captions, metadata, muted text | | Border | Dividers, input borders, card borders | | Accent | Badges, notifications, highlights |
Extract:
| Token | Where to find | |-------|---------------| | Font families | Google Fonts <link>, @import, font-family in CSS | | Heading weights | font-bold, font-semibold, or explicit font-weight | | Body size | Base font-size on <body> or root | | Line height | leading-* classes or line-height CSS | | Letter spacing | tracking-* classes or letter-spacing CSS |
Identify patterns for:
max-w-* or explicit max-widthCritical: The DESIGN.md should describe the design in semantic, natural language supported by exact values. This is not a CSS dump — it's a document a designer or AI can read to understand and reproduce the visual language.
| Don't write | Write instead | |-------------|---------------| | rounded-xl | "Softly rounded corners (12px)" | | shadow-md | "Subtle elevation with diffused shadow" | | #1E40AF | "Deep Ocean Blue (#1E40AF) for primary actions" | | py-16 | "Generous section spacing with breathing room" |
Output the file to .design/DESIGN.md (or user-specified path).
Follow the structure from the design-loop skill's references/site-template.md — specifically the DESIGN.md Template section. The key sections are:
If browser automation is available:
Present:
If the site has multiple pages with different styles:
bg-slate-900 needs mapping to a role.dark class overrides or prefers-color-scheme media queries.dark class or media query)Other measured skills in the registry, with their headline benchmark lift.