Install
openclaw skills install @zhenyangze/ui-clonerAnalyzes UI screenshots and generates a reusable .skill file that captures the product's complete design system. Triggers when the user provides UI screenshots (single or multiple pages of the same product) and wants to clone, reproduce, or extract a design system from them. Input: one or more image file paths or a directory. Output: a ready-to-install .skill file encapsulating design tokens, component specs, layout structure, visual style, and interaction patterns. The generated skill can then be used (optionally invoking ui-ux-pro-max) to recreate the UI in any target tech stack.
openclaw skills install @zhenyangze/ui-clonerAnalyze UI screenshots from one product and generate a reusable .skill file that fully captures its design system — so anyone can reproduce the same UI in any technology stack.
Ask the user for:
notion, linear, stripe-dashboard)If the user already provided these in their message, skip asking and proceed.
Output location: Determine the save path for the generated skill:
.claude/skills/{product-name}-ui/ and package the .skill file there as well.~/.claude/skills/) if there is no identifiable project directory.For each image, use mcp__zai-mcp-server__ui_to_artifact with output_type: "spec" to extract design specifications.
Then use mcp__zai-mcp-server__ui_to_artifact with output_type: "description" to get a plain-language description of each page's purpose and structure.
Analyze all screenshots together as pages of the same product. Synthesize findings across images — do not treat them as independent designs.
For the complete list of analysis dimensions and what to extract from each, see → references/analysis-guide.md
From all screenshots combined, produce:
references/analysis-guide.mdWhen tokens conflict across pages (e.g. different button colors), document all variants — do not discard information.
Create a new skill directory at the path the user specifies (default: same directory as input images, or current working directory).
Skill directory name: {product-name}-ui
File structure to create:
{product-name}-ui/
├── SKILL.md # Main skill file (use references/skill-template.md)
└── references/
├── design-tokens.md # Colors, typography, spacing, radius, shadows
├── components.md # Component inventory with specs and variants
├── layout.md # Page layouts, grid systems, navigation structure
└── style-guide.md # Visual style, interaction patterns, UX principles
Populate each file with the synthesized data from Step 3.
For the SKILL.md content and structure of each reference file, see → references/skill-template.md
Ask the user:
"Would you like me to generate a sample page using this design system and compare it visually against your original screenshots to verify accuracy before packaging?"
If the user agrees:
ui-ux-pro-max to generate a representative page (e.g. the main page from the screenshots) in the user's preferred tech stack (ask if unknown).mcp__zai-mcp-server__ui_diff_check to compare the generated page against the original reference screenshot:
expected_image_source: the original reference screenshotactual_image_source: the rendered output screenshotprompt: "Compare these two UI screenshots. Identify discrepancies in colors, typography, spacing, component shapes, layout structure, and overall visual style. List each difference with its severity (critical / minor)."design-tokens.md, components.md, or layout.md) to correct the spec.style-guide.md.If the user declines, skip this step and proceed directly to packaging.
Once the design system is verified (or the user skips verification), package the skill.
Run the packager with the determined output path from Step 1:
python3 /Users/zhenyangze/.claude/skills/skill-creator/scripts/package_skill.py {product-name}-ui {output-dir}
Report the output path of the generated .skill file to the user.
Tell the user:
.skill file path and where it was saved (project-local or global)If the user says yes, invoke ui-ux-pro-max with the generated skill's design tokens and component specs as context, and ask for their preferred tech stack.
.claude/skills/) over global (~/.claude/skills/) to avoid polluting the user's global environment. Only use global as a fallback when no project directory is detected.