본문으로 건너뛰기
cccskills
무료GitHub에 공개

mobile-accessibility

Audits and fixes mobile accessibility across Flutter, native Android, native iOS, React Native and Kotlin Multiplatform, including shared Compose UI and native hosts. Covers TalkBack/VoiceOver labels, roles, state, reading order, touch targets, text scaling, contrast and focus. Use for a11y audits, screen-reader bugs or accessible UI implementation.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(7)

  • SKILL.md5.7 KB
  • references/android.md3.8 KB
  • references/flutter.md4.0 KB
  • references/ios.md3.7 KB
  • references/kotlin-multiplatform.md1.1 KB
  • references/localization.md7.0 KB
  • references/react-native.md3.2 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Mobile Accessibility

One accessibility process for every mobile stack. This file holds what is true everywhere; each platform's APIs, tools and pitfalls live in its reference.

1. Pick the reference

ProjectRead
Flutterreferences/flutter.md
Native Android: Jetpack Compose or Viewsreferences/android.md
Native iOS: SwiftUI or UIKitreferences/ios.md
React Native or Exporeferences/react-native.md
Kotlin Multiplatform with shared Compose UI or native host UIreferences/kotlin-multiplatform.md
Localization, plurals, formatting and right-to-left layout, on any stackreferences/localization.md

In Flutter and React Native apps, the native reference applies only to screens or components written natively (platform views, native modules with UI).

Localization is reviewed with accessibility because it breaks the same things — a layout that assumed one text length, a fixed-height label, text baked into an image. When the app ships in more than one language, or in a right-to-left one, read references/localization.md alongside this file.

2. What a screen reader user needs

Every interactive element exposes four things to the accessibility tree. Check them in this order:

  1. Name. What it is or does, in words: "Delete task", not "trash icon" or nothing. Text children usually provide it; icon-only controls, images that carry meaning and custom-drawn controls need an explicit label.
  2. Role. Button, checkbox, switch, slider, link, header, image. A tappable container without a role is read as plain text, and the user does not know it can be activated.
  3. State and value. Checked, selected, expanded, disabled, the slider's value. When the state changes, the new state is read.
  4. Order and grouping. Reading order follows the visual order. Related pieces (an avatar, a name and a timestamp in a list row) are one element, not three swipes.

And the tree must not contain noise: decorative images, dividers and duplicated text are hidden from assistive technology.

3. Checks (all stacks)

Perceivable

  • Icon-only buttons, image buttons and meaningful images have a label that describes the action or content.
  • Decorative images and icons next to text that already says the same are excluded from the accessibility tree.
  • Text contrast is at least 4.5:1, or 3:1 for large text; icons and control borders that carry meaning reach 3:1 (WCAG 1.4.3 and 1.4.11). Contrast cannot be proven from code alone when colors come from themes or images: say so and name the tool that measures it.
  • Information is not conveyed by color only (an error shown only as a red border).

Operable

  • Touch targets are at least 48×48 dp on Android and 44×44 pt on iOS, even when the visible icon is smaller. The layout extends the tappable area instead of the icon.
  • Gestures (swipe to delete, long press, drag) have an alternative: a visible button or a custom accessibility action.
  • Modal dialogs and bottom sheets move focus inside when they open and return it when they close; content behind them is not reachable.
  • Timeouts, auto-advancing carousels and animations can be paused or respect the system's reduce motion setting.

Understandable

  • Form fields have a persistent label, not only a placeholder; errors are announced and say how to fix the input.
  • Screen titles and section headers are marked as headers, so users can jump between them.
  • Dynamic changes the user did not trigger by moving focus — a snackbar, a validation error, "3 results", loading finished — are announced.

Robust

  • Text scales with the system font size setting up to the largest accessibility sizes without truncation, overlap or clipped containers. Fixed heights on text containers are the usual cause.
  • Custom-drawn controls (canvas, custom painters, gesture detectors) expose name, role, state and actions explicitly.
  • The layout works in landscape and with the display size (screen zoom) setting increased.

4. Evidence and severity

Point to file:line for every finding and give the fix in the platform's own API, not pseudocode.

  • Critical: a screen reader user cannot complete the flow — an unlabeled primary action, a control that cannot be activated with the screen reader, focus trapped or lost, a custom control invisible to the tree.
  • High: the flow is possible but misleading or very hard — wrong role, missing state, targets far below the minimum, text that clips at larger sizes, unannounced errors.
  • Medium: noise and friction — decorative elements read aloud, rows split into many swipes, missing headers.
  • Low: polish — hints, custom action names, reading order inside a well-labeled group.

5. Verify on a device

Code review finds most problems; only assistive technology confirms the experience. Recommend the automated checks listed in the reference for the test suite, then a manual pass: TalkBack on Android and VoiceOver on iOS through the flow, the largest font size, and the platform's scanner (Accessibility Scanner on Android, Accessibility Inspector in Xcode). Say which findings came from code only.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Builds native Android apps with the Android team's guides — Jetpack Compose UI, adaptive layouts, edge-to-edge, Compose styles, migrating XML views to Compose, Navigation 3 and predictive back; Android Gradle Plugin 9 upgrades, R8 keep rule analysis, profiling with Android Studio and Perfetto, and the Android CLI; Google Play policy compliance, Play Billing upgrades and the Engage SDK; Credential Manager restore and verified email; CameraX and Media3 Cast; App Functions and the ML Kit GenAI Prompt API; Wear OS, Android TV and display glasses. Use when writing, upgrading or auditing native Android (Kotlin) code for any of these topics, even if the user does not name the library.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

wrsilva/reis-mobile72026년 10월 14일 업데이트

Designs and reviews mobile architecture across Flutter, native Android, native iOS, React Native and Kotlin Multiplatform. Covers state ownership, data flow, modules, dependency boundaries, navigation, offline data and KMP shared source sets versus host apps. Use when structuring a feature, choosing state management, refactoring layers or deciding where a real class or screen belongs.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

wrsilva/reis-mobile72026년 10월 14일 업데이트

Implements and reviews mobile identity and session flows across Flutter, Android, iOS, React Native and Kotlin Multiplatform. Use for sign-in, passkeys, account recovery, provider linking, reauthentication, logout and concurrent refresh. Security audits belong to mobile-security; account deletion belongs to mobile-privacy.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

wrsilva/reis-mobile72026년 10월 14일 업데이트

Reviews mobile code for production bugs across Flutter, native Android, native iOS, React Native and Kotlin Multiplatform, including KMP source-set and host API contracts. Covers lifecycle, concurrency, UI state and native boundaries with file:line evidence. Use for a code review, PR, project audit, quality check or /reis-mobile:review.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

wrsilva/reis-mobile72026년 10월 14일 업데이트

Diagnoses build and runtime failures across Flutter, native Android, native iOS, React Native and Kotlin Multiplatform. Covers pub/Dart, Gradle/AGP, Xcode/CocoaPods, Metro, KMP source sets and iOS frameworks, crashes and deep links. Use for failing builds, app launches, stack traces or /reis-mobile:debug.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

wrsilva/reis-mobile72026년 10월 14일 업데이트

Detects the mobile stack of the current project (Flutter, Android, iOS, React Native, Kotlin Multiplatform), its languages and target platforms, using the reis-mobile detector. Use when you need to know which mobile stack a project uses before reviewing, debugging or changing it, or when the user asks "what stack is this project?".

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

wrsilva/reis-mobile72026년 10월 14일 업데이트

wrsilva의 스킬 모두 보기

이 스킬의 문제 신고