Install
openclaw skills install @jainwong/design-to-code将 TRAE design 模式的设计稿、UI 截图、Figma 链接或手绘草图转换为可直接运行的本地应用代码。支持解析设计结构、提取样式参数、生成多端响应式代码、处理资源文件,并输出可立即启动的完整项目。
openclaw skills install @jainwong/design-to-code将任意设计输入(TRAE design 模式输出、UI 截图、Figma 链接、手绘草图、文字描述的设计规范)转换为可直接运行的本地应用代码。
当用户要求将设计稿实现为代码时触发,包括但不限于:
获取并解析设计输入的全部信息:
输入来源处理:
- 若为 图片/截图:使用视觉分析逐区域拆解,标注坐标比例与相对位置
- 若为 Figma 链接:优先调用 Figma MCP 获取结构化设计数据与截图
- 若为 TRAE design 模式输出:直接读取其生成的设计描述与规范
- 若为 手绘草图/文字描述:先按 design-spec-optimizer 范式补全为完整设计文档,再进入实现
根据设计复杂度与用户需求选择技术栈:
| 设计类型 | 推荐方案 | 适用场景 |
|---|---|---|
| 单页展示/营销页 | HTML + CSS + JS(Vite) | 快速落地、轻量、无框架依赖 |
| 多页应用/仪表盘 | React 18 + Vite + Tailwind CSS | 组件化、状态管理、复杂交互 |
| 动画丰富/创意站点 | React + Framer Motion + Vite | 复杂动效、页面转场、微交互 |
| 移动端优先/H5 | React + Vite + Tailwind + 响应式断点 | 小程序、H5、移动 Web |
| 桌面端工具类 | React + Electron / Tauri | 本地安装包、系统级能力 |
| 全栈应用(需前后端+数据库) | Next.js 14 + Prisma + SQLite / PostgreSQL | 用户系统、数据持久化、CRUD 后台管理 |
| 全栈应用(轻量后端) | Node.js + Express + MongoDB / SQLite + React 前端 | 快速搭建 REST API、实时数据同步 |
| 全栈应用(Python 后端) | Python + FastAPI + SQLAlchemy + SQLite / PostgreSQL | 算法集成、数据分析、AI 能力 |
默认选型:
三端响应式必须:无论选择何种技术栈,前端必须同时支持电脑端(≥1024px)、平板端(768–1023px)、手机端(<768px)。
根据技术选型创建可直接运行的本地项目结构。
纯前端项目结构(React + Vite):
my-app/
├── index.html # 入口 HTML
├── vite.config.js # Vite 配置
├── tailwind.config.js # Tailwind 断点与主题色配置
├── package.json # 依赖声明
├── src/
│ ├── main.jsx # 应用入口
│ ├── App.jsx # 根组件(路由或页面容器)
│ ├── pages/ # 页面级组件
│ ├── components/ # 可复用组件(Button/Card/Nav/Modal 等)
│ ├── hooks/ # 自定义 Hooks
│ ├── styles/ # 全局样式、CSS 变量、动画关键帧
│ ├── assets/ # 图片、图标、字体
│ └── utils/ # 工具函数
└── public/ # 静态资源
全栈项目结构(Next.js + Prisma + SQLite):
my-app/
├── prisma/
│ ├── schema.prisma # 数据库模型定义
│ └── seed.ts # 种子数据
├── src/
│ ├── app/ # Next.js App Router
│ │ ├── api/ # API 路由(REST 端点)
│ │ ├── layout.tsx # 根布局
│ │ ├── page.tsx # 首页
│ │ └── globals.css # 全局样式
│ ├── components/ # 可复用组件
│ ├── lib/
│ │ ├── prisma.ts # Prisma 客户端实例
│ │ └── auth.ts # 认证逻辑(NextAuth 或自定义)
│ └── types/ # TypeScript 类型定义
├── public/ # 静态资源
├── package.json # 依赖声明
├── next.config.js # Next.js 配置
├── tailwind.config.js # Tailwind 配置
└── tsconfig.json # TypeScript 配置
全栈项目结构(Node.js + Express + React 分离):
my-app/
├── client/ # React 前端(同纯前端结构)
│ ├── src/
│ ├── package.json
│ └── vite.config.js
├── server/ # Express 后端
│ ├── src/
│ │ ├── routes/ # API 路由
│ │ ├── models/ # 数据模型
│ │ ├── controllers/ # 业务逻辑
│ │ ├── middleware/ # 中间件(认证、错误处理、CORS)
│ │ ├── config/ # 配置文件(数据库连接、环境变量)
│ │ └── app.ts # Express 应用实例
│ ├── package.json
│ └── tsconfig.json
├── database/ # 数据库迁移与种子
│ ├── migrations/
│ └── seed.sql
└── package.json # 根目录 scripts( concurrently 同时启动前后端)
必须配置:
package.json 中写入完整的 dependencies 与 devDependenciesvite.config.js / next.config.js 配置开发服务器端口tailwind.config.js 配置三端断点与从设计稿提取的颜色 token.env.examplenpm install && npm run dev处理设计稿中所有视觉资源:
src/assets/icons/),禁止引入外部 icon 包导致依赖膨胀;若设计稿提供图标文件,直接复用src/assets/images/,使用 Vite 的 ?url 或 ?inline 导入src/assets/fonts/,通过 @font-face 引入,禁止依赖 Google Fonts 等外部 CDN按以下优先级逐层实现,每完成一层启动 dev server 预览验证:
第一层:骨架布局(Layout)
grid-cols-1 md:grid-cols-2 lg:grid-cols-3第二层:组件还原(Components)
第三层:交互与动效(Interaction)
第四层:数据与逻辑(Logic)
第五层:后端实现(Backend)— 全栈项目必须
按以下顺序搭建后端,确保前后端可联调:
数据库建模:根据设计稿中的数据实体(用户、内容、订单、配置等)定义表结构
API 设计:RESTful 风格,每个资源对应 CRUD 端点
GET /api/resources — 列表(支持分页、筛选、排序)GET /api/resources/:id — 详情POST /api/resources — 创建PUT /api/resources/:id — 全量更新PATCH /api/resources/:id — 部分更新DELETE /api/resources/:id — 删除(或软删除)认证与授权:
业务逻辑层:
数据持久化初始化:
prisma migrate dev / npx prisma db seed / SQL 执行).env 中,确保项目迁移时数据库不丢失启动本地开发服务器后,按以下清单验证三端表现:
| 验证项 | 手机端 (<768px) | 平板端 (768–1023px) | 电脑端 (≥1024px) |
|---|---|---|---|
| 布局 | 单列流式、无横向滚动 | 双列或侧边栏 | 多列仪表盘、固定侧边栏 |
| 导航 | 底部 Tab 栏或汉堡菜单 | 底部/侧边混合 | 顶部或左侧导航栏 |
| 触控/鼠标 | 按钮 ≥ 44px、支持滑动 | 两者兼顾 | hover 态、右键菜单、快捷键 |
| 字体可读性 | 正文 ≥ 14px、行高 ≥ 1.5 | 正文 ≥ 15px | 正文 ≥ 16px |
| 交互反馈 | 点击缩放/水波纹 | 点击+hover 兼顾 | hover 预览、click 确认 |
视觉还原检查:
最终交付物必须包含:
.env.example 文件,列出所有必需的环境变量及说明npm run build 生成生产包纯前端项目启动:
npm install
npm run dev
# 访问 http://localhost:5173
全栈项目启动:
# 1. 安装依赖
npm install
# 2. 配置环境变量
cp .env.example .env
# 编辑 .env 填入数据库路径、JWT Secret 等
# 3. 初始化数据库(以 Prisma + SQLite 为例)
npx prisma migrate dev
npx prisma db seed
# 4. 启动开发服务器
npm run dev
# 访问 http://localhost:3000
本地运行验证:
npm install 安装依赖npm run dev 启动开发服务器当设计稿来自 design-spec-optimizer 范式时,按以下规则将「页面清单」和「完整闭环」转换为技术实现:
根据页面清单中的实体名词推导数据表:
GET /api/xxx 列表查询GET /api/xxx/:id 单条查询POST /api/xxx 创建或 PATCH /api/xxx/:id 更新Config 或 Setting 表(键值对存储)示例:
设计稿页面清单含「① 首页 — 今日饮水进度环 / 快捷记录按钮组 / 本周统计简报」 → 推导实体:
User(用户)、Record(饮水记录)、Goal(每日目标) → 表结构:
User: id, username, email, passwordHash, createdAtRecord: id, userId, amount, type, timestamp, createdAtGoal: id, userId, dailyTarget, reminderTime, unit
根据完整闭环中的用户操作路径推导 API:
POST /api/resourcesGET /api/resources/:id + PATCH /api/resources/:id + DELETE /api/resources/:idGET /api/resources?range=week&page=1&limit=10PATCH /api/users/:id/settings全栈项目必须同时生成前端用户端和后台管理端:
/admin 或独立子域名superadmin 和 editor 两种角色当解析设计稿时,必须提取并标注以下参数:
🎨 颜色系统
Primary: #XXXXXX (使用场景)
Secondary: #XXXXXX (使用场景)
Background:#XXXXXX
Surface: #XXXXXX (卡片背景)
Text: #XXXXXX (主文字) / #XXXXXX (辅助文字)
Border: #XXXXXX
Error/Success/Warning: #XXXXXX / #XXXXXX / #XXXXXX
🔤 字体系统
标题: Font Family, Size, Weight, Line Height
正文: Font Family, Size, Weight, Line Height
辅助: Font Family, Size, Weight, Line Height
📐 间距系统
页面边距: Xpx
模块间距: Xpx
卡片内边距: Xpx
元素间距: Xpx
🧩 组件清单
Button: 高度 / 圆角 / 颜色 / hover 态
Input: 高度 / 圆角 / 边框 / focus 态
Card: 圆角 / 阴影 / 内边距
Nav: 高度 / 布局方式 / 激活态
当设计需求涉及以下特殊能力时,按对应方案选型:
<View> 替代 <div>、<Text> 替代 <span>)app.config.tswindow.speechSynthesis,封装为 speak(text: string, rate: number) Hook,支持语速调节webkitSpeechRecognition(Chrome 支持)或调用后端 Whisper API/api/chat 接口,转发 OpenAI/文心一言/通义千问,流式返回 SSEOPENAI_API_KEY、OPENAI_BASE_URL 必须通过 .env 注入wx.requestPayment<input type="file" accept="image/*" /> + 后端 Multer / Formidablepublic/uploads/(开发)或 OSS/S3(生产)File 表(id, filename, originalName, mimeType, size, url, userId, createdAt)socket.io-client,封装为 React Context 提供全局 socket 实例socket.use 中间件校验socket.emit('message', { room, text })socket.emit('notification', { userId, title, body })socket.emit('operation', { docId, type, data })npm install && npm run dev 直接运行,禁止交付无法启动的半成品.env 管理,并提供 .env.example 模板.env.example 中声明所需密钥与配置项position: absolute 硬编码布局,优先用 Flexbox/Grid 实现响应式md: lg: 前缀渐进增强!important 覆盖样式,通过增加选择器特异性或调整组件结构解决{ error: '用户名已存在', code: 'CONFLICT' })