Frontend Design
Citrus-bit/Anaxa
Create distinctive, production-grade frontend interfaces with high design quality for new standalone web artifacts, pages, posters, dashboards, React components, HTML/CSS layouts, or clearly…
Builds polished browser-rendered HTML, CSS, JavaScript and React pages, dashboards, prototypes and slide decks, aiming for a stunning rather than merely functional result.
$ npx skills add ConardLi/garden-skills --skill web-design-engineer -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ConardLi/garden-skills web-design-engineer --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/ConardLi/garden-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/web-design-engineer .claude/skills/web-design-engineer && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "web-design-engineer" agent skill from https://github.com/ConardLi/garden-skills/tree/main/skills/web-design-engineer into .claude/skills/web-design-engineer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "web-design-engineer", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/ConardLi/garden-skills/tree/main/skills/web-design-engineerType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add ConardLi/garden-skills --skill web-design-engineer -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ConardLi/garden-skills web-design-engineer --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ConardLi/garden-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/web-design-engineer .agents/skills/web-design-engineer && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "web-design-engineer" agent skill from https://github.com/ConardLi/garden-skills/tree/main/skills/web-design-engineer into .agents/skills/web-design-engineer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "web-design-engineer", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ConardLi/garden-skills --skill web-design-engineer -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ConardLi/garden-skills web-design-engineer --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ConardLi/garden-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/web-design-engineer .cursor/skills/web-design-engineer && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "web-design-engineer" agent skill from https://github.com/ConardLi/garden-skills/tree/main/skills/web-design-engineer into .cursor/skills/web-design-engineer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "web-design-engineer", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/ConardLi/garden-skills.git --path skills/web-design-engineer--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add ConardLi/garden-skills --skill web-design-engineer -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ConardLi/garden-skills web-design-engineer --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ConardLi/garden-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/web-design-engineer .gemini/skills/web-design-engineer && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "web-design-engineer" agent skill from https://github.com/ConardLi/garden-skills/tree/main/skills/web-design-engineer into .gemini/skills/web-design-engineer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "web-design-engineer", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install ConardLi/garden-skills web-design-engineerInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add ConardLi/garden-skills --skill web-design-engineer -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ConardLi/garden-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/web-design-engineer .github/skills/web-design-engineer && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "web-design-engineer" agent skill from https://github.com/ConardLi/garden-skills/tree/main/skills/web-design-engineer into .github/skills/web-design-engineer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "web-design-engineer", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ConardLi/garden-skills --skill web-design-engineer -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ConardLi/garden-skills web-design-engineer --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ConardLi/garden-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/web-design-engineer .opencode/skills/web-design-engineer && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "web-design-engineer" agent skill from https://github.com/ConardLi/garden-skills/tree/main/skills/web-design-engineer into .opencode/skills/web-design-engineer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "web-design-engineer", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
web-design-engineerBuilds polished browser-rendered HTML, CSS, JavaScript and React pages, dashboards, prototypes and slide decks, aiming for a stunning rather than merely functional result.
The skill casts the agent as a design engineer whose professional identity shifts per task between UX designer, motion designer, slide designer, prototype engineer and data-visualization specialist, always outputting HTML. Its stated bar is stunning rather than functional, with every pixel intentional while still respecting existing design systems and brand consistency. It applies to visual deliverables and redesigns, not back-end APIs, CLI tools, pure logic, long-form article conversion or narrated video presentations, which route to other skills when available.
Before anything else it verifies unstable facts about a named product, brand or technology from authoritative sources rather than asserting them from memory, with trigger phrases such as naming a specific recent device or catching itself thinking it is probably not released yet. It then decides how much to ask based on context: a vague deck request gets extensive questions about audience and tone, while a request that already supplies a PRD and audience starts building directly.
A large set of reference files backs the workflow: a block library, browser-acceptance checks, a critique guide, design calibration and directions, documented failure patterns, a redesign protocol and a library of named style recipes such as Apple HIG, Aesop and Are.na, each describing a distinct visual language to draw from.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit aaf9a82. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are yaml and markdown).
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
unpkg.comcdn.jsdelivr.netd3js.orgFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Web Design Engineer loads about 8.8k tokens when it runs, and up to ~45k if it reads all its reference files. Until then it costs about 119 tokens; SKILL.md has 4,403 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from ConardLi/garden-skills at commit aaf9a82, republished under its MIT licence (© ConardLi). 4,403 words, ~8,755 tokens.
.claude/skills/web-design-engineer/SKILL.md (or your agent's skills folder). This skill also uses 38 other files; get the full folder from GitHub.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.
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/popmotion@11.0.5/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 |
© ConardLi, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 38 other files (references) in skills/web-design-engineer of ConardLi/garden-skills.
Open the folder on GitHubat commit aaf9a82
Web Design Engineer next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Web Design Engineer this skillConardLi/garden-skills | 13k | — | ~8.8k | Automated safety check: Pass | MIT | |
| Frontend DesignCitrus-bit/Anaxa | 120 | — | ~1.9k | Automated safety check: Pass | Apache-2.0 | |
| LobeHub Interactive Prototypelobehub/lobehub | 83k | — | ~1.6k | Automated safety check: Pass | Custom licence | |
| Creative Tim UI Blockscreativetimofficial/ui | 12k | — | ~2.1k | Automated safety check: Notes | MIT | |
| Ss Learnbitjaru/styleseed | 972 | — | ~1.3k | Automated safety check: Pass | MIT | |
| UI/UX Design System AdvisorGalaxy-Dawn/claude-scholar | 5.7k | 1 repos | ~1.1k | Automated safety check: Pass | MIT |
Citrus-bit/Anaxa
Create distinctive, production-grade frontend interfaces with high design quality for new standalone web artifacts, pages, posters, dashboards, React components, HTML/CSS layouts, or clearly…
lobehub/lobehub
Builds single-file interactive HTML prototypes rendered with the real LobeHub UI components and written as production-style React, so they can later be split into files.
creativetimofficial/ui
Helps install, generate and review Creative Tim UI blocks: shadcn/ui-based React and Tailwind sections that follow a restrained, production-minded design philosophy.
bitjaru/styleseed
Capture a human-approved UI design lesson as a privacy-minimized local StyleSeed candidate, review it, and prepare an opt-in share package without transmitting project code, prompts, screenshots, or…
Galaxy-Dawn/claude-scholar
Turns a vague UI request into a concrete design system with style, palette, typography and layout guidance from a search script, plus stack-specific implementation advice.
sundial-org/awesome-openclaw-skills
UI/UX design intelligence and implementation guidance for building polished interfaces.
ConardLi/garden-skills
Turns a URL, PDF, DOCX, Markdown file, text or screenshots into a designed, shareable single-file HTML article through a staged review workflow.
ConardLi/garden-skills
Generates or edits images with GPT Image 2 through an OpenAI-compatible API, or falls back to writing finished prompts from a library of structured templates.
ConardLi/garden-skills
Turns an article or spoken script into a click-through, full-screen 16:9 web presentation that looks like a video, with optional synthesized narration.
Works with
Categories
Builds polished browser-rendered HTML, CSS, JavaScript and React pages, dashboards, prototypes and slide decks, aiming for a stunning rather than merely functional result. The skill casts the agent as a design engineer whose professional identity shifts per task between UX designer, motion designer, slide designer, prototype engineer and data-visualization specialist, always outputting HTML. Its stated bar is stunning rather than functional, with every pixel intentional while still respecting existing design systems and brand consistency.
Web Design Engineer fits situations like: building a polished landing page, dashboard or prototype in HTML; redesigning an existing web artifact for visual quality; getting a design critique or browser-based acceptance check on a web artifact; choosing a visual style recipe for a new page.
Run `npx skills add ConardLi/garden-skills --skill web-design-engineer -a claude-code`. Or copy the skill folder (skills/web-design-engineer in ConardLi/garden-skills) into .claude/skills/web-design-engineer in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ConardLi/garden-skills --skill web-design-engineer -a codex`. Or copy the skill folder (skills/web-design-engineer in ConardLi/garden-skills) into .agents/skills/web-design-engineer in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ConardLi/garden-skills --skill web-design-engineer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/web-design-engineer, .gemini/skills/web-design-engineer, .github/skills/web-design-engineer and .opencode/skills/web-design-engineer in your project.
SKILL.md names no scripts, command-line tools or credentials: Web Design Engineer is instructions for the agent only.
SKILL.md names 3 domains. In commands or code: unpkg.com, cdn.jsdelivr.net and d3js.org; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Web Design Engineer is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 8.8k tokens (SKILL.md is roughly 35k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 36k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Web Design Engineer: Frontend Design (Citrus-bit/Anaxa, 120 stars), LobeHub Interactive Prototype (lobehub/lobehub, 83k stars), Creative Tim UI Blocks (creativetimofficial/ui, 12k stars) and Ss Learn (bitjaru/styleseed, 972 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ConardLi (a GitHub user) maintains it in ConardLi/garden-skills, which has 12,767 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on July 12, 2026.
Source: ConardLi/garden-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.