VaporUI
diegosouzapw2026-10-28查看 185复制 476
Vapor UI 设计系统组件与图标指南、UI 线框图生成器以及 Figma 设计转换器。提供组件目录、图标查找、使用模式、props 文档,并将 Figma 设计转换为可用于生产环境的 vapor-ui 代码。当用户询问“vapor-ui components”、“vapor-ui icons”、“아이콘 찾기”、“vapor-ui 사용법”、“vapor-ui를 사용해서 시안 구현”、“convert figma”、“figma to code”、“implement design from figma”、提供 Figma URL,或提到“Button”、“Input”、“Modal”等特定组件时使用。
📘如何使用这个技能
- 1复制技能内容·点击上方「Copy SKILL.md」复制全部内容,或 Download 下载到本地
- 2打开你的 AI 客户端·支持 Claude Code、Trae、Cursor、ChatGPT、DeepSeek、Kimi 等任意 AI 助手
- 3粘贴为系统提示/知识文件·Claude Code:放入 .claude/skills/ 目录;普通对话:作为首条消息发送并说「请严格按这份技能文档执行」
- 4直接提出你的需求·AI 会按技能定义的工作流、格式和约束来处理,无需再解释背景
💡 提示:技能生效后,每次对话只需一句需求,AI 会按 SKILL.md 的流程执行。
SKILL.md8032 chars
---
name: vapor-ui
description: 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".
---
# 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 |