About image-to-code
A design skill for turning visual references into a design system and reconstructed UI. It derives color, typography, spacing, and layout choices, then builds and verifies a token-driven implementation without copying protected imagery or brand assets.
Key features
- 01Analyze palette, typography, spacing, and layout
- 02Generate a three-tier DTCG token theme
- 03Rebuild UI with shared component primitives
- 04Check contrast in light and dark themes
- 05Render screenshots and run verification checks
Use cases
- 01Derive design tokens from a reference screenshot
- 02Rebuild a reference interface as component-based UI
- 03Compare a rendered result with its visual reference
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ plugin87/ ux-ui-agent-skills --skill image-to-codeAfter installing, type/image-to-codein Claude Code to confirm it loaded.
Details
From the project READMESkill: Image to Code
Step 0: is the kit here? This skill reads files from the kit. Check once:
ls ${CLAUDE_SKILL_DIR}/../../../tokens >/dev/null 2>&1 && echo KIT_OK || echo KIT_MISSINGOnKIT_MISSINGonly the skill folders were installed, which is whatnpx skills adddoes. Say so plainly, point the user atnpx ux-ui-agent-skills initor the plugin install, and stop. Do not guess the contents of a file you could not open.
Reconstruct a design from a visual reference as a real design system, not a one-off copy. Match the system (color/type/spacing language), never lift copyrighted imagery or brand assets.
Steps
- Read the reference like a designer. Infer and write down:
- Palette: 1 dominant surface family, text colors, 1 primary action + at most 1 accent (sample the hues; don't guess random hex).
- Type: family feel (geometric/grotesk/serif), the scale jumps, display vs. body contrast, weights.
- Spacing & density: base unit, section rhythm, card padding; airy vs. compact.
- Radius & depth: radius language (sharp/soft/pill), shadow vs. hairline separation.
- Layout archetype + sequence: bounded hero / asymmetric split / dense bento / editorial stack (
${CLAUDE_SKILL_DIR}/../../../taste/design-taste.md→ Variance Mandate).
- Anchor to a known system if it's close: browse
${CLAUDE_SKILL_DIR}/../../../taste/aesthetic-systems.md/python3 ${CLAUDE_SKILL_DIR}/../../../scripts/design_systems.py search <term>and adopt that recipe to stabilize decisions. - Build the token theme from the inferred values → 3-tier DTCG (
design-tokensskill); generate a singletheme.css. Verify every color pair with${CLAUDE_SKILL_DIR}/../../../scripts/contrast.py/${CLAUDE_SKILL_DIR}/../../../scripts/validate_contrast.py(light + dark). A sampled brand color that fails AA gets adjusted; taste never overrides POUR. - Rebuild layout + components token-driven via
${CLAUDE_SKILL_DIR}/../../../frameworks/adapter-protocol.md+${CLAUDE_SKILL_DIR}/../../../components/*: one shared primitive layer, all 8 states, a11y wired, no emoji (lucide), single theme. Apply taste (design-taste.md) so it doesn't regress to generic. - Verify against the reference: render and screenshot it, compare side-by-side to the reference; run
node ${CLAUDE_SKILL_DIR}/../../../scripts/gate.mjs measure_render.mjs,lint_hardcodes.py,taste_audit.mjs, andnpm run verify.
Verification (definition of done)
npm run verifyis 100% (tokens resolve, contrast AA light+dark, no hardcodes/emoji, real-render WCAG).- The rebuilt UI uses ONE inferred token theme; no per-section palettes.
- A screenshot of the result visibly matches the reference's design language.
Honest limit: this matches the design system, not a pixel-perfect copy. Do not reproduce the reference's photographs, logos, or copyrighted copy. Substitute your own or generic placeholders.