mcpField
D
design-tokens

design-tokens

github.com/laurigatesデザイン・UI5982 回インストール今日更新
リポジトリ

design-tokens について

CSS でデザイントークンシステムを構築する開発者向けのスキルです。トークン構成、テーマ切り替え、コンポーネントへの一貫した適用を扱います。

主な機能

  1. 01三層トークンアーキテクチャ
  2. 02CSS カスタムプロパティのパターン
  3. 03ライト・ダークテーマシステム
  4. 04コンポーネント単位のトークン適用
  5. 05Tailwind とフレームワークへの統合

活用シーン

  1. 01拡張性のあるデザイントークンシステムの構築
  2. 02ライトテーマとダークテーマの実装
  3. 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 を参照してください。

参考資料

コメント