Skip to main content

setup-accessibility

Enforce ARIA accessibility via PostToolUse hooks -- labels, keyboard handlers, widget attributes, Playwright AXE setup. Use when setting up a11y enforcement, WCAG 2.1 AA compliance, or accessibility testing.

ソース情報

リポジトリ
redpanda-data/ui-harness
ソースの最終更新活動
2026年5月8日 11:21
検出された SKILL.md の言語
英語
スター
34
フォーク
4

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

ファイルエクスプローラー
4 ファイル

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
setup-accessibility
description
Enforce ARIA accessibility via PostToolUse hooks -- labels, keyboard handlers, widget attributes, Playwright AXE setup. Use when setting up a11y enforcement, WCAG 2.1 AA compliance, or accessibility testing.
paths
["src/components/**/*.tsx"]
# Accessibility Enforcement ## What This Catches - **`<img>` without `alt`** -- use `alt=""` for decorative img - **Mouse-only `onClick` on `<div>`/`<span>`** -- needs `role` + `tabIndex` + `onKeyDown`/`onKeyUp` - **Missing ARIA on widget roles** -- `role="combobox"` needs `aria-expanded` + `aria-controls`, `role="dialog"` needs `aria-label`/`aria-labelledby`, `role="tablist"` needs child `role="tab"` Escape hatch: `// allow: a11y-skip [reason]` ## No Nested Pressables Interactive components ONE pattern -- never both: **Pattern A: Container clickable** -- no interactive children. ```tsx <ListCard onClick={handleSelect}> <Avatar src={user.avatar} /> <Text>{user.name}</Text> <ChevronRightIcon /> {/* visual indicator only, not a button */} </ListCard> ``` **Pattern B: Children interactive** -- container not clickable. ```tsx <ListCard> <Avatar src={user.avatar} /> <Text>{user.name}</Text> <DropdownMenu> <DropdownMenuTrigger asChild> <Button variant="ghost" size="icon"><MoreVerticalIcon /></Button> </DropdownMenuTrigger> </DropdownMenu> </ListCard> ``` Why: ambiguous click targets, event bubbling bugs, screen readers can't convey interaction model, touch targets overlap on mobile. ## Visual Checklist - [ ] Focus rings visible on all interactive elements (min 2px, contrasting color) - [ ] Hover and focus styles match (no mouse-only affordances) - [ ] Color not sole means of conveying info - [ ] Touch targets min 44x44 CSS pixels - [ ] `prefers-reduced-motion` respected for animations - [ ] `forced-colors` / high-contrast mode: use `currentcolor` for SVG fills - [ ] Text resizable to 200% without content loss Initial setup (install, AXE fixture, hook config): see [SETUP.md](SETUP.md).
GitHubで見る