mcpField
U
ui-design-system

ui-design-system

github.com/pixel-process-ugデザイン・UI387 回インストール33 週間前に更新
リポジトリ

ui-design-system について

ui-design-systemは、デザインシステムの構築と保守を支援するスキルガイドで、デザインやフロントエンド開発に向いています。階層化したデザイントークンを軸に、コンポーネント構成、テーマ、レスポンシブ設計を扱い、各段階でレビューを促します。

主な機能

  1. 01プリミティブ・セマンティック・コンポーネントのトークン階層
  2. 02アトムからテンプレートまでの構成
  3. 03Tailwind CSS v4の設定パターン
  4. 04トークン切り替えによるライト・ダークテーマ
  5. 05ブレークポイントとコンテナクエリ
  6. 06アクセシビリティと設計システムのチェックリスト

活用シーン

  1. 01新規プロジェクトのトークン階層設計
  2. 02既存システムへのダークテーマ追加
  3. 03コンポーネント階層と構成の計画
  4. 04レスポンシブ対応とアクセシビリティの確認

インストール

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

$npx skills add https://github.com/pixel-process-ug/superkit-agents --skill ui-design-system

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

詳細

UI デザインシステム

概要

トークンファーストのアーキテクチャで、拡張性の高いデザインシステムを構築・保守します。このスキルでは、プリミティブデザイントークンからセマンティックマッピング、テーマ対応のコンポーネントライブラリまでの全パイプラインを扱い、Tailwind CSS v4、CSS カスタムプロパティ、レスポンシブデザインパターンに関する深い専門知識を活用します。

フェーズ 1:トークンの基盤

  1. 既存のデザインアセット(色、フォント、間隔、シャドウ)を監査します
  2. プリミティブトークン(セマンティックな意味を持たない生の値)を定義します
  3. セマンティックトークンレイヤーを作成します(プリミティブを意図に対応付けます)
  4. コンポーネントトークンレイヤーを構築します(セマンティクスをコンポーネントの各部分に対応付けます)

STOP — コンポーネントの構築前に、トークン階層をユーザーに提示してレビューを受けてください。

トークンレイヤーの選択表
レイヤー目的命名規則例
プリミティブ生の値、信頼できる唯一の情報源--color-blue-500、--space-4oklch(0.55 0.18 250)
セマンティック目的や意図に対応付ける--action-primary、--text-secondaryvar(--color-blue-600)
コンポーネント特定のコンポーネントにスコープを限定--button-height-md、--card-radiusvar(--space-4)
各レイヤーを作成するタイミング
状況必要なレイヤー
新規プロジェクト3 つすべて(プリミティブ + セマンティック + コンポーネント)
既存プロジェクトにダークモードを追加セマンティック + コンポーネント(プリミティブを再マッピング)
ブランドカラーを更新プリミティブのみ(セマンティック/コンポーネントは自動更新)
新しいコンポーネントを追加コンポーネントのみ(既存のセマンティックを参照)
@theme を使った Tailwind プロジェクト@theme でプリミティブ、CSS 変数でセマンティック

フェーズ 2:トークンの実装

レベル 1:プリミティブトークン

体系的な命名による生の値です。すべての値の信頼できる唯一の情報源です。

/* Colors — using OKLCH for perceptual uniformity */
--color-blue-50: oklch(0.97 0.01 250);
--color-blue-100: oklch(0.93 0.03 250);
--color-blue-500: oklch(0.55 0.18 250);
--color-blue-900: oklch(0.25 0.10 250);

/* Spacing — 4px base unit */
--space-1: 0.25rem;   /* 4px */
--space-2: 0.5rem;    /* 8px */
--space-3: 0.75rem;   /* 12px */
--space-4: 1rem;      /* 16px */
--space-6: 1.5rem;    /* 24px */
--space-8: 2rem;      /* 32px */
--space-12: 3rem;     /* 48px */
--space-16: 4rem;     /* 64px */

/* Typography */
--font-sans: 'Inter', system-ui, sans-serif;
--font-mono: 'Geist Mono', monospace;
--font-size-xs: 0.75rem;
--font-size-sm: 0.875rem;
--font-size-base: 1rem;
--font-size-lg: 1.125rem;
--font-size-xl: 1.25rem;
--font-size-2xl: 1.5rem;
--font-size-3xl: 1.875rem;
--font-size-4xl: 2.25rem;

/* Line Heights */
--leading-tight: 1.25;
--leading-normal: 1.5;
--leading-relaxed: 1.75;

/* Border Radius */
--radius-sm: 0.25rem;
--radius-md: 0.375rem;
--radius-lg: 0.5rem;
--radius-xl: 0.75rem;
--radius-2xl: 1rem;
--radius-full: 9999px;

