name: design-dna description: >- Extract, define, and apply design DNA across three dimensions: design system (tokens), design style (qualitative feel), and visual effects (Canvas, WebGL, 3D, particles, shaders, scroll effects, etc.). Use this skill when: (1) a user wants to see the full 3-dimension design structure/schema, (2) a user provides images, screenshots, or URLs of reference designs and wants them analyzed into a structured JSON profile covering all three dimensions, (3) a user has a Design DNA JSON and content and wants a design generated from it, or (4) any combination of these phases. Triggers on "design DNA", "extract design style", "analyze design", "design tokens from reference", "generate design from JSON", "design system from screenshot", "design profile", "style guide JSON", "visual effects analysis", "design with effects", "3d design analysis".
Design DNA
A 3-phase workflow for extracting, structuring, and applying design identity across three dimensions:
- Design System — measurable tokens (color, typography, spacing, layout, shape, elevation, motion, components)
- Design Style — qualitative perception (mood, visual language, composition, imagery, interaction feel, brand voice)
- Visual Effects — special rendering (Canvas, WebGL, 3D, particles, shaders, scroll effects, cursor effects, SVG animations, glassmorphism, etc.)
Phases
Phase 1: Structure — Output the Schema
When the user asks for the structural dimensions or schema:
- Read references/schema.md
- Present the full schema with field descriptions
- Explain the three dimensions and their roles:
- design_system: What you can measure — exact hex values, pixel sizes, rem scales
- design_style: What you can feel — mood, personality, composition strategy
- visual_effects: What you can see but can't express in CSS alone — WebGL scenes, particle systems, shader distortions, scroll-driven animations
- Ask if the user wants to customize or extend any dimensions
Phase 2: Analyze — Extract DNA from References
When the user provides images, screenshots, or links representing a target design style:
- Read references/schema.md for the full field list
- For each reference provided:
- If image/screenshot: first run the deterministic color measurement (see below), then analyze the remaining visual properties directly
- If URL: fetch and analyze the page's visual design
- For every field in the schema, extract or infer a value from the references
- When multiple references conflict, note the dominant pattern and mention variants
- Output a complete Design DNA JSON — every field populated, no empty strings
- After output, ask: "Want to adjust any values before using this for generation?"
Analysis approach per dimension:
Dimension 1: design_system
- color: Do not estimate hex values by eye — perceived colors drift toward familiar palette defaults (often by a ΔE of 10+). When the reference is an image file, measure instead. Resolve
SKILL_ROOTto the absolute directory containing thisSKILL.md; never assume the current project directory contains the skill'sscripts/folder. Use absolute paths for the reference and output, and keep one uniquely named measurement file per reference:Use the measured hexes verbatim in the DNA JSON: map thenpm install --prefix "$SKILL_ROOT/scripts" --silent node "$SKILL_ROOT/scripts/measure-colors.mjs" "$REFERENCE_IMAGE" > "$MEASUREMENT_JSON"backgroundrole tosurface.background; maptextto the end ofneutral.scalethat contrasts with the measured background and document that foreground use inneutral.usage; and mapaccenttoaccent.hex. Keep both the measured palette and itsmeasurementconfiguration indesign_system.color.measured_paletteanddesign_system.color.measurementso verification can reuse the same clustering configuration. Coverage values are fractions from0to1. Only fall back to visual sampling when measurement is impossible (for example, a URL-only reference that cannot be screenshotted). Choose primary and secondary colors by semantic role, use accent for CTA emphasis, and order the neutral scale from lightest to darkest regardless of theme. - typography: Identify font families by visual characteristics (geometric, humanist, serif class). Estimate scale ratios from heading/body size relationships.
- spacing: Assess density by element proximity. Measure rhythm by section gap consistency.
- layout: Identify grid by content alignment patterns. Note max-width, column count, asymmetry.
- shape: Measure border-radius by comparing to element height. Note border and divider presence.
- elevation: Classify shadow softness, spread, and layering approach.
- motion: If observable (video/interactive), note easing curves and duration feel.
Dimension 2: design_style
- Synthesize holistic impressions — mood, personality, composition strategy
- Compare against genre archetypes (SaaS, editorial, brutalist, etc.)
- Note ornamentation level and whitespace philosophy
Dimension 3: visual_effects
- From code: Scan for
<canvas>, WebGL contexts, Three.js/Pixi.js imports, GSAP/Lottie usage, custom shaders, IntersectionObserver scroll triggers, SVG<animate>elements - From screenshots: Describe visible effects that go beyond standard CSS — glowing particles, 3D object renders, noise textures, gradient animations, parallax depth, cursor trails, text distortions, glassmorphic surfaces. Note these in
composite_noteswhen exact implementation can't be determined. - From video/interaction demos: Note scroll behaviors, hover distortions, transition choreography, loading sequences
- Set
enabled: falsefor any effect category not present in the reference - Rate
overview.effect_intensityandoverview.performance_tierbased on what's observed
Phase 3: Generate — Apply DNA to Content
When the user provides DNA JSON + content to design:
- Read references/generation-guide.md
- Parse the DNA JSON and extract all tokens across three dimensions
- Build CSS custom properties from
design_systemvalues - Apply
design_stylequalitative fields to guide subjective design decisions - When the design needs assets or source materials, fetch them from the original source whenever possible. If the user provided a URL, retrieve the real asset from that URL instead of recreating, approximating, or substituting it.
- Implement
visual_effectsusing appropriate technologies:- Lightweight effects → CSS animations, SVG, vanilla JS
- Medium effects → Canvas 2D, GSAP, Lottie
- Heavy effects → Three.js, custom GLSL shaders, Pixi.js
- Generate the design output (default: self-contained HTML with inline CSS/JS)
- Run quality checks from the generation guide
- Verify (when the DNA contains a measured palette): save the current Design DNA JSON if it is not already a file, screenshot the generated output, then score it against that DNA file. Resolve
SKILL_ROOTfrom thisSKILL.mdand use absolute paths; do not assume a temporary file namedmeasured-colors.jsonexists:A standalone measurement JSON may be used instead of the DNA file when that is the only persisted artifact. For multiple image references, verify against each reference's measurement separately. The report gives per-color ΔE and coverage drift with PASS/FAIL thresholds. If it fails, fix the offending colors and re-verify instead of asking the user to judge fidelity by eye.node "$SKILL_ROOT/scripts/verify.mjs" "$IMPLEMENTATION_SCREENSHOT" "$DESIGN_DNA_JSON"
If the user provides only content without DNA JSON, ask whether to:
- Analyze a reference first (go to Phase 2)
- Use a described style (extract DNA from description, then generate)
Phase Combinations
Users may invoke any combination:
- Phase 1 only: "Show me the design structure/schema"
- Phase 2 only: "Analyze this design" (with images/links)
- Phase 2 → 3: "Analyze this design and build me a landing page in the same style"
- Phase 1 → 2 → 3: Full pipeline
- Phase 3 only: User already has DNA JSON
Detect which phase(s) are needed from context and execute accordingly.
Next.js App Router Expert
Development
A skill that turns Claude into a Next.js App Router expert.
README Generator
Development
Creates professional and comprehensive README.md files for your projects.
API Documentation Writer
Development
Generates comprehensive API documentation in OpenAPI/Swagger format.