Run this skill as part of the OpenClawd operator deck. Preserve the skill-specific workflow below, but frame outputs for Solana-native agents when relevant: prefer OpenClawd language, note whether the work can support autonomous agent operations, and keep financial, legal, tax, hiring, medical, or other regulated outputs informational unless the skill already requires a stricter disclaimer. Use the Llobster Legend persona only as light operator framing; do not let branding override accuracy, safety, or the user's stated domain.
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
Muted text colors (not pure white — usually #A0A0B0 or similar)
Glow effects on accent colors (box-shadow with the accent color at low opacity)
Gradient Backgrounds
Extract both start and end colors
Note the direction (most common: top-to-bottom, left-to-right, diagonal)
For mesh gradients or complex gradients, approximate with radial gradients
Glass/Blur Effects
Use backdrop-filter: blur(12-24px) with a semi-transparent background
Often combined with a subtle border (1px solid rgba(255,255,255,0.1))
Background opacity typically 60-80%
Sidebar + Content Layouts
Sidebar is usually fixed width (240-280px) with its own background
Content area fills remaining space
On mobile, sidebar typically collapses to a hamburger menu
1---2name: recreate-screenshot3description: Recreate a UI from a screenshot or image with pixel-perfect accuracy.4---56# Recreate Screenshot78## OpenClawd Operator Adaptation910Run this skill as part of the OpenClawd operator deck. Preserve the skill-specific workflow below, but frame outputs for Solana-native agents when relevant: prefer OpenClawd language, note whether the work can support autonomous agent operations, and keep financial, legal, tax, hiring, medical, or other regulated outputs informational unless the skill already requires a stricter disclaimer. Use the Llobster Legend persona only as light operator framing; do not let branding override accuracy, safety, or the user's stated domain.111213Recreate 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.1415## When to Use1617- User pastes a screenshot and says "build this", "recreate this", "make this", "replicate this UI"18- User uploads a design mockup image and wants it implemented19- User shares a reference image from another app and wants an exact visual match20- User provides a Figma screenshot, Dribbble shot, or any visual reference to reproduce2122## When NOT to Use2324- User wants a *functional app inspired by* a design — that's general development, not screenshot recreation25- User wants to *clone a live website* by URL — use the website-cloning skill instead26- User wants to *redesign or improve* an existing component — use design-exploration instead27- User describes a UI in words without providing an image — that's standard design work2829## Phase 1: Analyze the Screenshot3031Before writing any code, study the image systematically. Extract every visual detail.3233### Layout Analysis3435- Identify the overall layout structure: single column, sidebar + content, grid, split-screen36- Map the visual hierarchy: what draws the eye first, second, third37- Note the container structure: full-width vs constrained, nested containers, card groups38- Identify repeating patterns: card grids, list items, nav items, form groups3940### Color Extraction4142Extract exact colors from the image — do not approximate.4344- **Primary background** — the dominant background color45- **Secondary backgrounds** — card backgrounds, section backgrounds, sidebar fills46- **Primary accent** — buttons, links, active states47- **Text colors** — headings vs body vs muted/secondary text (these are almost always different)48- **Border and divider colors** — often subtle grays49- **Gradient start/end colors** — if any gradients are visible50- **Shadow colors** — note opacity and spread if box-shadows are present5152Record all colors as hex values. If the image shows a dark theme, note that explicitly.5354### Typography Analysis5556- **Font classification** — is it sans-serif (most common), serif, monospace, or display/decorative?57- **Heading sizes** — estimate px sizes for h1, h2, h3 relative to surrounding elements58- **Body text size** — typically 14-16px59- **Font weights** — identify bold (700), semibold (600), medium (500), regular (400), light (300) usage60- **Letter spacing** — is it tight (negative), normal, or wide (uppercase labels often have wide spacing)61- **Line height** — compact (1.2-1.3) for headings, relaxed (1.5-1.7) for body text62- **Text transforms** — any uppercase labels, capitalized nav items6364### Component Inventory6566Catalog every visible component:6768- **Buttons** — size, border-radius, fill vs outline vs ghost, icon placement, shadow69- **Cards** — padding, border-radius, border vs shadow vs both, background70- **Input fields** — height, border style, border-radius, placeholder style, focus state (if visible)71- **Navigation** — horizontal vs vertical, active indicator style, icon + label vs label only72- **Lists** — spacing between items, divider style, icon/avatar placement73- **Modals/sheets** — overlay darkness, container radius, close button style74- **Tags/badges** — size, radius (pill vs rounded-rect), color coding75- **Avatars/images** — exact dimensions, border-radius (circle vs rounded), border/ring7677### Spacing System7879- **Container padding** — page-level horizontal padding80- **Section spacing** — vertical gap between major sections81- **Card internal padding** — consistent padding within cards82- **Element gaps** — space between items in a list, grid gap, button groups83- **Margin patterns** — consistent spacing multiples (4px, 8px, 12px, 16px, 24px, 32px)8485## Phase 2: Build8687### Setup8889Build 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.9091If 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.9293### Construction Rules9495Follow these rules with zero exceptions:9697**Layout fidelity:**9899- If the screenshot shows a column layout, build a column layout — do not reorganize100- If elements are positioned absolutely in the reference, use absolute positioning101- Match the exact number of grid columns, the exact flex direction, the exact alignment102- If the screenshot shows content clipped at the bottom (implying scroll), add scroll behavior103104**Color fidelity:**105106- Use the exact hex colors extracted in Phase 1107- Define all colors as CSS custom properties or theme tokens at the top of the file108- Do not substitute "close enough" colors — `#1A1A2E` is not `#1B1B30`109- If there are gradients, match both the colors and the direction110111**Typography fidelity:**112113- Match font sizes, weights, and spacing as closely as possible114- 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.)115- Match bold, medium, and regular weights exactly as shown116117**Component fidelity:**118119- Every button must match: size, color, border-radius, label text, shadow, icon placement120- Every card must match: padding, background, border/shadow, internal layout121- Every input field must match: height, border style, placeholder text, border-radius122- Every list item must match: spacing, icon placement, divider style, text alignment123124**Content fidelity:**125126- Use the exact text visible in the screenshot — do not invent new copy127- If text is partially obscured, use realistic placeholder text that matches the visible length128- For images, use placeholder images at the exact same dimensions129- For avatars, use generated avatars (DiceBear or similar) at the correct size130- For icons, use the closest match from lucide-react or the project's icon library131132**Interaction states:**133134- Add hover states to all interactive elements (buttons, links, cards if they appear clickable)135- Add pressed/active state styling to buttons136- Add focus-visible styles to form elements137- If the screenshot implies scroll behavior, implement it with proper overflow handling138- Make the layout responsive to the container it's rendered in139140### What to Build141142Build a **complete, self-contained screen**:143144- Do not leave sections commented out or marked "TODO"145- Do not add elements not present in the screenshot146- Do not remove elements that are present in the screenshot147- Do not add navigation to pages that aren't shown148- If the screenshot shows a mobile viewport, build it at that viewport width149150## Phase 3: Validate151152After building, compare your output against the source image.153154### Visual Checklist155156Go through each category and verify:157158- [ ] **Layout structure** matches exactly — same columns, same flex direction, same alignment159- [ ] **Background colors** match for page, sections, cards, and sidebars160- [ ] **Text colors** match for headings, body, muted text, and links161- [ ] **Accent/brand color** matches on buttons, active states, and highlights162- [ ] **Font sizes** match the visual hierarchy in the screenshot163- [ ] **Font weights** match — headings are the right boldness, body is the right weight164- [ ] **Spacing** matches — padding inside cards, gaps between elements, section margins165- [ ] **Border radius** matches on every element — buttons, cards, inputs, avatars166- [ ] **Shadows** match — present where they should be, absent where they shouldn't167- [ ] **Icons** are the right size and in the right position168- [ ] **Content** matches — text, image placeholders, avatar placeholders are all present169170### Iteration171172If any item on the checklist is off, fix it before presenting to the user. Common issues:173174- Colors are slightly off — re-examine the screenshot, extract again175- Spacing feels wrong — check padding and gap values against the reference176- Font weight is wrong — try adjacent weights (500 vs 600, 600 vs 700)177- Border radius is wrong — common values: 4px, 6px, 8px, 12px, 16px, 9999px (pill)178- Cards look flat when they should have depth — add box-shadow179- Layout doesn't match at the right viewport — check if you're building at the correct width180181## Working with Subagents182183For complex screenshots with many components, delegate to a DESIGN subagent:184185- Include the screenshot image in the subagent prompt186- Pass the full color extraction, typography analysis, and component inventory from Phase 1187- Specify the exact target file path and dimensions188- Include the construction rules from Phase 2 in the brief189- Tell the subagent to mark the iframe as "live" when complete190191For multiple screenshots (e.g., recreating several screens of an app), fan out with one DESIGN subagent per screen and coordinate via the canvas.192193## Common Patterns194195### Dark UI196197Dark UIs are not just "white on black." Look for:198199- Layered dark backgrounds (e.g., `#0A0A0F` page, `#12121A` cards, `#1A1A26` hover)200- Subtle borders (1px solid rgba(255,255,255,0.06-0.1))201- Muted text colors (not pure white — usually `#A0A0B0` or similar)202- Glow effects on accent colors (box-shadow with the accent color at low opacity)203204### Gradient Backgrounds205206- Extract both start and end colors207- Note the direction (most common: top-to-bottom, left-to-right, diagonal)208- For mesh gradients or complex gradients, approximate with radial gradients209210### Glass/Blur Effects211212- Use `backdrop-filter: blur(12-24px)` with a semi-transparent background213- Often combined with a subtle border (1px solid rgba(255,255,255,0.1))214- Background opacity typically 60-80%215216### Sidebar + Content Layouts217218- Sidebar is usually fixed width (240-280px) with its own background219- Content area fills remaining space220- On mobile, sidebar typically collapses to a hamburger menu
Run npx skillmds@latest add clawdsolana/recreate-screenshot in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
Recreate a UI from a screenshot or image with pixel-perfect accuracy. It is listed under Coding & Dev Tools on SkillMD.
This skill has not completed SkillMD's automated safety review yet. Capability flags: docs only. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
clawdsolana (@clawdsolana) published this skill. Their other Agent Skills are listed on their SkillMD profile.