소스 정보
- 저장소
- aiFabricoCom/fabrico-collections-codex
- 최근 소스 활동
- 2026년 7월 14일 18:53
- 감지된 SKILL.md 언어
- 영어
- 스타
- 2
- 포크
- 0
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/aiFabricoCom/fabrico-collections-codex --skill fabrico-ensuring-accessibility명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
Audit AWS cost optimization and tagging compliance.
Audit GCP cost optimization and labeling compliance.
Process discovery materials into Jira-ready epics and user stories, or iterate on an existing backlog.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | fabrico-ensuring-accessibility |
| description | WCAG 2.1 AA, semantics, keyboard access, focus, and contrast. |
Provides WCAG 2.1 AA compliance patterns for building inclusive frontend interfaces with proper semantic markup, keyboard navigation, focus management, and screen reader support.
Start with the correct HTML element. `` for actions, `` for navigation, `` for navigation regions, `` for primary content. Native semantics are free, reliable, and require zero ARIA. Only reach for ARIA when HTML alone cannot convey the meaning. Every interaction available to a mouse user must be available to a keyboard user. Tab, Escape, Enter, Space, Arrow keys — these are the vocabulary of keyboard interaction. Missing keyboard support is not a minor issue — it is a blocker for many users. Color must never be the sole means of conveying information. Error states need icons + text, not just red borders. Status indicators need labels, not just colored dots. Always pair visual indicators with non-visual alternatives.Use the checklist below and track your progress:
Progress:
- [ ] Step 1: Choose semantic elements
- [ ] Step 2: Implement keyboard navigation
- [ ] Step 3: Add ARIA where HTML falls short
- [ ] Step 4: Verify color and contrast
- [ ] Step 5: Test with assistive technology
Step 1: Choose semantic elements
Select the correct HTML element for each piece of UI:
<button> — actions (submit, toggle, open menu)<a href> — navigation to another page or location<input>, <select>, <textarea> — form data entry<header> — page or section header<nav> — navigation region<main> — primary content (one per page)<aside> — tangentially related content<footer> — page or section footer<article> — self-contained composition<section> — thematic grouping (must have a heading)<details> / <summary> — native expand/collapse<h1> per pageh2 → h3 → h4h2 → h4)<ul> / <ol> for collections of items<dl> for key-value pairs (definition lists)If the component library wraps these elements, verify the rendered HTML output matches expectations using browser devtools.
Step 2: Implement keyboard navigation
All interactive elements must be focusable. Native interactive elements (<button>, <a>, <input>) are focusable by default. Custom interactive elements need tabindex="0".
Tab order must follow visual and logical reading order. Avoid tabindex values greater than 0 — they create unpredictable focus sequences.
Custom interactive components need explicit keyboard handlers:
| Component | Keyboard behavior |
|---|---|
| Button | Enter + Space to activate |
| Menu | Arrow keys to navigate items, Escape to close, Enter to select |
| Tabs | Left/Right arrows to switch tabs, Tab to leave the tab group |
| Dialog / Modal | Tab trapped inside, Escape to close |
| Accordion | Enter/Space to expand/collapse, Arrow keys between headers |
| Combobox | Arrow keys to navigate options, Enter to select, Escape to close |
Focus visibility — never remove the focus outline (outline: none) without providing a visible replacement. Custom focus styles must have at least 3:1 contrast against adjacent colors.
Programmatic focus management — move focus when context changes:
aria-liveStep 3: Add ARIA where HTML falls short
Rule: prefer native HTML semantics. Only add ARIA when HTML cannot express the pattern.
Common patterns requiring ARIA:
aria-label="Close" (or the appropriate action description).aria-expanded="true" or aria-expanded="false" on the trigger element.aria-live="polite" for non-urgent updates (data refreshed, filter applied). aria-live="assertive" for urgent updates (session expiring, critical error).aria-modal="true", aria-labelledby pointing to the dialog title, aria-describedby pointing to the dialog description.aria-invalid="true" on the invalid fieldaria-describedby pointing to the error message elementrole="alert" or aria-live="assertive" for immediate announcementrole="status" for the loading message (e.g., "Loading results..."). Note: role="status" implicitly sets aria-live="polite" — no need to add both.aria-current="page" on the active nav link.role="progressbar" with aria-valuenow, aria-valuemin, aria-valuemax.Never do:
role="button" on a <div> — use <button> insteadrole="heading" on an <h2>)aria-label on non-interactive, non-landmark elements (screen readers may ignore it)Step 4: Verify color and contrast
| Element | Minimum contrast ratio | Examples |
|---|---|---|
| Normal text (< 24px) | 4.5:1 | Body text, labels, captions, small links |
| Large text (≥ 24px / 18pt, or ≥ 19px / 14pt bold) | 3:1 | Headings, large labels, prominent links |
| Interactive component boundaries | 3:1 | Button borders, input outlines, toggle tracks |
| Non-text content conveying information | 3:1 | Status icons, chart segments, badges |
Additional rules:
Step 5: Test with assistive technology
Run through these verification steps:
Keyboard walkthrough:
Screen reader verification:
alt="" for decorative)?Zoom and reflow:
Accessibility tree inspection:
Automated accessibility testing (agent-actionable):
npx @axe-core/cli <URL>.| Need | HTML Solution | ARIA Fallback (only if HTML insufficient) |
|---|---|---|
| Button | <button> | role="button" + tabindex="0" + key handlers |
| Link | <a href> | role="link" (rare) |
| Navigation region | <nav> | role="navigation" |
| Main content | <main> | role="main" |
| Dialog | <dialog> | role="dialog" + aria-modal="true" |
| Live update | — | aria-live="polite" on container |
| Expand/collapse | <details> / <summary> | aria-expanded on trigger |
| Icon-only button | — | aria-label on the button |
| Form error | — | aria-invalid + aria-describedby |
| Current page | — | aria-current="page" on nav link |
| Progress | <progress> | role="progressbar" + aria-valuenow |
| Element | Minimum ratio | Example |
|---|---|---|
| Normal text (< 24px) | 4.5:1 | Body text, labels, captions |
| Large text (≥ 24px / 18pt, or ≥ 19px / 14pt bold) | 3:1 | Headings, large labels |
| Interactive component boundaries | 3:1 | Button borders, input outlines |
| Non-text (icons conveying info) | 3:1 | Status icons, chart segments |
Accessibility:
- [ ] Semantic HTML elements used (button, nav, main, etc.)
- [ ] One h1 per page, logical heading hierarchy (no skipped levels)
- [ ] All interactive elements keyboard-navigable
- [ ] Focus visible on every interactive element
- [ ] Tab order follows visual/logical layout
- [ ] Modal/dialog traps focus and returns on close
- [ ] Icon-only buttons have aria-label
- [ ] Form fields have visible labels (not placeholder-only)
- [ ] Form errors announced to screen readers (role="alert" or aria-live)
- [ ] Error states use icon/text in addition to color
- [ ] Color contrast meets 4.5:1 (normal text) / 3:1 (large text)
- [ ] ARIA landmarks present (header, main, nav, footer)
- [ ] Text resizable to 200% without loss of content (SC 1.4.4)
- [ ] Content reflows at 400% zoom / 320px width without horizontal scroll (SC 1.4.10)
| Rule | Description |
|---|---|
| Use logical CSS properties | margin-inline-start instead of margin-left; padding-inline-end instead of padding-right |
| Let layout engine handle direction | Set dir="rtl" on root; avoid manual transforms for standard layout |
| Icons may need flipping | Directional icons (arrows, progress bars) may need transform: scaleX(-1) in RTL |
| Test both directions | Verify layout, alignment, and text truncation in both LTR and RTL |
fabrico-implementing-frontend — for component composition patterns that support accessible structurefabrico-implementing-forms — for accessible form field patterns, labels, and error announcementsfabrico-reviewing-frontend — for accessibility spot-checks during code reviewfabrico-optimizing-frontend — for performance optimizations that also impact accessibility (loading speed, interaction responsiveness)