mcpField
D
design-systems-slds-validate

design-systems-slds-validate

github.com/forcedotcomテスト・品質1.1k5.9k 回インストール1 日前に更新
リポジトリ

design-systems-slds-validate について

Lightning Web Components の SLDS 準拠状況を監査する、Salesforce 開発者向けのスキルです。リンター結果、追加の静的解析、必須の手動レビューを組み合わせ、スコアカードと最終評価を作成します。

主な機能

  1. 01SLDS リンターを実行して違反を集計
  2. 02CSS、HTML、JS を追加解析
  3. 03カテゴリ別に採点して評価を付与
  4. 04結論前に手動レビューを必須化
  5. 05構造化された品質レポートを作成

活用シーン

  1. 01プロジェクト全体の SLDS 準拠状況を監査
  2. 02変更前後のコンポーネント品質を比較
  3. 03テーマやアクセシビリティの問題を特定
  4. 04リリース前にコンポーネントの準備状況を評価

インストール

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

$npx skills add https://github.com/forcedotcom/sf-skills --skill design-systems-slds-validate

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
quality-checks.md
report-format.md
scripts/
analyze-quality.cjs

詳細

SLDS 品質監査

Lightning Web Components の SLDS 準拠状況を監査し、自動スコアカードと必須の手動レビューゲートを生成します。SLDS リンターの出力に補足的な静的解析を組み合わせ、リンターが検出できない問題も見つけます。

対象範囲

以下にも有効です:プロジェクトまたはコンポーネントセット全体の SLDS 準拠状況の監査、変更を加えた後の品質比較。

対象外:

  • リンター違反の修正 — 代わりに design-systems-slds2-migrate を使用してください
  • 新しいコンポーネントの構築 — 代わりに design-systems-slds-apply を使用してください
  • リンターを実行するだけ — npx @salesforce-ux/slds-linter@latest lint . を直接実行してください
  • WCAG アクセシビリティの完全な監査 — このスキルが確認するのは属性の有無(ラベル、代替テキスト、フォーカスインジケーター)のみです。コントラスト比、キーボード操作の流れ、スクリーンリーダーの動作は確認しません
  • .css、.html、.js ファイルを超えるフレームワーク固有のテンプレート監査 — JSX/TSX/Vue/Svelte の出力には、追加の手動レビューが必要です

品質検証プロセス

