Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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.
| Model | Eval pass | Runs |
|---|---|---|
| gemini-3.6-flash | 100% | 15 |
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -24% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 12% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 86% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 1% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 44% | 0% |
Batch-convert UI design screenshots into Vue 3 Composition API component code.
Use an input directory that groups screenshots by module and page state:
textscreenshots/ |-- 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.
Run the converter with npx so the documented command works without relying on a global binary:
bashexport DASHSCOPE_API_KEY=your_key npx ui-to-vue-converter@1.0.2 --input ./screenshots --ui vant --output ./src
For desktop UI libraries:
bashnpx 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:
bashnpm install -g ui-to-vue-converter@1.0.2 ui-to-vue --input ./screenshots --ui vant --output ./src
| 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 |
The converter can read DashScope credentials from a config file or from the environment. Prefer an environment variable in repositories:
bashexport DASHSCOPE_API_KEY=your_key
If a local config file is required, keep it out of version control:
json{ "apiKey": "your_dashscope_key", "input": "./designs", "ui": "vant", "output": "./src" }
gitignore.ui-to-vue.config.json
@latest..ui-to-vue.config.json, API keys, generated secrets, or customer screenshots.views/ or the chosen output directory.components/ only when reuse is clear.| 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. |
ui-to-vue-converter| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 11,622 | 3,473 | -70% | 1 | 1 | 0% | 2,428 | 1,846 | -24% | 0 | 0 | — |
case-02 | fail→pass | 9,209 | 3,320 | -64% | 1 | 1 | 0% | 1,582 | 1,779 | +12% | 0 | 0 | — |
case-03 | fail→pass | 5,755 | 5,234 | -9% | 1 | 1 | 0% | 1,192 | 2,217 | +86% | 0 | 0 | — |
case-04 | fail→pass | 10,498 | 3,734 | -64% | 1 | 1 | 0% | 1,903 | 1,913 | +1% | 0 | 0 | — |
case-05 | fail→fail | 14,412 | 5,206 | -64% | 1 | 1 | 0% | 1,971 | 2,085 | +6% | 0 | 0 | — |
case-06 | fail→pass | 8,484 | 5,592 | -34% | 1 | 1 | 0% | 1,539 | 2,211 | +44% | 0 | 0 | — |
case-07 | fail→pass | 18,620 | 9,333 | -50% | 1 | 1 | 0% | 3,254 | 2,610 | -20% | 0 | 0 | — |
case-08 | fail→fail | 10,629 | 4,816 | -55% | 1 | 1 | 0% | 1,728 | 2,002 | +16% | 0 | 0 | — |
case-09 | fail→fail | 8,875 | 2,208 | -75% | 1 | 1 | 0% | 1,525 | 1,564 | +3% | 0 | 0 | — |
case-10 | fail→fail | 7,266 | 3,377 | -54% | 1 | 1 | 0% | 1,312 | 1,864 | +42% | 0 | 0 | — |
case-11 | fail→fail | 13,917 | 7,375 | -47% | 1 | 1 | 0% | 2,250 | 2,392 | +6% | 0 | 0 | — |
case-12 | fail→fail | 12,308 | 7,391 | -40% | 1 | 1 | 0% | 2,304 | 2,528 | +10% | 0 | 0 | — |
case-13 | fail→pass | 5,866 | 1,877 | -68% | 1 | 1 | 0% | 880 | 1,504 | +71% | 0 | 0 | — |
case-14 | fail→fail | 10,822 | 10,810 | -0% | 1 | 1 | 0% | 1,794 | 2,938 | +64% | 0 | 0 | — |
case-15 | fail→pass | 7,606 | 1,910 | -75% | 1 | 1 | 0% | 1,330 | 1,480 | +11% | 0 | 0 | — |
case-16 | fail→pass | 8,612 | 5,055 | -41% | 1 | 1 | 0% | 1,481 | 2,080 | +40% | 0 | 0 | — |
case-17 | fail→pass | 12,879 | 9,076 | -30% | 1 | 1 | 0% | 2,056 | 2,873 | +40% | 0 | 0 | — |
case-18 | fail→pass | 10,768 | 5,604 | -48% | 1 | 1 | 0% | 2,023 | 2,334 | +15% | 0 | 0 | — |
case-19 | fail→fail | 9,495 | 2,693 | -72% | 1 | 1 | 0% | 1,669 | 1,656 | -1% | 0 | 0 | — |
case-20 | fail→pass | 6,207 | 3,041 | -51% | 1 | 1 | 0% | 1,297 | 1,744 | +34% | 0 | 0 | — |
case-21 | fail→pass | 11,265 | 4,101 | -64% | 1 | 1 | 0% | 1,991 | 2,060 | +3% | 0 | 0 | — |
case-22 | fail→pass | 13,351 | 5,871 | -56% | 1 | 1 | 0% | 2,330 | 2,195 | -6% | 0 | 0 | — |
case-23 | fail→fail | 10,485 | 4,310 | -59% | 1 | 1 | 0% | 2,016 | 1,923 | -5% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +61 percentage points is the difference between those two pass rates over the 23 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.