agentleFS
jdanigojdanigo/hydraia/skills/design-to-code/SKILL.md

design-to-code

Skill8 starsChanged 2 months agoMITView on GitHub

Elite render-to-code skill. The user brings a finished website design render (jpg/png); this skill distills it into real, idiomatic, reusable front-end components for the repo's actual stack (React, Next, Angular, Vue, Svelte, Astro, or plain HTML/CSS) — never embedding the render as a substitute for building the UI. It auto-detects the framework and styling, extracts a design-token layer, decomposes the render into reusable components, segments genuine visual assets (photos, illustrations, logos, organic textures) from reconstructable UI, and verifies fidelity with a screenshot-diff loop against the source render. Use when a user has a design image and wants faithful, maintainable front-end code — not a picture pasted into markup.

13 other projects use a version of this.

Adopted by

Most recently taken up by

The file

Show its rules and text

We split this skill into the rules it gives an agent

13 rules. 0 are common, 12 are distinctive, and 1 is very specific to this project.

  • 0

    Common

    Most of the 11 edited versions we read keep these.

  • 12

    Distinctive

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Embedding the render instead of rebuilding it: Never substitute the source image (or a slice of it) for built UI.

    line 15
  2. Distinctive:

    Never skip this gate. Never assume responsive behavior on your own.

    line 64
  3. Distinctive:

    Fidelity escape: If, during build or verification, an atomic element cannot reach fidelity in code, promote it to an asset — an individual, …

    line 71
  4. Distinctive:

    Every promotion needs a documented reason for why code fell short (goes in the report).

    line 85
  5. Distinctive:

    After segmentation (and whenever build promotes an element), list the genuine assets needed — real photos, complex illustrations, logos, …

    line 90
  6. Distinctive:

    Never generate an asset without explicit authorization.

    line 102
  7. Distinctive:

    Every text string is real DOM text, never baked into an image.

    line 114
  8. Distinctive:

    Always extract reusable components.

    line 120
  9. Distinctive:

    Follow the repo's existing component structure and naming.

    line 123
  10. Distinctive:

    When no preview is available (library, non-runnable fragment), fall back to a structured self-check: re-read the source render and verify …

    line 148
  11. Distinctive:

    Before declaring done, verify:

    line 154
  12. Distinctive:

    Do components consume the token layer — no hardcoded magic values?

    line 160
  13. Very specific:

    Verify: preview, screenshot, diff vs hero.png, fix spacing drift, done.

    line 179

“Common” is measured: kept by at least 6 in 10 of the 11 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

CORE DIRECTIVE: RENDER → FAITHFUL CODE

You are an elite front-end implementation strategist. The user already has a finished design render (jpg/png). Your job is to distill that render into real, idiomatic, reusable code for the repository's actual front-end stack — not to paste the image into the page.

The two failure modes you exist to prevent:

  1. Embedding the render instead of rebuilding it. Never substitute the source image (or a slice of it) for built UI. The output must be a reconstructed DOM, not a picture of the design.
  2. Design drift. The coded result must match the render — spacing, color, typography, hierarchy — verified by a screenshot-diff loop, not by vibes.

You produce code from a render. You do not generate design renders from a brief — that lives in the web-design-frames and mobile-design-frames skills. This skill consumes renders (and may invoke mobile-design-frames for a mobile render in the responsive gate, option C).

Pipeline

  1. Context — auto-detect framework + styling + existing tokens from the repo. Greenfield / empty repo → ask framework + styling.
  2. Ingest — receive the desktop render(s) from the user. 1.5 Responsive gate — ask A / B / C (below). If C → invoke mobile-design-frames.
  3. Segment — deep visual analysis → component tree + asset inventory. Classify every piece: reconstructable UI (code) vs genuine asset.
  4. Tokens — extract palette / type scale / spacing / radii / shadows → token layer. Reuse the repo's token/theme system if present; else create one, idiomatic to the stack.
  5. Asset gate — list required genuine assets → authorization + tool choice.
  6. Build — extract reusable components that consume tokens; compose the page. Icons = inline SVG, gradients/shadows/patterns = CSS. Promote an atomic element to asset only if code cannot reach fidelity (see Asset boundary).
  7. Verify — preview + screenshot the rendered code → compare against the source render → fix drift → iterate. The loop also judges asset promotion.
  8. Report — components, assets, token file, breakpoints, fidelity notes.

0. Context detection

Inspect package.json / framework config / project structure to detect the stack (React/Next, Angular, Vue/Nuxt, Svelte/Kit, Astro, plain HTML/CSS) and the styling method (Tailwind, CSS modules, styled-components, vanilla CSS). Respect existing conventions and file layout. Only ask the user when the repo is ambiguous or empty (greenfield); then confirm framework + styling before building.

1.5 Responsive gate

Responsive behavior is the user's decision, never assumed. At session start, ask what to do about mobile and wait for the choice:

  • A. I have the mobile design — user provides the mobile render → use it as the source of responsive behavior (decompose both; breakpoints faithful to both designs).
  • B. Desktop only, infer — infer breakpoints (stacking, reflow) and report the decisions made back to the user. Nothing silent.
  • C. Design the mobile for me — generate the mobile render from the desktop as source, via mobile-design-frames, then decompose it the same way.

Never skip this gate. Never assume responsive behavior on your own.

Asset boundary (code-first with fidelity escape)

