loops-ui-skills について
loops-ui-skillsは、AIエージェントがLoops風のインターフェースを構築するための設計制約です。ビジュアルトークン、タイポグラフィ、レイアウト、アクセシビリティ、操作、アニメーション、性能の指針を定めています。
主な機能
- 01Loops風のビジュアルトークン
- 02Interフォントとタイポグラフィ規則
- 034px間隔グリッド
- 04アクセシブルなフォーカスとコントラスト
- 05操作とアニメーションの制約
- 06レイアウトと性能の指針
活用シーン
- 01Loops風デザインシステムの構築
- 02AIエージェントによるライトモード画面作成
- 03タイポグラフィと間隔の統一
- 04アクセシビリティと操作性の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ ihlamury/ design-skills --skill loops-ui-skillsインストール後、Claude Code で/loops-ui-skillsを入力して読み込まれたか確認します。
同梱ファイルmetadata.json
詳細
Loops UI スキル
AI エージェントで Loops 風のインターフェースを構築するための、独自の制約です。
適用するタイミング
次の場合は、これらのガイドラインを参照してください。
- ライトモードのインターフェースを構築するとき
- Loops に着想を得たデザインシステムを作成するとき
- Inter フォントと 4px グリッドを使用して UI を実装するとき
色
- 主要なサーフェスには明るい背景を使用することを推奨します
- ページの背景には
#FFFFFF(surface-base)を必ず使用してください - カラーパレットは縮小することを推奨します(現在 17 色が検出されています)
- アクセシビリティのため、テキストのコントラスト比は少なくとも 4.5:1 を維持してください
セマンティックトークン
| トークン | HEX | RGB | 用途 |
|---|---|---|---|
surface-base | #FFFFFF | rgb(255,255,255) | ページの背景 |
surface-raised | #ECECEC | rgb(236,236,236) | カード、モーダル、浮き上がったサーフェス |
text-primary | #CCCCCE | rgb(204,204,206) | 見出し、本文 |
text-secondary | #AAAAAE | rgb(170,170,174) | セカンダリ、控えめなテキスト |
text-tertiary | #85B1A4 | rgb(133,177,164) | 補足テキスト |
border-default | #F4F5F6 | rgb(244,245,246) | 控えめな境界線、区切り線 |
destructive | #D77B5F | rgb(215,123,95) | エラー状態、削除アクション |
タイポグラフィ
- 主要フォントファミリーには
Interを必ず使用してください - 一貫性を保つため、単一のフォントファミリーを使用することを推奨します
- 主要な見出しには
39px/700を必ず使用してください - 本文には
22px/700を必ず使用してください - フォントウェイトは減らすことを推奨します(現在 4 種類が検出されています)
- 見出しには
text-balance、本文にはtext-prettyを必ず使用してください - 数値データには
tabular-numsを使用することを推奨します - 明示的に指定されない限り、文字間隔は変更しないでください
テキストスタイル
| スタイル | フォント | サイズ | ウェイト | 色 | 数 |
|---|---|---|---|---|---|
heading-1 | Inter | 39px | 700 | #2B2A29 | 1 |
body | Inter | 22px | 700 | #423029 | 1 |
text-18px | Inter | 18px | 400 | #626262 | 1 |
text-17px | Inter | 17px | 400 | #93908E | 1 |
text-17px | Inter | 17px | 500 | #525252 | 1 |
text-16px | Inter | 16px | 500 | #525252 | 1 |
text-15px | Inter | 15px | 500 | #544542 | 1 |
text-15px | Inter | 15px | 400 | #6D6D6D | 1 |
text-14px | Inter | 14px | 400 | #CCCCCE | 1 |
text-14px | Inter | 14px | 300 | #CCCCCE | 1 |
タイポグラフィのリファレンス
フォントファミリー:
Inter(86 回使用)
フォントサイズ: 7px、8px、9px、10px、11px、12px、13px、14px、15px、16px、17px、18px、22px、39px
間隔
- 間隔には 4px グリッドを必ず使用してください
- 次のスケールの間隔を使用することを推奨します:1px、2px、3px、4px、5px、6px、8px、9px
- 要素間のデフォルトの間隔には 5px を使用することを推奨します
- 任意の間隔値は使用しないでください(デザインスケールを使用してください)
- コンテナ内のパディングは一貫性を保つことを推奨します
境界線
- 境界線の角丸には次のスケールを必ず使用してください:0px、1px、2px、3px、4px、6px、7px、9px、10px、26px
- ピル型の要素には 26px 以上の角丸を使用することを推奨します
- 境界線の幅には一貫して 1px を必ず使用してください
- デフォルトの角丸には 1px を使用することを推奨します
- 任意の角丸値は使用しないでください(デザインスケールを使用してください)
- 要素を区切るには控えめな境界線(1px)を使用することを推奨します
角丸のリファレンス
スケール: 0px、1px、2px、3px、4px、6px、7px、9px、10px、26px
レイアウト
- 基準のビューポート幅を 1920px として設計してください
- 要素の幅は一貫させることを推奨します:13px、27px、50px、12px、7px
- 明確な階層を備えた、テキスト量の多いレイアウトを維持することを推奨します
h-screenは使用せず、ビューポート全体の高さにはh-dvhを使用してください- 固定要素では
safe-area-insetを必ず考慮してください - 正方形の要素には
w-*とh-*の組み合わせではなく、size-*を使用することを推奨します
検出されたレイアウトパターン
- メインコンテンツ:幅:1920px、高さ:1030px
- メインコンテンツ:幅:994px、高さ:568px
- ヘッダー:高さ:52px
コンポーネント
ボタン
| バリアント | 背景 | テキスト | 境界線 | 高さ | 角丸 |
|---|---|---|---|---|---|
| ゴースト | 透明 | #AAAAAE | なし | - | - |
インタラクティブ状態
フォーカス
- アクセントカラー(
#5E6AD2)を使った2pxのアウトラインを必ず使用してください 2pxのアウトラインオフセットを必ず使用してください- フォーカスインジケーターは削除しないでください
ホバー
- ボタン(プライマリ):背景色を10%明るくします
- ボタン(セカンダリ):背景色に
#ECECECを使用します - リスト項目:背景色に
#ECECECを使用します
無効状態
- 必ず
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を決して使用しません
コメント
Markdown 対応