mcpField
T
todoist-ui-skills

todoist-ui-skills

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

todoist-ui-skills について

todoist-ui-skillsは、AIエージェントがTodoist風のUIを作るためのデザインスキルです。配色、文字組み、レイアウト、アクセシビリティ、操作性、パフォーマンスの指針を示します。

主な機能

  1. 01ライト配色とセマンティックカラー
  2. 02Interのタイポグラフィと文字スタイル
  3. 034pxのスペーシングと角丸尺度
  4. 04アクセシビリティと操作ルール
  5. 05アニメーションと性能の制約

活用シーン

  1. 01ライトモードUIの構築
  2. 02Todoist風デザインシステムの作成
  3. 03スペーシングと文字組みの統一

インストール

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

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

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

同梱ファイルmetadata.json

詳細

Todoist UI スキル

AI エージェントで Todoist 風のインターフェースを構築するための、独自の制約です。

適用する場面

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

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

色

  • 主なサーフェスには明るい背景を使用することを推奨します
  • ページの背景(surface-base)には #FDFCFA を使用する必要があります
  • カラーパレットを絞ることを推奨します(現在は 20 色が検出されています)
  • アクセシビリティのため、テキストのコントラスト比を少なくとも 4.5:1 に保つ必要があります
セマンティックトークン
トークンHEXRGB用途
surface-base#FDFCFArgb(253,252,250)ページの背景
surface-raised#FDDECFrgb(253,222,207)カード、モーダル、浮き上がったサーフェス
surface-overlay#FDF3EArgb(253,243,234)オーバーレイ、ツールチップ、ドロップダウン
text-primary#A6A6A6rgb(166,166,166)見出し、本文テキスト
text-2#515250rgb(81,82,80)追加テキスト
text-secondary#6B6A6Argb(107,106,106)セカンダリテキスト、控えめなテキスト
border-default#F6F1EFrgb(246,241,239)目立たない境界線、区切り線
destructive#FDF3EArgb(253,243,234)エラー状態、削除操作
warning#FDFCFArgb(253,252,250)警告状態、注意事項

タイポグラフィ

  • プライマリフォントファミリーには Inter を使用する必要があります
  • 一貫性を保つため、フォントファミリーは 1 種類にすることを推奨します
  • プライマリ見出しには 55px / 700 を使用する必要があります
  • 本文テキストには 13px / 400 を使用する必要があります
  • フォントウェイトの種類を減らすことを推奨します(現在は 5 種類が検出されています)
  • 見出しには text-balance、本文テキストには text-pretty を使用する必要があります
  • 数値データには tabular-nums を使用することを推奨します
  • 明示的に要求されない限り、文字間隔を変更してはいけません
テキストスタイル
スタイルフォントサイズウェイト色数
heading-1Inter55px700#2B2A261
text-22pxInter22px400#6061591
text-21pxInter21px500#C959581
text-20pxInter20px400#66675E1
text-19pxInter19px400#7776741
text-18pxInter18px500#9695911
text-18pxInter18px400#A4A3A11
text-18pxInter18pxextra_bold#8B8C861
text-16pxInter16px500#F1BCAF1
text-16pxInter16px400#52534D1
タイポグラフィのリファレンス

フォントファミリー:

  • Inter(75 回使用)

フォントサイズ: 5px、6px、7px、8px、9px、10px、11px、12px、13px、14px、15px、16px、18px、19px、20px、21px、22px、55px

間隔

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

境界線

  • 次のスケールから border-radius を使用する必要があります:1px、2px、3px、4px、9px、10px
  • 境界線の幅には一貫して 1px を使用する必要があります
  • デフォルトの border-radius には 3px を使用することを推奨します
  • 任意の border-radius 値を使用してはいけません(デザインスケールを使用してください)
  • 要素を区切るには、目立たない境界線(1px)を使用することを推奨します
Border Radius リファレンス

スケール: 1px、2px、3px、4px、9px、10px

レイアウト

  • 基準ビューポート幅を 1920px としてデザインする必要があります
  • 要素の幅は一貫させることを推奨します:7px、8px、10px、11px、5px
  • 明確な階層を持つ、テキスト主体のレイアウトを維持することを推奨します
  • h-screen は使用せず、ビューポート全体の高さには h-dvh を使用してください
  • 固定要素では safe-area-inset を尊重する必要があります
  • 正方形の要素には w-* と h-* の組み合わせではなく、size-* を使用することを推奨します
検出されたレイアウトパターン
  • メインコンテンツ:幅:1920px、高さ:938px
  • ヘッダー:高さ:76px

コンポーネント

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

インタラクティブ状態

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

インタラクション

  • 破壊的または取り消せない操作には MUST AlertDialog を使用する
  • ローディング状態には SHOULD 構造的なスケルトンを使用する
  • エラーは操作が発生する場所の隣に MUST 表示する
  • input または textarea 要素への貼り付けを妨げないこと
  • アイコンのみのボタンには MUST aria-label を追加する

アニメーション

  • 明示的に求められていない限り、アニメーションを追加しないこと
  • MUST コンポジターのプロパティ(transform、opacity)のみをアニメーションさせる
  • レイアウトプロパティ(width、height、top、left、margin、padding)をアニメーションさせないこと
  • 進入アニメーションには SHOULD ease-out を使用する
  • インタラクションフィードバックは 200ms を超えないこと
  • SHOULD prefers-reduced-motion を尊重する

パフォーマンス

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

コメント