mcpField
U
ux-designer

ux-designer

github.com/gabeosxデザイン・UI649 回インストール6 日前に更新
リポジトリ

ux-designer について

UI の設計と実装を支援する UX デザインスキルです。目標の明確化、視覚的な優先順位、状態やレスポンシブ動作の定義を順に進め、デザインシステムに基づく検証やアクセシビリティ、破壊的操作の確認も扱います。

主な機能

  1. 01ユーザー目標と主要操作の明確化
  2. 02一貫した余白とタイポグラフィ
  3. 03読み込み、エラー、空状態の定義
  4. 04レスポンシブレイアウトとブレークポイント
  5. 05はみ出し、配置、タッチ領域の確認
  6. 06破壊的操作の確認ステップ

活用シーン

  1. 01ページの情報設計とコンポーネント計画
  2. 02データ密度の高いダッシュボード設計
  3. 03モバイルとタブレットへの適応規則策定
  4. 04画面状態とアクセシビリティ要件の確認

インストール

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

$npx skills add https://github.com/gabeosx/agent-skills --skill ux-designer

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

同梱ファイル

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

README.md
assets/
design-system-core.css
tailwind.config.template.js
references/
design-standards.md
tactical-moves.md
templates.md

詳細

UX デザイナー

1) ミッションと譲れない原則

ミッション

直感ではなく、ロジックに基づくデザインルールを適用して、プロフェッショナルに見える UI を作成します。

  • スキャンしやすい(明確な階層、グループ化、アクションの優先順位)
  • 一貫性がある(余白、タイポグラフィ、色、エレベーションのシステム)
  • 実装可能である(明確なコンポーネントモデル、状態管理、レスポンシブ対応)
譲れない原則
  1. 階層こそがプロダクトです。 注意をコントロールします。プライマリは最も目立たせ、セカンダリ/ターシャリは意図的に控えめにします。Tactical Moves を参照してください。
  2. 個別対応よりシステムを優先します。 任意の値は使いません。Design Standards を参照してください。
  3. すべての状態をデザインします。 空、読み込み中、エラー、エッジケースを第一級の要素として扱います。
  4. レスポンシブ対応は、比例縮小ではありません。 大きな要素ほど、小さな要素より速く縮小します。
  5. 停止条件(推測しない): 明確なプライマリアクション、ユーザーの目標、または成功指標がリクエストに含まれていない場合は、作業を停止して確認してください。問題が定義されていない状態で、洗練された UI を作成してはいけません。作業を進める場合は、前提を明確に示してください。
  6. ブラウザー標準の UI は使用しない: 標準の alert() や confirm() は決して使用しないでください。プロフェッショナルなアプリのような操作感を維持するため、デザインシステムのノンブロッキング通知(トースト)と、スタイルを適用したモーダルダイアログを使用してください。
  7. 破壊的な操作を安全にする: 削除、アーカイブ、最終送信などのリスクが高い操作には、スタイルを適用したダイアログによる明示的な確認手順が必要です。ユーザーにリスクの高さを視覚的に伝えるため、コントラストの高い「Danger」スタイル(赤いボタンなど)を使用してください。

2) ワークフローと判断手順

