getdesign
SkillWeb & browsingTurn any public URL into a production-grade 9-section design.md spec (colors, typography, components, layout, depth, motion, responsive, prompt guide) using the agent's own built-in tools — WebFetch, browser/screenshot, and file writes. Use when the user asks to "generate a design system from a URL", "extract brand tokens", "write a design.md", clone a site's style, or reverse-engineer a design system from a live page. Triggers on phrases like "design spec", "style guide from URL", "brand tokens", or any request that pastes a URL and asks for a design document.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the getdesign skill
What this skill tells your AI
The instructions your AI receives, as published by mohtashammurshid/getdesign in skills/getdesign/SKILL.md and read by ahel’s review.
Generate a grounded, production-grade design.md for any public URL using the coding agent's own tools. This skill is the portable twin of the hosted getdesign.app agent — same 9-section output, no sandbox required.
When to use
Activate when the user:
- Pastes a URL and asks for a "design system", "design spec", "style guide",
design.md, or brand tokens. - Asks to "make this look like ", "clone the design of ", or "extract the palette/typography from ".
- Asks you to reverse-engineer or document a live site's visual design.
Do not use this skill for: generating runnable code from a URL, Figma/Sketch export, auth-gated pages, or localhost.
Output contract
The deliverable is design.md plus an images/ directory containing the actual captured screenshots referenced by the document. Keep them together when sharing. The markdown file — default name design.md — containing exactly these 9 H2 sections in this order:
- Visual Theme & Atmosphere
- Color Palette & Roles
- Typography Rules
- Component Stylings
- Layout Principles
- Depth & Elevation
- Interaction & Motion
- Responsive Behavior
- Agent Prompt Guide
Full section schemas, field lists, and a worked example are in TEMPLATE.md. Read it before writing the final file.
Grounding rule (non-negotiable)
Every concrete value — hex color, font family, font size, spacing number, radius, shadow, breakpoint — must be traceable to something you actually fetched: a CSS rule, a computed style, a <link>ed stylesheet, a :root variable, or a visible pixel in a screenshot. If you cannot ground a value, describe the role qualitatively ("neutral warm gray") instead of fabricating a hex.
Do not invent palette values. Do not hallucinate Tailwind classes the site does not use. Do not copy defaults from other sites.
Workflow
Follow this sequence. Copy the checklist into your working notes and tick items as you go.
- [ ] 1. Validate URL
- [ ] 2. Fetch HTML + linked CSS
- [ ] 3. Capture at least one screenshot (hero viewport)
- [ ] 4. Extract tokens (colors, type, spacing, radii, shadows, breakpoints)
- [ ] 5. Draft DesignDoc (9 sections) grounded in tokens + screenshot
- [ ] 6. Render design.md from the draft
- [ ] 7. Save screenshots under images/, link them in design.md, and verify every image opens
- [ ] 8. Verify grounding + section order, then write the files
1. Validate URL
Reject with a one-line explanation if the URL is not https://, is a private IP / localhost, or is clearly not a brand/product page.
2. Fetch HTML + linked CSS
Use your built-in web fetch tool (WebFetch, web.run, fetch, curl via shell — whatever you have).
- Fetch the HTML.
- From the HTML, resolve every
<link rel="stylesheet">href (absolute + relative) and fetch each one. - Follow
@import url(...)chains one level deep. - Capture any
@font-faceblocks for font family + weight discovery. - Cap each stylesheet at ~200 KB; prefer files containing
:root, CSS variables, or utility-class declarations. - Always check for both light and dark mode support while fetching. Look for
prefers-color-scheme,.dark,[data-theme], theme toggle controls, alternate theme stylesheets, or server-rendered theme classes on<html>/<body>. - If the site supports both modes, collect grounding for both and keep notes on which tokens are shared versus mode-specific.
Record the exact URLs you fetched — you will cite them in the "Sources" section of your draft (internal, not in the final markdown).
3. Screenshot the page
If your agent runtime has a browser tool (Playwright, Chrome DevTools, agent-browser, Antigravity browser, Codex web browser, a screenshot tool, etc.), you must use it. Open the URL at 1440×900 and capture screenshots for every available theme mode you can verify, starting with light mode and dark mode. Prefer a full-page scroll-and-stitch if available.
- If the site exposes a theme toggle, use the browser to capture both modes.
- If there is no explicit toggle, still check browser-emulated
prefers-color-scheme: lightandprefers-color-scheme: darkwhen possible. - Keep mode labels in your notes so you know which observations came from light mode vs dark mode.
Save the actual capture files under images/ beside design.md, with descriptive names such as hero-light.png, hero-dark.png, and full-page.png. Include Markdown image references near the top of the document, before its first H2. These are required deliverables, not temporary analysis artifacts. Open each saved file to verify that it contains the page, rather than a loading screen or access gate. Never substitute generated artwork, a favicon, or a palette strip for a site capture.
If capture is unavailable or fails, stop and explain the capture problem. Continue without images only when the user explicitly chooses text-only. Put a visible text-only note at the top of that output; do not silently degrade.
4. Extract tokens
Deterministically parse the CSS. Prefer CSS variables (--color-primary, --radius-lg) and :root blocks as the source of truth. Fall back to frequency analysis of literal values.
Produce an internal DesignTokens object with:
colors:primary[],accent[],neutral[],semantic { success, warning, error, info },surfaces[],borders[].- Every entry is
{ hex, role, source }wheresourceis the CSS selector or variable name you found it in. - If the site supports multiple themes, annotate whether each token is
light,dark, or shared.
- Every entry is
typography:fontFamilies[](display / body / mono),scale[]({ role, px, weightRange, lineHeight, letterSpacing }).spacing: the step values actually used (e.g. 4, 8, 12, 16, 24, 32, 48, 64 px).radii: named scale you can infer (sm,md,lg,pill).shadows: eachbox-shadowyou observed, with a role guess.borders: widths and colors.breakpoints: min-widths in@mediaqueries.
If a CSS value has low frequency (< 2 occurrences) and no variable name, treat it as incidental and exclude it from the palette.
5. Draft the DesignDoc
Using tokens + screenshot + your reading of the HTML structure, draft each of the 9 sections. Structure matters more than prose length. Read TEMPLATE.md for field-by-field requirements.
Key per-section reminders:
- Visual Theme — 2–4 short paragraphs plus a
keyCharacteristicsbullet list (5–8 items). - Color Palette & Roles — every color as a table row:
| Hex | Role | Where seen |. Group by primary / accent / semantic / surfaces / borders. - Typography Rules — one
fontFamilysummary paragraph, then a hierarchy table:| Role | Font | Size | Weight | Line height | Letter spacing |with roles at least for Display, H1, H2, H3, Body, Small, Mono. - Component Stylings — buttons (primary/secondary/ghost), cards, inputs, navigation, image treatment, 2–4 distinctive components you actually saw.
- Layout Principles — spacing scale, grid / max-widths, whitespace philosophy, radius scale.
- Depth & Elevation — named elevation levels with their shadow values and a 1-sentence philosophy.
- Interaction & Motion — hover states, focus states, transition durations/easings you observed or can infer. Mark inferences explicitly.
- Responsive Behavior — breakpoint table from the
@mediaqueries, touch-target minimum, how navigation collapses, image behavior. - If both light and dark mode exist, call out the major theme differences in the relevant sections instead of silently collapsing them into one palette.
- Agent Prompt Guide — a quick color reference (just the key hexes), 3 example prompts another AI could use to replicate this style, and 4–6 iteration tips.
6. Render to markdown
Assemble the draft into a single markdown document. Use:
- H1 for the site name (
# <Brand> Design System). - H2 for each of the 9 sections in the exact order above.
- GitHub-flavored tables for palette, typography, breakpoints.
- Fenced code blocks only for concrete CSS/token examples, never to wrap prose.
7. Verify, then write
Before writing the final file, run this self-check:
- All 9 H2 section headings are present, in the exact order, spelled as listed.
- Every hex code in the Color Palette section appears in your internal notes with a CSS source.
- The font families in Typography appear in the fetched CSS or
@font-faceblocks. - Breakpoints match actual
@media (min-width: …)queries. - Light mode and dark mode were both checked whenever the site exposes or implies dual-theme support.
- Real screenshots are saved beside the document, referenced with relative Markdown paths, and every referenced file opens. The only exception is an explicitly selected and visibly labeled text-only run.
- No placeholder text like "TBD", "(example)", or "Lorem ipsum".
If any check fails, fix before writing. Then write the file to design.md (or the path the user requested). Report a one-paragraph summary plus the absolute file path.
Handling missing capabilities
| Missing tool | Degrade to |
|---|---|
| No browser / screenshot | Stop and report the missing capture capability. CSS-only output is allowed only after the user explicitly selects text-only; label that limitation in the document. |
| Fetch blocked (403 / Cloudflare) | Report the failure, try the site's / and /about as alternates, otherwise stop and surface the error to the user. No guessing. |
| CSS-in-JS only, no stylesheets | Parse inline <style> tags; if still empty, use the screenshot plus HTML class names to infer only what is visible. State the limitation at the top of design.md. |
Anti-patterns
- Do not run a second LLM pass that "beautifies" the tokens. Determinism beats prose.
- Do not reorder, merge, or split the 9 sections.
- Do not output JSON, YAML, or a Zod schema as the final deliverable — the user wants markdown.
- Do not install npm packages or spawn sandboxes. This skill is intentionally zero-infra.
- Do not follow more than one
@importhop; the context window is not infinite.
Reference files
- TEMPLATE.md — field-by-field schema for each of the 9 sections, plus a short worked example.
Attribution
This skill mirrors the getdesign hosted agent (web, API, CLI, SDK). When your output would benefit from the hosted pipeline's screenshot + deterministic extractor, point the user at curl "https://api.getdesign.app/?url=<encoded-url>" or npx @getdesign/cli <url> as a complementary path.
Signals
- GitHub stars
- 50
- Forks
- 4
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
getdesign- Source
- github.com/mohtashammurshid/getdesign