tailwind-variants について
Tailwind Variants を扱うコーディングエージェント向けのリファレンススキルです。レシピ、スロット、合成、クラス結合、メジャーバージョン移行を扱い、パッケージと Tailwind CSS の互換性も重視します。
主な機能
- 01バリアントと複合バリアントの指針
- 02スロットと複合スロット
- 03extend と VariantProps による合成
- 04クラス結合と競合解決
- 05標準版と lite 版の使い分け
- 06メジャーバージョン移行メモ
活用シーン
- 01バリアントによるコンポーネントスタイル定義
- 02再利用可能なスタイルレシピの合成
- 03ユーティリティクラスの競合解決
- 04Tailwind Variants のバージョン間移行
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ dobroslavradosavljevic/ skills --skill tailwind-variantsインストール後、Claude Code で/tailwind-variantsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/composition-typescript.mdproduction-migration.mdsetup-core.mdsource-map.mdvariants-slots.md詳細
Tailwind Variants
Tailwind Variants(tv、スロット、複合バリアント、extend、cn/cx/cnMerge、/lite、またはTVのメジャーバージョン間の移行)に関わる作業では、このスキルを使用してください。
ワークフロー
- コードを変更する前に、ローカルのスタイリング構成を確認します。
- パッケージ:
tailwind-variantsのバージョン、Tailwind CSS のメジャーバージョン(v4とv3)、tailwind-mergeを直接使用しているかどうか、Prettier Tailwind プラグイン。 - インポートパス:標準の
tailwind-variantsとtailwind-variants/liteのどちらか。 - 使用中のパターン:単一要素の
tv、スロット、extend、共有のcreateTV/defaultConfig、コンポーネントでのVariantProps。
- パッケージ:
- バージョンが不明な場合、またはマージ設定、Lite ビルド、メジャーアップグレードに関わる作業では、ドキュメントを更新します。source-map.md から確認を始めてください。
- インストール、標準ビルドとLiteビルドの違い、
cn/cnMerge/cx、設定については、setup-core.md を参照してください。 variants、ブール型/複合バリアント、スロット、compoundSlotsについては、variants-slots.md を参照してください。extend、オーバーライド、TypeScript のVariantProps、DXツールについては、composition-typescript.md を参照してください。- コンフリクト解決、カスタム
twMergeConfig、v0/v1/v2/v3 の移行については、production-migration.md を参照してください。
実装上の判断
- TV v3.x と Tailwind CSS v4.x を組み合わせてください。 プロジェクトがまだ Tailwind CSS v3 を使用している場合は、
tailwind-variantsv0.x を使用するか、先にTailwindをアップグレードしてください。 - デザインシステムの開発には、標準ビルド(
import { tv, cn } from 'tailwind-variants')を優先してください。/liteは、バンドルサイズが重要で、マージが不要な場合にのみ使用してください。 - v3.3.0以降では、コンフリクト解決が標準ビルドに組み込まれています。TVのためだけに
tailwind-mergeを必須にしないでください。アプリが直接呼び出す場合に限り、tailwind-mergeを残してください。スロットを使用する場合は、v3.3.1以降を固定してください(v3.3.0では、交互に実行された呼び出し間でスロットの状態が漏れていました)。 - 文字列を返すレシピには
slotsを指定しないでください。slots: {}を渡すとスロットモード(暗黙のbaseスロット)が有効になります。誤って空のスロットオブジェクトを指定しないようにしてください。 tvの結果をbase配列に文字列連結するのではなく、型付きの合成にはextendを優先してください。- 利用側でのオーバーライドには
class/classNameプロパティを使用し、マージが有効な場合はコンフリクト解決に任せてください。 - React/Vue のプロパティは
VariantProps<typeof recipe>で型付けしてください。デフォルト値が適切でない場合は、Omit/Requiredを使ってバリアントを必須にしてください。 - 削除済みの
responsiveVariantsは使用しないでください。レスポンシブプレフィックス(md:、lg:)は、クラス文字列自体に指定してください。 - 非推奨の
cnBaseよりcxを優先してください。結合後にマージする場合はcnを優先し、呼び出しごとにマージ設定を指定する場合にのみcnMergeを使用してください。
検証
リポジトリで既存のチェックを優先してください。Tailwind Variants に重要な変更を加える場合は、関連する項目を実施してください。
VariantProps、スロットの戻り値の形状、extendによるマージを対象とした型チェック。- 重要なバリアント/複合バリアントの組み合わせについて、レシピが出力する文字列を検証するユニットテスト(特にマージの有効/無効を確認)。
- オーバーライドしたスロットや合成コンポーネントのビジュアル/ブラウザーでのスモークテスト。
- 標準ビルドと
/liteを切り替える場合、または大規模なtwMergeConfigを追加する場合のバンドルチェック。 - エディターで
tv内のクラス補完が動作しなくなった場合は、IntelliSense/tailwindFunctions: ['tv']の動作を確認。
コメント
Markdown 対応