vapor-ui

Vapor UI design system component and icon guide, UI mockup generator, and Figma design converter. Provides component catalog, icon lookup, usage patterns, props documentation, and converts Figma designs to production-ready vapor-ui code. Use when user asks "vapor-ui components", "vapor-ui icons", "아이콘 찾기", "vapor-ui 사용법", "vapor-ui를 사용해서 시안 구현", "convert figma", "figma to code", "implement design from figma", provides a Figma URL, or mentions specific components like "Button", "Input", "Modal".

16 stars

Best use case

vapor-ui is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Vapor UI design system component and icon guide, UI mockup generator, and Figma design converter. Provides component catalog, icon lookup, usage patterns, props documentation, and converts Figma designs to production-ready vapor-ui code. Use when user asks "vapor-ui components", "vapor-ui icons", "아이콘 찾기", "vapor-ui 사용법", "vapor-ui를 사용해서 시안 구현", "convert figma", "figma to code", "implement design from figma", provides a Figma URL, or mentions specific components like "Button", "Input", "Modal".

Teams using vapor-ui should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/vapor-ui/SKILL.md --create-dirs "https://raw.githubusercontent.com/diegosouzapw/awesome-omni-skill/main/skills/design/vapor-ui/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/vapor-ui/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How vapor-ui Compares

Feature / Agentvapor-uiStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Vapor UI design system component and icon guide, UI mockup generator, and Figma design converter. Provides component catalog, icon lookup, usage patterns, props documentation, and converts Figma designs to production-ready vapor-ui code. Use when user asks "vapor-ui components", "vapor-ui icons", "아이콘 찾기", "vapor-ui 사용법", "vapor-ui를 사용해서 시안 구현", "convert figma", "figma to code", "implement design from figma", provides a Figma URL, or mentions specific components like "Button", "Input", "Modal".

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Vapor UI Design Skill

## Instructions

### Step 1: Identify User Intent & Detect Version

**Run these checks in parallel:**

1. **Determine user intent**:
    - **Component lookup**: User wants to know available components or specific component details
    - **Usage guidance**: User needs props, variants, or example code
    - **Mockup generation**: User wants to create a UI prototype
    - **Figma conversion**: User wants to convert Figma design to code

2. **Determine Vapor UI version** (in order of priority):
    1. **User-provided version**: If user specifies a version, use it directly
    2. **Auto-detect from codebase**:
        ```bash
        node scripts/detect-version.mjs [start-path]
        ```
        Output: `CORE: x.x.x` and `ICONS: x.x.x`

    Use `CORE` version for component scripts, `ICONS` version for icon scripts.

### Step 2: Component Information

**Get component list:**

```bash
node scripts/get-component-list.mjs <VERSION>
```

Example: `node scripts/get-component-list.mjs 1.0.0-beta.12`

**Get component details (props, description):**

```bash
node scripts/get-component-info.mjs <VERSION> <COMPONENT> [PART]
```

Example: `node scripts/get-component-info.mjs 1.0.0-beta.12 avatar`

For detailed component structure, refer to `references/component-structure.md`.

### Step 3: Component Examples

**Get example code:**

```bash
node scripts/get-component-examples.mjs <VERSION> <COMPONENT> [EXAMPLE_NAME]
```

Example: `node scripts/get-component-examples.mjs 1.0.0-beta.12 avatar default-avatar`

### Step 3.5: Icon Lookup

**Get icon list:**

```bash
node scripts/get-icon-list.mjs <ICONS_VERSION> [search-keyword]
```

Examples:

- `node scripts/get-icon-list.mjs 1.0.0-beta.12` - List all icons
- `node scripts/get-icon-list.mjs 1.0.0-beta.12 arrow` - Search icons containing "arrow"
- `node scripts/get-icon-list.mjs 1.0.0-beta.12 --outline` - List only outline icons
- `node scripts/get-icon-list.mjs 1.0.0-beta.12 --filled` - List only filled icons

**Note**: Use `ICONS` version from `detect-version.mjs` output for icon queries.

### Step 4: Mockup Generation

For mockup requests:

1. Run `get-component-list.mjs` to identify available components
2. Run `get-component-info.mjs` for each needed component's props
3. Run `get-component-examples.mjs` for usage patterns
4. Generate code using Vapor UI components only
5. Provide complete, copy-paste ready code

### Step 5: Figma Design Conversion

