mcpField
S
shadcn-migration

shadcn-migration

github.com/fusengine開発3443 回インストール2 週間前に更新
リポジトリ

shadcn-migration について

shadcn-migration は、shadcn/ui で Radix UI と Base UI のプリミティブを移行するためのガイドで、関連する CLI 移行コマンドも扱います。React コンポーネントを保守する開発者向けに、移行順序、API 対応表、検証項目を示します。

主な機能

  1. 01Radix UI と Base UI の移行ガイド
  2. 02移行前チェックとコンポーネント調査
  3. 03複雑さに応じた移行順序
  4. 04プリミティブ API 対応表
  5. 05CLI 移行コマンドの案内
  6. 06移行後の検証チェックリスト

活用シーン

  1. 01コンポーネントのプリミティブを Radix UI から Base UI に移行
  2. 02プロジェクトを Radix UI に戻す
  3. 03アイコンや RTL の移行を実行
  4. 04コンポーネント単位で移行してテストを確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/fusengine/agents --skill shadcn-migration

インストール後、Claude Code で/shadcn-migrationを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
baseui-to-radix.md
radix-to-baseui.md
references/templates/
migration-dialog.md

詳細

shadcn/ui の Radix UI と Base UI のプリミティブ間を移行する手順ガイドです(3 つ目の基盤である React Aria には、文書化された移行手順がありません)。CLI による移行(`migrate radix|cn|rtl|icons|base-color`)も扱います。移行前のチェックリスト(検出、バックアップブランチ、コンポーネントの一覧作成)、移行順序(最初にリーフコンポーネントの Tooltip/Switch/Checkbox、次に Accordion/Tabs、最後に Dialog/Select/Popover/Menu)、API 変換表(`asChild`→`render`、`DialogContent`→`Dialog.Popup`、`data-state`→`data-[open]` など)、移行後の検証チェックリストを含みます。

shadcn の移行

エージェントのワークフロー(必須)

移行前に、name を指定して Agent を 1 回ずつ呼び出し、エージェントを並行して起動してください。

  1. fuse-ai-pilot:explore-codebase - 影響を受けるすべてのコンポーネントを一覧化します
  2. fuse-ai-pilot:research-expert - Context7 を通じて移行パターンを確認します

移行後は、検証のために fuse-ai-pilot:sniper を実行してください。


概要

機能説明
Radix -> Base UI任意:2026 年 7 月以降、新規プロジェクトでは Base UI がデフォルトです。Radix は非推奨ではありません
Base UI -> RadixRadix 基盤に移行します(引き続き完全にサポートされています)
React Aria3 つ目の基盤(aria-*、2026 年 7 月)。ここへの、またはここからの移行手順は文書化されていません。「既存のプロジェクトは現在の基盤を使い続けます」
API マッピング完全な変換表
検証移行後のチェックリスト
公式の移行ツール
必要な作業コマンド/ツール参照元
Radix -> Base UI、コンポーネント単位npx skills add shadcn/ui を実行し、エージェントに「migrate accordion to base-ui」と依頼します(段階的に、コンポーネントごとに 1 つのコミットで進行し、.migration/<component>.md に報告します)changelog 2026-07-base-ui-default
@radix-ui/react-* -> 統合された radix-ui{runner} shadcn@latest migrate radix [path]/docs/cli#migrate-radix
clsx + tailwind-merge -> cn パッケージ{runner} shadcn@latest migrate cn [path](マージエンジンの対象は tailwind-merge v3 と同様に Tailwind v4 です。Tailwind v3 では tailwind-merge v2 を維持してください。clsx のみの移行は安全で、components.json は不要です)/docs/cli#migrate-cn
物理クラス -> 論理クラス(RTL){runner} shadcn@latest migrate rtl [path]/docs/cli#migrate-rtl
アイコンライブラリの切り替え{runner} shadcn@latest migrate icons --from lucide --to phosphor/docs/cli#migrate-icons
ベースカラーの切り替え{runner} shadcn@latest migrate base-color --to zinc/docs/cli#migrate-base-color
非対話型 CI の初期化で Radix を維持{runner} shadcn@latest init -b radix(現在のデフォルト基盤は base です)changelog 2026-07-base-ui-default

{runner} shadcn@latest migrate --list を実行すると、利用可能な移行が表示されます(CLI 4.21.0:cn、icons、base-color、radix、rtl)。

重要なルール

  1. 移行を開始する前に、必ず検出を実行してください
  2. 移行前に、必ずバックアップブランチを作成してください
  3. 一度に移行するコンポーネントタイプは 1 つにしてください
  4. JSX の変更に合わせて、CSS セレクターも更新してください
  5. 各コンポーネントの移行後に、テストを実行してください

アーキテクチャ

Migration order (leaf components first):
1. Tooltip, Switch, Checkbox (simple)
2. Accordion, Tabs (medium)
3. Dialog, Select, Popover, Menu (complex)

-> 完全な例については、migration-dialog.md を参照してください


移行前のチェックリスト

[ ] Run shadcn-detection to confirm current primitive
[ ] Create backup branch (git checkout -b pre-migration)
[ ] Inventory all affected files (Grep for imports)
[ ] Review component-specific API changes
[ ] Plan migration order (leaf components first)

移行ワークフロー

1. DETECT  -> Run shadcn-detection skill
2. BACKUP  -> Create git branch
3. INVENTORY -> List all affected components
4. TRANSFORM -> Apply API changes per component
5. VALIDATE -> Run tests + sniper check

主な API の変更点

項目RadixBase UI
コンポジションasChildrender prop
ダイアログのコンテンツ(プリミティブ)Dialog.ContentDialog.Popup(shadcn のラッパーでは DialogContent を維持)
ダイアログのオーバーレイ(プリミティブ)Dialog.OverlayDialog.Backdrop(ラッパーでは DialogOverlay を維持)
位置指定組み込み個別の Positioner
アコーディオンの本文(プリミティブ)Accordion.ContentAccordion.Panel(ラッパーでは AccordionContent を維持)
アコーディオンの単一/複数選択type="single" collapsible / type="multiple"defaultValue={[...]} / multiple
生のデータ属性data-state="open"data-open(Tailwind の data-open: バリアントは両方に一致)
パッケージradix-ui(または旧式の @radix-ui/react-*)単一の @base-ui/react
components.json のスタイルradix-*(旧式の new-york)base-*

ベストプラクティス

すること
  • コンポーネントの種類ごとに順番に移行します
  • 各コンポーネントの移行後にテストを実行します
  • JSX とともに CSS セレクターも更新します
  • 移行後、使用されていない Radix パッケージを削除します
しないこと
  • すべてのコンポーネントを一度に移行しません
  • 検出の手順を省略しません
  • 本番環境で API が混在した状態を放置しません
  • データ属性の CSS セレクターの更新を忘れません

リファレンスガイド

概念
トピックリファレンス参照するタイミング
Radix -> Base UIradix-to-baseui.mdRadix から移行するとき
Base UI -> Radixbaseui-to-radix.mdRadix へ移行するとき
テンプレート
テンプレート使用するタイミング
migration-dialog.md移行の完全な例

コメント