ui-first-builder

SKILL前端设计
前端设计 未标注权限 许可证不明确

Creates production-ready UI immediately from any description. Generates complete pages, components, and realistic mock data in FIRST response. Uses Next.js 14 + Tailwind + shadcn/ui. Never asks questions - infers everything from context. Triggers: UI creation, page building, component generation, build interface, screen design, layout requests.

一句话选型结论

按资料字段整理

ui-first-builder是前端设计类的 Agent Skill,安装方式:GitHub 仓库,权限级别未标注,许可证不明确,没有现成安装命令,需按说明手动放置 SKILL.md。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类前端设计 安装方式GitHub 仓库 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 75 仓库 toh-framework
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

GitHub 仓库
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    按安装说明或仓库 README,把 SKILL.md 放到客户端的 skills 目录(一般一个技能一个文件夹)。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

前端设计
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方wasintoh仓库 toh-framework · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式GitHub 仓库安装包 wasintoh/toh-framework
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 未标注
正文体量8.8 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
出页面与组件

按描述生成页面结构和组件草稿。

调整样式与布局

改间距、配色与响应式布局。

生成设计说明

把设计稿整理成开发能接的说明。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 基础信息齐全,可以先按说明装一个试试。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有现成安装命令,要按安装说明或仓库 README 手动放置。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在前端设计场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
ui-first-builder当前 未标注权限 GitHub 仓库 未标注 未标注 无
前端设计 只读 GitHub 仓库 882.3 万 Codex、Claude、Cursor 有
Vercel 组合模式 联网访问 GitHub 仓库 385.9 万 Codex、Claude、Cursor 有
Vercel React native skills 前端 只读 GitHub 仓库 246.9 万 Codex、Claude、Cursor 有
adapt 搜索 浏览器控制 GitHub 仓库 202.7 万 Codex、Claude、Cursor 有
使用我的浏览器 浏览器控制 GitHub 仓库 184.8 万 Codex、Claude、Cursor 有

SKILL.md 全文

8.8 KB
模型实际读到的说明书原文,来自技能仓库

UI First Builder

Create beautiful, functional UI immediately. No questions. No waiting.

<core_principle>

The First-Prompt Promise

User describes idea → User sees working UI → Same prompt, no follow-up needed

This is what makes Lovable magical. We replicate it here.
</core_principle>

<default_to_action>
NEVER ask:
- "How many pages do you want?" → Infer from description, start with essential pages
- "What color scheme?" → Read root DESIGN.md (the design contract); if absent,
trigger design identity generation first (design-craft two-pass → DESIGN-TEMPLATE.md).
The identity file is how we decide without asking — distinctive per project.
- "What features do you need?" → Infer standard features for this app type
- "Should it be responsive?" → ALWAYS responsive, mobile-first

ALWAYS do:
- Create complete, working pages
- Include realistic mock data (based on language setting in CLAUDE.md)
- Add hover states and transitions
- Make it look professional immediately
</default_to_action>

<component_architecture>

File Structure (Next.js 16 App Router)

src/
├── app/
│   ├── layout.tsx        # Root layout with providers
│   ├── page.tsx          # Home/Dashboard
│   ├── globals.css       # Tailwind + custom styles
│   └── [feature]/
│       └── page.tsx      # Feature pages
├── components/
│   ├── ui/               # shadcn/ui components
│   ├── layout/           # Header, Sidebar, Footer
│   ├── features/         # Feature-specific components
│   └── shared/           # Reusable components
├── lib/
│   ├── utils.ts          # cn() helper
│   └── mock-data.ts      # Realistic mock data
├── stores/               # Zustand stores
└── types/                # TypeScript types

</component_architecture>

<shadcn_components>

shadcn/ui Components to Use

Always Available (assume installed)

  • Button, Card, Input, Label, Textarea
  • Dialog, Sheet, Dropdown Menu, Popover
  • Table, Tabs, Avatar, Badge, Separator
  • Select, Checkbox, Radio Group, Switch
  • Toast (sonner), Calendar, Date Picker
  • Command (for search), Skeleton (loading)

Usage Pattern

import { Button } from &quot;@/components/ui/button&quot;
import { Card, CardContent, CardHeader, CardTitle } from &quot;@/components/ui/card&quot;
import { Input } from &quot;@/components/ui/input&quot;