For Figma conversion requests:

1. **Parse Figma URL** to extract `file_key` and `node_id`:

    ```
    https://www.figma.com/design/{file_key}/...?node-id={node_id}
    ```

2. **Get design context** using MCP:

    ```
    mcp__figma-dev-mode-mcp-server__get_design_context
      - file_key: extracted from URL
      - node_id: extracted from URL (format: "X-Y" or "X:Y")
      - depth: 5 (or higher for complex designs)
    ```

3. **Analyze node tree**:
    - **💙 prefix nodes**: Design system components (see `references/design-system-recognition.md`)
    - **Auto-layout frames**: Convert to VStack/HStack/Box/Grid (see `references/figma-layout-mapping.md`)
    - **TEXT nodes**: Extract text content

4. **Convert layout properties**:
    - `layoutMode: VERTICAL` → VStack
    - `layoutMode: HORIZONTAL` → HStack
    - `itemSpacing` → gap token
    - `padding*` → padding tokens
    - See `references/token-mapping.md` for full mapping

5. **Recognize design system components**:
    - Nodes starting with **💙** are vapor-ui components
    - Extract `componentProperties` for variant → props mapping
    - Example: `💙Button` with `Size: md, ColorPalette: primary` → `<Button size="md" colorPalette="primary">`
    - **Important**: Layout props (`gap`, `padding`, `margin`, `backgroundColor`, etc.) must be inside `$css` prop

6. **Generate code**:
    - Build JSX from node tree (bottom-up)
    - Apply style utility props using design tokens
    - Output production-ready code

---

## Examples

**Example 1: Component Usage Query**

**User**: "How do I use the Button component?"

**Action**:

1. Run `node scripts/get-component-info.mjs 1.0.0-beta.12 button`
2. Run `node scripts/get-component-examples.mjs 1.0.0-beta.12 button`
3. Provide props, variants, and example code

**Result**: Complete Button usage guide with code examples

---

**Example 2: Mockup Generation**

**User**: "Create a login page mockup"

**Action**:

1. Run `get-component-list.mjs` to check available components
2. Run `get-component-info.mjs` for text-input, button, card, form
3. Run `get-component-examples.mjs` for form patterns
4. Generate responsive layout using Vapor UI

**Result**: Production-ready login page code

---

**Example 3: Component Discovery**

**User**: "What form components are available?"

**Action**:

1. Run `node scripts/get-component-list.mjs 1.0.0-beta.12`
2. Filter output for form-related components (text-input, textarea, checkbox, radio, select, etc.)

**Result**: Categorized list of form-related components

---

For Figma conversion examples, see `references/conversion-examples.md`.

---

## Troubleshooting

| Error                     | Cause                            | Solution                                        |
| ------------------------- | -------------------------------- | ----------------------------------------------- |
| Component not found       | Name mismatch or version error   | Run `get-component-list.mjs`, verify version    |
| Script fetch error        | Invalid version or network issue | Re-run `detect-version.mjs`, check network      |
| Figma node not recognized | No 💙 prefix                     | Treat as custom layout (Box/VStack/HStack/Grid) |
| Spacing mismatch          | Non-standard values              | Round to nearest token (see `token-mapping.md`) |

---

## References

### Component Documentation

- `references/url-patterns.md`: GitHub URL patterns for fetching component data
- `references/component-structure.md`: Component file structure and JSON schema

### Figma Conversion

- `references/figma-layout-mapping.md`: Auto-layout to component mapping
- `references/design-system-recognition.md`: 💙 prefix component recognition
- `references/token-mapping.md`: Figma values to vapor-ui tokens
- `references/conversion-examples.md`: Figma to code conversion examples

## Scripts

| Script                       | Purpose                                                              |
| ---------------------------- | -------------------------------------------------------------------- |
| `detect-version.mjs`         | Detect @vapor-ui/core and @vapor-ui/icons versions from package.json |
| `get-component-list.mjs`     | List all available components                                        |
| `get-component-info.mjs`     | Get component props and documentation                                |
| `get-component-examples.mjs` | Get component example code                                           |
| `get-icon-list.mjs`          | List and search icons (supports --outline, --filled, keyword search) |

## MCP Tools

