Lint ルール

DESIGN.md linter が適用する 8 つのルール、それぞれのトリガー条件、検出結果の解決方法を説明します。

@google/design.md の linter は、解析済みの DESIGN.md ファイルに対してルールを実行します。各ルールは、error(終了コード 1)、warning、info のいずれかの固定された重大度で検出結果を生成します。

broken-ref

重大度: error

YAML front matter で定義されたどのトークンにも解決されないトークン参照({path.to.token})を検出します。また、不明なコンポーネントサブトークンのプロパティ名にもフラグを立てます。

発生条件:

  • コンポーネントが存在しないトークンパスを参照している(例:accent カラーが定義されていないのに {colors.accent} を参照)
  • コンポーネントが認識済みのセット(backgroundColor、textColor、typography、rounded、padding、size、height、width)にないプロパティ名を使用している

検出結果の例:

error  components.button-primary  Reference {colors.accent} does not resolve to any defined token.

解決方法: 不足しているトークンを YAML front matter で定義するか、参照パスを修正します。不明なプロパティについては、認識済みのコンポーネントサブトークン名のいずれかを使用してください。

missing-primary

重大度: warning

front matter でカラーが定義されているのに、primary という名前のトークンが存在しない場合に警告します。primary カラーがないと、エージェントが自動的に 1 つ生成するため、パレットに対する制御が弱まります。

発生条件: colors セクションに 1 つ以上のエントリがあるが、primary という名前のエントリがない。

検出結果の例:

warning  colors  No 'primary' color defined. The agent will auto-generate key colors, reducing your control over the palette.

解決方法: colors セクションに primary エントリを追加します。

contrast-ratio

重大度: warning

コンポーネントの backgroundColor と textColor のペアについて、WCAG コントラスト比をチェックします。比率が AA の最小値 4.5:1 を下回ると警告します。

発生条件: コンポーネントが backgroundColor と textColor の両方を定義しており、解決されたカラー値のコントラスト比が 4.5:1 を下回る。

検出結果の例:

warning  components.card-dark  textColor (#999999) on backgroundColor (#333333) has contrast ratio 3.48:1, below WCAG AA minimum of 4.5:1.

解決方法: 背景色またはテキストカラーのいずれかを調整し、最小比率 4.5:1 を満たします。

orphaned-tokens

重大度: warning

定義されているものの、どのコンポーネントからも参照されていないカラートークンを特定します。孤立したトークンはノイズを増やし、デザインシステムが不完全であることを示している可能性があります。

発生条件: colors セクションにカラートークンが存在するが、どのコンポーネントのプロパティからも参照されていない。少なくとも 1 つのコンポーネントが定義されている場合にのみ発火します。

検出結果の例:

warning  colors.tertiary  'tertiary' is defined but never referenced by any component.

解決方法: コンポーネントでそのトークンを参照するか、不要になった場合は削除します。

missing-typography

重大度: warning

カラーは定義されているのにタイポグラフィトークンが存在しない場合に警告します。タイポグラフィトークンがないと、エージェントは独自のフォント選択にフォールバックします。

発生条件: colors セクションにエントリがあるが、typography セクションが空である。

検出結果の例:

warning  typography  No typography tokens defined. Agents will use default font choices, reducing your control over the design system's typographic identity.

解決方法: 少なくとも 1 つのタイポグラフィトークン(例:body-md)を front matter に追加します。

section-order

重大度: warning

markdown のセクションが、仕様で定義された正規の順序から外れている場合に警告します。期待される順序は、Overview、Colors、Typography、Layout、Elevation & Depth、Shapes、Components、Do's and Don'ts です。

発生条件: ある認識済みセクション見出しが、本来その前に来るべき別の認識済みセクションよりも先に現れている。セクションの別名(例:「Elevation & Depth」に対する「Elevation」)は、チェック前に解決されます。

検出結果の例:

warning  Section 'Components' appears before 'Typography', which is out of order. Expected order: Overview, Colors, Typography, Layout, Elevation & Depth, Shapes, Components, Do's and Don'ts

解決方法: markdown 本文のセクションを正規の順序に並べ替えます。

missing-sections

重大度: info

他のトークンをすでに定義しているファイルに、任意のトークンセクション(spacing、rounded)がない場合に通知します。これらのセクションは必須ではありませんが、ない場合、エージェントはデフォルトにフォールバックします。

発生条件: colors セクションにエントリがあるが、spacing または rounded にエントリがない。

検出結果の例:

info  spacing  No 'spacing' section defined. Layout spacing will fall back to agent defaults.

解決方法: これらの値を明示的に制御したい場合は、spacing または rounded セクションを front matter に追加します。

token-summary

重大度: info

各セクションで定義されているトークンの数を報告するサマリー診断を出力します。これは純粋に情報提供を目的としています。

検出結果の例:

info  Design system defines 4 colors, 3 typography scales, 2 rounding levels, 6 spacing tokens, 3 components.

まとめ

ルール重大度チェック内容
broken-referror解決されないトークン参照、不明なコンポーネントサブトークン
missing-primarywarningカラーは定義されているが primary が存在しない
contrast-ratiowarningコンポーネントの backgroundColor/textColor が WCAG AA 4.5:1 を下回る
orphaned-tokenswarningカラートークンが定義されているが、どのコンポーネントからも参照されていない
missing-typographywarningカラーは定義されているがタイポグラフィトークンが存在しない
section-orderwarningセクションが正規の順序から外れている
missing-sectionsinfo任意のセクション(spacing、rounded)がない
token-summaryinfoセクションごとに定義されたトークンの数

原文: https://stitch.withgoogle.com/docs/design-md/linting-rules/

本ページは Google Stitch 公式ドキュメントの翻訳です。原文の著作権は Google LLC に帰属します。本サイトは独立した非公式の翻訳です。