DO NOT use components that don't exist

  • No custom components pretending to be shadcn
  • Stick to official shadcn/ui component list
    </shadcn_components>

<mock_data_rules>

Mock Data Guidelines

Mock data language depends on project language setting in CLAUDE.md.

✅ GOOD Mock Data (English - Default)

const mockUsers = [
  { id: 1, name: &quot;John Smith&quot;, email: &quot;john@company.com&quot;, role: &quot;Admin&quot; },
  { id: 2, name: &quot;Sarah Johnson&quot;, email: &quot;sarah@company.com&quot;, role: &quot;User&quot; },
  { id: 3, name: &quot;Michael Davis&quot;, email: &quot;michael@company.com&quot;, role: &quot;Editor&quot; },
]

const mockProducts = [
  { id: 1, name: &quot;House Blend Drip Coffee&quot;, price: 4.50, stock: 45 },
  { id: 2, name: &quot;Matcha Green Tea Latte&quot;, price: 5.25, stock: 32 },
  { id: 3, name: &quot;Hot Chocolate&quot;, price: 3.75, stock: 28 },
]

const mockStats = {
  totalRevenue: 15842,
  ordersToday: 47,
  newCustomers: 12,
  conversionRate: 3.2,
}

❌ BAD Mock Data (Lazy/Obvious)

// NEVER DO THIS
const users = [
  { name: &quot;Test User&quot;, email: &quot;test@test.com&quot; },
  { name: &quot;User 1&quot;, email: &quot;user1@email.com&quot; },
]

const products = [
  { name: &quot;Product A&quot;, price: 100 },
  { name: &quot;Lorem Ipsum&quot;, price: 999 },
]

Mock Data Location

Always create: src/lib/mock-data.ts
Export typed data for components to import
</mock_data_rules>

<styling_rules>

Styling Guidelines

Color Philosophy

  • Source of truth: root DESIGN.md tokens — every color traces to one
  • Cards: solid surface with subtle shadow (bg-card shadow-sm border)
  • Text: never pure black — use the DESIGN.md text token
  • Accent: ONE brand accent from DESIGN.md, never a raw palette default
  • Avoid: everything in design-craft/AVOID-LIST.md (gradients-by-default, neon, glassmorphism)

Spacing System

  • Page padding: p-4 md:p-6 lg:p-8
  • Card padding: p-4 md:p-6
  • Component gap: gap-4 or gap-6
  • Section margin: mb-6 or mb-8

Typography

  • Headings: text-2xl font-semibold (page title), text-lg font-medium (section)
  • Body: text-sm or text-base
  • Muted: text-slate-500 or text-muted-foreground
  • NO Inter everywhere - use system font stack (already in Tailwind)

Responsive Pattern

// Mobile-first, always
&lt;div className=&quot;grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4&quot;&gt;
  {/* Cards */}
&lt;/div&gt;

&lt;div className=&quot;flex flex-col md:flex-row gap-4&quot;&gt;
  {/* Layout items */}
&lt;/div&gt;

</styling_rules>

<page_templates>

Common Page Patterns

Dashboard Page

export default function DashboardPage() {
  return (
    &lt;div className=&quot;p-4 md:p-6 space-y-6&quot;&gt;
      {/* Stats Row */}
      &lt;div className=&quot;grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4&quot;&gt;
        &lt;StatCard title=&quot;Today&#x27;s Revenue&quot; value=&quot;$12,450&quot; change=&quot;+12%&quot; /&gt;
        &lt;StatCard title=&quot;Orders&quot; value=&quot;47&quot; change=&quot;+5%&quot; /&gt;
        {/* ... */}
      &lt;/div&gt;

      {/* Main Content */}
      &lt;div className=&quot;grid grid-cols-1 lg:grid-cols-3 gap-6&quot;&gt;
        &lt;Card className=&quot;lg:col-span-2&quot;&gt;
          {/* Chart or Table */}
        &lt;/Card&gt;
        &lt;Card&gt;
          {/* Recent Activity */}
        &lt;/Card&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  )
}

List/Table Page