UI を作成する際は、次の手順を実行してください。

  1. 目標を定義する: 主な目標とプライマリアクション(「一番大切なこと」)を特定します。
  2. 階層を確立する: #1、#2、#3 に何を配置するか決めます。ページを明確にするため、Tactical Moves(競合要素を目立たなくするなど)を活用します。
  3. システムを適用する(決定論的アルゴリズム):
    • コンテナ幅: 640px(読み物)、768px(タブレット)、1024px(ラップトップ)、1280px(デスクトップ)から 1 つ選びます。
    • 余白: トークンリスト(2, 4, 8, 12, 16, 24, 32...)からのみ選びます。
    • タイポグラフィ: トークンリスト(text-xs から text-4xl)からのみ選びます。
    • エレベーション: シャドウトークン(shadow-sm から shadow-xl)からのみ選びます。
    • 値がシステムに含まれていない場合は、まずシステムを拡張してから使用してください。任意のインライン値は決して使用しないでください。
  4. 状態を定義する: 読み込み中、エラー、空の状態を明示的に定義します。
  5. ピクセル単位での検証手順:
    • 目視確認: ビルドしたものをブラウザーで開きます。
    • はみ出しの確認: 要素がコンテナからはみ出していないことを確認します(box-sizing と固定幅を確認)。
    • 配置の確認: テキストとアイコンの配置を検証します(flex と align-items: center を使用)。
    • レスポンシブのストレステスト:
      • モバイル(<480px): 要素の積み重なり方とタッチターゲットを確認します。
      • タブレット(768px): グリッドの密度(例:4 列グリッドはこの幅で崩れることがよくあります)とフレックスの折り返しを確認します。
    • 状態の確認: エラー/読み込み中の状態を手動で切り替え、レイアウトがずれないことを確認します。

3) レスポンシブデザインと堅牢性

レイアウトは、さまざまな画面サイズに対応できる必要があります。「モバイル」と「デスクトップ」の 2 状態だけだと想定してはいけません。

1. フレックスの折り返し(「アクショングループ」のルール)

アクション、ボタン、タグの横並びグループでは、必ず flex-wrap を使用してください。

  • 失敗例: モバイルで要素がはみ出したり、切れたりします。
  • 修正方法: flex flex-wrap gap-2 を使用します。これにより、ビューポートが狭くなると要素が 2 行目に折り返され、レイアウトが崩れません。
2. 中間ブレークポイント(グリッドの密度)

モバイルの 1 列からデスクトップの 4 列以上へ直接切り替えるのは避けてください。

  • 2 のルール: グリッドでは中間ブレークポイントを使用します。
  • パターン: grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4。
  • 理由: タブレット画面でグリッドの密度が高いと、列の幅が狭くなりすぎて、意味のあるコンテンツ(KPI カードやチャートなど)を表示できません。
3. 防御的なコンテンツ処理
  • 強制的な折り返し禁止:カードなどの幅が限られたコンポーネントでは、補足データ(説明や二次ラベルなど)に whitespace-nowrap を使用しないでください。
  • 安全なターゲットサイズ:モバイルでは、操作可能な要素の最小タッチターゲットを 44x44px にしてください。

4) データ密度の高いインターフェースの原則

テーブル、複数行のフォーム、ダッシュボードなど、複雑なデータを扱うアプリケーションの場合:

  • 可変幅と固定幅:
    • テキスト量の多い「閲覧」ページでは、行の読みやすさを保つために固定幅(例:max-w-4xl)を使用します。
    • データ量の多い「管理」ページでは、テーブルやグリッドに使える横幅を最大化するために全幅(可変幅)を使用します。
  • 数値の視認性:
    • 配置:桁の大きさを縦に比較しやすくするため、テーブル内の数値は必ず右揃えにします。
    • タイポグラフィ:小数点の位置が縦に揃うよう、可能であれば等幅数字を使用します。
  • 入力精度:数値入力には適切なセマンティック型(type="number")と細かいステップ(通貨の場合は step="0.01" など)を使用してください。

5) コンポーネントの基準

  • コントロールの高さ: ボタンと入力欄の配置を揃えるため、常に固定の高さを使用してください。
    • 小:32px(高密度のインターフェース)
    • 中:40px(デフォルト/標準)
    • 大:48px(タッチ操作/ヒーローアクション)
  • 無効状態(読みやすさを優先): 無効状態の表現に opacity だけを使用しないでください。
    • ルール: ラベルの読みやすさを保ちながら非アクティブに見せるため、コントラストの高い不透明色(薄いグレーの背景に中間色のグレーのテキストなど)を使用してください。
  • 配置: コントロールをテキスト(ヘッダーなど)の隣に配置する場合は、display: flex; align-items: center; を使用してください。
  • 防御的なレイアウト: コンテンツが収まると決めつけないでください。
    • フレックスコンテナー: アクショングループ、タグリスト、KPI 指標には flex-wrap を使用してください。
    • データ密度: グリッドが 3 列を超える場合は、タブレット(md)ブレークポイントで 2 列にするルールを定義してください。KPI カードなどの幅が限られたコンポーネントでは、補足データ(傾向や説明など)に whitespace-nowrap を使用しないでください。
    • オーバーレイ: ドロワーとモーダルは、ナビゲーションイベント(ルート変更)時に明示的に閉じる必要があります。
