/install web-ui-builder
Web UI Builder
Automatically generate complete frontend page code from visual descriptions or image references. Fixed tech stack: React 19 + Vite 8 + Tailwind CSS 4 + lucide-react.
Tech Stack
| Technology | Version | Purpose |
|---|---|---|
| React | 19+ | UI framework |
| Vite | 8+ | Build tool |
| Tailwind CSS | 4+ | Styling (CSS-driven, no tailwind.config.js) |
| lucide-react | 1.17+ | Icon library |
| @vitejs/plugin-react | latest | Vite React plugin |
Tailwind CSS 4 Notes
Tailwind CSS 4 uses CSS-driven configuration, no tailwind.config.js or postcss.config.js needed:
/* src/index.css — replaces tailwind.config.js + postcss */
@import "tailwindcss";
/* Custom theme colors */
@theme {
--color-brand-50: #eef2ff;
--color-brand-100: #e0e7ff;
--color-brand-500: #6366f1;
--color-brand-600: #4f46e5;
--color-brand-700: #4338ca;
}
/* Custom component classes */
@layer components {
.card { @apply rounded-xl bg-white p-6 shadow-sm border border-gray-100; }
.btn-primary { @apply rounded-lg bg-brand-600 px-4 py-2.5 text-sm font-medium text-white hover:bg-brand-700 transition-colors; }
}
Key changes:
@tailwind base/components/utilities→@import "tailwindcss"- Custom themes use
@themedirective instead oftailwind.config.jstheme.extend - Custom components use
@layer components - No
postcss.config.jsneeded (handled by Vite) - No
tailwind.config.jscontentconfiguration needed
package.json Dependencies
{
"dependencies": {
"react": "^19.0.0",
"react-dom": "^19.0.0",
"lucide-react": "^1.17.0"
},
"devDependencies": {
"@vitejs/plugin-react": "^latest",
"tailwindcss": "^4.0.0",
"vite": "^8.0.0"
}
}
Project Structure
project/
├── package.json
├── vite.config.js
├── index.html
└── src/
├── main.jsx # React entry point
├── index.css # @import "tailwindcss" + @theme customization
├── App.jsx # Root component
├── LoginPage.jsx # (on demand) Login page
├── DashboardPage.jsx # (on demand) Dashboard
├── Sidebar.jsx # (on demand) Sidebar
├── Header.jsx # (on demand) Header
└── ... # (on demand) Other components
vite.config.js
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
export default defineConfig({
plugins: [react()],
})
Workflow
User input (description/image) → Extract functional modules → Compose skeleton + content modules → Generate files → Return directory + start command
Component-Driven Strategy
Instead of predefined page types, identify functional modules from user descriptions and compose them on demand:
Skeleton Components (generated as needed)
| Component | Use Case |
|---|---|
TopNav |
Page top navigation (links/brand/search/user menu) |
Sidebar |
Side menu (icons+labels/hierarchy/user info) |
Header |
Content area top bar (title/breadcrumbs/actions/notifications) |
Footer |
Page footer (links/copyright/social) |
Content Modules (generated as needed)
| Module | Detection Keywords |
|---|---|
HeroBanner |
"banner/hero/welcome/featured" |
FormSection |
"form/input/register/login/feedback" |
StatsCards |
"statistics/metrics/KPI/overview" |
DataTable |
"table/list/data rows/records" |
CardGrid |
"cards/grid/gallery/showcase" |
ChartSection |
"chart/trend/distribution/visualization" |
Timeline |
"timeline/progress/flow/steps" |
Modal |
"modal/dialog/confirmation" |
Tabs |
"tabs/switch/categories" |
SearchBar |
"search/filter/filtering" |
Planning Method
- Extract functional keywords from user description → match corresponding modules
- Arrange modules in layout order (top to bottom, left to right)
- Generate individual component files for each module
- Main page component composes all modules
Examples:
- "A dashboard with sidebar, stats cards, and a data table" →
Sidebar + StatsCards + DataTable - "A login page with email/password inputs and gradient background" →
FormSection(login) + background decoration - "A product showcase with top nav and card grid" →
TopNav + CardGrid + Footer
Generation Guidelines
Style Conventions
- All Tailwind CSS 4 utility classes, customize palette via
@themeinindex.css - Default theme: indigo/violet
- Border radius: cards
rounded-xl, buttonsrounded-lg, inputsrounded-lg - Shadows: cards
shadow-sm - Icons: all from lucide-react
Code Standards
- Functional components, JSX syntax
- Comment annotations for module sections
- Placeholder images:
https://images.unsplash.com/photo-{id}orpicsum.photos
Responsive
- Sidebar: 240-280px fixed on desktop, hidden/hamburger on mobile
- Content: responsive, max-w-7xl centered
- Card grid:
grid-cols-1 md:grid-cols-2 lg:grid-cols-3
Notes
- Do not generate
node_modules/ - Start command:
npm install && npm run dev - Tailwind CSS 4 does not use
tailwind.config.jsorpostcss.config.js - All icons from lucide-react, no external paid icon libraries
- Use mock data, no real API calls
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install web-ui-builder - After installation, invoke the skill by name or use
/web-ui-builder - Provide required inputs per the skill's parameter spec and get structured output
What is Web UI Builder?
Generate complete frontend page code using React 19 + Vite 8 + Tailwind CSS 4 + lucide-react from UI descriptions or images. Outputs project structure, compo... It is an AI Agent Skill for Claude Code / OpenClaw, with 42 downloads so far.
How do I install Web UI Builder?
Run "/install web-ui-builder" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is Web UI Builder free?
Yes, Web UI Builder is completely free, licensed under MIT-0. You can download, install and use it at no cost.
Which platforms does Web UI Builder support?
Web UI Builder is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created Web UI Builder?
It is built and maintained by OpenLark (@openlark); the current version is v1.0.0.