web-severity-scoring について
重大度、確信度、検出元の数を使ってページスコアを算出する、Web アクセシビリティ監査向けの評価方法です。評価プロファイル、ルール群ごとの補正、監査間の追跡も定義しています。
主な機能
- 01重大度と確信度に応じた減点
- 02balanced、strict、advisory のプロファイル
- 03ルール群ごとの減点補正
- 04A〜F の評価段階
- 05全体、テンプレート、ページ固有の問題分類
- 06修正状況と監査傾向の追跡
活用シーン
- 01単一ページまたは複数ページのスコアカード作成
- 02複数の検出元による問題の確信度評価
- 03監査ごとのスコア変化の比較
- 04プロジェクト状況に応じた評価の厳格さの調整
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ community-access/ accessibility-agents --skill web-severity-scoringインストール後、Claude Code で/web-severity-scoringを入力して読み込まれたか確認します。
詳細
Web Severity Scoring
重大度スコアリングの計算式
Page Score = 100 - (sum of weighted findings)
Weights:
Critical (confirmed, all three sources): -18 points
Critical (high confidence, both sources): -15 points
Critical (high confidence, single source): -10 points
Critical (medium confidence): -7 points
Critical (low confidence): -3 points
Serious (high confidence): -7 points
Serious (medium confidence): -5 points
Serious (low confidence): -2 points
Moderate (high confidence): -3 points
Moderate (medium confidence): -2 points
Moderate (low confidence): -1 point
Minor: -1 point
Floor: 0 (minimum score)
スコアリングプロファイル
コンテキストに応じて厳格さを調整しつつ、比較可能なグレード帯を維持するには、プロファイルを使用します。
| プロファイル | 用途 | 乗数 |
|---|---|---|
| balanced (default) | 標準的なプロダクトのリリース | 1.0 |
| strict | 規制対象/公共部門向けのリリース | 1.15 |
| advisory | 初期段階の設計とプロトタイピング | 0.8 |
信頼度の処理後に、最終的な各減点にプロファイルの乗数を適用します。
計算式
page_score = 100
for each finding:
base = lookup(severity, confidence_level, source_count) // from table above
multiplier = 1.2 if confidence_level == "confirmed" else 1.0
deduction = base × multiplier
page_score = max(0, page_score - deduction)
上記の参照表の値は基本減点(乗数適用前)です。 「Confirmed」の指摘事項(axe-core + エージェントによるレビュー + Playwright の3つすべてのソースで検証済み)には、追加で1.2倍の乗数を適用します。
例: Confirmed の信頼度で Critical の指摘事項が1件ある場合、18(基本)× 1.2 = 21.6点の減点となり、ページスコアは78になります。
キャリブレーションレイヤー(v2)
誤検知によるスコアの過剰な低下を抑え、傾向を安定させるには、ルールファミリーごとにキャリブレーション係数を適用します。
calibrated_deduction = deduction × calibration_coefficient(rule_family)
推奨される初期係数:
| ルールファミリー | 係数 | 理由 |
|---|---|---|
| キーボード/フォーカス | 1.1 | 実行時の機能への影響が大きい |
| フォーム/ラベル/エラー | 1.05 | 主要タスクの完了に関するリスクが高い |
| セマンティクス/構造 | 1.0 | 基準となるスコアリング |
| リンクテキスト/コンテキスト | 0.9 | コンテキストによる差異が大きい |
| コンテンツ品質(代替テキスト/リンクの明確さ) | 0.85 | 人によるレビューが必要になることが多い |
検証済みの結果をもとに、係数を四半期ごとに更新します。1回の更新で係数を+/-0.1より大きく変更しないでください。
スコアグレード
| スコア | グレード | 意味 |
|---|---|---|
| 90-100 | A | 優秀 - 問題が軽微、または問題なし。WCAG AA を満たしています |
| 75-89 | B | 良好 - いくつか問題はあるものの、ほぼ WCAG AA を満たしています |
| 50-74 | C | 要改善 - 複数の問題があり、WCAG AA への準拠は部分的です |
| 25-49 | D | 不良 - アクセシビリティ上の重大な障壁があります |
| 0-24 | F | 不合格 - 致命的な障壁があり、支援技術(AT)では利用できない可能性が高いです |
信頼度レベル
| レベル | 重み | 使用する状況 |
|---|---|---|
| Confirmed | 120% | axe-core + エージェントによるレビュー + Playwright による動作テストの3つすべてのソースで検証済み |
| High | 100% | axe-core + エージェントで確認済み、または構造上明白(代替テキストがない、ラベルがない、lang がない) |
| Medium | 70% | 1つのソースで検出され、問題の可能性が高い場合(見出しの境界的なケース、疑わしい ARIA、キーボードトラップの可能性) |
| Low | 30% | 問題の可能性はあるものの、人によるレビューが必要な場合(代替テキストの品質、読み上げ順序、コンテキストに依存するリンクテキスト) |
ソース間の相関
axe-core とエージェントによるレビューの両方で検出された問題は、個々の信頼度評価にかかわらず、自動的にHigh の信頼度に引き上げられます。
3つすべてのソース(axe-core + エージェントによるレビュー + Playwright による動作テスト)で検出された問題は、1.2倍の重みが適用されるConfirmed の信頼度に引き上げられます。これは、次の場合に適用されます。
- axe-core が違反を報告する
- エージェントによるコードレビューで同じ問題が特定される
- Playwright による動作スキャンで、実行時に問題が確認される(例:実際に Tab キーで移動してキーボードトラップを確認する、描画後の CSS 計算でコントラストの失敗を確認する)
Playwright を利用できない場合、到達可能な最高の信頼度は**High(100%)**のままです。Confirmed のレベルは加算されるものであり、指摘事項の信頼度を下げることはありません。
信頼度のずれに対するガード
予測された信頼度とトリアージ後の結果を追跡し、ずれを計算します。
drift = abs(predicted_confidence_score - observed_confirmation_rate)
運用ガイドライン:
- drift <= 0.10:安定
- drift 0.11-0.20:係数とソースのマッピングを調整
- drift > 0.20:プロファイルの変更を凍結し、ルールレベルのレビューを実施
スコアカード形式
単一ページ
## Accessibility Score
| Metric | Value |
|--------|-------|
| Page | [URL] |
| Score | [0-100] |
| Grade | [A-F] |
| Critical | [count] |
| Serious | [count] |
| Moderate | [count] |
| Minor | [count] |
複数ページ
## Accessibility Scorecard
| Page | Score | Grade | Critical | Serious | Moderate | Minor |
|------|-------|-------|----------|---------|----------|-------|
| / | 82 | B | 0 | 2 | 3 | 1 |
| /login | 91 | A | 0 | 0 | 2 | 1 |
| /dashboard | 45 | D | 2 | 4 | 3 | 2 |
| **Average** | **72.7** | **C** | **2** | **6** | **8** | **4** |
ページ横断のパターン分類
| パターンタイプ | 定義 | 修正の投資対効果 |
|---|---|---|
| システム全体 | 監査対象のすべてのページで同じ問題がある | 最高 - 通常はレイアウト/ナビゲーションの問題で、一度の修正で解決します |
| テンプレート | 同じコンポーネントを共有するページに同じ問題がある | 高 - 共有コンポーネントを修正します |
| ページ固有 | 1つのページにのみ存在する | 通常 - 個別に修正します |
修正の追跡
変更の分類
| ステータス | 定義 |
|---|---|
| 修正済み | 前回のレポートにあった問題が、今回は解消されています |
| 新規 | 前回のレポートにはなかった問題が、今回は発生しています |
| 継続中 | 前回のレポートから問題が残っています |
| 再発 | 以前に修正された問題が再び発生しています |
進捗指標
- 問題の減少率:
(fixed / previous_total) * 100 - スコアの変化:
current_score - previous_score - 改善したページ数: 前回の監査よりスコアが高いページの数
- 傾向: 改善(スコアが5以上上昇)、安定(変動が5以内)、悪化(スコアが5以上低下)
正規化された傾向指標(監査間比較)
監査の実施範囲が実行ごとに異なる場合は、正規化された変化を使用します。
normalized_score = raw_score - (scope_variance_penalty)
scope_variance_penalty = min(10, abs(previous_pages - current_pages) * 0.8)
傾向グラフには正規化スコアを使用し、リリース判定には生のスコアを使用します。
出力メタデータ(推奨)
再現性を確保するため、生成されるスコアの成果物に次のフィールドを含めてください。
scoring:
model: web-severity-scoring-v2
profile: balanced
calibrationVersion: 2026-q2
confidenceSources:
- axe-core
- agent-review
- playwright
failThresholds:
critical: 1
score: 75
このメタデータにより、決定論的な再実行と監査間の比較が可能になります。
問題の重大度カテゴリ
重大
- 必須機能にキーボードでアクセスできない
- 必須フィールドにフォームラベルがない
- 重要な情報を伝える画像に代替テキストがない
- 情報を伝える手段が色だけである
- 解除手段のないキーボードトラップ
深刻
- スキップナビゲーションがない
- 見出し階層が不適切(レベルが飛んでいる)
- インタラクティブ要素でフォーカスが見えない
- フォームエラーがプログラムによって関連付けられていない
- カスタムウィジェットに ARIA がない
中程度
- セマンティック要素に冗長な ARIA がある
- 見出し構造が最適でない(H1 が複数ある)
- ID フィールドに autocomplete がない
- 新しいタブで開くリンクに警告がない
- テーブルのキャプションがない
軽微
- title 属性が冗長である
- ボタンのテキストが最適でない
- セマンティック要素があるのにランドマークのロールがない
- 装飾画像に空でない代替テキストがある