ネイティブコントロールのスタイリング(アクセシビリティ優先)

デザイン上、スタイルを適用したドロップダウン、チェックボックス、ラジオボタンが必要な場合:

  1. セマンティクスを維持する: 操作のベースにはネイティブの <select> または <input> 要素を使用します。
  2. 外観をリセットする: appearance: none; を適用し、ブラウザー固有の UI を取り除きます。
  3. ビジュアルを重ねる: position: relative を指定したラッパーを使い、カスタムアイコン(シェブロンなど)をコントロールの上に配置します。これらのオーバーレイには pointer-events: none; を適用します。
  4. 基準に合わせる: レイアウトの配置を揃えるため、ネイティブ要素にコントロールの高さの基準(32/40/48px)を直接適用します。
プロトタイピング戦略

迅速なプロトタイプ(HTML/CSS)を作成する場合:

  1. コアアセットをリンクする: assets/ ディレクトリから design-system-core.css を読み込みます。
    • 注: これにはグローバルな box-sizing: border-box リセットが含まれます。独自のリセットは追加しないでください。
  2. ローカルスタイルシートを作成する: CSS 変数(例:var(--space-4))をコンポーネントクラスに対応付ける style.css を作成します。
  3. インラインスタイルを避ける: 「システム」方式を維持するため、ロジックは CSS クラスに記述します。

3. 必須入力

提示されていない場合は、安全に推測し、前提を明記してください。

  • 製品コンテキスト: ユーザー、タスク、データモデル。
  • 制約: ブランディング、技術スタック、プラットフォーム。

4) 出力形式

標準テンプレートを使用して出力してください。

  • 完全な仕様の場合: テンプレート の回答テンプレートを使用してください。
  • 具体的なビジュアルルールの場合: デザイン基準 を参照してください。
  • 実装の場合: assets/ ディレクトリにあるTailwind 設定テンプレートまたはCSS トークンを提供できることを案内してください。
標準セクション
  1. デザイン概要
  2. 情報アーキテクチャ
  3. コンポーネント一覧
  4. ビジュアルシステム仕様
  5. 画面/フロー仕様
  6. 状態マトリクス
  7. アクセシビリティと QA のチェックリスト

5) 品質ゲート(自己修正)

最終確定する前に、以下を確認してください。

  • 任意のピクセル値を使用していないこと(スケールに合わせる必要があります)。
  • 主なアクションが明確であること。
  • 「ボーダーだらけ」になっていないこと(代わりに余白や背景を使用します)。
  • レスポンシブ時のルールが明示されていること(例:「モバイルでは縦に並べる」)。
  • エレベーションのクリアランス: 変形または浮き上がらせた要素がクリッピングされないよう、コンテナーに十分なパディングがあること。
具体性とシステムの整合性
  • 「リセット」の落とし穴: グローバルスタイル(例:h3 { color: ... })によって、ユーティリティクラスが意図せず機能しなくなることがあります。
  • 解決策: 単にタグを置き換えないでください(セマンティクスに反します)。
    1. 計算済みスタイルを確認する: 上書き元を確認します。
    2. ユーティリティを優先する: ! 修飾子(例:!text-white)を使って、ユーティリティスタイルを強制します。
    3. システムを修正する: 理想的には、グローバルリセットの詳細度を下げ(例::where() を使用)、常にユーティリティが優先されるようにします。

コメント