shadcn-ui
shadcn/uiコンポーネントをReactプロジェクトへインストール・設定するスキルです。コンポーネントの選定、インストール順序、依存関係の管理、セマンティックトークンを用いたカスタマイズ、フォーム・データテーブル・ナビゲーション・モーダルなど定番UIのレシピをガイドします。tailwind-theme-builderでテーマ基盤を構築した後、コンポーネントの追加・フォーム構築・データテーブル作成・ナビゲーション設定を行う際にご活用ください。
description の原文を見る
Install and configure shadcn/ui components for React projects. Guides component selection, installation order, dependency management, customisation with semantic tokens, and common UI recipes (forms, data tables, navigation, modals). Use after tailwind-theme-builder has set up the theme infrastructure, when adding components, building forms, creating data tables, or setting up navigation.
SKILL.md 本文
shadcn/ui コンポーネント
テーマ化されたReactプロジェクトにshadcn/uiコンポーネントを追加します。このスキルは tailwind-theme-builder がCSS変数、ThemeProvider、ダークモードをセットアップした AFTER に実行されます。コンポーネントのインストール、カスタマイズ、およびコンポーネントを動作するパターンに組み合わせることを処理します。
前提条件: テーマインフラストラクチャが存在する必要があります (CSS変数、components.json、cn()ユーティリティ)。セットアップされていない場合は、まず tailwind-theme-builder を使用してください。
インストール順序
依存関係の順序でコンポーネントをインストールします。基盤コンポーネントを最初にインストールしてから、機能コンポーネントをインストールします:
基盤 (最初にインストール)
pnpm dlx shadcn@latest add button
pnpm dlx shadcn@latest add input label
pnpm dlx shadcn@latest add card
機能コンポーネント (必要に応じてインストール)
# Forms
pnpm dlx shadcn@latest add form # needs: react-hook-form, zod, @hookform/resolvers
pnpm dlx shadcn@latest add textarea select checkbox switch
# Feedback
pnpm dlx shadcn@latest add toast # needs: sonner
pnpm dlx shadcn@latest add alert badge
# Overlay
pnpm dlx shadcn@latest add dialog sheet popover dropdown-menu
# Data Display
pnpm dlx shadcn@latest add table # for data tables, also: @tanstack/react-table
pnpm dlx shadcn@latest add tabs separator avatar
# Navigation
pnpm dlx shadcn@latest add navigation-menu command
外部依存関係
| コンポーネント | 必須 |
|---|---|
| Form | react-hook-form, zod, @hookform/resolvers |
| Toast | sonner |
| Data Table | @tanstack/react-table |
| Command | cmdk |
| Date Picker | date-fns (オプション) |
外部依存関係を別途インストール: pnpm add react-hook-form zod @hookform/resolvers
既知の落とし穴
これらは一般的なバグを防ぐための文書化された修正です:
Radix Select — 空の文字列なし
// 空の文字列値を使用しないでください
<SelectItem value="">All</SelectItem> // 壊れます
// センチネル値を使用します
<SelectItem value="__any__">All</SelectItem> // 動作します
const actual = value === "__any__" ? "" : value
React Hook Form — Null値
// {...field}をスプレッドしないでください — nullを渡してInputが拒否します
<Input
value={field.value ?? ''}
onChange={field.onChange}
onBlur={field.onBlur}
name={field.name}
ref={field.ref}
/>
Lucide Icons — Tree-Shaking
// 動的インポートを使用しないでください — 本番環境ではアイコンがツリーシェイクされます
import * as LucideIcons from 'lucide-react'
const Icon = LucideIcons[iconName] // 本番環境で壊れます
// 明示的なマップを使用します
import { Home, Users, Settings, type LucideIcon } from 'lucide-react'
const ICON_MAP: Record<string, LucideIcon> = { Home, Users, Settings }
const Icon = ICON_MAP[iconName]
Dialog幅のオーバーライド
// デフォルトのsm:max-w-lgはmax-w-6xlでオーバーライドされません
<DialogContent className="max-w-6xl"> // 動作しません
// 同じブレークポイント接頭辞を使用します
<DialogContent className="sm:max-w-6xl"> // 動作します
コンポーネントのカスタマイズ
shadcnコンポーネントはテーマからのセマンティックCSSトークンを使用します。カスタマイズするには:
バリアント拡張
src/components/ui/ のコンポーネントファイルを編集してカスタムバリアントを追加します:
// button.tsx — "brand"バリアントを追加
const buttonVariants = cva("...", {
variants: {
variant: {
default: "bg-primary text-primary-foreground",
brand: "bg-brand text-brand-foreground hover:bg-brand/90",
// ... existing variants
},
},
})
色のオーバーライド
テーマからのセマンティックトークンを使用します — 生のTailwind色は使用しないでください:
// 生の色を使用しないでください
<Button className="bg-blue-500"> // 間違い
// セマンティックトークンを使用します
<Button className="bg-primary"> // 正解
<Card className="bg-card text-card-foreground"> // 正解
ワークフロー
ステップ1: ニーズを評価
プロジェクトが必要とするUIパターンを決定します:
| ニーズ | コンポーネント |
|---|---|
| 検証を使用したフォーム | Form, Input, Label, Select, Textarea, Button, Toast |
| ソート機能付きデータ表示 | Table, Badge, Pagination |
| 管理CRUD インターフェース | Dialog, Form, Table, Button, Toast |
| マーケティング/ランディングページ | Card, Button, Badge, Separator |
| 設定/環境設定 | Tabs, Form, Switch, Select, Toast |
| ナビゲーション | NavigationMenu (デスクトップ), Sheet (モバイル), ModeToggle |
ステップ2: コンポーネントをインストール
基盤を最初にインストールしてから、特定されたニーズの機能コンポーネントをインストールします。上記のコマンドを使用してください。
ステップ3: レシピを構築
コンポーネントを動作するパターンに組み合わせます。完全な動作例については references/recipes.md を参照してください:
- Contact Form — Form + Input + Textarea + Button + Toast
- Data Table — Table + Column sorting + Pagination + Search
- Modal CRUD — Dialog + Form + Button
- Navigation — Sheet + NavigationMenu + ModeToggle
- Settings Page — Tabs + Form + Switch + Select + Toast
ステップ4: カスタマイズ
テーマからのセマンティックトークンを使用して、プロジェクト固有の色とバリアントを適用します。
リファレンスファイル
| 用途 | 読む |
|---|---|
| コンポーネント選択、インストールコマンド、プロップ | references/component-catalogue.md |
| 完全なUIパターンの構築 | references/recipes.md |
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- jezweb
- リポジトリ
- jezweb/claude-skills
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/jezweb/claude-skills / ライセンス: MIT
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。