mcpField
A
airbnb-ui-skills

airbnb-ui-skills

github.com/ihlamuryデザイン・UI102391 回インストール37 週間前に更新
リポジトリ

airbnb-ui-skills について

AIエージェント向けのAirbnb風インターフェース設計ガイドラインです。ライトモードのUIやデザインシステムを対象に、色、タイポグラフィ、レイアウト、操作性、アクセシビリティ、パフォーマンスの制約を定めます。

主な機能

  1. 01Airbnb風デザインの制約
  2. 02カラーとセマンティックトークン
  3. 03Interのタイポグラフィ規則
  4. 044pxグリッドとレイアウト規則
  5. 05操作、アニメーション、性能の規則

活用シーン

  1. 01ライトモードのインターフェース構築
  2. 02Airbnb風デザインシステムの作成
  3. 03Interと4pxグリッドを使ったUI実装

インストール

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

$npx skills add https://github.com/ihlamury/design-skills --skill airbnb-ui-skills

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

同梱ファイルmetadata.json

詳細

Airbnb UI スキル

AI エージェントで Airbnb スタイルのインターフェースを構築するための推奨制約。

適用する場面

次の場合に、これらのガイドラインを参照してください。

  • ライトモードのインターフェースを構築する場合
  • Airbnb に着想を得たデザインシステムを作成する場合
  • Inter フォントと 4px グリッドを使った UI を実装する場合

色

  • 主要なサーフェスには明るい背景を使用することを推奨します
  • ページ背景(surface-base)には #FEFEFE を使用する必要があります
  • カラーパレットを絞ることを推奨します(現在 13 色を検出)
  • アクセシビリティのため、テキストのコントラスト比を 4.5:1 以上に保つ必要があります
セマンティックトークン
トークンHEXRGB用途
surface-base#FEFEFErgb(254,254,254)ページ背景
surface-raised#EEEBE4rgb(238,235,228)カード、モーダル、浮き上がったサーフェス
surface-overlay#D5D3D1rgb(213,211,209)オーバーレイ、ツールチップ、ドロップダウン
text-primary#8F8F8Frgb(143,143,143)見出し、本文テキスト
text-2#5C5955rgb(92,89,85)補足テキスト
text-secondary#686868rgb(104,104,104)二次テキスト、控えめなテキスト
border-default#E6DECCrgb(230,222,204)控えめな境界線、区切り線
destructive#E25275rgb(226,82,117)エラー状態、削除操作
warning#E6DECCrgb(230,222,204)警告状態、注意喚起

タイポグラフィ

  • 主フォントファミリーとして Inter を使用する必要があります
  • 一貫性を保つため、単一のフォントファミリーを使用することを推奨します
  • 主要な見出しには 19px / 500 を使用する必要があります
  • 本文テキストには 15px / 400 を使用する必要があります
  • フォントウェイトは light、regular、medium に限定する必要があります
  • 見出しには text-balance、本文テキストには text-pretty を使用する必要があります
  • 数値データには tabular-nums を使用することを推奨します
  • 明示的に求められない限り、字間を変更しないでください
テキストスタイル
スタイルフォントサイズウェイト色数
heading-1Inter19px500#4A4A4A1
heading-2Inter19px500#E252751
heading-3Inter15px300#C3C0BC1
bodyInter15px400#9191911
body-secondaryInter15px500#4949491
body-secondaryInter15px500#4747471
body-secondaryInter14px400#9191915
body-secondaryInter14px300#9191913
body-secondaryInter14px300#9292923
body-secondaryInter14px400#9090901
タイポグラフィの参照情報

フォントファミリー:

  • Inter(65 回使用)

フォントサイズ: 6px、8px、9px、10px、11px、13px、14px、15px、19px

余白

  • 余白には 4px グリッドを使用する必要があります
  • 余白には次のスケールを使用することを推奨します:1px、2px、3px、5px、6px、9px、10px、41px
  • 要素間のデフォルトの間隔には 2px を使用することを推奨します
  • 任意の余白値を使用しないでください(デザインスケールを使用してください)
  • コンテナ内のパディングを一貫させることを推奨します

境界線

  • 角丸には次のスケールを使用する必要があります:11px、12px、13px、14px、28px
  • ピル形状の要素には 28px 以上の角丸を使用することを推奨します
  • 境界線の幅は一貫して 1px にする必要があります
  • デフォルトの角丸には 11px を使用することを推奨します
  • 任意の角丸値を使用しないでください(デザインスケールを使用してください)
  • 要素を区切るには、控えめな境界線(1px)を使用することを推奨します
角丸の参照情報

スケール: 11px、12px、13px、14px、28px

レイアウト

  • 基準ビューポート幅 1920px 向けに設計する必要があります
  • 要素の幅を一貫させることを推奨します:249px、24px、97px、28px、78px
  • 明確な階層を持つ、テキスト中心のレイアウトを維持することを推奨します
  • h-screen は使用せず、ビューポート全体の高さには h-dvh を使用してください
  • 固定要素では safe-area-inset を考慮する必要があります
  • 正方形の要素には w-* と h-* の組み合わせではなく、size-* を使用することを推奨します
検出されたレイアウトパターン
  • メインコンテンツ:幅:1920px、高さ:1080px
  • メインコンテンツ:幅:1920px、高さ:879px

コンポーネント

  • 入力フィールドの高さは 0px にする必要があります
ボタン
バリエーション背景テキスト境界線高さ角丸
Ghosttransparent#5C5955なし--
入力欄
  • 高さ:0px

インタラクティブ状態

フォーカス
  • アクセントカラー(#5E6AD2)の2pxのアウトラインを必ず使用します
  • 2pxのアウトラインオフセットを必ず使用します
  • フォーカスインジケーターは絶対に削除しないでください
ホバー
  • ボタン(プライマリー):背景を10%明るくします
  • ボタン(セカンダリー):背景に#EEEBE4を使用します
  • リスト項目:背景に#EEEBE4を使用します
無効状態
  • opacity: 0.5を必ず使用します
  • cursor: not-allowedを必ず使用します

インタラクション

  • 破壊的な操作や取り消せない操作には、必ずAlertDialogを使用します
  • ローディング状態には、構造を反映したスケルトンを使用することを推奨します
  • エラーは、操作が行われる場所の近くに必ず表示します
  • input要素やtextarea要素への貼り付けを絶対にブロックしないでください
  • アイコンのみのボタンには、必ずaria-labelを追加します

アニメーション

  • 明示的に要求されない限り、アニメーションを絶対に追加しないでください
  • コンポジターで処理されるプロパティ(transform、opacity)のみをアニメーションさせてください
  • レイアウトプロパティ(width、height、top、left、margin、padding)は絶対にアニメーションさせないでください
  • 表示時のアニメーションにはease-outを使用することを推奨します
  • インタラクションフィードバックの時間は200msを絶対に超えないようにしてください
  • prefers-reduced-motionに対応することを推奨します

パフォーマンス

  • 大きなblur()やbackdrop-filterの領域を絶対にアニメーションさせないでください
  • アクティブなアニメーション中以外は、絶対にwill-changeを適用しないでください
  • レンダリングロジックで表現できる処理に、絶対にuseEffectを使用しないでください

コメント