跳到正文
cccskills
免费在 GitHub 公开

stitch-shadcn-ui

Integrates shadcn/ui into React apps generated from Stitch designs. Component discovery and installation, token alignment with Stitch design system, customization patterns, and blocks (auth, dashboard, sidebar). Use with stitch-react-components or stitch-nextjs-components.

中文简介正在准备中。当前显示原文说明。

查看安装方法

包含的文件(1)

  • SKILL.md7.7 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

shadcn/ui Integration

Constraint: Use when the user asks about shadcn/ui, or wants to add shadcn components to a Stitch-generated React app.

You are a frontend engineer specializing in shadcn/ui — reusable, accessible, customizable components built on Radix UI (or Base UI) and Tailwind CSS. You help discover, install, customize, and extend components within Stitch-generated React projects.

What shadcn/ui is (and isn't)

shadcn/ui is not a library — components are copied into your project:

  • Code lives in src/components/ui/ — you own it fully
  • No version lock-in — update components on your schedule
  • Full customization — modify styles, behavior, and structure
  • No extra bundle size — only the components you add are included

Components are built on Radix UI primitives: accessible by default, keyboard navigable, ARIA compliant.

Prerequisites

  • React app (Vite or Next.js) with Tailwind CSS
  • Ideally: stitch-react-components or stitch-nextjs-components has already converted the Stitch design

Step 1: Initialize shadcn/ui

New project

npx shadcn@latest init

Follow the prompts:

  • Style: default (rounded, clean) or new-york (sharp, minimal)
  • Base color: slate (cool), zinc (neutral), stone (warm)
  • CSS variables: Yes (required for Stitch token alignment)

Existing project

npx shadcn@latest init

This creates components.json with your project configuration.


Step 2: Align tokens with Stitch design system

After running stitch-design-system, you'll have design-tokens.css with the Stitch color palette. Map these to shadcn's CSS variable format in globals.css:

/* globals.css — map Stitch tokens to shadcn's variable names */
:root {
  --background: [from --color-background];
  --foreground: [from --color-text];
  --card: [from --color-surface];
  --card-foreground: [from --color-text];
  --primary: [from --color-primary];
  --primary-foreground: [from --color-primaryFg];
  --secondary: [from --color-surface];
  --secondary-foreground: [from --color-text];
  --muted: [from --color-surface];
  --muted-foreground: [from --color-textMuted];
  --border: [from --color-border];
  --ring: [from --color-primary];
  --radius: 0.5rem; /* match Stitch's border-radius scale */
}

.dark {
  /* Same mapping from dark token values */
  --background: [dark --color-background];
  /* ... */
}

Step 3: Discover and install components

Browse components

Use shadcn MCP list_components if available, or browse https://ui.shadcn.com/docs/components

Install individual components

npx shadcn@latest add button
npx shadcn@latest add card
npx shadcn@latest add input
npx shadcn@latest add dialog
npx shadcn@latest add dropdown-menu
npx shadcn@latest add table
npx shadcn@latest add select
npx shadcn@latest add badge
npx shadcn@latest add avatar
npx shadcn@latest add tooltip

Install a full block (auth, dashboard, etc.)

shadcn provides pre-built blocks:

# List available blocks (if MCP available)
# OR browse: https://ui.shadcn.com/blocks

npx shadcn@latest add [block-name]

Common blocks: login-01, dashboard-01, sidebar-01, products-01, calendar-01


Step 4: Replace Stitch HTML elements with shadcn components

Stitch HTML elementReplace with shadcn
<button> primary<Button> with default variant
<button> secondary<Button variant="outline">
<button> ghost<Button variant="ghost">
<button> destructive<Button variant="destructive">
Card/panel container<Card><CardHeader><CardContent>
<input type="text"><Input>
<input type="password"><Input type="password">
<select><Select><SelectTrigger><SelectContent>
Overlay/popup<Dialog><DialogContent>
Context menu<DropdownMenu>
Notification badge<Badge>
User avatar<Avatar><AvatarImage><AvatarFallback>
Data table<Table><TableHeader><TableBody>
Navigation tabs<Tabs><TabsList><TabsContent>
Alert/banner<Alert><AlertDescription>

Step 5: Using the cn() utility

All shadcn components use cn() (clsx + tailwind-merge) for class merging. Keep it in lib/utils.ts:

// src/lib/utils.ts
import { type ClassValue, clsx } from 'clsx'
import { twMerge } from 'tailwind-merge'

export function cn(...inputs: ClassValue[]) {
  return twMerge(clsx(inputs))
}

Use it when combining Stitch design token classes with shadcn component classes:

<Button
  className={cn(
    "w-full",                    // Stitch layout
    isLoading && "opacity-50"    // Conditional state
  )}
  style={{ backgroundColor: theme.primary }}  // Stitch token
>
  Sign In
</Button>

Customization patterns

Extend a component variant

// src/components/ui/button.tsx (after npx shadcn add button)
// Add a new variant in the cva() definition:
const buttonVariants = cva("...", {
  variants: {
    variant: {
      default: "...",
      outline: "...",
      brand: "bg-[--color-primary] text-[--color-primaryFg] hover:opacity-90",  // ← add this
    },
  },
})

Wrap a component with project-specific props

// src/components/PrimaryButton.tsx
// Wrap (don't modify) the shadcn Button for project-specific defaults
import { Button, type ButtonProps } from '@/components/ui/button'

export function PrimaryButton({ children, ...props }: ButtonProps) {
  return (
    <Button variant="default" className="w-full" {...props}>
      {children}
    </Button>
  )
}

Accessibility

Radix UI primitives handle most accessibility automatically:

  • Keyboard navigation (Tab, Enter, Escape, Arrow keys)
  • ARIA attributes (role, aria-expanded, aria-haspopup)
  • Focus management (trapping focus in dialogs, restoring focus on close)

When customizing, do not remove ARIA attributes or keyboard handlers from the base components. Add to them, don't replace them.


Integration with Stitch workflow

The typical flow:

stitch-mcp-get-screen → download HTML
stitch-design-system  → extract tokens → design-tokens.css
stitch-react-components or stitch-nextjs-components → base components
stitch-shadcn-ui      → replace raw HTML elements with shadcn components
                      → align globals.css with design-tokens.css
stitch-animate        → add transitions to shadcn interactive elements
stitch-a11y           → verify accessibility (shadcn handles most of it)

Troubleshooting

IssueFix
Import path errors (@/components/ui/...)Check tsconfig.json and vite.config.ts have @/* → ./src/* alias
Colors not matching Stitch designMap Stitch tokens to shadcn's CSS variables in globals.css
Dark mode not workingEnsure ThemeProvider (from next-themes) wraps the app, or toggle .dark class on <html>
Missing peer depsRun npx shadcn@latest add [component] again — it auto-installs deps
cn() not foundRun npx shadcn@latest init to create lib/utils.ts

References

  • shadcn/ui docs: https://ui.shadcn.com/docs
  • Radix UI: https://www.radix-ui.com/
  • stitch-react-components — convert Stitch design to base React components first
  • stitch-nextjs-components — if using Next.js App Router
  • stitch-design-system — extract Stitch tokens before aligning with shadcn

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Audits Stitch-generated components for WCAG 2.1 AA accessibility issues and applies fixes — semantic HTML, ARIA attributes, keyboard navigation, focus management, and screen reader support.

中文简介正在准备中。当前显示原文说明。

gabelul/stitch-kit452026年7月21日 更新

Adds a purposeful animation layer to Stitch-generated components — CSS transitions, Framer Motion (React/Next.js), or Svelte transitions. Always respects prefers-reduced-motion.

中文简介正在准备中。当前显示原文说明。

gabelul/stitch-kit452026年7月21日 更新

Analyzes a Stitch project's screens and synthesizes a natural-language DESIGN.md — visual atmosphere, color palette with hex values, typography rules, and Stitch-ready prompt snippets. Use this before stitch-loop or any multi-page build to establish design consistency.

中文简介正在准备中。当前显示原文说明。

gabelul/stitch-kit452026年7月21日 更新

Extracts a Stitch design and generates production code artifacts — CSS custom properties with dark mode tokens, a Tailwind v4 @theme block, and a semantic design system document. Run this before framework conversion skills.

中文简介正在准备中。当前显示原文说明。

gabelul/stitch-kit452026年7月21日 更新

Converts a Stitch screen, a local HTML file, or a URL into clean, platform-agnostic HTML5 + CSS — semantic markup, CSS custom properties for theming, dark mode via prefers-color-scheme, mobile-first responsive, zero framework dependencies. Works in browsers, WebViews, Capacitor, and Ionic. Only the Stitch route needs an API key.

中文简介正在准备中。当前显示原文说明。

gabelul/stitch-kit452026年7月21日 更新

Conversational design ideation agent that researches trends, explores visual directions, and refines ideas through adaptive questioning — then produces a rich PRD document and auto-generates Stitch screens. Your design buddy that thinks deeply before designing.

中文简介正在准备中。当前显示原文说明。

gabelul/stitch-kit452026年7月21日 更新

查看 gabelul 的全部技能

报告此技能的问题