mcpField
S
spotify-ui-skills

spotify-ui-skills

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

spotify-ui-skills について

spotify-ui-skills は、Spotify 風のインターフェースを構築する AI エージェント向けの制約集です。色やレイアウトから、操作性、アクセシビリティ、パフォーマンスまでを扱います。

主な機能

  1. 01ダークサーフェスとカラー規則
  2. 02Inter フォントと 4px 間隔グリッド
  3. 03レイアウトと角丸の指針
  4. 04アクセシブルな操作状態の要件
  5. 05アニメーションと性能の制約

活用シーン

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

インストール

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

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

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

同梱ファイルmetadata.json

詳細

Spotify UI スキル

AI エージェントで Spotify スタイルのインターフェースを構築するための、明確な制約です。

適用する場合

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

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

色

  • 主要なサーフェスには、必ず明度 20 未満のダークな背景を使用してください — 検出された明度:9
  • ページの背景(surface-base)には、必ず #171717 を使用してください
  • 主要なアクションとフォーカス状態(accent)には、必ず #010002 を使用してください
  • カラーパレットを絞ることを推奨します(現在 14 色を検出)
  • アクセシビリティのため、テキストのコントラスト比を少なくとも 4.5:1 に維持してください
セマンティックトークン
トークンHEXRGB用途
surface-base#171717rgb(23,23,23)ページの背景
surface-raised#FEFEFErgb(254,254,254)カード、モーダル、盛り上がったサーフェス
surface-overlay#010002rgb(1,0,2)オーバーレイ、ツールチップ、ドロップダウン
text-primary#555555rgb(85,85,85)見出し、本文テキスト
text-secondary#6A6A6Argb(106,106,106)セカンダリテキスト、控えめなテキスト
text-tertiary#AEAEAErgb(174,174,174)補足テキスト
border-default#838486rgb(131,132,134)控えめな境界線、区切り線
accent#010002rgb(1,0,2)主要なアクション、リンク、フォーカス

タイポグラフィ

  • 必ず Inter を主要なフォントファミリーとして使用してください
  • 一貫性を保つため、フォントファミリーを 1 種類にすることを推奨します
  • 主要な見出しには、必ず 41px / 500 を使用してください
  • 本文テキストには、必ず 13px / 400 を使用してください
  • フォントウェイトを減らすことを推奨します(現在 4 種類を検出)
  • 見出しには必ず text-balance を、本文テキストには text-pretty を使用してください
  • 数値データには tabular-nums を使用することを推奨します
  • 明示的に要求されない限り、字間を変更しないでください
テキストスタイル
スタイルフォントサイズウェイト色数
heading-1Inter41px500#2D2D2D1
text-24pxInter24pxsemi_bold#DBDBDB1
text-24pxInter24px500#DBDBDB1
text-24pxInter24pxsemi_bold#DCDCDC1
text-17pxInter17px400#6766671
text-16pxInter16px400#A6A6A61
text-15pxInter15px400#AEAEAE1
text-15pxInter15px400#6B6B6B1
text-15pxInter15px400#A4A4A41
text-15pxInter15px400#7171711
タイポグラフィのリファレンス

フォントファミリー:

  • Inter(81 回使用)

フォントサイズ: 8px、9px、10px、11px、12px、13px、14px、15px、16px、17px、24px、41px

余白

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

境界線

  • 必ず次のスケールから border-radius を使用してください:10px、15px、17px、18px、22px、24px
  • ピル型の要素には 22px 以上の radius を使用することを推奨します
  • 境界線の幅は 1px、2px に限定することを推奨します
  • デフォルトの border-radius には 15px を使用することを推奨します
  • 任意の border-radius 値は使用しないでください(デザインスケールを使用してください)
  • 要素を区切るには、控えめな境界線(1px)を使用することを推奨します
Border Radius リファレンス

スケール: 10px、15px、17px、18px、22px、24px

レイアウト

  • 必ずベースのビューポート幅を 1920px としてデザインしてください
  • 要素の幅は一貫させることを推奨します:172px、68px、171px、185px、38px
  • 明確な階層を持つ、テキスト中心のレイアウトを維持することを推奨します
  • h-screen は使用せず、ビューポートの高さ全体には h-dvh を使用してください
  • 固定要素では必ず safe-area-inset を考慮してください
  • 正方形の要素には w-* と h-* の組み合わせではなく、size-* を使用することを推奨します
検出されたレイアウトパターン
  • メインコンテンツ:幅:1920px、高さ:1080px
  • ヘッダー:高さ:60px

コンポーネント

ボタン
バリアント背景テキスト境界線高さ角丸
ゴースト透明#B8B8B8なし--

インタラクティブ状態

フォーカス
  • MUST アクセントカラー(#010002)を使った 2px のアウトラインを使用する
  • MUST 2px のアウトラインオフセットを使用する
  • NEVER フォーカスインジケーターを削除しない
ホバー
  • ボタン(プライマリ):背景を10%明るくする
  • ボタン(セカンダリ):背景に #FEFEFE を使用する
  • リスト項目:背景に #FEFEFE を使用する
無効状態
  • MUST opacity: 0.5 を使用する
  • MUST cursor: not-allowed を使用する

インタラクション

  • MUST 破壊的または取り消し不可能な操作には AlertDialog を使用する
  • SHOULD 読み込み状態には構造を反映したスケルトンを使用する
  • MUST エラーは操作が行われる場所の近くに表示する
  • NEVER input 要素や textarea 要素への貼り付けをブロックしない
  • MUST アイコンのみのボタンには aria-label を追加する

アニメーション

  • NEVER 明示的に要求されていない限り、アニメーションを追加しない
  • MUST コンポジターのプロパティ(transform、opacity)のみをアニメーションさせる
  • NEVER レイアウトプロパティ(width、height、top、left、margin、padding)をアニメーションさせない
  • SHOULD 登場時のアニメーションには ease-out を使用する
  • NEVER 操作フィードバックのアニメーションを 200ms より長くしない
  • SHOULD prefers-reduced-motion を尊重する

パフォーマンス

  • NEVER 大きな blur() または backdrop-filter の領域をアニメーションさせない
  • NEVER アニメーションが実行中でないときに will-change を適用しない
  • NEVER レンダーロジックで表現できる処理に useEffect を使用しない

コメント