swwa-mcp 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +50 -0
- package/assets/alt-text-ko.json +7 -0
- package/assets/axe-rule-map.json +196 -0
- package/assets/certification.json +47 -0
- package/assets/kwcag22-checklist.md +123 -0
- package/assets/kwcag22.json +1688 -0
- package/assets/link-text-ko.json +8 -0
- package/assets/mobile-app-2.0.md +38 -0
- package/assets/sources.json +68 -0
- package/assets/wcag22.json +780 -0
- package/bin/swwa-mcp.mjs +15 -0
- package/dist/color/contrast.js +175 -0
- package/dist/color/contrast.js.map +1 -0
- package/dist/data/axe-map.js +32 -0
- package/dist/data/axe-map.js.map +1 -0
- package/dist/data/certification.js +54 -0
- package/dist/data/certification.js.map +1 -0
- package/dist/data/kwcag22.js +91 -0
- package/dist/data/kwcag22.js.map +1 -0
- package/dist/data/loader.js +18 -0
- package/dist/data/loader.js.map +1 -0
- package/dist/data/sources.js +44 -0
- package/dist/data/sources.js.map +1 -0
- package/dist/data/wcag22.js +44 -0
- package/dist/data/wcag22.js.map +1 -0
- package/dist/data/wordlists.js +40 -0
- package/dist/data/wordlists.js.map +1 -0
- package/dist/engine/browser-detect.js +44 -0
- package/dist/engine/browser-detect.js.map +1 -0
- package/dist/engine/browser.js +114 -0
- package/dist/engine/browser.js.map +1 -0
- package/dist/engine/static-worker.js +18 -0
- package/dist/engine/static-worker.js.map +1 -0
- package/dist/engine/static.js +139 -0
- package/dist/engine/static.js.map +1 -0
- package/dist/engine/url-guard.js +37 -0
- package/dist/engine/url-guard.js.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/messages.js +176 -0
- package/dist/messages.js.map +1 -0
- package/dist/normalize/axe.js +72 -0
- package/dist/normalize/axe.js.map +1 -0
- package/dist/normalize/checkpoints.js +47 -0
- package/dist/normalize/checkpoints.js.map +1 -0
- package/dist/normalize/finding.js +24 -0
- package/dist/normalize/finding.js.map +1 -0
- package/dist/normalize/locale.js +20 -0
- package/dist/normalize/locale.js.map +1 -0
- package/dist/prompts/audit-report.js +45 -0
- package/dist/prompts/audit-report.js.map +1 -0
- package/dist/prompts/review-markup.js +35 -0
- package/dist/prompts/review-markup.js.map +1 -0
- package/dist/report/cert.js +72 -0
- package/dist/report/cert.js.map +1 -0
- package/dist/report/format.js +36 -0
- package/dist/report/format.js.map +1 -0
- package/dist/report/summarize.js +61 -0
- package/dist/report/summarize.js.map +1 -0
- package/dist/report/types.js +2 -0
- package/dist/report/types.js.map +1 -0
- package/dist/resources/index.js +69 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/rules/b/b-focus-order.js +33 -0
- package/dist/rules/b/b-focus-order.js.map +1 -0
- package/dist/rules/b/b-focus-visible.js +71 -0
- package/dist/rules/b/b-focus-visible.js.map +1 -0
- package/dist/rules/b/b-keyboard-reachable.js +82 -0
- package/dist/rules/b/b-keyboard-reachable.js.map +1 -0
- package/dist/rules/b/b-motion-runtime.js +50 -0
- package/dist/rules/b/b-motion-runtime.js.map +1 -0
- package/dist/rules/b/b-skip-link-works.js +58 -0
- package/dist/rules/b/b-skip-link-works.js.map +1 -0
- package/dist/rules/b/b-target-size-6mm.js +54 -0
- package/dist/rules/b/b-target-size-6mm.js.map +1 -0
- package/dist/rules/b/index.js +7 -0
- package/dist/rules/b/index.js.map +1 -0
- package/dist/rules/k/index.js +33 -0
- package/dist/rules/k/index.js.map +1 -0
- package/dist/rules/k/k-accesskey.js +20 -0
- package/dist/rules/k/k-accesskey.js.map +1 -0
- package/dist/rules/k/k-alt-meaningless.js +35 -0
- package/dist/rules/k/k-alt-meaningless.js.map +1 -0
- package/dist/rules/k/k-autocomplete-missing.js +36 -0
- package/dist/rules/k/k-autocomplete-missing.js.map +1 -0
- package/dist/rules/k/k-autoplay-media.js +30 -0
- package/dist/rules/k/k-autoplay-media.js.map +1 -0
- package/dist/rules/k/k-captcha-detect.js +24 -0
- package/dist/rules/k/k-captcha-detect.js.map +1 -0
- package/dist/rules/k/k-carousel-no-pause.js +33 -0
- package/dist/rules/k/k-carousel-no-pause.js.map +1 -0
- package/dist/rules/k/k-device-motion.js +22 -0
- package/dist/rules/k/k-device-motion.js.map +1 -0
- package/dist/rules/k/k-down-event-action.js +19 -0
- package/dist/rules/k/k-down-event-action.js.map +1 -0
- package/dist/rules/k/k-error-association.js +31 -0
- package/dist/rules/k/k-error-association.js.map +1 -0
- package/dist/rules/k/k-flash-animation.js +57 -0
- package/dist/rules/k/k-flash-animation.js.map +1 -0
- package/dist/rules/k/k-gesture-listener.js +30 -0
- package/dist/rules/k/k-gesture-listener.js.map +1 -0
- package/dist/rules/k/k-iframe-title.js +23 -0
- package/dist/rules/k/k-iframe-title.js.map +1 -0
- package/dist/rules/k/k-lang-ko-expected.js +29 -0
- package/dist/rules/k/k-lang-ko-expected.js.map +1 -0
- package/dist/rules/k/k-link-same-text-diff-href.js +41 -0
- package/dist/rules/k/k-link-same-text-diff-href.js.map +1 -0
- package/dist/rules/k/k-link-text-generic.js +29 -0
- package/dist/rules/k/k-link-text-generic.js.map +1 -0
- package/dist/rules/k/k-media-track.js +22 -0
- package/dist/rules/k/k-media-track.js.map +1 -0
- package/dist/rules/k/k-mouse-only-handler.js +27 -0
- package/dist/rules/k/k-mouse-only-handler.js.map +1 -0
- package/dist/rules/k/k-new-window-notice.js +27 -0
- package/dist/rules/k/k-new-window-notice.js.map +1 -0
- package/dist/rules/k/k-onload-popup.js +30 -0
- package/dist/rules/k/k-onload-popup.js.map +1 -0
- package/dist/rules/k/k-outline-none.js +55 -0
- package/dist/rules/k/k-outline-none.js.map +1 -0
- package/dist/rules/k/k-parse-errors.js +38 -0
- package/dist/rules/k/k-parse-errors.js.map +1 -0
- package/dist/rules/k/k-placeholder-only-label.js +32 -0
- package/dist/rules/k/k-placeholder-only-label.js.map +1 -0
- package/dist/rules/k/k-select-onchange.js +19 -0
- package/dist/rules/k/k-select-onchange.js.map +1 -0
- package/dist/rules/k/k-sensory-instruction.js +32 -0
- package/dist/rules/k/k-sensory-instruction.js.map +1 -0
- package/dist/rules/k/k-session-timeout-hint.js +29 -0
- package/dist/rules/k/k-session-timeout-hint.js.map +1 -0
- package/dist/rules/k/k-skip-link-first.js +23 -0
- package/dist/rules/k/k-skip-link-first.js.map +1 -0
- package/dist/rules/k/k-skip-target-exists.js +28 -0
- package/dist/rules/k/k-skip-target-exists.js.map +1 -0
- package/dist/rules/k/k-tabindex-positive.js +23 -0
- package/dist/rules/k/k-tabindex-positive.js.map +1 -0
- package/dist/rules/k/k-table-caption.js +26 -0
- package/dist/rules/k/k-table-caption.js.map +1 -0
- package/dist/rules/k/k-table-th-missing.js +28 -0
- package/dist/rules/k/k-table-th-missing.js.map +1 -0
- package/dist/rules/k/k-title-generic.js +35 -0
- package/dist/rules/k/k-title-generic.js.map +1 -0
- package/dist/rules/registry.js +62 -0
- package/dist/rules/registry.js.map +1 -0
- package/dist/rules/types.js +2 -0
- package/dist/rules/types.js.map +1 -0
- package/dist/rules/util/browser-dom.js +50 -0
- package/dist/rules/util/browser-dom.js.map +1 -0
- package/dist/rules/util/focusable.js +29 -0
- package/dist/rules/util/focusable.js.map +1 -0
- package/dist/rules/util/selector.js +19 -0
- package/dist/rules/util/selector.js.map +1 -0
- package/dist/rules/util/text.js +13 -0
- package/dist/rules/util/text.js.map +1 -0
- package/dist/schema-dialect.js +41 -0
- package/dist/schema-dialect.js.map +1 -0
- package/dist/server.js +36 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/audit-url.js +109 -0
- package/dist/tools/audit-url.js.map +1 -0
- package/dist/tools/browser-status.js +29 -0
- package/dist/tools/browser-status.js.map +1 -0
- package/dist/tools/cert-readiness.js +76 -0
- package/dist/tools/cert-readiness.js.map +1 -0
- package/dist/tools/check-contrast.js +58 -0
- package/dist/tools/check-contrast.js.map +1 -0
- package/dist/tools/check-html.js +88 -0
- package/dist/tools/check-html.js.map +1 -0
- package/dist/tools/checklist.js +94 -0
- package/dist/tools/checklist.js.map +1 -0
- package/dist/tools/lookup.js +70 -0
- package/dist/tools/lookup.js.map +1 -0
- package/dist/tools/report-schema.js +49 -0
- package/dist/tools/report-schema.js.map +1 -0
- package/package.json +76 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# 모바일 애플리케이션 콘텐츠 접근성 지침 2.0 (요약)
|
|
2
|
+
|
|
3
|
+
> 국가표준 KS X 3253 「모바일 애플리케이션 콘텐츠 접근성 지침 2.0」의 **요약 레퍼런스**다(00-overview.md
|
|
4
|
+
> 확정 결정: "모바일 앱 참고" 범위 — 웹 검사 도구인 `swwa`는 네이티브 앱을 직접 검사하지 않는다).
|
|
5
|
+
> 원문 전재 금지(NFR-04) — 조항 번호·정확한 지침 문구는 **표준 원문으로 재확인 필요**
|
|
6
|
+
> (`needsVerification`). 이 문서는 KWCAG 2.2와의 대응 감을 잡기 위한 참고용 개요다.
|
|
7
|
+
|
|
8
|
+
## 개요
|
|
9
|
+
|
|
10
|
+
KWCAG 2.2가 웹 콘텐츠를 대상으로 하는 것과 달리, 이 지침은 **네이티브/하이브리드 모바일
|
|
11
|
+
애플리케이션**의 접근성을 다룬다. 구조는 KWCAG와 유사하게 **4원칙**(인식·운용·이해·견고) 아래
|
|
12
|
+
여러 지침·검사항목을 두는 형태를 따른다.
|
|
13
|
+
|
|
14
|
+
## 4원칙별 핵심 관심사(요약, 조항 번호 미확정)
|
|
15
|
+
|
|
16
|
+
| 원칙 | 모바일 앱에서 특히 중요한 항목(요약) |
|
|
17
|
+
|---|---|
|
|
18
|
+
| 인식의 용이성 | 아이콘·이미지의 대체 텍스트, 앱 내 텍스트 확대(시스템 글꼴 크기 반영), 명도 대비 |
|
|
19
|
+
| 운용의 용이성 | 터치 타깃 크기, 제스처(스와이프 등) 대체 수단, 화면 회전 대응, 알림·팝업의 접근성 |
|
|
20
|
+
| 이해의 용이성 | 일관된 내비게이션·레이블, 오류 안내, 폼 입력 도움 |
|
|
21
|
+
| 견고성 | 플랫폼 접근성 API(Android AccessibilityService·iOS UIAccessibility)와의 연동, 커스텀 위젯의 role/name 노출 |
|
|
22
|
+
|
|
23
|
+
## KWCAG 2.2와의 관계
|
|
24
|
+
|
|
25
|
+
웹뷰(WebView) 기반 화면은 KWCAG 2.2 검사항목·`swwa`의 정적/브라우저 엔진으로 상당 부분 점검할
|
|
26
|
+
수 있다. 네이티브 UI(플랫폼 고유 컨트롤)는 이 지침의 별도 기준을 따르며, 이 프로젝트의 자동 검사
|
|
27
|
+
도구(`check_html`·`audit_url`)는 다루지 않는다.
|
|
28
|
+
|
|
29
|
+
## 검증 필요 사항 (`needsVerification`)
|
|
30
|
+
|
|
31
|
+
- 정확한 지침·검사항목 번호 체계(웹 KWCAG의 "N.N.N"과 동일한지 여부)
|
|
32
|
+
- 표준 제정·개정 연혁 및 최신 개정판 발행일
|
|
33
|
+
- 국가표준 원문 열람 경로(공식 고시 URL)
|
|
34
|
+
|
|
35
|
+
## 출처
|
|
36
|
+
|
|
37
|
+
국립전파연구원(방송통신표준) 「모바일 애플리케이션 콘텐츠 접근성 지침 2.0」(KS X 3253). 원문 미대조
|
|
38
|
+
상태이며, 정확한 조항 인용이 필요할 때는 표준 원문을 우선한다.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
{
|
|
2
|
+
"sources": [
|
|
3
|
+
{
|
|
4
|
+
"id": "kwcag22-official",
|
|
5
|
+
"title": "한국형 웹 콘텐츠 접근성 지침 2.2 (KS X OT0003)",
|
|
6
|
+
"url": null,
|
|
7
|
+
"accessedOn": "2026-09-04",
|
|
8
|
+
"status": "needsVerification",
|
|
9
|
+
"license": "원문 저작권 국립전파연구원(국가표준). 요구 문장 한 줄 인용만 허용"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"id": "kwcag22-a11ykr",
|
|
13
|
+
"title": "KWCAG 2.2 비공식 HTML판",
|
|
14
|
+
"url": "https://a11ykr.github.io/kwcag22/",
|
|
15
|
+
"accessedOn": "2026-09-04",
|
|
16
|
+
"status": "ok",
|
|
17
|
+
"license": "비공식 변환본. 원문 저작권은 국립전파연구원, 이 사이트는 가독성을 위한 3자 변환"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "kwcag22-websoul",
|
|
21
|
+
"title": "웹소울랩 KWCAG 2.2 안내",
|
|
22
|
+
"url": "https://websoul.co.kr/accessibility/WA_guide22.asp",
|
|
23
|
+
"accessedOn": "2026-09-04",
|
|
24
|
+
"status": "ok",
|
|
25
|
+
"license": "접근성 컨설팅사의 해설 자료. 요구 문장 대조용으로만 참고"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "rra-kcs",
|
|
29
|
+
"title": "국립전파연구원 방송통신표준(KCS) 공고",
|
|
30
|
+
"url": null,
|
|
31
|
+
"accessedOn": "2026-09-04",
|
|
32
|
+
"status": "needsVerification",
|
|
33
|
+
"license": "표준 번호 KS X OT0003 확인 필요"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"id": "wcag22-w3c",
|
|
37
|
+
"title": "Web Content Accessibility Guidelines (WCAG) 2.2",
|
|
38
|
+
"url": "https://www.w3.org/TR/WCAG22/",
|
|
39
|
+
"accessedOn": "2026-09-04",
|
|
40
|
+
"status": "ok",
|
|
41
|
+
"license": "W3C Document License"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"id": "axe-core",
|
|
45
|
+
"title": "axe-core (Deque Systems)",
|
|
46
|
+
"url": "https://github.com/dequelabs/axe-core",
|
|
47
|
+
"accessedOn": "2026-09-04",
|
|
48
|
+
"status": "ok",
|
|
49
|
+
"license": "MPL-2.0. npm 의존성으로만 사용, 소스 재배포 없음"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"id": "easyread-mcp",
|
|
53
|
+
"title": "EASYREAD(전제 프로젝트, 동일 저자)",
|
|
54
|
+
"url": "https://github.com/SWJoong/EASYREAD",
|
|
55
|
+
"accessedOn": "2026-09-04",
|
|
56
|
+
"status": "ok",
|
|
57
|
+
"license": "컨벤션·schema-dialect.ts 등 파일 재사용(동일 저자·MIT)"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"id": "certification-agency",
|
|
61
|
+
"title": "웹접근성 품질인증 기관 공지(전문가·사용자 심사 기준 수치)",
|
|
62
|
+
"url": null,
|
|
63
|
+
"accessedOn": "2026-09-04",
|
|
64
|
+
"status": "needsVerification",
|
|
65
|
+
"license": "준수율·유효기간 수치는 인증기관이 개정할 수 있어 릴리스마다 재확인 필요"
|
|
66
|
+
}
|
|
67
|
+
]
|
|
68
|
+
}
|