Communitygithub.com

hamzacakmakk/design-system-generator

トークンベースのデザインシステム(色、タイポグラフィ、スペーシング、角丸、エレベーション、モーション)を作成または拡張します。ライト/ダークテーマ、コントラスト検証、コンポーネントガイドラインとドキュメントを提供し、CSS変数、Tailwindテーマ設定、またはJSONトークンとして出力します。

design-system-generator とは?

このスキルは、トークンベースのデザインシステムを生成・拡張するためのAIエージェントスキルです。最小限の決定で製品全体の一貫性を実現することを目的としており、プリミティブ、セマンティック、コンポーネントの3層構造を採用します。ユーザーがデザインシステム、テーマ、スタイルガイド、トークン、ブランドパレット、または「アプリ全体での一貫したスタイリング」を要求した場合に起動します。 既存のCSSやTailwind設定、テーマファイル、ブランド資産を読み取り、そこからトークンを生成します。ライト/ダークの両テーマを定義し、WCAG 2.0に基づくコントラスト検証を自動的に行い、テキスト対背景のペアごとにコントラスト比を計算して文書化します。対応プラットフォームは主にWeb(CSSカスタムプロパティ、Tailwind)ですが、W3C Design Tokens形式のJSON出力によりStyle Dictionaryなどのパイプラインを通じてiOS/Androidにも展開可能です。 出力物として、tokens.css、Tailwindテーマ設定、tokens.json、簡潔なDESIGN.mdドキュメント、およびオプションのstyleguide.htmlを含みます。既存プロダクトの移行にも対応しており、既存の値を最も近いトークンにマッピングし、段階的に置き換えることで、大規模コードベースでも安全に導入できます。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/hamzacakmakk/claude-frontend-skills/tree/HEAD/skills/design-system-generator

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

デザインシステムジェネレーター

製品を一貫させるための最小限のシステムを構築します。デザインシステムとは、大きな値の集合ではなく、一連の決定です。よく名前付けられた少数のトークンは、誰も使わない網羅的なスケールよりも優れています。

frontend-design スキルがインストールされている場合、frontend-design/references/tokens.md には、コントラストチェック済みの完全なスターターセットが含まれています。そこから始めて適応させてください。

1. 入力

  • 現在存在するもの(現在のCSS、Tailwind設定、テーマファイル、コンポーネントライブラリ、ブランド資産)を読み取ります。 実際に使用されている値(色、フォントサイズ、スペーシング、角丸)と、それぞれの出現頻度を棚卸しします。
  • プロダクトのトーン、プラットフォーム(Web、iOS、Android)、密度、およびダークモードとハイコントラストモードが必要かどうかを明確にします(または推測して明記します)。

2. アーキテクチャ:3つのレイヤー

  1. プリミティブトークン: 生の値とニュートラルな名前。--gray-50 ... --gray-950、--blue-600、--space-4、--radius-md。コンポーネントで直接使用されることはありません。
  2. セマンティックトークン: 用途ベースのエイリアス。--bg、--surface、--surface-sunken、--border、--border-strong、--text、--text-muted、--text-subtle、--accent、--accent-fg、--accent-subtle、--focus-ring、--success、--warning、--danger、--info(+ -subtle バリアント)。テーマはこれらを切り替えます。
  3. コンポーネントトークン(必要な場合のみ): --button-height-md、--input-border、--card-padding。コンポーネントを個別にテーマ設定する必要がある場合に追加します。

命名規則: category-role-variant-state(--text-muted、--accent-hover)。セマンティックトークンに色名を含めないでください(--blue ではなく --accent)。

3. 決定すべき事項

  • スペーシング: 4px ベース。スケール: 0, 2, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 80, 96, 128。 (Fluent 2 と Material はどちらも 4px をベースにしており、Tailwind のデフォルトスケールも 4px ベースです。)
  • タイポグラフィ: 1~2ファミリー。モジュラースケール(高密度: 1.2、プロダクト: 1.25、編集系: 1.333+)。サイズではなく役割(display、title、heading、body、label、caption、code)。役割ごとの行間。display サイズにのみ fluid clamp()。
  • 色: 10~12段階のニュートラルランプ(意図的に暖色または寒色寄りに選択)、1つのアクセントランプ、4つのセマンティック色相。ランプは OKLCH で生成し、知覚的に均等な段差にします。
  • 角丸: 1つのファミリー(sharp、soft、round)と 3~4段階に加えて full。
  • エレベーション: 最大3レベル(raised、floating、overlay)。2層のニュートラルシャドウ。ダークモードでは、強いシャドウよりも明るいサーフェスを優先します。
  • モーション: 3つの持続時間(fast ~140ms、base ~220ms、slow ~320ms)、3つのイージング(out、in、in-out)、および reduced-motion ルール。
  • レイヤー: 小さな z-index スケール(sticky、dropdown、overlay、dialog、toast、tooltip)。
  • ブレークポイント: コンテンツ駆動。一般的なセットは 640、768、1024、1280、1536。

4. テーマとコントラスト

  • ライトとダークを一緒に定義します。ダークモード: 背景は黒に近い色(#000 ではない)、テキストはオフホワイト(#fff ではない)、エレベーションには明るいサーフェス、アクセントは明るくやや彩度を下げます。
  • prefers-contrast: more バリアントを追加し、境界線と muted テキストを強化します。
  • すべてのテキスト/背景のペア を WCAG 2.0 の公式で検証し、コントラスト比を公開します: テキスト 4.5:1、大きなテキストと意味のあるUI(入力境界線、アイコン、フォーカスリング)3:1。ドキュメントに数値を含めます。「AA準拠」と記載する前に、実際に計算してください。

5. 出力物

プロジェクトのスタックに合わせて以下を生成します:

  1. tokens.css(CSSカスタムプロパティ、ライト + ダーク + ハイコントラスト)、および/または Tailwind テーママッピング(v4 では @theme、v3 では theme.extend)、および/または tokens.json(パイプライン(Style Dictionary)を使用する場合は W3C Design Tokens Community Group 形式)。
  2. 簡潔な DESIGN.md ドキュメント: 原則(3~5行)、コントラスト比を含むトークンテーブル、タイプロール、スペーシング使用ルール、およびコアコンポーネント(button、input、card、dialog、table、toast)の do/don't。
  3. オプションで、すべてのトークンとコンポーネントの状態を両方のテーマでレンダリングする単一の styleguide.html / ストーリーページ。システムを視覚的に確認できます。

6. 移行(既存プロダクト)

  • 既存の値を最も近いトークンにマッピングします。削除される値とその理由をリストアップします。
  • 色、次にスペーシング、タイポグラフィ、最後に角丸とシャドウの順に置き換えます。
  • コードベースが大きい場合は、古い名前用の一時的なエイリアスレイヤーを維持します。

チェックリスト

  • プリミティブ、セマンティック、および(必要な場合のみ)コンポーネントレイヤーが分離されている。
  • コンポーネントはセマンティックトークンのみを参照している。
  • ライト、ダーク、およびハイコントラストテーマが存在し、すべてのペアに計算されたコントラスト比がある。
  • スペーシングは 4px ベース。角丸ファミリーは1つ。エレベーションレベルは最大3つ。
  • タイプロールは display から caption までをカバー。ファミリーは最大2つ、ウェイトは最大3つ。
  • モーショントークンには reduced-motion ルールが含まれている。
  • ドキュメントでは、各トークンの値だけでなく、いつ使用するかを説明している。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

関連スキル