| Tool                                                 | Purpose                      |
| ---------------------------------------------------- | ---------------------------- |
| `mcp__figma-dev-mode-mcp-server__get_design_context` | Fetch Figma design node tree |
| `mcp__figma-dev-mode-mcp-server__get_screenshot`     | Get visual reference image   |
| `mcp__figma-dev-mode-mcp-server__get_metadata`       | Get Figma file metadata      |

Related Skills

bgo

10
from diegosouzapw/awesome-omni-skill

Automates the complete Blender build-go workflow, from building and packaging your extension/add-on to removing old versions, installing, enabling, and launching Blender for quick testing and iteration.

Coding & Development

1k-error-handling

16
from diegosouzapw/awesome-omni-skill

Error handling patterns and best practices for OneKey. Use when implementing try/catch blocks, handling async errors, showing error messages, or managing error states in UI. Triggers on error, try, catch, exception, throw, fail, failure, error handling, error boundary, useAsyncCall, toast, fallback, error state.

1k-dev-commands

16
from diegosouzapw/awesome-omni-skill

Development commands for OneKey monorepo. Use when running dev servers, building apps, linting, testing, or troubleshooting build issues. Triggers on yarn, dev, build, lint, test, desktop, mobile, web, extension, ios, android, compile, bundle.

1k-date-formatting

16
from diegosouzapw/awesome-omni-skill

Date and time formatting for OneKey applications. Use when displaying dates, timestamps, or formatting time in UI components. Always use OneKey utilities instead of native JS date methods. Triggers on date, time, timestamp, formatDate, formatTime, toLocaleDateString, toLocaleString, dateUtils, locale, format, display date, show time, datetime, calendar.

1k-cross-platform

16
from diegosouzapw/awesome-omni-skill

Cross-platform development patterns for OneKey. Use when writing platform-specific code, handling platform differences, or working with native/web/desktop/extension platforms. Triggers on platform, native, web, desktop, extension, iOS, Android, Electron, platformEnv, .native.ts, .web.ts, .desktop.ts, .ext.ts, cross-platform, multi-platform.

1k-coding-patterns

16
from diegosouzapw/awesome-omni-skill

Coding patterns and best practices for OneKey development. Use when writing React components, handling promises, error handling, or following code conventions. Triggers on react, component, hooks, promise, async, await, error, pattern, convention, typescript.

1k-architecture

16
from diegosouzapw/awesome-omni-skill

OneKey monorepo architecture and code organization. Use when understanding project structure, package relationships, import rules, or component organization. Triggers on architecture, structure, packages, imports, hierarchy, dependencies, monorepo, organization.

1k-app-upgrade-test

16
from diegosouzapw/awesome-omni-skill

Create test versions to verify app auto-update functionality. Use when testing update flows, version migration, or validating app upgrade mechanisms. Automates version number and build number configuration for testing the auto-update system. Triggers on auto update, app upgrade, update testing, upgrade flow, version migration, test build, 9XXX version.

1k-adding-socket-events

16
from diegosouzapw/awesome-omni-skill

Adds new WebSocket event subscriptions to OneKey. Use when implementing new socket events, handling server push messages, or adding real-time data subscriptions. Socket, WebSocket, event, subscription, push, real-time.

1d-cutting-stock

16
from diegosouzapw/awesome-omni-skill

When the user wants to cut 1D materials optimally, minimize waste in linear cutting, or solve one-dimensional cutting stock problems. Also use when the user mentions "1D cutting," "linear cutting optimization," "rod cutting," "pipe cutting," "beam cutting," "trim loss," "cutting stock problem," "pattern generation," or "column generation for cutting." For 2D problems, see 2d-cutting-stock. For general trim loss, see trim-loss-minimization.

1c-bsl-code-generation

16
from diegosouzapw/awesome-omni-skill

Skill for generating 1C:Enterprise (BSL) code with mandatory validation through MCP tools to prevent hallucinations. Use when generating, editing, or validating 1C BSL code, working with 1C metadata, or answering questions about 1C platform API.

128-java-generics

16
from diegosouzapw/awesome-omni-skill

Use when you need to review, improve, or refactor Java code for generics quality — including avoiding raw types, applying the PECS (Producer Extends Consumer Super) principle for wildcards, using bounded type parameters, designing effective generic methods, leveraging the diamond operator, understanding type erasure implications, handling generic inheritance correctly, preventing heap pollution with @SafeVarargs, and integrating generics with modern Java features like Records, sealed types, and pattern matching. Part of the skills-for-java project