/* Shadows */
--shadow-sm: 0 1px 2px 0 oklch(0 0 0 / 0.05);
--shadow-md: 0 4px 6px -1px oklch(0 0 0 / 0.1);
--shadow-lg: 0 10px 15px -3px oklch(0 0 0 / 0.1);
レベル 2:セマンティックトークン

プリミティブを目的に対応付けます。コンポーネントはこれらを参照します。

/* Surface */
--surface-primary: var(--color-white);
--surface-secondary: var(--color-gray-50);
--surface-elevated: var(--color-white);
--surface-overlay: oklch(0 0 0 / 0.5);

/* Text */
--text-primary: var(--color-gray-900);
--text-secondary: var(--color-gray-600);
--text-tertiary: var(--color-gray-400);
--text-inverse: var(--color-white);
--text-link: var(--color-blue-600);

/* Action */
--action-primary: var(--color-blue-600);
--action-primary-hover: var(--color-blue-700);
--action-secondary: var(--color-gray-100);
--action-danger: var(--color-red-600);

/* Border */
--border-default: var(--color-gray-200);
--border-strong: var(--color-gray-300);
--border-focus: var(--color-blue-500);

/* Status */
--status-success: var(--color-green-600);
--status-warning: var(--color-amber-500);
--status-error: var(--color-red-600);
--status-info: var(--color-blue-600);
レベル 3:コンポーネントトークン

特定のコンポーネントにスコープを限定します。

/* Button */
--button-height-sm: 2rem;
--button-height-md: 2.5rem;
--button-height-lg: 3rem;
--button-padding-x: var(--space-4);
--button-radius: var(--radius-md);
--button-font-weight: 500;

/* Input */
--input-height: 2.5rem;
--input-padding-x: var(--space-3);
--input-border: var(--border-default);
--input-border-focus: var(--border-focus);
--input-radius: var(--radius-md);

/* Card */
--card-padding: var(--space-6);
--card-radius: var(--radius-xl);
--card-shadow: var(--shadow-sm);
--card-border: var(--border-default);

フェーズ 3:コンポーネントアーキテクチャ

  1. アトミックコンポーネント(Button、Input、Badge、Avatar)を特定します
  2. モレキュールコンポーネント(FormField、SearchBar、Card)を定義します
  3. オーガニズムコンポーネント(Header、Sidebar、DataTable)を構築します
  4. コンポジションパターン(レイアウト、ページテンプレート)を確立します

STOP — バリアントの構築前に、コンポーネント一覧を提示してレビューを受けてください。

コンポーネントの複雑さに関する選択表
レベルコンポーネント構成
アトムButton、Input、Badge、Avatar、Icon子要素のない単一要素
モレキュールFormField、SearchBar、Card、Tooltip2~3 個のアトムを組み合わせる
オーガニズムHeader、Sidebar、DataTable、Modal複数のモレキュール
テンプレートDashboardLayout、AuthLayoutページレベルの構成
バリアントパターン(CVA または Tailwind Variants を使用)
const buttonVariants = cva("inline-flex items-center justify-center rounded-md font-medium", {
  variants: {
    variant: {
      primary: "bg-action-primary text-white hover:bg-action-primary-hover",
      secondary: "bg-action-secondary text-text-primary hover:bg-gray-200",
      ghost: "hover:bg-action-secondary",
      danger: "bg-action-danger text-white hover:bg-red-700",
    },
    size: {
      sm: "h-8 px-3 text-sm",
      md: "h-10 px-4 text-sm",
      lg: "h-12 px-6 text-base",
    },
  },
  defaultVariants: {
    variant: "primary",
    size: "md",
  },
});
コンポジションパターン
  • 複雑な UI(Tabs、Accordion、Combobox)には複合コンポーネントを使用します
  • 柔軟なレイアウトにはスロットベースのコンポジションを使用します
  • 最大限にカスタマイズできるよう、レンダープロップを使用します
  • DOM にアクセスできるよう、ref をフォワードします

フェーズ 4:テーマ設定とレスポンシブ対応

  1. トークンの切り替えによってライト/ダークテーマを実装します
  2. コンテナクエリを使ったブレークポイントシステムを定義します
  3. レスポンシブなコンポーネントバリアントを構築します
  4. さまざまなビューポートとカラースキームでテストします

STOP — 完了を宣言する前に、テーマの切り替えが正しく動作することを確認してください。

Tailwind CSS v4 の設定
/* app.css — Tailwind v4 uses CSS-based config */
@import "tailwindcss";

