Recreate a UI from a screenshot or image reference with pixel-perfect accuracy. Covers layout, color extraction, typography matching, component fidelity, and validation.
Recreate a UI from a screenshot or image reference with pixel-perfect accuracy. Covers layout, color extraction, typography matching, component fidelity, and validation.
Recreate Screenshot
Recreate a UI screen from a screenshot or image reference. The goal is pixel-perfect accuracy — the rendered output should be visually indistinguishable from the source image.
When to Use
User pastes a screenshot and says "build this", "recreate this", "make this", "replicate this UI"
User uploads a design mockup image and wants it implemented
User shares a reference image from another app and wants an exact visual match
User provides a Figma screenshot, Dribbble shot, or any visual reference to reproduce
When NOT to Use
User wants a functional app inspired by a design — that's general development, not screenshot recreation
User wants to clone a live website by URL — use the website-cloning skill instead
User wants to redesign or improve an existing component — use design-exploration instead
User describes a UI in words without providing an image — that's standard design work
Phase 1: Analyze the Screenshot
Before writing any code, study the image systematically. Extract every visual detail.
Layout Analysis
Identify the overall layout structure: single column, sidebar + content, grid, split-screen
Map the visual hierarchy: what draws the eye first, second, third
Note the container structure: full-width vs constrained, nested containers, card groups
Identify repeating patterns: card grids, list items, nav items, form groups
Color Extraction
Extract exact colors from the image — do not approximate.
Primary background — the dominant background color
Build the component using the project's existing framework. If the project uses React + Vite, build a React component. If Expo, build a React Native component. Match the stack.
If there is no existing project context, or the user wants a standalone prototype, use the mockup sandbox (see the mockup-sandbox skill). Create the component as a self-contained mockup that can be embedded on the canvas.
Construction Rules
Follow these rules with zero exceptions:
Layout fidelity:
If the screenshot shows a column layout, build a column layout — do not reorganize
If elements are positioned absolutely in the reference, use absolute positioning
Match the exact number of grid columns, the exact flex direction, the exact alignment
If the screenshot shows content clipped at the bottom (implying scroll), add scroll behavior
Color fidelity:
Use the exact hex colors extracted in Phase 1
Define all colors as CSS custom properties or theme tokens at the top of the file
Do not substitute "close enough" colors — #1A1A2E is not #1B1B30
If there are gradients, match both the colors and the direction
Typography fidelity:
Match font sizes, weights, and spacing as closely as possible
Use Google Fonts if the exact font is identifiable; otherwise pick the closest match in the same classification (geometric sans, humanist sans, transitional serif, etc.)
Match bold, medium, and regular weights exactly as shown
Component fidelity:
Every button must match: size, color, border-radius, label text, shadow, icon placement
Every card must match: padding, background, border/shadow, internal layout
Every input field must match: height, border style, placeholder text, border-radius
Every list item must match: spacing, icon placement, divider style, text alignment
Content fidelity:
Use the exact text visible in the screenshot — do not invent new copy
If text is partially obscured, use realistic placeholder text that matches the visible length
For images, use placeholder images at the exact same dimensions
For avatars, use generated avatars (DiceBear or similar) at the correct size
For icons, use the closest match from lucide-react or the project's icon library
Interaction states:
Add hover states to all interactive elements (buttons, links, cards if they appear clickable)
Add pressed/active state styling to buttons
Add focus-visible styles to form elements
If the screenshot implies scroll behavior, implement it with proper overflow handling
Make the layout responsive to the container it's rendered in
What to Build
Build a complete, self-contained screen:
Do not leave sections commented out or marked "TODO"
Do not add elements not present in the screenshot
Do not remove elements that are present in the screenshot
Do not add navigation to pages that aren't shown
If the screenshot shows a mobile viewport, build it at that viewport width
Phase 3: Validate
After building, compare your output against the source image.
Visual Checklist
Go through each category and verify:
Layout structure matches exactly — same columns, same flex direction, same alignment
Background colors match for page, sections, cards, and sidebars
Text colors match for headings, body, muted text, and links
Accent/brand color matches on buttons, active states, and highlights
Font sizes match the visual hierarchy in the screenshot
Font weights match — headings are the right boldness, body is the right weight