design-system について
製品間で一貫したビジュアル基盤を構築するチーム向けのデザインシステムスキルです。トークン、テーマ、コンポーネントパターン、アクセシビリティ、ガバナンスを扱います。
主な機能
- 01階層型デザイントークン構成
- 02ダークモードとマルチブランドテーマ
- 03コンポーネント API パターン
- 04アクセシビリティの実践
- 05トークンとコンポーネントのガバナンス
- 06デザインシステムのツール案内
活用シーン
- 01ハードコードされたスタイルのトークン化
- 02ダークモードやブランドテーマの計画
- 03コンポーネントのアクセシビリティ確認
- 04Storybook でのコンポーネント文書化
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ oakoss/ agent-skills --skill design-systemインストール後、Claude Code で/design-systemを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/accessibility.mdcolor-and-typography.mdcomponent-architecture.mddesign-tokens.mdgovernance.mdmotion-and-layout.mdtheming.mdtooling.mdtroubleshooting.md詳細
デザインシステム
概要
規模が大きくなっても視覚的な一貫性を保つための唯一の信頼できる情報源であり、デザインとエンジニアリングの共通言語です。トークンのアーキテクチャ、テーマ設定のインフラストラクチャ、コンポーネント API のパターン、アクセシビリティへの準拠、ガバナンスのワークフローを網羅します。
デザインシステムは、単なるコンポーネントライブラリではありません。トークン、パターン、ドキュメント、コントリビューションのプロセスを統合することで、チームが一度構築すれば一度の保守で済むようにします。
クイックリファレンス
| 領域 | パターン | 主なポイント |
|---|---|---|
| トークンの階層構造 | プリミティブ > セマンティック > コンポーネント | コンポーネント内でプリミティブを直接参照せず、テーマ設定可能なセマンティックレイヤーを使います |
| ダークモード | data-theme でセマンティックトークンを切り替える | 真っ白/真っ黒ではなく、オフホワイト/ダークグレーを使います |
| マルチブランドのテーマ設定 | ブランドごとにセマンティックトークンをオーバーライドする | 実行時に CSS カスタムプロパティで適用します |
| Tailwind v4 | CSS 内の @theme ブロック(設定ファイル不要) | CSS ファーストの設定により tailwind.config.js を置き換えます |
| CVA バリアント | バリアントとサイズの組み合わせに cva() を使う | VariantProps で型安全にし、cn() ユーティリティと組み合わせます |
| 複合コンポーネント | Modal.Header、Modal.Body のサブパーツ | 設定よりコンポジションを優先し、暗黙的な状態には共有コンテキストを使います |
| ヘッドレス UI | Radix プリミティブ + Tailwind クラス | アクセシビリティは組み込み済みで、スタイルは独自に用意します |
| フォーカス管理 | すべてのコントロールに focus-visible:ring-2 を設定 | 2px のソリッドアウトラインにオフセットを付け、キーボード操作時のみ表示します |
| モーションの低減 | prefers-reduced-motion メディアクエリ | すべてのトランジションとアニメーションの時間をほぼゼロにします |
| Style Dictionary | JSON トークンを CSS/iOS/Android に変換 | outputReferences: true でトークンの参照チェーンを維持します |
| Storybook | ストーリー + autodocs + a11y アドオン | アクセシビリティ監査を組み込んだ視覚的なドキュメントを提供します |
| ガバナンス | トークンとコンポーネントにセマンティックバージョニングを適用 | 破壊的変更 = props/トークンの削除、マイナー変更 = 新規追加 |
よくある間違い
| 間違い | 正しいパターン |
|---|---|
コンポーネントでプリミティブトークンを使う(blue-500) | プリミティブにマッピングされるセマンティックトークン(interactive-primary)を参照します |
| インタラクティブ要素のフォーカス状態を省略する | すべてのボタン、リンク、入力欄に focus-visible:ring-2 を追加します |
本文のテキストに gray-400 を設定する | WCAG AA のコントラスト比 4.5:1 を満たすため、gray-600 以上の暗さを使います |
| レイヤー間でトークンを循環参照させる | トークンはプリミティブ > セマンティック > コンポーネントの一方向に流します |
prefers-reduced-motion を無視する | すべてのアニメーションをモーション低減用メディアクエリで囲みます |
ホバー時に scale() 変換を使う | レイアウトシフトを避けるため、translateY(-1px) とシャドウの変更を使います |
| コンポーネントファイルに HEX/px 値をハードコードする | すべての視覚的な値はセマンティックトークンまたはコンポーネントトークンから取得します |
| テーマのオーバーライドで CSS を深くネストする | セマンティックレイヤーで CSS カスタムプロパティをオーバーライドします |
| ページ読み込み時にテーマがちらつく(FOUC) | body のレンダリング前に、同期的なテーマスクリプトを <head> に挿入します |
| レイヤーのないフラットなトークン一覧を使う | プリミティブ、セマンティック、コンポーネントの階層に整理します |
委任
- トークンにすべきハードコード値をコードベースで監査する:
Exploreエージェントを使用します - コンポーネントライブラリをトークンベースのデザインシステムに移行する:
Taskエージェントを使用します - マルチブランドのテーマアーキテクチャを計画する:
Planエージェントを使用します - コンポーネント全体のアクセシビリティ準拠状況をレビューする:
Taskエージェントを使用します
motionスキルが利用可能な場合は、アニメーショントークンの統合とモーションデザインパターンを委任してください。
参考資料
- デザイントークン — 3 層の階層、CSS カスタムプロパティ、TypeScript 定義、命名規則
- テーマ設定 — ダークモード、テーマプロバイダー、マルチブランド、Tailwind v4、SSR のちらつき防止
- カラーとタイポグラフィ — 60-30-10 ルール、コントラスト要件、タイプスケール、流動的なタイポグラフィ
- コンポーネントアーキテクチャ — CVA バリアント、複合コンポーネント、ヘッドレス UI、多態的なレンダリング
- アクセシビリティ — WCAG 準拠、キーボードナビゲーション、ARIA パターン、スクリーンリーダーのテスト
- モーションとレイアウト — アニメーショントークン、動きを抑える設定、スペーシンググリッド、エレベーションシステム
- ツール — Style Dictionary、Storybook、コンポーネントテスト、ビジュアルリグレッション
- ガバナンス — バージョン管理、非推奨化、貢献ワークフロー、コンポーネントのライフサイクル
- トラブルシューティング — よくある問題、ダークモードの修正、トークンの乱立、納品前チェックリスト
コメント
Markdown 対応