cal-ui-skills について
cal-ui-skillsは、AIエージェントがCal風のインターフェースを作成するための設計制約です。色、タイポグラフィ、間隔、レイアウト、アクセシビリティ、操作、アニメーション、性能の指針を示します。
主な機能
- 01Cal風のビジュアルトークン
- 02Interフォントとタイポグラフィ規則
- 034px間隔グリッド
- 04アクセシブルなフォーカスとコントラスト
- 05操作とアニメーションの制約
- 06レイアウトと性能の指針
活用シーン
- 01Cal風デザインシステムの構築
- 02AIエージェントによるライトモード画面作成
- 03タイポグラフィと間隔の統一
- 04アクセシビリティと操作性の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ ihlamury/ design-skills --skill cal-ui-skillsインストール後、Claude Code で/cal-ui-skillsを入力して読み込まれたか確認します。
同梱ファイルmetadata.json
詳細
Cal UI スキル
AI エージェントを使用して Cal 風のインターフェースを構築するための、独自の制約です。
適用する場合
以下の場合に、これらのガイドラインを参照してください。
- ライトモードのインターフェースを構築する
- Cal に着想を得たデザインシステムを作成する
- Inter フォントと 4px グリッドを使用して UI を実装する
色
- 主要なサーフェスには明るい背景を使用することが推奨されます
- ページの背景(
surface-base)には#FDFDFDを使用する必要があります - カラーパレットを縮小することが推奨されます(現在、16 色が検出されています)
- アクセシビリティのため、テキストのコントラスト比を少なくとも 4.5:1 に保つ必要があります
セマンティックトークン
| トークン | HEX | RGB | 用途 |
|---|---|---|---|
surface-base | #FDFDFD | rgb(253,253,253) | ページの背景 |
surface-raised | #EDEDED | rgb(237,237,237) | カード、モーダル、浮き上がったサーフェス |
surface-overlay | #1C1C1C | rgb(28,28,28) | オーバーレイ、ツールチップ、ドロップダウン |
text-primary | #6B6B6B | rgb(107,107,107) | 見出し、本文テキスト |
text-secondary | #A1A1A1 | rgb(161,161,161) | セカンダリテキスト、控えめなテキスト |
text-tertiary | #404040 | rgb(64,64,64) | 補足テキスト |
border-default | #E5E5E5 | rgb(229,229,229) | 控えめな境界線、区切り線 |
destructive | #FCC9C1 | rgb(252,201,193) | エラー状態、削除操作 |
タイポグラフィ
- プライマリフォントファミリーとして
Interを使用する必要があります - 一貫性を保つため、単一のフォントファミリーを使用することが推奨されます
- 主要な見出しには
70px/700を使用する必要があります - 本文テキストには
16px/400を使用する必要があります - フォントウェイトを減らすことが推奨されます(現在、5 種類が検出されています)
- 見出しには
text-balance、本文テキストにはtext-prettyを使用する必要があります - 数値データには
tabular-numsを使用することが推奨されます - 明示的な指示がない限り、文字間隔を変更してはなりません
テキストスタイル
| スタイル | フォント | サイズ | ウェイト | 色 | 数 |
|---|---|---|---|---|---|
heading-1 | Inter | 70px | 700 | #2A2A2A | 1 |
text-23px | Inter | 23px | semi_bold | #C1C1C1 | 1 |
text-22px | Inter | 22px | semi_bold | #494949 | 1 |
text-21px | Inter | 21px | 500 | #676767 | 1 |
text-21px | Inter | 21px | semi_bold | #383838 | 1 |
text-19px | Inter | 19px | 500 | #2C2C2C | 1 |
text-19px | Inter | 19px | 500 | #3C3C3C | 1 |
text-19px | Inter | 19px | 500 | #D4D4D4 | 1 |
text-18px | Inter | 18px | 500 | #404040 | 1 |
body | Inter | 16px | 400 | #A4A4A4 | 1 |
タイポグラフィの参考情報
フォントファミリー:
Inter(65 回使用)
フォントサイズ: 8px、9px、10px、11px、12px、13px、14px、15px、16px、18px、19px、21px、22px、23px、70px
余白
- 余白には 4px グリッドを使用する必要があります
- 次のスケールから余白を使用することが推奨されます:1px、2px、3px、4px、5px、6px、7px、9px
- 要素間のデフォルトの間隔には 5px を使用することが推奨されます
- 任意の余白値を使用してはなりません(デザインスケールを使用してください)
- コンテナー内のパディングを一貫させることが推奨されます
境界線
- 次のスケールから border-radius を使用する必要があります:1px、2px、3px、4px、6px、7px、8px、9px、10px、11px
- 境界線の幅は 1px、3px に限定することが推奨されます
- デフォルトの border-radius には 3px を使用することが推奨されます
- 任意の border-radius 値を使用してはなりません(デザインスケールを使用してください)
- 要素の区切りには控えめな境界線(1px)を使用することが推奨されます
Border Radius の参考情報
スケール: 1px、2px、3px、4px、6px、7px、8px、9px、10px、11px
レイアウト
- 基準のビューポート幅を 1920px として設計する必要があります
- 要素の幅には一貫した値(16px、8px、11px、10px、52px)を使用することが推奨されます
- 明確な階層構造を持つ、テキスト主体のレイアウトを維持することが推奨されます
h-screenは使用せず、ビューポート全体の高さにはh-dvhを使用してください- 固定要素では
safe-area-insetを尊重する必要があります - 正方形の要素には
w-*+h-*の代わりにsize-*を使用することが推奨されます
検出されたレイアウトパターン
- メインコンテンツ:幅:1565px、高さ:814px
- メインコンテンツ:幅:1920px、高さ:1080px
- メインコンテンツ:幅:1180px、高さ:717px
- メインコンテンツ:幅:1178px、高さ:701px
コンポーネント
ボタン
| バリアント | 背景 | テキスト | 境界線 | 高さ | 角丸 |
|---|---|---|---|---|---|
| Ghost | 透明 | #6B6B6B | なし | - | - |
インタラクティブ状態
フォーカス
- アクセントカラー(
#5E6AD2)を使った2pxのアウトラインを必ず使用します 2pxのアウトラインオフセットを必ず使用します- フォーカスインジケーターは決して削除しないでください
ホバー
- ボタン(プライマリ):背景色を10%明るくします
- ボタン(セカンダリ):背景色に
#EDEDEDを使用します - リスト項目:背景色に
#EDEDEDを使用します
無効状態
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 対応