mcpField
D
design-system-compliance

design-system-compliance

github.com/reticlehqデザイン・UI1.3k249 回インストール今日更新
リポジトリ

design-system-compliance について

プロジェクトが宣言したデザイントークンに、実行中のUIが準拠しているかを調べるReticle向けスキルです。ブラウザーで解決されたスタイルと要素の位置を示し、デザインの良し悪しは評価しません。

主な機能

  1. 01計算済みカラーをデザイントークンと比較
  2. 02トークン数と有効なテーマ範囲を報告
  3. 03遮蔽、サイズ、不透明度、カーソルを検査
  4. 04実行中および完了したアニメーションを一覧表示
  5. 05要素のソース位置を提示

活用シーン

  1. 01宣言済みトークンに合わない色の発見
  2. 02検査時にテーマが適用されているか確認
  3. 03コントロールの表示状態と使用可否の確認
  4. 04アニメーションが想定時間で動くか検証

MCP 対応

Reticleは、このスキルが使うライブページ検査とアニメーション機能をMCPツールとして提供します。

インストール

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

$npx skills add https://github.com/reticlehq/reticle --skill design-system-compliance

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

詳細

描画された UI は実際にデザインシステムを使っているか?

ソースを読めば、コンポーネントが何を 要求している かはわかります。しかし、ブラウザーで実際に解決された内容はわかりません。3 層上書きされたトークン、たまたま近い色に見えるハードコードされた #3b82f6、適用されなかったダークテーマのスコープなどです。その答えがわかるのは、実行中のページだけです。

Reticle は実行中のアプリで計算済みスタイルを読み取り、プロジェクトのトークンと比較します。まだ設定していませんか?reticle スキルに従ってください。Reticle をインストールし、init によるアプリのファイル変更の前にユーザーへ確認し、1 つのフローで動作を実証します。

チェック

reticle_look({ action: "page", sessionId, mode: "interactive" })
reticle_look({ action: "element", sessionId, ref })

inspect は各要素について theme レポートを返します。

フィールド説明
offTheme最も重要な項目です。 設定済みの不透明色がパレット内のどのトークンにも一致しない場合は true です。修正すべき違反を示します
colorTokens / backgroundTokensこの色と解決後の値が一致するすべてのトークンです。空の場合、パレットにない色です
colorToken / backgroundToken一意に 一致するトークン。複数のトークンが同じ色を共有している場合は null です。ここでの null は違反ではなく、一致を断定しないことを意味します。複数形のフィールドを確認してください
tokenCountアクティブなテーマで解決されたトークンの数です。0 はアプリにパレットが定義されていないことを意味し、offTheme は決して true になりません。問題なしと判断せず、その旨を報告してください
themeScopeキャプチャ時にアクティブだったテーマ(例:.dark)です。これにより、数分間隔で実行した 2 つの inspect も比較できます

まず tokenCount を確認してください。トークンが 0 個なら準拠すべきものがなく、それより下にあるすべての「合格」は意味をなしません。

色以外:コントロールは実際に使えるか?

同じ呼び出しで、スクリーンショットからはわからない点も確認できます。

  • occluded:オーバーレイに覆われています。描画されていますが、ユーザーはクリックできません。
  • box:0×0 は存在しているのに見えない状態です。「DOM にあるのに見える」という、最もよくあるバグです。
  • styles.opacity / styles.cursor:無効に見える状態と、実際に無効な状態の違いです。
  • source: { file, line }:修正箇所です。

色だけを比較するデザインレビューでは、誰も押せないボタンが合格してしまいます。

アニメーション

reticle_run({ tool: "reticle_animations", args: { sessionId } })

実行中および最近完了したアニメーションを、対象とタイミングとともに返します。モーションに関する作業の後に確認すべき点が 2 つあります。追加したアニメーションがここに表示されない場合、実行されていません。また、アニメーションの長さがトークンと一致しない場合は仕様違反です。どちらもスクリーンショットでは同じように見えます。

違反は意見ではなく場所として報告する

失敗した要素ごとに、inspect が示す file:line と具体的な事実を伝えてください。「背景色 #3b82f6 はどのトークンにも一致しません。パレットでは --color-primary が #2563eb です」。場所を示さないデザインレビューのコメントは、ほかの誰かがやり直さなければならない作業です。

これは何ではないか

これは、プロジェクトが宣言するトークンへの準拠をチェックするものです。デザインの良し悪しに対する評価でも、アクセシビリティ監査でもありません。コントラスト比、フォーカス順序、スクリーンリーダー向けのセマンティクスは別の作業です。ここでそれらを確認したと主張するのは、このリポジトリが防ごうとしているものそのもの、つまり誤った「問題なし」の判定です。


そのほかの内容は、1 ページずつ確認してください:curl https://docs.reticle.sh/llms.txt。デザイントークンのチェックに必要なものが足りませんか?reticle_session { action: "feedback" } に kind: "gap" を指定してください。

コメント