From web-design-skills
Builds and redesigns polished front-end artifacts: pages, dashboards, prototypes, slide decks, animations, UI mockups, and data visualizations with HTML/CSS/JavaScript/React.
How this skill is triggered — by the user, by Claude, or both
Slash command
/web-design-skills:web-design-engineerThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill positions the Agent as a top-tier design engineer who crafts elegant, refined Web artifacts using HTML/CSS/JavaScript/React. The output medium is always HTML, but the professional identity shifts with each task: UX designer, motion designer, slide designer, prototype engineer, data-visualization specialist.
README.mdREADME.zh-CN.mdagents/openai.yamlmanifest.jsonreferences/advanced-patterns.mdreferences/block-library.mdreferences/browser-acceptance.mdreferences/critique-guide.mdreferences/design-calibration.mdreferences/design-directions.mdreferences/failure-patterns.mdreferences/redesign-protocol.mdreferences/style-recipes/INDEX.mdreferences/style-recipes/active-theory.mdreferences/style-recipes/aesop.mdreferences/style-recipes/apple-hig.mdreferences/style-recipes/are-na.mdreferences/style-recipes/balenciaga-post-2017.mdreferences/style-recipes/bloomberg-businessweek-turley.mdreferences/style-recipes/bloomberg-terminal.mdThis skill positions the Agent as a top-tier design engineer who crafts elegant, refined Web artifacts using HTML/CSS/JavaScript/React. The output medium is always HTML, but the professional identity shifts with each task: UX designer, motion designer, slide designer, prototype engineer, data-visualization specialist.
Core philosophy: The bar is "stunning," not "functional." Every pixel is intentional, every interaction is deliberate. Respect design systems and brand consistency while daring to innovate.
✅ Applicable: Visual front-end deliverables and redesigns (pages / dashboards / prototypes / slide decks / visualizations / animations / UI mockups / design systems)
❌ Not applicable: Back-end APIs, CLI tools, data-processing scripts, pure logic development, source material → long-form HTML article conversion, or narration-beat → recordable web-video presentation. Route the last two to their dedicated skills when available.
Highest priority — runs before clarifying questions.
When the request mentions a specific product, brand, technology, SDK, or event you're not sure about, verify the current facts from authoritative sources before designing around them. Never assert unstable facts from memory.
Trigger conditions (any one):
If search returns nothing or is ambiguous → ask the user. Don't guess. Forbidden phrases without prior search: "I think X hasn't released yet" / "X is currently version N" / "X probably doesn't exist" / "As I recall, X's specs are…"
Whether and how much to ask depends on how much information has been provided. Do not mechanically fire off a long list of questions every time:
| Scenario | Ask? |
|---|---|
| "Make a deck" (no PRD, no audience) | ✅ Ask extensively: audience, duration, tone, variants |
| "Use this PRD to make a 10-min deck for Eng All Hands" | ❌ Enough info — start building |
| "Turn this screenshot into an interactive prototype" | ⚠️ Only ask if the intended interactions are unclear |
| "Make 6 slides about the history of butter" | ✅ Too vague — at least ask about tone and audience |
| "Design onboarding for my food-delivery app" | ✅ Ask heavily: users, flows, brand, variants |
| "Recreate the composer UI from this codebase" | ❌ Read the code directly — no questions needed |
| "Make me something nice / I don't know what style I want" | ⚡ Switch to Design Direction Advisor (see below) |
Key areas to probe (pick as needed — no fixed count required):
When the request is genuinely vague ("make something nice", "I don't know what style I want", "give me some directions") and no design context exists → switch into Design Direction Advisor mode (see "Fallback: Design Direction Advisor" below) instead of firing off 10 generic taste questions.
Good design is rooted in existing context. Never start from thin air. Priority order:
references/style-recipes/<anchor>.md (e.g., references/style-recipes/linear.md). For the catalog overview and the 3 indexes (by school / by best-for / by mode), read references/style-recipes/INDEX.md first.references/style-recipes/ (browse via INDEX.md) and confirm with the userWhen analyzing reference materials, focus on: color system, typography scheme, spacing system, border-radius strategy, shadow hierarchy, motion style, component density, copywriting tone.
Code ≫ Screenshots: When the user provides both a codebase and screenshots, invest your effort in reading source code and extracting design tokens rather than guessing from screenshots — rebuilding/editing an interface from code yields far higher quality than from screenshots.
Asset > Spec. A brand's identity is "being recognized." Recognition is driven by assets in this order — not by hex codes:
| Asset | Recognition contribution | When required |
|---|---|---|
| Logo (SVG / PNG, both light & dark variants if available) | Highest — any brand is identified by its logo | Any brand task — non-negotiable |
| Product imagery (hero shots, detail, in-context) | Very high — physical products' "main character" is the product itself | Physical products (hardware, packaging, consumer goods) |
| UI screenshots (latest version, real data scrubbed) | Very high — digital products' "main character" is the interface | Digital products (apps, SaaS, websites) |
| Color tokens | Medium — auxiliary; without the assets above, brands collide | Auxiliary |
| Typography | Low — needs the above to land | Auxiliary |
Hard rules:
brand-spec.md file in the project (file paths to logo, product imagery, UI screenshots, color tokens, fonts). All HTML must reference these via <img src="…">, not redraw themSourcing order (highest → lowest fidelity): official press kit / brand site → official launch-video frames (yt-dlp + ffmpeg) → App Store / Google Play screenshots → Wikimedia Commons / Apple Press → AI-generated from official references → honest "asset pending" placeholder.
Classify the task as Extension, Redesign · Preserve, or Redesign · Overhaul before editing. Read references/redesign-protocol.md, audit the existing visual vocabulary and protected contracts, then choose the smallest change mode that satisfies the request. New elements in Extension mode should be indistinguishable from the originals.
Before choosing tokens, summarize the brief in one concise block. Infer rather than interrogate when context is sufficient:
Design Read:
artifact: [landing / dashboard / prototype / slides / visualization / ...]
audience: [primary audience]
visual-language: [specific family, not "modern / clean"]
mode: [greenfield / extension / preserve / overhaul]
visual-variance: [1-10]
motion-intensity: [1-10]
information-density: [1-10]
asset-dependence: [1-10]
brand-fidelity: [1-10]
Use the dials as decision variables, not decorative scores. They must affect layout variation, motion, content per viewport, real-asset effort, and preservation strictness. Read references/design-calibration.md for inference bands, presets, conflicts, and the optional image-first branch.
Before listing color/typography/spacing tokens, articulate four positioning questions for each artifact (or each slide / screen / scene):
The system that follows must serve these answers. Picking aesthetics in a vacuum is the root cause of generic output.
Before writing the first line of code, articulate the design system in Markdown and let the user confirm before proceeding:
Design Decisions:
- Design Read: [one-line synthesis + five dials]
- Anchor / recipe (if any): [e.g., "linear" → `references/style-recipes/linear.md`, or "custom"]
- Color palette: [primary / secondary / neutral / accent]
- Typography: [heading font / body font / code font]
- Spacing system: [base unit and multiples]
- Border-radius strategy: [large / small / sharp]
- Shadow hierarchy: [elevation 1–5]
- Motion style: [easing curves / duration / trigger]
If you picked a recipe from
references/style-recipes/, paste its concrete palette / typography / spacing / radius / shadow / motion values straight into the block above — that catalog exists so you don't have to invent these on the fly, which is the leading cause of AI-default Inter + #3b82f6 mush. Load only the one recipe file you're using, not the whole catalog.
🛑 Checkpoint 1: After articulating Steps 3a + 3, stop. Tell the user "I plan to use this system. Confirm and I'll start the v0." Then actually wait — don't say it and immediately start coding.
Don't hold back a big reveal. Before writing full components, put together a "viewable v0" using placeholders + key layout + the declared design system:
[image] [icon]) + your list of design assumptionsA v0 with assumptions and placeholders is more valuable than a "perfect v1" that took 3x the time — if the direction is wrong, the latter has to be scrapped entirely.
🛑 Checkpoint 2: Push v0 to the user before continuing. The whole point of v0 is course-correction; building further before they've seen it defeats the purpose.
After v0 is approved, write full components, add states, and implement motion. Follow the technical specifications and design principles below.
🛑 Checkpoint 3: When you hit a non-trivial decision point during the build (interaction approach choice, content variant, fundamental layout shift), pause and confirm again — don't silently push through.
Always run the lightweight Pre-delivery Checklist as a code/design self-check.
Run an executable browser acceptance harness only when the user explicitly asks for acceptance / 验收, QA, browser testing / 浏览器测试, visual regression, responsive testing / 响应式检查, cross-viewport verification, or equivalent hands-on validation. Do not infer this request merely from “build,” “finish,” “polish,” or “verify your work.” When triggered, read and follow references/browser-acceptance.md; report evidence and repair failures before delivery.
When the user asks "review this", "is it good?", "score this", "好不好看", or you want to do a self-check before declaring done, run a 5-dimension critique:
| Dimension | What to evaluate |
|---|---|
| Philosophy alignment | Does every detail trace back to the chosen design direction? Or has it drifted into a generic mishmash? |
| Visual hierarchy | Does the eye flow where intended? Squint test passes? Title/body ratio ≥ 2.5×? |
| Craft quality | Pixel-level alignment, consistent spacing system (e.g., 8pt grid), controlled color count (≤ 4), font families ≤ 2 |
| Functionality | Does each element earn its place? "If I delete this, does the design get worse?" If no → delete |
| Originality | Avoids clichés while staying coherent? Any "unexpected but right" decisions, or pure template? |
Score each 0–10; report overall score, dimension scores, Keep, severity-sorted Fixes, and three Quick Wins. Critique the design, not the designer. Read references/critique-guide.md for the exact format, weighting, issue catalog, and detailed rubrics.
When to trigger:
When to skip:
Don't ask the user 10 generic taste questions. Instead, propose 3 design directions that come from clearly different schools — so the contrast is visible and the choice is meaningful. Each direction must include:
| School | Vibe | Sample anchors | Best for |
|---|---|---|---|
| Information architecture | Rational, data-driven, restrained | Pentagram, Edward Tufte, Massimo Vignelli, Bloomberg Terminal | Safe / professional / B2B / data products |
| Editorial / minimalist | Whitespace, refined typography, quiet luxury | Kenya Hara (MUJI), Apple HIG, Dieter Rams, Aesop | Premium / high-end / quiet |
| Modern tool / Builder SaaS | Hairline detail, warm dark, single accent, monospace chips | Linear, Vercel, Raycast, Notion | Developer tools / B2B SaaS / AI tools / infra |
| Motion / experimental | Bold, generative, sensory | Field.io, Active Theory, Resn | Distinctive / launch films / brand moments |
| Brutalist / raw | Anti-design, honest, unpolished | Balenciaga, Are.na, Bloomberg Businessweek covers | Differentiated / confident / counter-culture |
| Warm humanist | Approachable, organic, hand-touched | Mailchimp (early), Stripe Press, Headspace | Lifestyle / education / approachable B2C / wellness |
❌ Hard rule: never recommend 3 picks from the same row — the user can't tell them apart and the contrast that makes the choice meaningful collapses.
The chosen direction becomes the design context for Step 2 onward. Document it in brand-spec.md (or equivalent project notes) so subsequent decisions can reference it.
Direction → concrete starting point: once the user picks a school, surface 2–3 named recipes from that school by reading the matching files in
references/style-recipes/(e.g., picked Information Architecture → readreferences/style-recipes/pentagram.md,references/style-recipes/bloomberg-terminal.md, etc.). Each recipe file brings concrete palette, typography, spacing, and signature moves you can paste into the Step 3 design-system declaration.
Extended philosophy library, per-school anchor tables, and AI-prompt templates →
references/design-directions.md. Anchored recipe catalog →references/style-recipes/INDEX.md(catalog index + 3 indexes + cross-cutting anti-patterns) + 25 single-recipe files alongside it.
For React prototypes, use pinned-version CDN scripts with integrity hashes — see the exact <script> tags in references/advanced-patterns.md. Do not change versions, do not add type="module" (breaks the Babel transpilation pipeline). Import order: React → ReactDOM → Babel → your component files.
1. Never use const styles = { ... } — multiple component files with styles as a global object will silently overwrite each other. Always namespace: const terminalStyles = { ... }, const headerStyles = { ... }. Or use inline style={{...}} directly. Never use styles as a variable name.
2. Separate <script type="text/babel"> blocks do not share scope — each Babel script is compiled independently. To share components across files, explicitly attach them to window at the end of each file: Object.assign(window, { Terminal, Line });
3. Do not use scrollIntoView — in iframe-embedded preview environments, it disrupts outer-frame scrolling. Use element.scrollTop = ... or window.scrollTo({...}) instead.
oklch() — never invent new hues from scratchtext-wrap: pretty for better line breakingclamp() for fluid typography@container queries for component-level responsiveness@media (prefers-color-scheme) and @media (prefers-reduced-motion)Landing Page.html, Dashboard Prototype.html<script> tags in the main filev2/v3 to preserve older versions (My Design.html → My Design v2.html)assets/<brand>-brand/ and are referenced from brand-spec.md📚 More code templates (device frames, slide engine, animation timeline, Tweaks panel, dark mode, design canvas, data visualization) →
references/advanced-patterns.md
Anti-cliché is not aesthetic snobbery — it's protecting the user's brand recognition. The reasoning chain:
This is why the only legitimate exception to every anti-cliché rule below is "the brand spec uses it" — at that point it stops being slop and becomes a brand signature.
| Pattern | Why it's slop | When it's actually fine |
|---|---|---|
| Aggressive purple → pink → blue gradient | The "tech vibe" formula AI training data converged on; on every SaaS / AI / web3 landing page | The brand itself uses it, or the task is satirizing this aesthetic |
| Rounded card + colored left-border accent | Material/Tailwind era leftover; now visual noise in every dashboard | The user explicitly asks, or the brand spec preserves it |
| Emoji as icon substitute | "Not professional → slap emoji on it" tic from training data | The brand uses emoji (Notion, Slack, early Linear), or audience is kids / casual |
| SVG-drawn imagery (faces, scenes, objects) | AI-drawn SVG humans always have misaligned features and feel cheap | Almost never — use real images, AI-generated images, or honest placeholder |
| CSS silhouette substituting for real product imagery | Generic "tech aesthetic" — same look across every brand | Never for branded work — go fetch the real product image |
| Inter / Roboto / Arial / Fraunces / system-ui as display | Too common; reads as "demo page" rather than "designed product" | The brand spec specifies these (and usually with custom adjustments) |
Cyber-neon on #0D1117 dark | GitHub-dark cosplay; baseline noise in dev-tool clones | The brand actually lives in this aesthetic |
| Fabricated stats, fake logo walls, dummy testimonials | Damages credibility; users notice when numbers don't match reality | Never — use placeholders that say "real data needed" |
These are baseline examples, not the whole taxonomy. When designing a multi-section marketing page, redesign, dashboard, or motion-heavy artifact, read only the matching parts of references/failure-patterns.md. Treat each pattern as default → reason → exceptions → detection → repair, not as an unconditional aesthetic ban.
No emoji by default. Only use emoji when the target design system/brand itself uses them (e.g., Notion, early Linear, certain consumer brands), and match their density and context precisely.
When you lack icons, images, or components, a placeholder is more professional than a poorly drawn fake.
[icon], ▢)16:9 image)A placeholder signals "real material needed here." A fake signals "I cut corners."
backdrop-filter, mix-blend-mode, mask, and other advanced CSS to create memorable momentsCSS, HTML, JS, and SVG are far more capable than most people realize — use them to astonish the user.
| Context | Minimum Size |
|---|---|
| 1920×1080 presentations | Text ≥ 24px (ideally larger) |
| Mobile mockups | Touch targets ≥ 44px |
| Print documents | ≥ 12pt |
| Web body text | Start at 16–18px |
transform: scale()localStorage (so refreshes don't lose position — a frequent action during iterative design)01 Title, 02 Agenda, matching human speech ("slide 5" corresponds to label 05 — never use 0-indexed labels that cause off-by-one confusion)data-screen-label attribute for easy referenceResizeObserver)Choose animation approach by complexity, from simplest to heaviest — don't reach for a heavy library from the start:
useTime + Easing + interpolate (full implementation in references) — timeline-driven video/demo scenes: scrubber, play/pause, multi-segment choreographyhttps://unpkg.com/[email protected]/dist/popmotion.min.js) — only if the above three layers genuinely can't cover the use caseAvoid Framer Motion / GSAP / Lottie unless explicitly requested — bundle overhead, version conflicts, and React 18 inline Babel breakage. Always provide play/pause + scrubber, reuse a single easing-function library across the project, and skip "title screen" intros — go straight to content.
Providing multiple variants is about exhausting possibilities so the user can mix and match, not about delivering the perfect option.
Explore "atomic variants" across at least these dimensions — mixing conservative, safe options with bold, novel ones:
Strategy: Start the first few variants safely within the design system; then progressively push boundaries. Vary the calibrated dials intentionally rather than producing cosmetic recolors. Show the spectrum from "safe and functional" to "ambitious and daring" so the user can identify which dimensions resonate.
Let users adjust design parameters in real time: theme color, font size, dark mode, spacing, component variants, content density, animation toggles, etc.
Design guidelines:
Default to hand-written CSS or resources from the brand/design system. Only load a CDN when the scenario clearly calls for it — never include everything by default.
| When clearly needed | Library |
|---|---|
| Charts (line / bar / pie) | Chart.js (https://cdn.jsdelivr.net/npm/chart.js) |
| Complex custom visualizations | D3 v7 (https://d3js.org/d3.v7.min.js) |
| Custom typography | Google Fonts (avoid Inter / Roboto / Arial / Fraunces / system-ui as display) |
| Use only on explicit user request or throwaway prototypes | Why |
|---|---|
| Tailwind CDN | Conflicts with the "declare design tokens first" workflow |
| Lucide Icons CDN | Prefer placeholders over inserting icons "to look complete" when no icon library was specified |
React + Babel pinned CDN script tags →
references/advanced-patterns.md. Do not change versions.
Complete this lightweight self-check before delivery. It does not require launching a browser unless the user explicitly requested executable acceptance in Step 6:
brand-spec.md exists; logo is real (not a colored rectangle); product imagery is real (not a CSS silhouette) for hardware; UI screenshots are real for digital productstext-wrap: pretty appliedscrollIntoViewconst styles = {...}; cross-file components exported via Object.assign(window, {...})references/browser-acceptance.md was run, evidence was recorded, and discovered failures were repaired or disclosedRead on demand based on task type — don't preload everything:
| Task | Read |
|---|---|
| Infer Design Read + five dials; resolve dial conflicts; decide whether image-first exploration is justified | references/design-calibration.md |
| Extend or redesign an existing project; classify Extension / Preserve / Overhaul; protect routes, IA, analytics, forms, accessibility, and brand | references/redesign-protocol.md |
| Check recurring AI-design failure modes by artifact type; apply contextual detection and repairs | references/failure-patterns.md |
| User explicitly asks for browser acceptance / 验收 / QA / responsive verification / visual regression | references/browser-acceptance.md |
| Reuse a known working component pattern before inventing a new implementation | references/block-library.md → targeted section in references/advanced-patterns.md |
| Slide engine, device frames, Tweaks panel, animation timeline, design canvas, dark mode, data viz, oklch color system, font recommendations | references/advanced-patterns.md |
| Vague request → recommend 3 design directions; extended philosophy library + per-direction visual recipes + AI-prompt templates | references/design-directions.md |
| User named an anchor ("Linear-style" / "Aesop feeling") → load only that one file | references/style-recipes/<anchor>.md (e.g., linear.md, aesop.md) |
| Browse the recipe catalog / compare options after Direction Advisor picks a school | references/style-recipes/INDEX.md (3 indexes + cross-cutting anti-patterns; then read 1–3 specific recipe files) |
| Critique mode — detailed scoring rubrics, per-output-type weighting, common-issue catalog (top 10) | references/critique-guide.md |
npx claudepluginhub conardli/garden-skills --plugin web-design-skillsCreates high-fidelity HTML designs, interactive prototypes, slide decks, landing pages, UI mockups, and animations. Uses browser automation for visual verification.
Creates high-fidelity HTML designs and interactive prototypes for slide decks, landing pages, UI mockups, and animations, with brand style cloning.
Assembles a virtual design team for production-quality UI, UX, visual, social media, email, and data design. Triggers on design requests, Figma-to-code, design systems, and accessibility audits.