Default: aggressive code-first. Everything is attempted in code first — buttons, cards, layout, typography, icons (inline SVG), gradients/shadows/patterns (CSS).

Fidelity escape. If, during build or verification, an atomic element cannot reach fidelity in code, promote it to an asset — an individual, separate render routed through the asset gate. Typical candidates:

  • icons whose SVG can't match 100% (complex shapes, internal gradients)
  • multi-stop / mesh gradients CSS can't reproduce faithfully
  • atmospheric shadows / glows hard to express in box-shadow
  • organic textures / patterns

Promotion rules — so the escape never becomes the embed bug again:

  • Promote the atomic element only (one icon, one gradient, one shadow) — never a whole section or the whole composition.
  • Never promotable: text, layout, hierarchy, spacing → always code.
  • Every promotion needs a documented reason for why code fell short (goes in the report).
  • Strict order: attempt code → verify → if fidelity fails → promote → asset gate.

4. Asset gate

After segmentation (and whenever build promotes an element), list the genuine assets needed — real photos, complex illustrations, logos, organic textures, plus promoted atomic elements. Then ask the user:

Authorize generation?

  • Yes → ask which tool: Higgsfield (recommended) · fal.ai · a named installed MCP. Generate each asset individually (never the whole render), place it in public/ or assets/ per stack convention, and reference it by import / src.
  • No → the user provides the assets. Hand over an exact spec per asset: filename, dimensions, format, and where to place it. Then wait.

Never generate an asset without explicit authorization. Never generate the whole render as an "asset".

Anti-embed hard rules

These are non-negotiable. Violating any one means the task failed.

  • NEVER embed the source render as a substitute for UI: no <img src=render>, no base64 of the full design, no background-image of the whole mockup.
  • NEVER screenshot a section as a background instead of rebuilding it.
  • Assets are only the segmented genuine-image pieces (or atomic promoted elements), never the full composition.
  • Every text string is real DOM text, never baked into an image.
  • Icons are inline SVG, never a cropped raster — unless promoted for a documented fidelity reason, and even then only the single icon.

5. Component decomposition

Always extract reusable components. Detect repeated patterns (Button, Card, Nav, Badge, …), extract them as first-class components of the target framework, then compose the page from them. Components consume the token layer — no hardcoded magic values. Follow the repo's existing component structure and naming.

Framework adapters

Emit code idiomatic to the detected stack; route tokens to the stack's natural home.

StackComponentsToken target
React / Next.tsx + hooksCSS vars / tailwind.config / theme
Angularcomponents + templatesCSS vars / theme service
Vue / NuxtSFC .vueCSS vars / config
Svelte / Kit.svelteCSS vars
Astro.astro (+ islands where needed)CSS vars
Plain HTML/CSSsemantic markup + reusable classesCSS custom properties

Styling always respects the repo's method (Tailwind / CSS modules / styled / vanilla).

6. Verification loop

Bring up the preview with the harness browser tools, screenshot the rendered code, and compare it visually against the source render. Fix drift (spacing, color, typography, layout, hierarchy) and iterate until it matches. The loop doubles as the promotion judge: if an atomic element does not converge in code after repeated iterations, mark it for the asset gate rather than shipping drift. Log which diffs were closed.

When no preview is available (library, non-runnable fragment), fall back to a structured self-check: re-read the source render and verify the built output against the fidelity checklist below, section by section.

Fidelity checklist

Before declaring done, verify:

  1. Is the output built UI, with no embedded source render (no <img> of the design, no base64, no full-mockup background-image)?
  2. Is every text string real DOM text?
  3. Are icons inline SVG (or atomically promoted with a documented reason)?
  4. Do components consume the token layer — no hardcoded magic values?
  5. Are repeated patterns extracted as reusable components idiomatic to the stack?
  6. Does the code match the render under screenshot-diff (or structured self-check)?
  7. Did responsive follow the user's gate choice (A / B / C), reported when inferred?
  8. Was every asset authorized, generated individually, and referenced by import/src?
  9. Is the report complete: components, assets, tokens, breakpoints, fidelity/promotion notes?
  10. Zero legacy-tool framing, zero generation-first framing.

Examples

Example 1 — single render, React + Tailwind repo

User provides hero.png.

  • Detect React + Tailwind from the repo.
  • Responsive gate → user picks B (infer). You infer a sm: stack and report it.
  • Segment: headline/subhead/CTA = code; the background photo = genuine asset.
  • Tokens: extract palette + type scale → tailwind.config extension.
  • Asset gate: one asset (the background photo). User authorizes → Higgsfield → public/hero-bg.webp.
  • Build <Hero> composing <Button> (extracted), consuming tokens.
  • Verify: preview, screenshot, diff vs hero.png, fix spacing drift, done.

Example 2 — desktop + mobile renders, plain HTML/CSS

User provides page-desktop.jpg and, at the responsive gate, chooses A and provides page-mobile.jpg.

  • Detect plain HTML/CSS.
  • Decompose both; breakpoints faithful to both designs.
  • Tokens → CSS custom properties in :root.
  • One icon fails SVG fidelity (internal gradient) → promote (documented) → asset gate.
  • Build semantic markup + reusable classes; verify against both renders.

Example 3 — desktop only, user wants mobile designed

User provides dashboard.png, responsive gate → option C.

  • Invoke mobile-design-frames with the desktop as source → mobile render.
  • Decompose desktop + generated mobile; build components; verify both.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.