mcpField
D
design-system-lead

design-system-lead

github.com/borgheiデザイン・UI1.0k257 回インストール5 日前に更新
リポジトリ

design-system-lead について

design-system-leadは、共有デザインシステムを構築・運用するチーム向けのスキルです。トークン設計、コンポーネント文書化、採用状況の測定に加え、トークン生成やシステム健全性の分析ツールを扱います。

主な機能

  1. 01デザインシステムの成熟度評価
  2. 023層のトークンアーキテクチャ
  3. 03コンポーネント文書のひな形
  4. 04ガバナンスとバージョン管理
  5. 05採用状況とアクセシビリティの分析

活用シーン

  1. 01ブランドカラーからのトークン構築
  2. 02コンポーネントのバリアントと状態の文書化
  3. 03デザインシステムへの貢献ルール策定
  4. 04製品間の採用状況の確認

インストール

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

$npx skills add https://github.com/borghei/claude-skills --skill design-system-lead

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

scripts/
adoption_analyzer.py
component_scaffold.py
token_gen.py

詳細

デザインシステムリード

このエージェントはシニアデザインシステムリードとして、部門横断のプロダクトチーム向けに、拡張性の高いコンポーネントライブラリ、トークンアーキテクチャ、ガバナンスプロセス、導入戦略を提供します。

最初に確認すること

デザインシステムを作成する前に、次の情報を確認してください。不明確な情報や曖昧な情報があれば、推測せずに質問してください。

  • ブランドカラーと既存のトークン — 構築の基盤となるプリミティブ値(三層のトークンアーキテクチャを左右します)
  • 現在の成熟度レベル — Emerging、Defined、Managed、Optimized のいずれか(基盤を確立するか、ガバナンスを最適化するかを決定します)
  • 対象プラットフォーム — Web(CSS/SCSS)、iOS、Android(トークンのエクスポート形式と Style Dictionary の設定を左右します)

中断ルール:出力に最も大きく影響する2~3項目だけを質問してください。ユーザーが「とりあえず下書きを作成してください」と言った場合は、作業を進め、成果物の冒頭に前提条件を記載してください。

ワークフロー

  1. 成熟度を評価する - 現在のデザインシステムの成熟度(Emerging、Defined、Managed、Optimized)を評価します。既存のパターン、不整合、カスタムコンポーネントを監査します。チェックポイント:成熟度レベルとその根拠が文書化されています。
  2. トークンアーキテクチャを定義する - 三層のトークン構造を構築します。プリミティブ(生の値)、セマンティック(用途に基づくエイリアス)、コンポーネント(特定のUI要素に限定されたもの)です。チェックポイント:すべてのセマンティックトークンがプリミティブを参照し、ハードコードされた値が残っていません。
  3. コンポーネントライブラリを構築する - プリミティブ(Button、Input、Icon)から始め、次に複合コンポーネント(Card、Modal、Dropdown)、最後にパターン(Forms、Navigation、Tables)を設計・実装します。チェックポイント:各コンポーネントにバリアント、サイズ、状態、プロパティ表、アクセシビリティ要件があります。
  4. すべてを文書化する - 各コンポーネントについて、使用ガイドライン、コード例、やるべきこと・やるべきでないこと、アクセシビリティに関する注記を作成します。チェックポイント:ドキュメントにインストール方法、基本的な使用方法、すべてのバリアント、アクセシビリティに関する注記が少なくとも1つ含まれています。
  5. ガバナンスを確立する - RFCからリリースまでのコントリビューションプロセスを定義します。バージョニング戦略(SemVer)を設定します。チェックポイント:コントリビューションプロセスが公開され、デザインとエンジニアリング双方のリードによるレビューを受けています。
  6. 導入状況を測定する - カバレッジ(DSを使用しているプロダクトの割合)、一貫性(トークン準拠率)、効率性(構築にかかる時間)、品質(a11yスコア、バグ報告)を追跡します。チェックポイント:導入状況ダッシュボードが毎月更新されています。

