intercom-ui-skills について
intercom-ui-skillsは、AIエージェントがIntercom風のインターフェースを構築するための設計制約です。色やタイポグラフィ、レイアウト、アクセシビリティ、操作、アニメーション、性能の指針を定めています。
主な機能
- 01Intercom風のビジュアルトークン
- 02Interフォントとタイポグラフィ規則
- 034px間隔グリッド
- 04アクセシブルなフォーカスとコントラスト
- 05操作とアニメーションの制約
- 06レイアウトと性能の指針
活用シーン
- 01Intercom風デザインシステムの構築
- 02AIエージェントによるライトモード画面作成
- 03タイポグラフィと間隔の統一
- 04アクセシビリティと操作性の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ ihlamury/ design-skills --skill intercom-ui-skillsインストール後、Claude Code で/intercom-ui-skillsを入力して読み込まれたか確認します。
同梱ファイルmetadata.json
詳細
Intercom UI スキル
AI エージェントで Intercom スタイルのインターフェースを構築するための推奨制約です。
適用する場面
以下の場合に、これらのガイドラインを参照してください。
- ライトモードのインターフェースを構築する場合
- Intercom に着想を得たデザインシステムを作成する場合
- Inter フォントと 4px グリッドを使用する UI を実装する場合
色
- 主要なサーフェスには明るい背景を使用することを推奨します
- ページの背景(
surface-base)には#FEFEFEを使用する必要があります - 主要なアクションとフォーカス状態(
accent)には#4F3FE6を使用する必要があります - 色のパレットを減らすことを推奨します(現在、19 色が検出されています)
- アクセシビリティのため、テキストのコントラスト比を少なくとも 4.5:1 に保つ必要があります
セマンティックトークン
| トークン | HEX | RGB | 用途 |
|---|---|---|---|
surface-base | #FEFEFE | rgb(254,254,254) | ページの背景 |
surface-raised | #110D0C | rgb(17,13,12) | カード、モーダル、浮き上がったサーフェス |
surface-overlay | #4F3FE6 | rgb(79,63,230) | オーバーレイ、ツールチップ、ドロップダウン |
text-primary | #8492A8 | rgb(132,146,168) | 見出し、本文 |
text-secondary | #ABAAAB | rgb(171,170,171) | 補助テキスト、控えめなテキスト |
text-tertiary | #939393 | rgb(147,147,147) | その他のテキスト |
border-default | #EAEBE7 | rgb(234,235,231) | 控えめな境界線、区切り線 |
accent | #4F3FE6 | rgb(79,63,230) | 主要なアクション、リンク、フォーカス |
success | #278019 | rgb(39,128,25) | 成功状態、確認 |
タイポグラフィ
- プライマリフォントファミリーには
Interを使用する必要があります - 一貫性を保つため、単一のフォントファミリーを使用することを推奨します
- 主要な見出しには
46px/extra_boldを使用する必要があります - 本文には
14px/400を使用する必要があります - フォントウェイトを減らすことを推奨します(現在、6 種類が検出されています)
- 見出しには
text-balanceを、本文にはtext-prettyを使用する必要があります - 数値データには
tabular-numsを使用することを推奨します - 明示的な依頼がない限り、字間を変更してはなりません
テキストスタイル
| スタイル | フォント | サイズ | ウェイト | 色 | 件数 |
|---|---|---|---|---|---|
heading-1 | Inter | 46px | extra_bold | #E1E0DF | 1 |
text-26px | Inter | 26px | semi_bold | #DFE0E2 | 1 |
text-24px | Inter | 24px | semi_bold | #E7E6E5 | 1 |
text-18px | Inter | 18px | 400 | #848A92 | 1 |
text-16px | Inter | 16px | 400 | #A29E9D | 1 |
text-16px | Inter | 16px | 400 | #827F7F | 1 |
text-15px | Inter | 15px | 400 | #BABDC3 | 1 |
text-15px | Inter | 15px | 400 | #9B9BA1 | 1 |
text-15px | Inter | 15px | 400 | #818181 | 1 |
text-15px | Inter | 15px | 400 | #8F87E8 | 1 |
タイポグラフィのリファレンス
フォントファミリー:
Inter(72 回使用)
フォントサイズ: 6px、7px、8px、9px、10px、11px、12px、13px、14px、15px、16px、18px、24px、26px、46px
余白
- 余白には 4px グリッドを使用する必要があります
- 次のスケールの余白を使用することを推奨します:1px、2px、3px、4px、5px、6px、7px、8px
- 要素間のデフォルトの間隔には 5px を使用することを推奨します
- 任意の余白値を使用してはなりません(デザインスケールを使用してください)
- コンテナー内のパディングを一貫させることを推奨します
境界線
- 次のスケールから
border-radiusを使用する必要があります:3px、4px、6px、7px、9px、10px、13px、15px、16px、18px、19px - 境界線の幅は 1px、2px、3px に制限することを推奨します
- デフォルトの
border-radiusには 6px を使用することを推奨します - 任意の
border-radius値を使用してはなりません(デザインスケールを使用してください) - 要素を区切るには、控えめな境界線(1px)を使用することを推奨します
角丸のリファレンス
スケール: 3px、4px、6px、7px、9px、10px、13px、15px、16px、18px、19px
レイアウト
- 基準となるビューポート幅を 1920px として設計する必要があります
- 一貫した要素幅として、9px、8px、6px、4px、20px を使用することを推奨します
- 明確な階層を持つ、テキスト中心のレイアウトを保つことを推奨します
h-screenを使用してはなりません。ビューポート全体の高さにはh-dvhを使用してください- 固定要素では
safe-area-insetを考慮する必要があります - 正方形の要素には
w-*とh-*の代わりにsize-*を使用することを推奨します
検出されたレイアウトパターン
- ヘッダー:高さ:42px
- ヘッダー:高さ:88px
- ヘッダー:高さ:53px
コンポーネント
ボタン
| バリエーション | 背景 | テキスト | 境界線 | 高さ | 角丸 |
|---|---|---|---|---|---|
| Ghost | 透明 | #8492A8 | なし | - | - |
インタラクティブな状態
フォーカス
- MUST アクセントカラー(
#4F3FE6)を使った2pxのアウトラインを使用する - MUST
2pxのアウトラインオフセットを使用する - NEVER フォーカスインジケーターを削除しない
ホバー
- ボタン(プライマリ):背景を10%明るくする
- ボタン(セカンダリ):背景に
#110D0Cを使用する - リスト項目:背景に
#110D0Cを使用する
無効状態
- 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を使用しない
コメント
Markdown 対応