design-tokens について
CSS でデザイントークンシステムを構築する開発者向けのスキルです。トークン構成、テーマ切り替え、コンポーネントへの一貫した適用を扱います。
主な機能
- 01三層トークンアーキテクチャ
- 02CSS カスタムプロパティのパターン
- 03ライト・ダークテーマシステム
- 04コンポーネント単位のトークン適用
- 05Tailwind とフレームワークへの統合
活用シーン
- 01拡張性のあるデザイントークンシステムの構築
- 02ライトテーマとダークテーマの実装
- 03複数のスタイルシートにまたがる CSS 変数の整理
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ laurigates/ claude-plugins --skill design-tokensインストール後、Claude Code で/design-tokensを入力して読み込まれたか確認します。
同梱ファイルREFERENCE.md
詳細
デザイントークン
デザイントークンのアーキテクチャ、CSS カスタムプロパティ、テーマシステムの実装。
このスキルを使う場面
| このスキルを使う場面... | 代わりに別のスキルを使う場面... |
|---|---|
| デザイントークンシステムを設定する | 個々のコンポーネントのスタイルを書く |
| ライト/ダークテーマの切り替えを実装する | アクセシビリティを監査する(アクセシビリティ関連のスキルを使う) |
| CSS カスタムプロパティを整理する | CSS レイアウトやレスポンシブデザインに取り組む |
| トークンを Tailwind/フレームワークと統合する | フレームワーク固有のコンポーネントパターンを使う |
主な専門分野
- トークンアーキテクチャ:拡張性を考慮したデザイントークンの整理
- CSS カスタムプロパティ:変数のパターンと継承
- テーマシステム:ライト/ダークモード、ユーザー設定
- コンポーネントとの統合:トークンの一貫した適用
トークン構造
3 層アーキテクチャ
/* 1. Primitive tokens (raw values) */
:root {
--color-blue-50: #eff6ff;
--color-blue-100: #dbeafe;
--color-blue-500: #3b82f6;
--color-blue-600: #2563eb;
--color-blue-700: #1d4ed8;
--spacing-1: 0.25rem;
--spacing-2: 0.5rem;
--spacing-4: 1rem;
--spacing-8: 2rem;
--font-size-sm: 0.875rem;
--font-size-base: 1rem;
--font-size-lg: 1.125rem;
}
/* 2. Semantic tokens (purpose-based) */
:root {
--color-primary: var(--color-blue-600);
--color-primary-hover: var(--color-blue-700);
--color-background: white;
--color-surface: var(--color-gray-50);
--color-text: var(--color-gray-900);
--color-text-muted: var(--color-gray-600);
--spacing-component: var(--spacing-4);
--spacing-section: var(--spacing-8);
}
/* 3. Component tokens (specific usage) */
.button {
--button-padding-x: var(--spacing-4);
--button-padding-y: var(--spacing-2);
--button-bg: var(--color-primary);
--button-bg-hover: var(--color-primary-hover);
--button-text: white;
padding: var(--button-padding-y) var(--button-padding-x);
background: var(--button-bg);
color: var(--button-text);
}
.button:hover {
background: var(--button-bg-hover);
}
トークンのカテゴリ
:root {
/* Colors */ --color-{name}-{shade}: value;
/* Typography */ --font-family-{name}: value;
--font-size-{name}: value;
--font-weight-{name}: value;
--line-height-{name}: value;
/* Spacing */ --spacing-{scale}: value;
/* Borders */ --border-width-{name}: value;
--border-radius-{name}: value;
/* Shadows */ --shadow-{name}: value;
/* Transitions */ --duration-{name}: value;
--easing-{name}: value;
/* Z-index */ --z-{name}: value;
}
テーマの実装
ライト/ダークモード
/* Default (light) theme */
:root {
--color-background: #ffffff;
--color-surface: #f9fafb;
--color-text: #111827;
--color-text-muted: #6b7280;
--color-border: #e5e7eb;
}
/* Dark theme */
[data-theme="dark"] {
--color-background: #111827;
--color-surface: #1f2937;
--color-text: #f9fafb;
--color-text-muted: #9ca3af;
--color-border: #374151;
}
/* System preference */
@media (prefers-color-scheme: dark) {
:root:not([data-theme="light"]) {
--color-background: #111827;
--color-surface: #1f2937;
--color-text: #f9fafb;
--color-text-muted: #9ca3af;
--color-border: #374151;
}
}
ファイル構成
推奨構成
styles/
├── tokens/
│ ├── primitives.css # Raw values
│ ├── semantic.css # Purpose-based tokens
│ └── index.css # Combines all tokens
├── themes/
│ ├── light.css # Light theme overrides
│ └── dark.css # Dark theme overrides
├── base/
│ ├── reset.css # CSS reset
│ └── typography.css # Base typography
└── components/
├── button.css
└── card.css
コンポーネントとの統合
コンポーネントレベルのトークン
/* Card component with local tokens */
.card {
--card-padding: var(--spacing-4, 1rem);
--card-radius: var(--border-radius-lg, 0.5rem);
--card-shadow: var(--shadow-md);
--card-bg: var(--color-surface);
--card-border: var(--color-border);
padding: var(--card-padding);
border-radius: var(--card-radius);
box-shadow: var(--card-shadow);
background: var(--card-bg);
border: 1px solid var(--card-border);
}
/* Variant via token override */
.card--elevated {
--card-shadow: var(--shadow-lg);
}
.card--outlined {
--card-shadow: none;
--card-border: var(--color-border-strong);
}
エージェント向けの最適化
| コンテキスト | コマンド |
|---|---|
| すべての CSS 変数を検索する | grep -r '--[a-z]' styles/ --include='*.css' |
| トークンの使用状況を確認する | grep -r 'var(--color-primary)' src/ --include='*.css' --include='*.tsx' |
| ハードコードされた色を検索する | grep -rn '#[0-9a-fA-F]\{3,8\}' src/ --include='*.css' |
| すべてのトークンファイルを一覧表示する | find styles/tokens -name '*.css' |
| CSS の構文を検証する | npx stylelint 'styles/**/*.css' |
詳しい例、高度なパターン、ベストプラクティスについては、REFERENCE.md を参照してください。
参考資料
- CSS カスタムプロパティ:https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_cascading_variables
- デザイントークン形式:https://design-tokens.github.io/community-group/format/
- Style Dictionary:https://styledictionary.com/
- Tailwind CSS:https://tailwindcss.com/docs/customizing-colors
コメント
Markdown 対応