Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add s977043/river-review --skill modern-web-a11y-interactivegit clone --depth 1 https://github.com/s977043/river-reviewWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/s977043/river-review/modern-web-a11y-interactive)<a href="https://agentmods.dev/skills/s977043/river-review/modern-web-a11y-interactive"><img src="https://agentmods.dev/badge/skills/s977043/river-review/modern-web-a11y-interactive/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/s977043/river-review/modern-web-a11y-interactive"><img src="https://agentmods.dev/badge/skills/s977043/river-review/modern-web-a11y-interactive.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00051 | $0.02269 |
| Opus 5 | $0.00026 | $0.01135 |
| Sonnet 5 | $0.00010 | $0.00454 |
| Haiku 4.5 | $0.00005 | $0.00227 |
Grade A, and why
Modern Web Accessibility for Interactive UI scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 122 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Goal / 目的
- インタラクティブ UI 差分(modal / popover / menu / tabs / live updates / form interactions)に対し、キーボード操作と支援技術ユーザーの操作可能性を確保する suggestion を返す。
- accessible name(既存
a11y-accessible-name)が扱わない「動的振る舞い」「focus state」「role / state semantics」を担当する。 - 出力は suggestion 扱い。「強制」ではなく「検討すべき代替案 / 確認ポイント」として返す。
Non-goals / 扱わないこと
- accessible name(alt / aria-label)の網羅的チェック →
a11y-accessible-nameの担当。 - コントラスト比 / 視覚的アクセシビリティ → 別 skill / 別 audit ツールの領域。
- 完全な WCAG 等級判定。
- screen reader を直接 emulate しての挙動検証。
False-positive guards / 抑制条件
- 既に library / design system のコンポーネント (
<Dialog>,<Popover>,<MenuButton>等) を使い、a11y 振る舞いが library 内で保証されている場合は指摘しない。 tabIndex/aria-*属性が既に明示的に設定されている差分(意図的な制御)は指摘しない。- 差分が CSS のみのスタイル微調整(色変更・余白調整など)で、interaction が変わらない場合は指摘しない。
- focus visibility 関連で
:focus-visible/outlineが既に明示制御されている場合は新たに指摘しない。
Rule / ルール
キーボード操作
- click 専用ハンドラ (
onClickのみ、onKeyDownなし) を持つ generic 要素は、<button>への切り替え oronKeyDown+role="button"+tabIndex="0"セットの検討を提案する。 - ナビゲーション要素 (menu, tabs, breadcrumb) には WAI-ARIA Authoring Practices の roving tabindex / arrow key navigation 検討を促す。
onMouseOver/onMouseOutだけで状態切替する hover-only UI は、keyboard focus でも同等の状態が出るかを確認する。- shortcut key を追加する差分では、
<kbd>表示 / disable 手段 / 既存ショートカット重複の確認を促す。
Focus 管理
- modal / dialog / drawer を開いた時に focus が initial element に移るか、閉じた時に開いた element に戻るかを確認する。
<dialog>の nativeshowModal()は focus / inert を自動でやる → そちらに寄せる方が安全な suggestion を出す。- focus trap を自前で実装している差分(querySelector で focusable elements を集める等)は
<dialog>またはinert属性ベースへの寄せ替え検討を提案する。 tabIndex="-1"で focus を奪う /tabIndex="0"以上の正の値を追加する差分は副作用が大きいので根拠を確認する(positive tabIndex は基本的にアンチパターン)。
動的コンテンツ / live regions
aria-live/role="status"/role="alert"の選択が用途に合っているかを確認する(politevsassertivevsoff)。- toast / snackbar / inline validation message 追加では live region 経由のアナウンスが必要か検討を促す。
- DOM を一括書き換えで「画面の意味が大きく変わる」変更では、focus 移動 or live region 更新の必要性に触れる。
What ships with it
8 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- eval/promptfoo.yaml 1.4 KB
- fixtures/01-div-onclick-no-keyboard-happy.md 773 B
- fixtures/02-library-radix-dialog-false-positive.md 902 B
- golden/01-div-onclick-no-keyboard-happy.md 1.4 KB
- golden/02-library-radix-dialog-false-positive.md 466 B
- prompt/system.md 1.7 KB
- prompt/user.md 280 B
- README.md 351 B
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 8d ago First seen · 122 lines · 51 tokens per session scan A 4144175f3285
Modern Web Accessibility for Interactive UI is a skill published in the GitHub repository s977043/river-review (3 stars, last pushed yesterday), licensed MIT. It adds 51 tokens to every session and 2,269 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other skills, from other repositories
web-design-guidelines
Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", or "vs best practices".
wes-bos-sick-picks
Research-first workflow for building frontend UI components (any framework), in the spirit of Wes Bos. Use when designing or implementing a UI component, layout, interaction, or CSS/HTML feature and you want a modern, accessible, best-practice solution rather than a first guess. Researches pitfalls and platform…
scroll-craft
Build premium scroll-driven landing pages for service, product, food, and drink brands. Plan the visitor journey, page grammar, emotional peak, and bespoke signature move. Create dimensional heroes with independent visual planes, restrained motion, and separate mobile composition. Use supplied photos and footage or…
accessibility
Use when making a web UI conform to WCAG 2.2 Level AA — axe-core or Lighthouse a11y violations, keyboard operability, focus management, ARIA roles/names/live regions, contrast, tap-target size. NOT palette or visual intent (that is design), NOT test-runner setup (that is testing-web), NOT LCP/page-speed (that is…
absolute-ui
Build polished, intentional UIs with concrete CSS/Tailwind values — typography, color, layout, spacing, dark mode, accessibility, animations, components. Encodes specific, opinionated rules with exact values, not vague advice. Covers buttons, cards, forms, tables, navigation, dashboards, landing pages, onboarding, and…
design-with-claude
Use when design work needs a product designer's eye: auditing a codebase for design-system gaps, fixing WCAG contrast and unlabeled inputs, choosing type scales or spacing steps, reviewing UI that looks generic or AI-generated, or designing forms, tables, dashboards, navigation, checkout, onboarding, dark mode, and…