export default function ListPage() {
  return (
    &lt;div className=&quot;p-4 md:p-6 space-y-4&quot;&gt;
      {/* Header with Search + Add Button */}
      &lt;div className=&quot;flex flex-col md:flex-row md:items-center justify-between gap-4&quot;&gt;
        &lt;h1 className=&quot;text-2xl font-semibold&quot;&gt;Products&lt;/h1&gt;
        &lt;div className=&quot;flex gap-2&quot;&gt;
          &lt;Input placeholder=&quot;Search...&quot; className=&quot;w-full md:w-64&quot; /&gt;
          &lt;Button&gt;Add Product&lt;/Button&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      {/* Table */}
      &lt;Card&gt;
        &lt;Table&gt;
          {/* ... */}
        &lt;/Table&gt;
      &lt;/Card&gt;
    &lt;/div&gt;
  )
}

Form Page

export default function FormPage() {
  return (
    &lt;div className=&quot;p-4 md:p-6 max-w-2xl mx-auto&quot;&gt;
      &lt;Card&gt;
        &lt;CardHeader&gt;
          &lt;CardTitle&gt;Add New Product&lt;/CardTitle&gt;
        &lt;/CardHeader&gt;
        &lt;CardContent&gt;
          &lt;form className=&quot;space-y-4&quot;&gt;
            {/* Form fields */}
            &lt;div className=&quot;flex justify-end gap-2&quot;&gt;
              &lt;Button variant=&quot;outline&quot;&gt;Cancel&lt;/Button&gt;
              &lt;Button&gt;Save&lt;/Button&gt;
            &lt;/div&gt;
          &lt;/form&gt;
        &lt;/CardContent&gt;
      &lt;/Card&gt;
    &lt;/div&gt;
  )
}

</page_templates>

<interaction_states>

Always Include These States

Loading State

// Use Skeleton from shadcn
&lt;Skeleton className=&quot;h-4 w-full&quot; /&gt;
&lt;Skeleton className=&quot;h-32 w-full&quot; /&gt;

Empty State

&lt;div className=&quot;flex flex-col items-center justify-center py-12 text-center&quot;&gt;
  &lt;Package className=&quot;h-12 w-12 text-slate-300 mb-4&quot; /&gt;
  &lt;h3 className=&quot;text-lg font-medium&quot;&gt;No items yet&lt;/h3&gt;
  &lt;p className=&quot;text-slate-500 mb-4&quot;&gt;Start by creating your first item&lt;/p&gt;
  &lt;Button&gt;Add New Item&lt;/Button&gt;
&lt;/div&gt;

Hover/Active States

// Cards
&lt;Card className=&quot;hover:shadow-md transition-shadow cursor-pointer&quot;&gt;

// List items  
&lt;div className=&quot;hover:bg-slate-50 transition-colors&quot;&gt;

// Buttons already have states from shadcn

</interaction_states>

<output_checklist>

Before Completing, Verify:

  • [ ] All pages render without errors
  • [ ] Mock data looks realistic (per language setting)
  • [ ] Responsive design works (mobile → desktop)
  • [ ] All buttons have hover states
  • [ ] No "Lorem ipsum" or "Test" placeholder text
  • [ ] shadcn/ui components used correctly
  • [ ] TypeScript types defined for all data
  • [ ] File structure follows convention
  • [ ] npm run dev will work immediately
    </output_checklist>

<anti_patterns>

What NOT To Build

❌ Don't Create

  • Complex nested routing before basic pages work
  • Custom design system (use shadcn)
  • Authentication flow before main UI
  • API routes before UI exists
  • Database schema before seeing UI needs

❌ Don't Style

  • Gradient backgrounds on light mode
  • Neon/bright accent colors
  • Pure black (#000) text
  • Inconsistent spacing
  • Different fonts per section

❌ Don't Assume

  • User has specific components installed (ask shadcn to add)
  • Complex state management needed first
  • User wants to see architecture diagram
  • User needs explanation before seeing UI
    </anti_patterns>

常见问题

5 问
答案由本站依据条目字段整理
ui-first-builder怎么安装?

没有现成安装命令:按安装说明或仓库 README,把 SKILL.md 放进客户端的 skills 目录(一般一个技能一个文件夹)。

ui-first-builder支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

ui-first-builder权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

ui-first-builder收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

ui-first-builder用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。