shadcn について
shadcn/ui を使う開発者向けに、コミュニティが管理するベストプラクティスガイドです。セットアップ、コンポーネント構成、アクセシビリティ、フォーム、スタイル、データ表示を優先度別に扱います。
主な機能
- 0110カテゴリにわたる優先度付き58ルール
- 02プロジェクト設定とコンポーネント設計の指針
- 03アクセシビリティ、スタイル、テーマの指針
- 04フォームとデータ表示のパターン
活用シーン
- 01プロジェクトでの shadcn/ui の設定
- 02アクセシブルなコンポーネントやフォームの構築
- 03テーマとダークモードのカスタマイズ
- 04テーブルや大規模データの表示
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill shadcnインストール後、Claude Code で/shadcnを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
AGENTS.mdmetadata.jsonREADME.mdassets/templates/_template.mdreferences/_sections.mdally-aria-invalid-errors.mdally-checkbox-label-association.mdally-dialog-title-required.mdally-ensure-color-contrast.mdally-focus-visible-styles.mdally-form-field-labels.mdally-maintain-focus-management.mdally-preserve-aria-attributes.mdally-preserve-keyboard-navigation.mdally-provide-sr-only-labels.mdarch-extend-variants-with-cva.mdarch-forward-refs-for-composable-components.mdarch-isolate-component-variants.mdarch-preserve-radix-primitive-structure.mdarch-use-asChild-for-custom-triggers.mdarch-use-cn-for-class-merging.mdcomp-combine-command-with-popover.mdcomp-compose-with-compound-components.mdcomp-create-reusable-form-fields.mdcomp-nest-dialogs-correctly.mdcomp-use-drawer-for-mobile-modals.mdcomp-use-slot-pattern-for-flexibility.mddata-empty-states-with-guidance.mddata-paginate-server-side.mddata-use-skeleton-loading-states.md詳細
shadcn/ui コミュニティのベストプラクティス
shadcn/ui コミュニティが管理する、shadcn/ui アプリケーション向けの包括的なベストプラクティスガイドです。影響度に基づいて優先順位付けされた10カテゴリ、58のルールが含まれており、自動リファクタリングとコード生成を支援します。
適用するタイミング
次のような場合に、このガイドラインを参照してください。
- プロジェクトに shadcn/ui をインストールして設定するとき
- 新しい shadcn/ui コンポーネントを作成したり、プリミティブを組み合わせたりするとき
- React Hook Form と Zod のバリデーションを使ってフォームを実装するとき
- データテーブルを構築したり、大規模なデータセットの表示を処理したりするとき
- テーマをカスタマイズしたり、ダークモードのサポートを追加したりするとき
- アクセシビリティへの準拠を確認するためにコードをレビューするとき
優先度別のルールカテゴリ
| 優先度 | カテゴリ | 影響度 | プレフィックス |
|---|---|---|---|
| 1 | CLI とプロジェクトのセットアップ | CRITICAL | setup- |
| 2 | コンポーネントアーキテクチャ | CRITICAL | arch- |
| 3 | アクセシビリティの維持 | CRITICAL | ally- |
| 4 | スタイリングとテーマ設定 | HIGH | style- |
| 5 | フォームのパターン | HIGH | form- |
| 6 | データ表示 | MEDIUM-HIGH | data- |
| 7 | レイアウトとナビゲーション | MEDIUM | layout- |
| 8 | コンポーネントの合成 | MEDIUM | comp- |
| 9 | パフォーマンスの最適化 | MEDIUM | perf- |
| 10 | 状態管理 | LOW-MEDIUM | state- |
クイックリファレンス
1. CLI とプロジェクトのセットアップ(CRITICAL)
setup-components-json- コンポーネントを追加する前に components.json を設定しますsetup-path-aliases- components.json に合わせて TypeScript のパスエイリアスを設定しますsetup-cn-utility- コンポーネントを使用する前に cn ユーティリティを作成しますsetup-use-cli-not-copy- コピー&ペーストではなく CLI を使ってコンポーネントを追加しますsetup-css-variables-theme- 一貫したテーマ設定のために CSS 変数を有効にしますsetup-rsc-configuration- フレームワークのサポート状況に応じて RSC フラグを設定します
2. コンポーネントアーキテクチャ(CRITICAL)
arch-use-asChild-for-custom-triggers- カスタムのトリガー要素には asChild プロパティを使用しますarch-preserve-radix-primitive-structure- Radix の複合コンポーネントの階層構造を維持しますarch-extend-variants-with-cva- 型安全なバリアントには Class Variance Authority を使用しますarch-use-cn-for-class-merging- Tailwind のクラスを安全にマージするには cn() ユーティリティを使用しますarch-forward-refs-for-composable-components- フォームやフォーカスとの連携のために ref を転送しますarch-isolate-component-variants- ベーススタイルとバリアント固有のスタイルを分離します
3. アクセシビリティの維持(重要)
ally-preserve-aria-attributes- Radix の ARIA 属性をそのまま維持しますally-provide-sr-only-labels- アイコンボタンにスクリーンリーダー用のラベルを追加しますally-maintain-focus-management- モーダルのフォーカストラップを維持しますally-preserve-keyboard-navigation- WAI-ARIA のキーボード操作パターンを維持しますally-ensure-color-contrast- WCAG のカラーコントラスト比を維持しますally-dialog-title-required- スクリーンリーダー向けに、必ず DialogTitle を含めますally-form-field-labels- ラベルをフォームコントロールに関連付けますally-aria-invalid-errors- フォームのエラー状態には aria-invalid を使用しますally-checkbox-label-association- クリック可能な領域を広げるため、Checkbox を Label で囲みますally-focus-visible-styles- キーボード操作用のフォーカス表示スタイルを維持します
4. スタイリングとテーマ設定(高)
style-use-css-variables-for-theming- テーマカラーには CSS 変数を使用しますstyle-avoid-important-overrides- スタイルの上書きに !important は使用しないでくださいstyle-use-tailwind-theme-extend- デザイントークンに合わせて Tailwind のテーマを拡張しますstyle-consistent-spacing-scale- Tailwind のスペーシングスケールを一貫して使用しますstyle-responsive-design-patterns- モバイルファーストのレスポンシブデザインを適用しますstyle-dark-mode-support- CSS 変数を使ってダークモードに対応します
5. フォームのパターン(高)
form-use-react-hook-form-integration- React Hook Form と連携しますform-use-zod-for-schema-validation- 型安全なバリデーションには Zod を使用しますform-show-validation-errors-correctly- 適切なタイミングでエラーを表示しますform-handle-async-validation- 非同期バリデーションの呼び出しをデバウンスしますform-reset-form-state-correctly- 送信後にフォームの状態をリセットします
6. データ表示(中〜高)
data-use-tanstack-table-for-complex-tables- 並べ替えやフィルタリングには TanStack Table を使用しますdata-virtualize-large-lists- 100 件を超えるリストを仮想化しますdata-use-skeleton-loading-states- 読み込み状態には Skeleton を使用しますdata-paginate-server-side- 大規模なデータセットをサーバー側でページネーションしますdata-empty-states-with-guidance- 次の操作につながる案内を空の状態に表示します
7. レイアウトとナビゲーション(中)
layout-sidebar-provider- レイアウトを SidebarProvider で囲みますlayout-sidebar-collapsible- サイドバーの折りたたみ動作を設定しますlayout-sidebar-groups- グループを使ってサイドバーのナビゲーションを整理しますlayout-sheet-mobile-nav- モバイルのナビゲーションオーバーレイには Sheet を使用しますlayout-breadcrumb-navigation- 階層の深いナビゲーションにはパンくずリストを実装します
8. コンポーネントの組み合わせ(中)
comp-compose-with-compound-components- 複合コンポーネントのパターンを使用するcomp-use-drawer-for-mobile-modals- モバイルデバイスでは Drawer を使用するcomp-combine-command-with-popover- Command で検索可能なセレクトを作成するcomp-nest-dialogs-correctly- ネストされたダイアログのフォーカスを適切に管理するcomp-create-reusable-form-fields- 再利用可能なフォームフィールドコンポーネントを抽出するcomp-use-slot-pattern-for-flexibility- 柔軟なコンテンツのためにスロットパターンを使用する
9. パフォーマンスの最適化(中)
perf-lazy-load-heavy-components- 50KB を超えるコンポーネントを遅延読み込みするperf-memoize-expensive-renders- リスト項目や処理コストの高いコンポーネントをメモ化するperf-optimize-icon-imports- Lucide アイコンを直接インポートするperf-avoid-unnecessary-rerenders-in-forms- フォームフィールドの監視を分離するperf-debounce-search-inputs- 検索やフィルターの入力にデバウンスを適用する
10. 状態管理(低〜中)
state-prefer-uncontrolled-for-simple-inputs- シンプルなフォームでは非制御コンポーネントを使用するstate-lift-state-to-appropriate-level- 状態を最も近い共通の祖先まで引き上げるstate-use-controlled-dialog-state- プログラムからアクセスできるようにダイアログを制御するstate-colocate-state-with-components- 状態を使用する場所の近くに置く
使用方法
詳しい説明とコード例については、個々のリファレンスファイルをお読みください。
- セクションの定義 - カテゴリーの構成と影響度
- ルールのテンプレート - 新しいルールを追加するためのテンプレート
コンパイル済みドキュメント全文
すべてのルールを含む単一ファイルのリファレンスについては、AGENTS.md をご覧ください。
リファレンスファイル
| ファイル | 説明 |
|---|---|
| AGENTS.md | すべてのルールを含む完全なコンパイル済みガイド |
| references/_sections.md | カテゴリーの定義と順序 |
| assets/templates/_template.md | 新しいルール用のテンプレート |
| metadata.json | バージョンとリファレンス情報 |
コメント
Markdown 対応