Visual DNA
/install visual-dna
Design DNA
Extract visual identity from any reference. Apply it to any content. Reuse it everywhere.
Three phases — use any combination:
- Analyze — screenshots, images, or URLs → Design DNA JSON
- Generate — Design DNA JSON + your content → faithful implementation
- Structure — show the full schema when asked
Read references/schema.md for the full field list.
Read references/generation-guide.md for generation rules.
The Three Dimensions
| Dimension | What it captures |
|---|---|
| design_system | Measurable tokens: colour, typography, spacing, layout, shape, elevation, motion, components |
| design_style | Qualitative feel: mood, visual language, composition, brand voice, interaction personality |
| visual_effects | Special rendering: Canvas, WebGL, particles, shaders, scroll effects, SVG animation |
Phase 1: Analyze
When the user provides screenshots, images, or URLs:
- Read
references/schema.md— know every field before starting - For each reference: analyze or fetch and analyze
- Fill every field — no empty strings, no guesswork flagged as guesswork
- When references conflict: note the dominant pattern, mention variants
- Output complete Design DNA JSON
- Ask: "Want to adjust any values before generating?"
Key extraction rules:
- Colour: sample dominant palette by area. Primary = largest area, accent = CTA usage
- Typography: identify font class visually (geometric, humanist, serif). Estimate scale ratios from heading/body relationships
- Spacing: assess density by element proximity. Measure section rhythm consistency
- Visual effects: scan for Canvas, WebGL, Three.js, GSAP, particles, shaders, custom cursors. Set
enabled: falsefor anything not present
Phase 2: Generate
When the user provides DNA JSON + content:
- Read
references/generation-guide.md - Build CSS custom properties from
design_systemtokens - Apply
design_stylequalitative fields to subjective decisions - Implement
visual_effectsat the appropriate tech tier (CSS → Canvas → WebGL) - Fetch real assets from original URLs when possible — don't recreate
- Default output: self-contained HTML with inline CSS/JS
Priority order:
- Colour & typography (80% of visual identity)
- Spacing & layout
- Shape & elevation
- Design style qualitative fields
- Visual effects
- Motion & interaction
Quality check before delivering:
- Does it actually look like the reference?
- Are all design tokens applied (not just some)?
- Is the output self-contained (no external dependencies that could break)?
- Do visual effects degrade gracefully without JS?
The DNA JSON as an Asset
The extracted JSON is the key output — not just the generated UI. Once extracted:
- Commit it to version control
- Share it across teams and projects
- Feed it to any agent for any future generation
- Refine it iteratively
This turns "make it look like that site" into a precise, reproducible spec.
Pair with no-slop-ui
When generating UI from DNA:
- Apply
no-slop-uirules alongside DNA tokens - DNA tells you WHAT the design is
no-slop-uitells you what NOT to do (no AI defaults slipping in)- Together: faithful to reference, clean execution
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install visual-dna - After installation, invoke the skill by name or use
/visual-dna - Provide required inputs per the skill's parameter spec and get structured output
What is Visual DNA?
Extract and apply visual design identity by analyzing images or URLs into structured Design DNA JSON, then generate matching UI with complete style and effects. It is an AI Agent Skill for Claude Code / OpenClaw, with 41 downloads so far.
How do I install Visual DNA?
Run "/install visual-dna" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is Visual DNA free?
Yes, Visual DNA is completely free, licensed under MIT-0. You can download, install and use it at no cost.
Which platforms does Visual DNA support?
Visual DNA is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created Visual DNA?
It is built and maintained by Leo Stehlik (@leostehlik); the current version is v0.1.0.