1. Run SLDS Linter     → Collect violation counts (linter's job)
2. Run Analyze Script  → Check what linter doesn't cover (supplementary)
3. Agent Review        → Required manual review gate
4. Score & Grade       → Compute automated score + final recommendation
5. Generate Report     → Produce formatted scorecard

ステップ 1:SLDS リンターを実行する

リンターを実行し、違反のベースラインデータを収集します。

npx @salesforce-ux/slds-linter@latest lint <component-path> 2>&1

ルールごとに違反数を数えます。これらの値は リンター準拠度スコアに直接反映されます。

ルール影響
slds/class-overrideテーマ設定とダークモードが機能しなくなります
slds/lwc-token-to-slds-hookSLDS 1 の技術的負債になります
slds/no-hardcoded-valuesテーマ設定とアクセシビリティが機能しなくなります

リンター準拠度スコア = 100 - (total_violations × 10)、最小値は 0 です。

リンターを利用できない場合(Node.js がない、ネットワークにアクセスできない、CI サンドボックスの制限がある場合):このステップをスキップし、レポートのヘッダーに「リンター未実行」と記載して、リンター準拠度を N/A とし、残り 4 カテゴリーの比率を 100% に再調整して総合スコアを算出します。

Overall (linter unavailable) = (Theming × 0.29) + (Accessibility × 0.29)
                              + (CodeQuality × 0.21) + (ComponentUsage × 0.21)

ステップ 2:補足解析を実行する

解析スクリプトを実行し、リンターがカバーしていない問題を検出します。付属の解析ツールは .css、.html、.js ファイルのみをスキャンします。

node scripts/analyze-quality.cjs <component-path>

スクリプトは、重要度別に整理された検出結果を JSON 形式で出力します。確認項目は次のとおりです。

CSS チェック(リンターを補完)
チェック検出する内容重要度
フォールバックの欠落フォールバック値のない var(--slds-g-*)Critical
独自定義されたフック(T051)hooks-index.json にない --slds-g-* トークン(--hooks-index が必要)Critical
フックのペア対応する前景フックのない背景フックWarning
!important詳細度の上書きWarning
マジックピクセル値スペーシングフックを使用していないハードコードの pxWarning
大きすぎる z-index99 を超える z-index 値Warning
アウトラインの削除代替のフォーカススタイルがない outline: noneWarning
JS チェック
チェック検出する内容重要度
インラインスタイルの代入.style.*= によるプロパティへの直接代入Warning
SLDS クラスの操作動的な .classList.add('slds-*') による操作Warning
HTML チェック
チェック検出する内容重要度
LBC 入力ラベルlabel 属性のない <lightning-input>Critical
アイコンの代替テキストalternative-text のない <lightning-icon>Critical
画像の代替テキストalt のない <img>Critical
見出しの階層見出しレベルの飛び(h2 から h4 など)Warning
正の tabindex0 または -1 以外の tabindex 値Warning
クリック可能な div<button> ではなく <div onclick> を使用Warning
インラインスタイルstyle="..." 属性Warning
ネイティブ要素LBC の代替要素がある場合の <input>、<button>、<select>Warning
フックペアの検証

スクリプトは、背景フックと前景フックが意味的にペアになっているかを確認します。

surface-* backgrounds     → on-surface-* text
surface-container-* bg    → on-surface-* text
accent-* backgrounds      → on-accent-* text
accent-container-* bg     → on-accent-* text

制限事項: フックのペアはセレクターごとではなく、ファイル単位で確認されます。.classA に surface-1 があり、.classB に on-accent-1 があるファイルは、surface ファミリーと accent ファミリーの両方が含まれるため、チェックを通過します。ステップ 3 の手動レビューで、セレクターごとにペアが正しいか確認してください。

フックの誤作成の検出(T051)

このスクリプトは、CSS 内のすべての --slds-g-* トークンを hooks-index.json と照合します。メタデータに見つからないフックは重大な問題としてフラグ付けされます。これにより、命名パターンからフックを作り出すという、エージェントによくある誤りを検出できます。

ステップ 3:エージェントによる手動レビュー

これらのチェックにはコンポーネントの目的を理解する必要があり、確実な自動化はできません。それぞれをレビューし、問題を次のいずれかに分類してください。

  • ブロッキング — ブループリント構造の誤り、必須状態の不足、またはコンポーネントが本番運用に適さない状態にする意味上・インタラクション上の問題
  • 参考事項 — 改善する価値はあるものの、それだけではリリースを妨げないもの
レビュー領域確認する内容
ローディング状態データ取得中にスピナーまたはスケルトンを表示しますか?
エラー状態ユーザーに、対処可能なメッセージとともにエラーを提示していますか?
空の状態データがない場合に、意味のある空の状態を表示していますか?
無効状態インタラクティブな要素は、無効状態を見た目と機能の両面で適切に処理していますか?
セマンティック HTML適切な箇所で <nav>、<article>、<section> を使用していますか?
SLDS ブループリントへの準拠カード、モーダル、フォームは SLDS ブループリントの構造に従っていますか?

手動レビューの結果は自動化されませんが、最終的な推奨事項には影響します。自動評価だけを最終判断として報告しないでください。

ステップ 4:自動スコアと最終的な推奨事項を算出する

コンポーネントの複雑さ

スコアを算出する前に、スコアの背景を示すため、コンポーネントを分類してください。

複雑さ基準レポートの注記
小規模1~2 ファイル、合計 100 行未満スコアの信頼度が高い(対象範囲が小さい)
中規模3~6 ファイル、合計 100~500 行一般的なコンポーネントを反映したスコア
大規模7 ファイル以上、合計 500 行以上問題の絶対数を反映したスコア。適切に構築された大規模コンポーネントでも、スコアが低くなる場合があります

レポートのヘッダーに複雑さの分類を含めてください。これにより、1000 行のコンポーネントの「B」と 20 行のコンポーネントの「B」を誤って同等に解釈するのを防げます。

自動スコアの計算式
Category Score = 100 - (critical_issues × 10) - (warnings × 3) - (info × 1)
Minimum score: 0
カテゴリーと重み
カテゴリー重み参照元
リンター準拠30%SLDS リンターの出力(ステップ 1)
テーマ設定20%スクリプト:フォールバック、フックの対応付け(ステップ 2)
アクセシビリティ20%スクリプト:ラベル、代替テキスト、フォーカス(ステップ 2)
コード品質15%スクリプト:!important、インラインスタイル、z-index(ステップ 2)
コンポーネントの使用状況15%スクリプト:ネイティブ要素(ステップ 2)、およびセマンティクス/ブループリントの手動レビュー(ステップ 3)
自動総合スコア
Overall = (Linter × 0.30) + (Theming × 0.20) + (Accessibility × 0.20)
        + (CodeQuality × 0.15) + (ComponentUsage × 0.15)
自動評価のグレード基準
スコアグレード意味
90-100A自動評価で優秀
80-89B自動評価で良好
70-79C自動評価で許容範囲
60-69D自動評価で弱い
0-59F自動評価で不合格
手動レビューの判定基準

自動スコアを算出した後、手動レビューの結果を適用します。

判定適用する状況最終的な推奨事項への影響
合格手動レビューで問題が見つからない最終的な推奨事項は自動スコアに従います
参考事項ありブロッキングではない手動レビューの問題のみ最終的な推奨事項は、最良でも「フォローアップありで準備完了」となります
ブロッキングブロッキングに該当する問題が 1 件以上ある自動グレードにかかわらず、最終的な推奨事項は 本番運用の準備ができていません となります
最終的な推奨事項のルール

自動スコアと手動レビューの判定基準の両方を使用してください。

最終的な推奨事項条件
本番運用の準備完了自動グレードが A/B、重大な問題がなく、手動レビュー判定が合格
フォローアップありで準備完了自動グレードが A/B、重大な問題がなく、手動レビュー判定が参考事項あり
要修正重大な問題がある、自動グレードが C/D、または手動レビュー判定がブロッキング
不合格自動グレードが F

Step 5: 品質レポートの生成

report-format.md のテンプレートを使用して、最終レポートを作成します。初回の出力では、デフォルトでコンパクト形式を使用し、依頼に応じて各セクションを詳しく説明します。

レポートには以下が含まれます:

  • 自動評価と最終的な推奨事項を含むエグゼクティブサマリー
  • 手動レビューゲートの結果(Pass、Advisory、またはBlocking)
  • 視覚的なインジケーター付きのカテゴリ別スコア
  • 重大度別に整理された詳細な調査結果
  • 具体的なコードの場所と推奨事項
  • 必須アクションのチェックリスト

クイック検証モード

完全な分析を行わずに迅速に品質を確認するには:

  1. リンターを実行します:npx @salesforce-ux/slds-linter@latest lint <path>
  2. 種類ごとに違反の数を集計します
  3. 概要のみを報告します
Quick Quality Check: <component-name>
─────────────────────────────────────
Linter Violations:
  • Class Override:     0
  • Deprecated Tokens:  3
  • Hardcoded Values:   5

Quick Automated Grade: C (estimated)
Run full validation for detailed report.

エッジケースと誤検出

状況ガイダンス
ヘッドレスコンポーネント(JS のみ、HTML なし)HTML チェックを省略し、CSS とリンターのカテゴリのみを採点します
ラッパー/コンテナーコンポーネントCSS が最小限でも問題ない場合があります。フックの使用率が低くても減点しないでください
意図的なネイティブ要素カスタム SLDS ブループリント内の <button> は正しい使用方法です。slds-* ブループリント構造内にある場合は C002 を抑制します
LEX 以外のコンポーネントLWR/Experience Cloud のコンポーネントでは Lightning Base Components を使用しない場合があります。レポートにコンテキストを記載してください
テスト/デモ用コンポーネント基準を緩和します。レポートには記載しますが、警告を理由にブロックしないでください

チェックで誤検出が発生した場合は、黙って除外せず、理由を添えてレポートに「suppressed」と記載してください。


参考資料

  • 品質チェック - 検出パターンを含む、すべての品質チェックの完全な一覧
  • レポート形式 - 品質レポートのテンプレートと書式ガイド
  • 分析スクリプト - リンターを補完するチェックを自動分析します
  • design-systems-slds2-migrate skill - リンター違反の修正方法
  • design-systems-slds-apply skill - 正しいパターンで新しいコンポーネントを構築するためのガイド

コメント