Token导航 LogoToken导航TokenDH.com
前端设计操作浏览器github未标认证来源可访问许可证需确认审计通过

chakra-ui-builder脉轮 ui 生成器

Agent Skill

用于辅助界面设计、视觉规范、排版、配色、布局和交互体验优化。它适合让 Agent 根据产品场景整理页面结构、生成 UI 方案、检查视觉一致性或改进组件层级。使用时需要结合现有品牌、设计系统和用户任务,不应只堆装饰元素;涉及真实页面改动时,应通过截图或浏览器预览检查文本溢出、对齐和响应式表现。

总安装

1,630

周安装

70

GitHub Stars

40,408

下载量

571
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:chakra-ui-builder(脉轮 ui 生成器)
来源仓库:https://github.com/chakra-ui/chakra-ui
仓库路径:skills/chakra-ui-builder
安装命令:
npx skills add https://github.com/chakra-ui/chakra-ui --skill chakra-ui-builder
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/chakra-ui/chakra-ui --skill chakra-ui-builder

简介

专为 Chakra UI v3 设计的 UI 构建助手。

  • 根据项目上下文生成定制化组件代码。
  • 自动识别包管理器、适用宿主包括 Codex、Claude、Cursor、Gemini CLI,接入前应确认版本、权限和运行环境要求。
  • 框架类型和 TypeScript 配置。
  • chakra-ui-builder 属于前端设计类 Skill,可作为该场景下的辅助能力补充。

SKILL.md

Chakra UI Builder

You are building UI with Chakra UI v3 and helping developers set up Chakra UI in their projects. Your job is to produce clean, accessible, responsive code that fits the project — not generic boilerplate. Read the project context first, then build or set up.


Step 1 — Read the project context

Check package.json if available. Look for:

  • Chakra UI version (use v3 patterns by default; only use v2 if explicitly on v2)
  • Framework: Next.js App Router, Pages Router, Vite, plain React
  • TypeScript or JavaScript
  • Package manager (from lockfile: pnpm-lock.yaml, yarn.lock, bun.lock, package-lock.json)

Also glance at existing components if the user references them, so your code matches the conventions already in use (naming, file structure, import style).

If the requirements are vague or the component is complex enough that choices matter (layout direction, data shape, color palette, number of variants), ask before building rather than generating something that needs to be thrown away.


Project setup

If Chakra UI isn't installed yet, complete setup before building.

Install

# npm
npm install @chakra-ui/react @emotion/react

# pnpm
pnpm add @chakra-ui/react @emotion/react

# yarn
yarn add @chakra-ui/react @emotion/react

# bun
bun add @chakra-ui/react @emotion/react

Generate snippets with the CLI

npx @chakra-ui/cli snippet add

With no arguments this adds the recommended set — provider, toaster, and tooltip — and automatically installs required dependencies (including next-themes). Use --all to add every snippet, or snippet list to browse first.

The CLI detects your framework and writes files to the right place:

FrameworkOutput path
Next.js (with src/)src/components/ui/
Next.js (no src/)components/ui/
Vite / plain Reactsrc/components/ui/
Remixapp/components/ui/

Wire up the Provider

Next.js App Router (app/layout.tsx):

import { Provider } from "@/components/ui/provider"

export default function RootLayout({
  children,
}: {
  children: React.ReactNode
}) {
  return (
    <html lang="en" suppressHydrationWarning>
      <body>
        <Provider>{children}</Provider>
      </body>
    </html>
  )
}

suppressHydrationWarning prevents a mismatch caused by next-themes injecting the color-mode class. Do not add "use client" to layout.tsx — the generated provider file already has it.

Next.js Pages Router (pages/_app.tsx):

import { Provider } from "@/components/ui/provider"

export default function App({ Component, pageProps }) {
  return (
    <Provider>
      <Component {...pageProps} />
    </Provider>
  )
}

Vite (src/main.tsx):

import { Provider } from "./components/ui/provider"

createRoot(document.getElementById("root")!).render(
  <StrictMode>
    <Provider>
      <App />
    </Provider>
  </StrictMode>,
)

Manual Provider (if CLI is unavailable)

If the CLI fails, create components/ui/provider.tsx manually and install next-themes separately:

"use client"
import { ChakraProvider, defaultSystem } from "@chakra-ui/react"
import { ThemeProvider } from "next-themes"

export function Provider({ children }: { children: React.ReactNode }) {
  return (
    <ChakraProvider value={defaultSystem}>
      <ThemeProvider attribute="class" disableTransitionOnChange>
        {children}
      </ThemeProvider>
    </ChakraProvider>
  )
}

Common setup issues

  • Unstyled components — app is not wrapped in <Provider>. Check the import path and that Provider wraps the component tree.
  • Hydration mismatch — add suppressHydrationWarning to <html> in App Router.
  • next-themes not found — install it: npm install next-themes (only needed for the manual fallback; the CLI handles it automatically).
  • extendTheme not exported — this is a v2 pattern. Use createSystem in v3.

Step 2 — Choose the right layout primitives

Reach for the right Chakra primitive rather than wrapping everything in Box:

NeedUse
Vertical stack of itemsStack (default) or VStack
Horizontal rowHStack or Flex
CSS GridGrid + GridItem
Equal-column gridSimpleGrid columns={N}
Centered page contentContainer maxW="container.lg"
Full flexbox controlFlex with explicit props
Semantic section/articleBox as="section" / Box as="article"

Avoid deep nesting. If you're three Box levels deep with no semantic reason, flatten it. Prefer gap over margin between siblings.


Step 3 — Use tokens, not raw values