@theme {
  --color-primary-50: oklch(0.97 0.01 250);
  --color-primary-500: oklch(0.55 0.18 250);
  --color-primary-600: oklch(0.48 0.18 250);
  --color-primary-700: oklch(0.40 0.18 250);

  --font-sans: 'Inter', system-ui, sans-serif;
  --font-mono: 'Geist Mono', monospace;

  --breakpoint-sm: 40rem;
  --breakpoint-md: 48rem;
  --breakpoint-lg: 64rem;
  --breakpoint-xl: 80rem;
}
ダーク/ライトテーマ
:root {
  color-scheme: light dark;
  --surface-primary: var(--color-white);
  --text-primary: var(--color-gray-900);
}

@media (prefers-color-scheme: dark) {
  :root {
    --surface-primary: var(--color-gray-950);
    --text-primary: var(--color-gray-50);
    --surface-elevated: var(--color-gray-900);
  }
}

/* Class-based override for manual toggle */
[data-theme="dark"] {
  --surface-primary: var(--color-gray-950);
  --text-primary: var(--color-gray-50);
}
レスポンシブデザインパターン
ブレークポイントシステム
Mobile-first approach:
Default    -> 0px+     (mobile)
sm         -> 640px+   (large phone / small tablet)
md         -> 768px+   (tablet)
lg         -> 1024px+  (laptop)
xl         -> 1280px+  (desktop)
2xl        -> 1536px+  (large desktop)
コンテナクエリ(コンポーネントではこちらを優先)
.card-container {
  container-type: inline-size;
  container-name: card;
}

@container card (min-width: 400px) {
  .card-content {
    flex-direction: row;
  }
}
レスポンシブパターンの選択表
パターンモバイルでの動作デスクトップでの動作
縦積みから横並びへ垂直方向の列水平方向の行
サイドバーの折りたたみドロワーオーバーレイ常時表示されるサイドバー
テーブルからカードへカードリスト完全なデータテーブル
表示/非表示付随コンテンツを非表示すべてのコンテンツを表示
並べ替え優先度の高いコンテンツを先頭に標準の順序

検証チェックリスト

  • すべての生の値にプリミティブトークンが定義されている
  • セマンティックトークンがプリミティブを意図に対応付けている
  • コンポーネントトークンがセマンティックトークンのみを参照している
  • 適切なトークンの再マッピングを行うダークモードテーマ
  • ブレークポイントシステムが定義されている(モバイルファースト)
  • コンポーネント単位のレスポンシブ対応にコンテナクエリを使用している
  • タイポグラフィのスケールが一貫した比率に従っている
  • スペーシングのスケールが 4px/8px を基本単位としている
  • フォーカス状態が視認可能で、アクセシブルである
  • 色のコントラスト比が WCAG AA(4.5:1)を満たしている

アンチパターン/よくある間違い

アンチパターン問題点代わりに行うこと
コンポーネントに16進数値をハードコードするテーマを変更できず、ダークモードにも対応できませんセマンティックトークンを使用する
色を反転させてダークモードを作成する見た目が悪く、コントラストも不適切ですダークモードに適した値にトークンを再マッピングする
システムを上書きするために !important を使用する詳細度の競合を招き、保守が困難になりますカスケードを修正するか、データ属性を使用する
スペーシングの単位(px、rem、em)を混在させるレイアウトに一貫性がなくなり、拡大縮小にも問題が生じますどこでも rem を使用し、トークンを参照する
既存のコンポーネントを拡張せず、単発のコンポーネントを作成するデザインシステムが分断されますバリアントを使って既存のコンポーネントを拡張する
セマンティックレイヤーを省略するプリミティブに密結合しますプリミティブ -> セマンティック -> コンポーネントの順に必ず対応付ける
コンポーネントでプリミティブトークンを直接使う書き直さずにテーマを変更できませんコンポーネントではセマンティックトークンのみを参照する
コンポーネントにコンテナクエリを使用しないコンポーネントが異なるコンテキストで崩れます適応型コンポーネントにはコンテナクエリを使用する

統合ポイント

スキル統合内容
ui-ux-pro-maxスタイル、パレット、UX のガイドラインを提供します
senior-frontendReact/Next.js でデザインシステムを実装します
canvas-designデータ可視化トークンとチャートのテーマ設定
mobile-designモバイル向けに特化したトークンの調整
artifacts-builderデザインシステムのプレビューアーティファクト
planningデザインシステムを機能と同様に計画します

スキルの種類

柔軟 — プロジェクトですでに採用されている規約やツールに合わせて、トークンの命名、コンポーネントの構成、テーマ設定の方法を調整してください。3層のトークン階層(プリミティブ -> セマンティック -> コンポーネント)は強く推奨されますが、小規模なプロジェクトでは簡略化できます。

コメント