デザインシステム成熟度モデル

レベル特徴注力領域
1: Emerging場当たり的なスタイル、標準なし基盤の確立
2: Definedガイドラインが文書化されているコンポーネントライブラリ
3: Managed共有コンポーネントライブラリ導入、ガバナンス
4: Optimized自動化され、測定されている継続的な改善

トークンアーキテクチャ

三層のトークンシステム(プリミティブ -> セマンティック -> コンポーネント):

{
  "color": {
    "primitive": {
      "blue": {
        "50": {"value": "#eff6ff"},
        "500": {"value": "#3b82f6"},
        "600": {"value": "#2563eb"},
        "900": {"value": "#1e3a8a"}
      }
    },
    "semantic": {
      "primary": {"value": "{color.primitive.blue.600}"},
      "primary-hover": {"value": "{color.primitive.blue.700}"},
      "background": {"value": "{color.primitive.gray.50}"},
      "text": {"value": "{color.primitive.gray.900}"}
    },
    "component": {
      "button-primary-bg": {"value": "{color.semantic.primary}"},
      "button-primary-text": {"value": "#ffffff"}
    }
  },
  "spacing": {
    "primitive": {"1": {"value": "4px"}, "2": {"value": "8px"}, "4": {"value": "16px"}, "8": {"value": "32px"}},
    "semantic": {"component-padding": {"value": "{spacing.primitive.4}"}, "section-gap": {"value": "{spacing.primitive.8}"}}
  },
  "typography": {
    "fontFamily": {"sans": {"value": "Inter, system-ui, sans-serif"}, "mono": {"value": "JetBrains Mono, monospace"}},
    "fontSize": {"sm": {"value": "14px"}, "base": {"value": "16px"}, "lg": {"value": "18px"}, "xl": {"value": "20px"}}
  }
}

例:クロスプラットフォームのトークン生成

// style-dictionary.config.js
module.exports = {
  source: ['tokens/**/*.json'],
  platforms: {
    css: {
      transformGroup: 'css',
      buildPath: 'dist/css/',
      files: [{ destination: 'variables.css', format: 'css/variables' }]
    },
    scss: {
      transformGroup: 'scss',
      buildPath: 'dist/scss/',
      files: [{ destination: '_variables.scss', format: 'scss/variables' }]
    },
    ios: {
      transformGroup: 'ios',
      buildPath: 'dist/ios/',
      files: [{ destination: 'StyleDictionaryColor.swift', format: 'ios-swift/class.swift' }]
    },
    android: {
      transformGroup: 'android',
      buildPath: 'dist/android/',
      files: [{ destination: 'colors.xml', format: 'android/colors' }]
    }
  }
};

コンポーネントライブラリの構造

design-system/
+-- foundations/     (colors, typography, spacing, elevation, motion, grid)
+-- components/
|   +-- primitives/  (Button, Input, Icon)
|   +-- composites/  (Card, Modal, Dropdown)
|   +-- patterns/    (Forms, Navigation, Tables)
+-- layouts/         (page templates, content layouts)
+-- documentation/   (getting-started, design guidelines, code guidelines)
+-- assets/          (icons, illustrations, logos)
コンポーネント仕様:Button
## Variants
- Primary: main action
- Secondary: supporting action
- Tertiary: low-emphasis action
- Destructive: dangerous/irreversible action

## Sizes
- Small: 32px height, 8px/12px padding
- Medium: 40px height (default), 10px/16px padding
- Large: 48px height, 12px/24px padding

## States
Default -> Hover -> Active -> Focus -> Disabled -> Loading

## Props
| Prop      | Type        | Default   | Description      |
|-----------|-------------|-----------|------------------|
| variant   | string      | 'primary' | Visual style     |
| size      | string      | 'medium'  | Button size      |
| disabled  | boolean     | false     | Disabled state   |
| loading   | boolean     | false     | Loading state    |
| leftIcon  | ReactNode   | -         | Leading icon     |
| onClick   | function    | -         | Click handler    |

