Use when writing acceptance criteria for a task - express each as an observable Given/When/Then that QA can execute, including negative cases
日本語の概要は準備中です。原文の説明を表示しています。
Use on every UI change - semantic HTML, labels for controls, keyboard-navigable dialogs/menus, visible focus, and never color as the only signal
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Accessibility is not a pass at the end — it's built into each component. The recurring defects are div with onClick instead of a button, icon buttons with no label, and custom menus/dialogs that trap keyboard users.
Core principle: Semantic HTML and the accessible primitives do most of the work — reach for them first.
button for actions, a for navigation, headings in order with exactly one <h1> per page. A div with onClick is a defect (no keyboard, no role).<label>; every icon-only button has an aria-label; decorative icons are aria-hidden.:focus-visible style; sticky/fixed elements never cover the focus ring.<label> wrapping both, or htmlFor) so the combined row reaches 44px with no dead zone between box and text; <input> font size ≥16px on phones to stop iOS auto-zoom; never disable browser zoom (user-scalable=no, maximum-scale=1).prefers-reduced-motion via motion-reduce: on any animation you add; smooth anchor scrolling only as motion-safe:scroll-smooth on <html>, never unconditional scroll-behavior: smooth.header, nav, main, footer), a skip-to-content link before the nav, scroll-margin-top on anchor targets sitting under a sticky header, and lang on <html> matching the active locale.aria-live="polite" so assistive tech announces them without stealing focus.aria-describedby and the field carries aria-invalid.// ❌ not keyboard-accessible, no role, no label
<div className="icon-btn" onClick={onDelete}><TrashIcon /></div>
// ✅ real button, labeled, gets focus + Enter/Space for free
<button type="button" aria-label="Delete task" onClick={onDelete}>
<TrashIcon aria-hidden />
</button>
The button is focusable and keyboard-activatable with no extra code; the aria-label gives screen readers the action; aria-hidden on the icon stops it being announced twice.
There is no keyboard-press browser tool at runtime (browser_click/browser_fill only) — prove tab order, Escape, and focus-return in a co-located RTL component test instead of a manual browser pass:
test("closes on Escape and returns focus to the trigger", async () => {
const user = userEvent.setup();
render(<MenuExample />);
await user.click(screen.getByRole("button", { name: "Actions" }));
await user.keyboard("{Escape}");
expect(screen.getByRole("button", { name: "Actions" })).toHaveFocus();
});
user.tab() walks focus order, user.keyboard('{Escape}') fires the key, toHaveFocus() asserts the result — this is how keyboard behaviour is verified since the browser tools have no key-press action.
div/span with onClick for an action.aria-label.<input> text under 16px causing iOS zoom.button/a.divs instead of a primitive.outline: none with nothing in its place.user-scalable=no or maximum-scale=1 in a viewport meta tag.user.tab()/user.keyboard() coverage for a new interactive widget.まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Use when writing acceptance criteria for a task - express each as an observable Given/When/Then that QA can execute, including negative cases
日本語の概要は準備中です。原文の説明を表示しています。
Use when the diff adds or changes an endpoint, resolver, RPC, job or query that takes an object id, a role check, a request binding or a tenant filter - BOLA/IDOR, function-level authorization, mass assignment and tenant scoping
日本語の概要は準備中です。原文の説明を表示しています。
Use when a task changes any screen, form, dialog, menu or control - Lighthouse/axe scan of the changed screens, a keyboard walk, and the thresholds that fail a task
日本語の概要は準備中です。原文の説明を表示しています。
How to work a task returned with review, QA or UAT findings. Use when a task is in need_revision or PR review comments are in your context.
日本語の概要は準備中です。原文の説明を表示しています。
Use when deciding whether a request needs an analiz task before implementation - the conditions that require the architect's analysis versus going straight to implementation
日本語の概要は準備中です。原文の説明を表示しています。
Use when you write or revise the analiz deliverable - the ONE self-contained HTML report (spec and plan as sections) a human reviews passage by passage
日本語の概要は準備中です。原文の説明を表示しています。