ui-to-vue
affaan-m/ecc
Batch-convert UI design screenshots into Vue 3 Composition API components with Vant, Element Plus, or Ant Design Vue.
What is ui-to-vue?
Converts directories of design screenshots or exports into Vue 3 page and shared components using a specified UI component library. Use this when you have multiple design images that need to become working Vue components with automatic library mapping and asset organization.
- Batch processes design screenshots grouped by module and page state
- Maps native UI elements to Vant, Element Plus, or Ant Design Vue components
- Extracts repeated UI regions into reusable shared components
- Generates page components, router wiring, and component structure
- Organizes cut-image assets by priority (page-level, module-level, global)
- Outputs Vue 3 Composition API code ready for review and integration
How to install ui-to-vue
npx skills add null --skill ui-to-vue- Node.js and npm installed
- DashScope API key (set via DASHSCOPE_API_KEY environment variable or config file)
- Design screenshots organized in a directory structure by module/page
- Target Vue 3 project with chosen UI library (Vant, Element Plus, or Ant Design Vue)
How to use ui-to-vue
- 1.Set the DashScope API key: export DASHSCOPE_API_KEY=your_key
- 2.Organize design screenshots in a directory by module and page state (e.g., screenshots/HomePage/List/)
- 3.Run the converter with your chosen UI library: npx ui-to-vue-converter@1.0.2 --input ./screenshots --ui vant --output ./src
- 4.Review generated components in the output directory for correctness and placeholder data
- 5.Run your project's formatter, linter, and type checker on the generated code
- 6.Commit reviewed components; do not commit config files, API keys, or original screenshots
Use cases
- Converting a mobile app design mockup directory into Vant-based Vue pages
- Transforming desktop UI screenshots into Element Plus components for an admin dashboard
- Batch-generating Ant Design Vue components from a design system export
- Creating initial page scaffolding from multiple design states (default, loading, empty)
- Extracting shared components from repeated UI patterns across multiple design files
- Vue 3 developers building from design exports
- Teams with design-to-code workflows
- Projects using Vant, Element Plus, or Ant Design Vue
- Developers needing rapid component scaffolding from visual designs
ui-to-vue FAQ
Vant (mobile), Element Plus (desktop), and Ant Design Vue (desktop). Specify with --ui vant, --ui element-plus, or --ui antd-vue.
Group by module and page state in directories like screenshots/HomePage/List/ and screenshots/HomePage/Detail/. Supported asset subdirectories include assets, icons, sprites, cut, images, and cut-images.
No. Do not run this on private customer designs without permission, since screenshots are sent to an external model API for processing.
Confirm the asset directory name matches one of the supported names (assets, icons, sprites, cut, images, cut-images) and is nested under the matching page or module directory.
No. Use npx ui-to-vue-converter@1.0.2 to run without global installation. Global installation is optional if you prefer the ui-to-vue command.
Full instructions (SKILL.md)
Source of truth, from affaan-m/ecc.
name: ui-to-vue description: Use when the user has UI screenshots or design exports that need batch conversion into Vue 3 components, especially with Vant, Element Plus, or Ant Design Vue. metadata: origin: community
UI To Vue
Batch-convert UI design screenshots into Vue 3 Composition API component code.
When to Use
- The user provides a directory of design screenshots or design-export images.
- The target application is Vue 3.
- The user wants a first pass of page components, shared components, and router wiring.
- The user specifies Vant, Element Plus, or Ant Design Vue as the component library.
When Not to Use
- The user has only one screenshot and wants a bespoke component.
- The target project is not Vue.
- The design requires detailed interaction logic, data flow, or accessibility review.
- The screenshots contain private customer data that cannot be sent to an external model API.
Inputs
Use an input directory that groups screenshots by module and page state:
screenshots/
|-- HomePage/
| |-- List/
| | |-- HomePage-List-Default@3x.png
| | `-- cut-images/
| |-- cut-images/
| `-- HomePage-Default@3x.png
`-- cut-images/
Supported cut-image directory names include assets, icons, sprites, cut, images, and cut-images.
Conversion Model
- Page grouping: combine related screenshots into one page component when they represent list, detail, form, loading, or empty states.
- UI library mapping: map native visual elements to Vant, Element Plus, or Ant Design Vue components where practical.
- Cut-image priority: prefer page-level assets, then module-level assets, then global shared assets.
- Component extraction: extract repeated UI regions into shared components when they appear more than once.
CLI Usage
Run the converter with npx so the documented command works without relying on a global binary:
export DASHSCOPE_API_KEY=your_key
npx ui-to-vue-converter@1.0.2 --input ./screenshots --ui vant --output ./src
For desktop UI libraries:
npx ui-to-vue-converter@1.0.2 --input ./designs --ui element-plus --output ./src
npx ui-to-vue-converter@1.0.2 --input ./designs --ui antd-vue --output ./src
If the package is installed globally, the ui-to-vue binary can be used directly:
npm install -g ui-to-vue-converter@1.0.2
ui-to-vue --input ./screenshots --ui vant --output ./src
Options
| Option | Description | Default |
|---|---|---|
--input | Design image directory | ./screenshots |
--ui | UI library: vant, element-plus, or antd-vue | vant |
--output | Output directory | ./src |
--config | Config file path | ./.ui-to-vue.config.json |
API Key Handling
The converter can read DashScope credentials from a config file or from the environment. Prefer an environment variable in repositories:
export DASHSCOPE_API_KEY=your_key
If a local config file is required, keep it out of version control:
{
"apiKey": "your_dashscope_key",
"input": "./designs",
"ui": "vant",
"output": "./src"
}
.ui-to-vue.config.json
Security and Privacy
- Treat design screenshots as source material that may be sent to an external model API.
- Do not run this flow on private customer designs without permission.
- Pin the converter version in repeatable workflows instead of using
@latest. - Review generated Vue code before committing it.
- Do not commit
.ui-to-vue.config.json, API keys, generated secrets, or customer screenshots.
Output Review Checklist
- Page components were generated under
views/or the chosen output directory. - Repeated UI regions were extracted into
components/only when reuse is clear. - Router output is compatible with the target project's router style.
- Generated components use the requested UI library consistently.
- Generated CSS units match the design baseline.
- The code passes the project's formatter, linter, type checker, and build.
- Placeholder copy, mock data, and generated assets were reviewed before commit.
Troubleshooting
| Issue | Check |
|---|---|
401 or authentication error | Confirm DASHSCOPE_API_KEY is set in the shell running the command. |
command not found: ui-to-vue | Use the npx ui-to-vue-converter@1.0.2 form or install the package globally. |
| Cut images are ignored | Confirm the asset directory name is supported and nested under the matching page or module. |
| Components ignore the requested UI library | Re-run with an explicit --ui value and inspect the generated imports. |
| Generated layout dimensions look wrong | Confirm the screenshot export width matches the target library baseline. |
References
- npm package:
ui-to-vue-converter
Related skills
More from affaan-m/ecc and the wider catalog.
uncloud
Manage decentralised self-hosted Docker clusters with WireGuard mesh, Caddy ingress, and peer-based orchestration.
unified-memory
Agent skill from affaan-m/ecc.
unified-notifications-ops
Consolidate GitHub, Linear, and desktop alerts into one operator-driven notification workflow with severity routing and deduplication.
uspto-database
Official USPTO patent and trademark record lookup with reproducible research logs.
verification-loop
Comprehensive verification system for Claude Code sessions covering builds, types, lints, tests, and security.
video-editing
AI-assisted editing pipeline for cutting, structuring, and augmenting real video footage.