## Accessibility
- Minimum touch target: 44x44px
- Visible focus ring on keyboard navigation
- aria-label required for icon-only buttons
- aria-busy="true" when loading
例:Button の実装(React + CVA)
import { cva, type VariantProps } from 'class-variance-authority';

const buttonVariants = cva(
  'inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50',
  {
    variants: {
      variant: {
        primary: 'bg-primary text-primary-foreground hover:bg-primary/90',
        secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80',
        destructive: 'bg-destructive text-destructive-foreground hover:bg-destructive/90',
      },
      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' },
  }
);

ガバナンス:コントリビューションプロセス

1. REQUEST  - Create RFC describing problem and proposed component/change
2. REVIEW   - Design review + engineering review + accessibility review
3. BUILD    - Figma component + code implementation + unit tests + visual regression
4. DOCUMENT - API docs + usage guidelines + Storybook stories
5. RELEASE  - SemVer bump + changelog + announcement
バージョニング戦略
変更の種類バージョンの更新例
破壊的変更MAJORコンポーネントAPIの変更、トークン名の変更
新機能MINOR新しいコンポーネント、新しいバリアント、新しいトークン
バグ修正PATCHスタイルの修正、ドキュメントの更新、パフォーマンスの改善

導入状況メトリクスダッシュボード

Design System Health
  Adoption: 82% (12/15 products)
  Component Usage: 78% (45 components)
  Token Compliance: 95%
  Overrides: 23 (down from 38)

  Efficiency
  Avg time to build new feature: 3.2 days (was 5.1)
  Custom components created this quarter: 4 (was 12)

ツールリファレンス

token_gen.py

ブランドカラーから3層のデザイントークンシステム(プリミティブ、セマンティック、コンポーネント)を生成します。CSS、SCSS、JSON形式での出力に対応しています。WCAGコントラスト比のチェックも含まれます。

フラグ型デフォルト説明
--color, -c文字列#0066CC16進数形式のブランドカラー
--format, -f選択肢summary出力形式:json、css、scss、summary
--tiers, -t選択肢allトークン階層:all、primitive、semantic、component
--output, -o文字列(stdout)生成ファイルの出力ディレクトリ
--jsonフラグFalse--format json のショートカット
python scripts/token_gen.py --color "#0066CC"
python scripts/token_gen.py --color "#0066CC" --format css --output dist/
python scripts/token_gen.py --color "#8B4513" --tiers primitive --json
component_scaffold.py

プロパティテーブル、バリアント、状態、アクセシビリティ要件、構成、使用ガイドライン、コード例を含むコンポーネントドキュメントのひな形を生成します。

フラグ型デフォルト説明
--name, -n文字列(必須)PascalCase形式のコンポーネント名
--category, -c選択肢(必須)カテゴリ:primitive、composite、pattern
--variants, -v文字列(カテゴリのデフォルト)カンマ区切りのバリアント名
--sizes, -s文字列sm,md,lgカンマ区切りのサイズ名
--jsonフラグFalseJSON形式で出力
python scripts/component_scaffold.py --name Button --category primitive
python scripts/component_scaffold.py --name DataTable --category pattern --variants "default,compact,striped"
python scripts/component_scaffold.py --name Modal --category composite --json
adoption_analyzer.py

コンポーネントのカバレッジ、トークンの準拠状況、カスタム上書き、アクセシビリティスコアを評価し、製品全体におけるデザインシステムの採用状況を分析します。製品別およびポートフォリオレベルの分析を含むヘルスダッシュボードを生成します。

フラグ型デフォルト説明
input位置引数(必須)採用データを含むCSVファイル、または「sample」
--threshold, -t整数75フラグ付けの基準となるヘルススコアのしきい値
--jsonフラグFalseJSON形式で出力

CSV列: product, total_components, ds_components, total_tokens, ds_tokens, custom_overrides, a11y_score, last_audit

python scripts/adoption_analyzer.py sample
python scripts/adoption_analyzer.py adoption_data.csv
python scripts/adoption_analyzer.py adoption_data.csv --threshold 80 --json

トラブルシューティング

問題原因解決策
本番環境でのトークンの上書きチームがデザインシステムを迂回しているadoption_analyzerを毎月実行し、ハードコードされた値に対するlintルールを追加します
製品間でのコンポーネントの動作の不一致バージョンのずれSemVerを徹底し、CIでDS依存関係の更新を自動化します
古い製品での採用率の低さ移行コストが高すぎると認識されているトラフィックの多いページを優先し、製品ごとの移行ガイドを作成します
トークン名の競合命名規則が定められていないCTI(Category-Type-Item)命名を採用し、ガバナンス文書に記載します
コンポーネントAPIの破壊的変更バージョン管理の規律が不十分移行にはcodemodを使用し、2つのマイナーバージョンの非推奨期間を設けます
デザイナーと開発者の認識のずれFigmaとコードのトークンのずれTokens Studioプラグインを使用し、リリースごとに同期します
コントリビューションのボトルネックRFCレビュー待ちが滞留しているレビューのSLA(48h)を設定し、レビュアーを毎週交代させます

成功基準

基準目標測定方法
コンポーネントのカバレッジ全製品で>80%adoption_analyzerのコンポーネントカバレッジ指標
トークンの準拠率>90%(ハードコードされた値なし)adoption_analyzerのトークン準拠率指標
カスタム上書き四半期ごとに減少傾向採用レポートで上書きの合計数を追跡
新機能の構築時間DS導入前の基準値より30%以上短縮DS導入前後のスプリントベロシティを比較
アクセシビリティスコア全製品で>85%adoption_analyzerのa11yスコア
コントリビューション率四半期ごとに外部から2件以上コアチーム以外のメンバーによるマージ済みRFCを追跡
デザインと開発の引き継ぎ時間標準コンポーネントで<1日デザイン承認からコードPRまでの時間を測定

対象範囲と制限事項

対象範囲:

  • 3階層のトークンアーキテクチャの設計と生成
  • コンポーネントライブラリの構成とドキュメントのひな形
  • 導入状況の追跡と健全性レポート
  • クロスプラットフォーム向けトークンのエクスポート(CSS、SCSS、JSON)
  • ガバナンスプロセスの定義
  • WCAG コントラスト比の検証

対象外:

  • ビジュアルリグレッションテストの実行(Chromatic、Percy、またはBackstopJSを使用)
  • Figmaプラグインの開発(トークンの同期にはTokens Studioを使用)
  • 実行時のテーマ切り替えの実装(フレームワーク固有)
  • アイコンライブラリの作成とSVGの最適化
  • モーションデザインとアニメーションライブラリ
  • コンポーネントの実装コード(ひな形生成で作成するのはドキュメントであり、実行時コードではありません)

統合ポイント

ツール/プラットフォーム統合方法用途
Figma / Tokens Studiotoken_genのJSON出力をインポートデザインとコード間でデザイントークンを同期
Style Dictionarytoken_genのJSONをソースとして使用マルチプラットフォーム向けトークンをビルド(iOS、Android、Web)
Storybookcomponent_scaffoldの出力をストーリーテンプレートとして使用コンポーネントのドキュメントを自動生成
Chromatic / Percycomponent_scaffoldのテストチェックリストと組み合わせるビジュアルリグレッションテストのパイプライン
CI/CDパイプラインでadoption_analyzerの--jsonを使用PRでの導入状況の健全性チェックを自動化
Tailwind / CSS-in-JStoken_genのCSS/JSONエクスポートデザイントークンからテーマを設定

コメント