From frontend
Extracts design system from websites, HTML files, or screenshots into DESIGN.md via Playwright automation, HTML inspection, and visual analysis for UI consistency.
How this skill is triggered — by the user, by Claude, or both
Slash command
/frontend:design-systemThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
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.
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 |
Browse the site using Playwright CLI:
playwright-cli -s=design open {url}
playwright-cli -s=design screenshot --filename=.design/screenshots/source-desktop.png
Extract the full HTML — either via scraper MCP or by reading the page source
Resize and screenshot mobile (375px):
playwright-cli -s=design resize 375 812
playwright-cli -s=design screenshot --filename=.design/screenshots/source-mobile.png
Close the session: playwright-cli -s=design close
Read 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:
import { 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:
{
"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)npx claudepluginhub jezweb/claude-skills --plugin frontendExtracts a website's design tokens, imagery, and visual structure into a structured DESIGN.md file using Firecrawl. Useful for cloning UI, gathering brand guidance, or generating agent-ready design specs.
Creates or extracts DESIGN.md visual design systems from scratch, a URL, or a codebase — documenting tokens, components, and style rules for AI agents to reproduce.
Extracts the complete design language (colors, typography, spacing, shadows) from any website URL. Generates 8 output files: Tailwind config, React theme, shadcn/ui theme, Figma variables, W3C design tokens, CSS variables, AI-optimized markdown, and visual HTML preview. Also runs WCAG accessibility scoring.