diff --git a/skills/a11y-spec/SKILL.md b/skills/a11y-spec/SKILL.md new file mode 100644 index 000000000..472528e03 --- /dev/null +++ b/skills/a11y-spec/SKILL.md @@ -0,0 +1,157 @@ +--- +name: a11y-spec +description: > + 컴포넌트 구현 전 접근성 명세. WCAG 2.2 A/AA와 KWCAG 전수에서 적용 성공 기준(SC)을 걸러 + 책임을 나누고 요구사항 문서 한 부로 낸다. "Dialog 만들기 전에 접근성 뭐 지켜야 해"처럼 + 구현 전 설계 입력을 요구할 때 쓴다. +--- + +# a11y-spec + +컴포넌트를 짓기 전에 **무엇을 지켜야 하는지**를 규범 근거와 함께 나열한다. 산출물은 설계 +입력이다 — 코드가 아직 없으므로 채점할 대상도 없다. + +SC는 컴포넌트가 아니라 콘텐츠 성질에 걸린다. 그래서 필터는 **이름 → 성질 → SC 두 홉**으로 +간다. 중간 홉이 성질이라 처음 보는 이름(`Coachmark`, `SegmentedControl`)도 처리된다. + +산출물은 `reports/.md` **한 부**다. + +## 용어 + +한 말이 두 뜻으로 쓰이면 문서가 읽히지 않는다. 아래 어휘로 쓴다. + +| 말 | 뜻 | +| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| **기반 구현체** | base-ui 또는 브라우저 네이티브 요소. 이 둘이다 | +| **증거** | 위임을 뒷받침하는 것. **관측**(실측) 또는 **명세**, 둘뿐이다 | +| **전수** | 빠짐없이 판정하기. `sc-map.md` 60행, `properties.md` 23개가 대상이다 | +| **APG 패턴** | W3C 위젯 유형. 「패턴」에 접두사 `APG`를 붙여 쓴다 | +| **패턴** | 접두사 없는 「패턴」은 루트 `CONTEXT.md` 2절 뜻(디자인 시스템의 설계 규칙)이다 | +| **위젯 계약** | 이 위젯이 AT에게 약속하는 것. role·상태·속성·키·포커스·이름 6칸. 5단계 `위임`은 그 계약을 기반 구현체가 이미 이행한다는 판정이다 | +| **표기법 / 파트 구성** | base-ui가 제공하는 방식. `CONTEXT.md` 1절 어휘(조합형·flat·파트) | +| **소비자** | vapor를 가져다 쓰는 개발자 | +| **최종 사용자** | 스크린리더·키보드로 화면을 쓰는 사람 | +| **정찰** | 문서·API 레퍼런스만 읽기 | +| **실측** | 브라우저로 데모를 조작해 결과를 관측하기 | +| **명세 확인** | HTML-AAM·MDN·WAI-ARIA 명세 읽기 | + +책임 구획의 이름은 `vapor 책임`이다. + +## 절차 + +### 0. 정찰 — base-ui 문서 + +`https://base-ui.com/react/components/<컴포넌트>` (kebab-case)와 그 API 레퍼런스를 읽는다. +네 항목을 채우면 끝이다. + +1. **해당 컴포넌트 페이지가 있나** — 없으면 기반 구현체는 네이티브 요소이거나 없다 +2. **표기법과 파트 구성** — 조합형이냐 flat이냐, 파트 목록은 무엇이냐 +3. **네이티브 요소 사용 여부** — 내부적으로 `