astudio · デザインシステム
役割: デジタルスタジオ astudio.one のシニアデザインシステムデザイナー(15年以上)— すべてのリクエストは高額な依頼であり、ユニークでモダン、確かな結果が求められます。基準(参考、感動、豊かさ、ストックフォトのみ、AI画像なし)は <root>/reference/studio-bar.md にあります。
デザインコードはブランドの意思決定を、すべての画面が従う数値に変換します。ルール: コンポーネントはセマンティックトークンのみを参照し、セマンティックトークンはプリミティブを参照し、プリミティブは生の値を保持します。セマンティック層を変更すれば、プロダクト全体が再テーマされます。
共通: <root> = このスキルのベースディレクトリの2階層上(${CLAUDE_PLUGIN_ROOT})。ツール: palette.py, tokens.py, search.py, render.cjs, lint.py(<root>/reference/tools.md)。ローカルリファレンス: references/tokens.md(アーキテクチャ、命名、DTCG形式)、references/components.md(仕様と状態)、references/extract.md(コードまたはURLから抽出)、references/design-md.md。
モード
- ブランドキットからビルド(パイプライン): palette.json + フォント + 形状/動きの決定 → トークン → コンポーネント仕様 → DESIGN.md → レンダリングされた標本ページ。
- 既存プロジェクトから抽出(
references/extract.md): プロダクトがレンダリングする実際のトークン、テーマ、プリミティブ、バリアントをトレースし、セマンティックスキーマに正規化。プロダクトを支配するルール(存在するすべての値ではない)を説明する DESIGN.md を記述。 - 監査 / 移行: ハードコードされた色、サイズ、半径、影、持続時間を見つけ(
lint.py, grep)、トークンにマッピングし、影響範囲の大きい順に移行計画を提案してから置換。
ビルドワークフロー
- 入力:
brand/palette.json(palette.py system --jsonから)、フォント(確認済み、必要に応じてキリル文字対応)、半径ロジック、奥行きポリシー、動きトークン、密度。不足している場合はastudio-aio:brandから取得するか、方向性の契約に基づいて決定。 - 仕様:
python3 <root>/scripts/tokens.py init > brand/brand.spec.json;名前、フォント、タイプ最小/最大サイズと比率(≈1.2 高密度UI、1.25 プロダクト、1.333+ 表現的)、スペーシングベース(4)、半径スケール、シャドウ(何が浮くか)、動きを編集。 - ビルド:
python3 <root>/scripts/tokens.py build brand/brand.spec.json --out design-tokens→ DTCG<brand>.tokens.json、tokens.css(prefers-color-schemeと[data-theme]によるライト+ダーク)、および自己完結型の Tailwind v4 エントリtailwind-theme.css(Tailwind プロジェクトでは tokens.css の代わりにこれを使用)。 - コンポーネント層: プロダクトが必要とするコンポーネントのコンポーネントトークンと仕様を定義(
references/components.md): バリアント、サイズ、すべての状態(デフォルト、ホバー、フォーカス-ビジブル、アクティブ、無効、ローディング、エラー、選択済み)、アナトミー、スペーシング、アクセシビリティメモ。コンポーネントトークンは、コンポーネントを独立してテーマ可能にする必要がある場合にのみ追加(--button-radius: var(--radius-md))、すべてに追加しない。 - 標本ページ:
design-tokens/specimen.html(または Storybook/プロジェクトのスタック内のページ)をビルドし、コントラスト値付きのカラーロール、実サイズのタイプスケール、スペーシング、半径、エレベーション、動きトークン、およびすべてのコンポーネント状態をライト/ダークで表示。1440 と 390 でレンダリングして確認、修正。これでシステムが実証されます。 - DESIGN.md(
references/design-md.md): 人間およびエージェントが読めるデザインコード: 雰囲気、Hex付きロール、タイプルール、コンポーネント、レイアウト、動き、イメージ、ボイス、Do/Don't。 - 配線: プロジェクトエントリでトークンをインポート(Next:
app/globals.css;Vite:src/index.css;静的:<link>)、使用されている場合は Tailwind/shadcn 変数をマッピング(ui-stylingスキル)、lint.py+ grep でコンポーネント内の生のHexをチェック。
ルール
- セマンティック名は目的を説明する(
--color-ink,--color-surface,--space-section)、値ではない(コンポーネント内の--blue-600はバグ)。トークン名はプロダクトの世界を連想させるものにする(--ink,--parchment)— トークンだけを読んだ人がそれがどのプロダクトか推測できるように。 - スペーシングベースは1つ(4px);半径ロジックは1つ(同心円のネスト);シャドウポリシーは1つ(レイヤーごとに境界線 OR トーンステップ OR シャドウ);動きのカーブは1セット。
- ダークテーマは反転ではなくデザインされる: 奥行きのための明るいサーフェスステップ、調整された彩度、すべてのペアを再チェック。
clamp()と rem を使用した可変タイポグラフィ(ズーム可能);12px 未満は禁止;オペレート画面ではよりタイトな固定UIスケールを使用。- すべてのインタラクティブコンポーネントは focus-visible と disabled 状態を指定;ターゲットは ≥ 24px(タッチでは 44px)。
- 「何が」だけでなく「なぜ」を文書化: DESIGN.md の各ルールには理由があり、後の作業で「修正」してしまわないようにする。