Chakra v3 ships semantic tokens that automatically adapt to light/dark mode. Prefer them over hard-coded palette values — they make the component theme-aware without any extra work.

// Prefer semantic tokens
<Box bg="bg.subtle" color="fg.default" borderColor="border.subtle" />
<Text color="fg.muted" />
<Box shadow="md" rounded="lg" />

// Use colorPalette for interactive components (not colorScheme)
<Button colorPalette="blue">Submit</Button>
<Badge colorPalette="green">Active</Badge>

Use raw palette values (blue.500, gray.100) only when a specific color is intentional and should not shift with color mode.


Step 4 — Responsive styles

Chakra uses mobile-first breakpoints. Use array or object syntax consistently:

// Array: [base, sm, md, lg, xl]
<Box px={[4, 6, 8]} fontSize={["sm", "md", "lg"]} />

// Object: explicit breakpoints
<SimpleGrid columns={{ base: 1, md: 2, lg: 3 }} gap={6} />
<Stack direction={{ base: "column", md: "row" }} gap={4} />

Every layout component should handle at least base (mobile) and md (desktop) breakpoints unless the request is explicitly desktop-only.


Step 5 — Forms

Use Field.Root for all form fields — it wires up label, input, error, and help text correctly:

<Field.Root invalid={!!error} required>
  <Field.Label>Email address</Field.Label>
  <Input type="email" placeholder="you@example.com" />
  <Field.ErrorText>{error}</Field.ErrorText>
  <Field.HelpText>We'll never share your email.</Field.HelpText>
</Field.Root>

For form submission state, use disabled (not isDisabled) on inputs and buttons. Group related fields in a Stack gap={4}.


Step 6 — Accessibility

Chakra's built-in components handle most accessibility automatically — don't override it. The things you do need to provide:

  • Icon-only buttons: always add aria-label <IconButton aria-label="Close dialog" icon={<CloseIcon />} />
  • Images: always pass meaningful alt text (or alt="" for decorative)
  • Form labels: use Field.Label or ensure htmlFor matches the input id
  • Interactive custom elements: if you build something with onClick on a Box, use as="button" or an actual <button> so keyboard navigation works
  • Semantic headings: use h1h6 hierarchy; don't skip levels
  • Color contrast: don't use light gray text on white backgrounds; rely on semantic tokens which are contrast-tested

Step 7 — Next.js: where to add "use client"

In Next.js App Router, Server Components are the default. Add "use client" only to files that need it — not to entire layouts or pages.

A component needs "use client" when it:

  • Uses React hooks (useState, useEffect, useContext, etc.)
  • Handles browser events (onClick with state, form submission, etc.)
  • Uses browser APIs
// Server Component — no directive needed
export default function ProductCard({ name, price }: Props) {
  return (
    <Box p={4} borderWidth={1} rounded="md">
      <Text fontWeight="bold">{name}</Text>
      <Text color="fg.muted">{price}</Text>
    </Box>
  )
}

// Client Component — needs the directive
;("use client")
export function AddToCartButton({ productId }: { productId: string }) {
  const [added, setAdded] = useState(false)
  return (
    <Button onClick={() => setAdded(true)} colorPalette="blue">
      {added ? "Added!" : "Add to cart"}
    </Button>
  )
}

The goal is to push interactivity to the leaves — keep as much of the tree as Server Components as possible.


Step 8 — When to extract components, use recipes, and customize the theme

Extract a component when the same structure appears more than twice, or when a piece is complex enough that naming it makes the parent clearer.

Suggest a recipe when a component has meaningful style variants that a developer would want to customize. Suggest a slot recipe for components with multiple coordinated parts (card with header/body/footer, stat with label/value/icon, etc.).

For deeper theming work — defining brand color tokens, semantic tokens with dark mode values, full recipe/slot-recipe authoring, typegen, or ejecting the default theme — read references/theming.md before responding. It covers the complete defineConfig / createSystem API with full examples.

For any chart request — bar charts, area charts, line charts, pie/donut charts, BarList, BarSegment, or anything involving @chakra-ui/charts — read references/charts.md before responding. It covers the useChart hook, all three chart types, Recharts integration, color tokens, and complete runnable examples.

When you're unsure which component to use, or the user hasn't specified one, read references/component-decision-tree.md. It covers every Chakra component with guidance on when to choose one over a similar alternative.


Output format

Produce:

  1. Complete, runnable code — correct imports, no placeholders like TODO or ...rest of component
  2. Proper import statements — group Chakra imports, then local imports
  3. Component separation — split into multiple components/files if the component is complex or contains clearly separable parts
  4. Responsive styles — at minimum base and md breakpoints for layout
  5. Brief explanation after the code — 2–4 sentences on the key decisions made (layout approach, accessibility choices, responsive strategy). Skip the explanation if the request was trivial.
// Good import style
import { Box, Button, Field, Stack, Text } from "@chakra-ui/react"
// Then local
import { SomeLocalComponent } from "./SomeLocalComponent"

When to ask first

Build immediately if the request is clear enough to produce something useful. Ask first when:

  • The data shape is unknown and it changes the entire structure (e.g., "build a table" — how many columns? what data?)
  • There are meaningful design choices the user might care about (layout direction, number of columns, color palette)
  • The user references files or existing components you haven't seen

When in doubt, state your assumptions at the top of the response and build — it's faster for the user to redirect from something concrete than from nothing.

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

38.59%
按下载量换算220

Claude

27.6%
按下载量换算158

Cursor

20.88%
按下载量换算119

Gemini CLI

10.44%
按下载量换算60

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

操作浏览器

该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills