원클릭으로
accessibility-standards
Expert reference for digital accessibility — WCAG conformance, ARIA, and inclusive design patterns
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Expert reference for digital accessibility — WCAG conformance, ARIA, and inclusive design patterns
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Expert reference for application security — OWASP Top 10 mitigations, auth/authz, secrets management, cryptography, input validation, dependency hygiene, and secure-by-default code patterns
Expert reference for token counting, prompt compression, cost estimation, and quality preservation when optimizing prompts for Claude models
Experimentation design and A/B testing standards for product teams
Authoritative reference for agent architecture selection, multi-agent orchestration, tool design, memory systems, and failure mode prevention
Expert reference for evaluating LLM systems, RAG pipelines, and AI features in production
Machine learning engineering patterns for model selection, feature engineering, training pipelines, evaluation, and production deployment.
| name | accessibility-standards |
| description | Expert reference for digital accessibility — WCAG conformance, ARIA, and inclusive design patterns |
| version | 1.0.0 |
alt attribute. Decorative images get alt="". Informative images describe their meaning, not appearance.prefers-reduced-motion. Provide a mechanism to pause anything that moves.<div> that users click → it's a <button>. Use semantic HTML first; ARIA as last resort.<nav> with aria-label if more than one nav exists on the page.role="dialog" + aria-modal="true" + aria-labelledby.aria-label on the button, aria-hidden="true" on the icon.aria-describedby, set aria-invalid="true" on the input.aria-live="polite" for non-critical, aria-live="assertive" only for errors or critical alerts.visibility: hidden or display: none (also hides from AT), not opacity: 0 or position: absolute off-screen (still read by AT)..sr-only utility (clip pattern), not visibility: hidden.<th scope="col/row">, <caption>, and <thead>/<tbody>. Never use a <table> for layout.<select> away from native behavior without full ARIA replacement.tabindex > 0 — it breaks natural tab order and is almost never the right fix.outline: none without a replacement focus style.Mistake: ARIA overuse on semantic HTML
Bad: <button role="button" aria-pressed="false">Save</button>
Good: <button>Save</button> — <button> already has implicit role; aria-pressed only if it's a toggle.
Mistake: Missing landmark structure
Bad: Entire page content in <div> soup
Good: <header>, <nav>, <main>, <aside>, <footer> — one <main> per page
Mistake: Focus trap not implemented in modals Bad: Modal opens, Tab key navigates behind modal Good: On open, move focus to first focusable element inside dialog; intercept Tab/Shift+Tab to cycle within; close on Escape and return focus to trigger.
Mistake: Color-only status indicators Bad: Red dot = error, green dot = ok (no text) Good: Colored dot + icon + text label ("Error", "Active")
Mistake: Inaccessible toast/notification
Bad: Toast appears visually, AT never announced it
Good: <div role="status" aria-live="polite"> wraps toast container; inject message text dynamically
Mistake: Ambiguous link text
Bad: <a href="/report.pdf">Click here</a>
Good: <a href="/report.pdf">Download Q4 Report (PDF, 2.4 MB)</a>
Mistake: Images in CSS for meaningful content
Bad: Hero image with text baked in, applied via background-image
Good: <img> with full alt text, or SVG with <title> and aria-labelledby
Form validation — Bad:
<input type="email" placeholder="Email address" style="border: 2px solid red">
<span style="color: red">Invalid email</span>
Form validation — Good:
<label for="email">Email address</label>
<input
type="email"
id="email"
aria-describedby="email-error"
aria-invalid="true"
autocomplete="email"
>
<span id="email-error" role="alert">Enter a valid email address (e.g. you@example.com)</span>
Icon button — Bad:
<button><svg>...</svg></button>
Icon button — Good:
<button aria-label="Close dialog">
<svg aria-hidden="true" focusable="false">...</svg>
</button>
Assistive Technology (AT): Screen readers (NVDA, JAWS, VoiceOver, TalkBack), switch access, voice control (Dragon). Test with real AT — automated tools catch ~30-40% of issues.
Accessibility tree: The browser's parallel DOM representation consumed by AT. Only what's in the accessibility tree is perceived by screen readers. display: none removes nodes; aria-hidden="true" hides them without removal.
ARIA roles, states, properties: Roles define what an element is (widget, landmark, live region). States are dynamic (aria-expanded, aria-checked). Properties are quasi-static (aria-label, aria-describedby). Never override a semantic element's implicit role unless rebuilding the full interaction.
Focus management: The discipline of explicitly moving focus programmatically (modals, SPAs, errors). Failure here makes complex interactions impossible for keyboard/AT users.
Keyboard interaction model: Each widget type has a spec'd pattern (ARIA Authoring Practices Guide). Comboboxes, trees, grids — each has arrow key expectations users have internalized.
Conformance vs usability: WCAG conformance is a legal/technical floor. Accessibility usability is the actual experience. Pass automated checks AND test with real users.
Cognitive accessibility: Plain language, consistent navigation, no time limits, error prevention. Often neglected but affects the largest population.
Contrast ratio calculation: Relative luminance formula. Use a tool (Contrast Checker, Figma plugin). Don't eyeball it.