Theming
Code-with-Beto/skills
Scaffold a unified, cross-platform color theme system into an Expo Router app.
Reference data, not a reviewer. An agent skill from Community-Access/accessibility-agents.
$ npx skills add Community-Access/accessibility-agents --skill kb-mobile-accessibility -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Community-Access/accessibility-agents kb-mobile-accessibility --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Community-Access/accessibility-agents.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/kb-mobile-accessibility .claude/skills/kb-mobile-accessibility && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "kb-mobile-accessibility" agent skill from https://github.com/Community-Access/accessibility-agents/tree/main/skills/kb-mobile-accessibility into .claude/skills/kb-mobile-accessibility/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kb-mobile-accessibility", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Community-Access/accessibility-agents/tree/main/skills/kb-mobile-accessibilityType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Community-Access/accessibility-agents --skill kb-mobile-accessibility -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Community-Access/accessibility-agents kb-mobile-accessibility --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Community-Access/accessibility-agents.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/kb-mobile-accessibility .agents/skills/kb-mobile-accessibility && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "kb-mobile-accessibility" agent skill from https://github.com/Community-Access/accessibility-agents/tree/main/skills/kb-mobile-accessibility into .agents/skills/kb-mobile-accessibility/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kb-mobile-accessibility", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Community-Access/accessibility-agents --skill kb-mobile-accessibility -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Community-Access/accessibility-agents kb-mobile-accessibility --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Community-Access/accessibility-agents.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/kb-mobile-accessibility .cursor/skills/kb-mobile-accessibility && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "kb-mobile-accessibility" agent skill from https://github.com/Community-Access/accessibility-agents/tree/main/skills/kb-mobile-accessibility into .cursor/skills/kb-mobile-accessibility/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kb-mobile-accessibility", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Community-Access/accessibility-agents.git --path skills/kb-mobile-accessibility--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Community-Access/accessibility-agents --skill kb-mobile-accessibility -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Community-Access/accessibility-agents kb-mobile-accessibility --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Community-Access/accessibility-agents.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/kb-mobile-accessibility .gemini/skills/kb-mobile-accessibility && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "kb-mobile-accessibility" agent skill from https://github.com/Community-Access/accessibility-agents/tree/main/skills/kb-mobile-accessibility into .gemini/skills/kb-mobile-accessibility/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kb-mobile-accessibility", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Community-Access/accessibility-agents kb-mobile-accessibilityInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Community-Access/accessibility-agents --skill kb-mobile-accessibility -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Community-Access/accessibility-agents.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/kb-mobile-accessibility .github/skills/kb-mobile-accessibility && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "kb-mobile-accessibility" agent skill from https://github.com/Community-Access/accessibility-agents/tree/main/skills/kb-mobile-accessibility into .github/skills/kb-mobile-accessibility/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kb-mobile-accessibility", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Community-Access/accessibility-agents --skill kb-mobile-accessibility -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Community-Access/accessibility-agents kb-mobile-accessibility --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Community-Access/accessibility-agents.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/kb-mobile-accessibility .opencode/skills/kb-mobile-accessibility && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "kb-mobile-accessibility" agent skill from https://github.com/Community-Access/accessibility-agents/tree/main/skills/kb-mobile-accessibility into .opencode/skills/kb-mobile-accessibility/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kb-mobile-accessibility", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
kb-mobile-accessibilityReference data, not a reviewer. An agent skill from Community-Access/accessibility-agents.
Kb Mobile Accessibility is an agent skill from Community-Access/accessibility-agents. Reference data, not a reviewer. Audit React Native, Expo, iOS, Android for accessibility. Review accessibilityLabel, accessibilityRole, accessibilityHint, touch targets (44x44pt min), screen reader support, and platform semantics.
Its SKILL.md is about 3.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `agents/openai.yaml`).
It sits in Mobile, covering Accessibility, Cross-platform mobile apps and Mobile UI design. It works with iOS, React Native, Android and Expo. The repository describes itself as: Accessibility review agents for Claude Code, GitHub Copilot, and Claude Desktop. Eleven specialists that enforce WCAG 2.2 AA compliance so AI coding tools stop generating… The licence is MIT.
Read from SKILL.md and the folder at commit decf6ba. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
adbnpmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Kb Mobile Accessibility loads about 3.8k tokens when it runs. Until then it costs about 64 tokens; SKILL.md has 902 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Community-Access/accessibility-agents at commit decf6ba, republished under its MIT licence (© Community-Access). 902 words, ~3,759 tokens.
.claude/skills/kb-mobile-accessibility/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.This skill provides mobile accessibility reference data for React Native, Expo, iOS, and Android auditing. Used by mobile-accessibility.agent.md.
Each prop, with its type, values or notes, WCAG SC and required.
| Prop | Type | Values / Notes | WCAG SC | Required |
|---|---|---|---|---|
accessible | boolean | true marks the view as an accessibility node | 4.1.2 | Conditional |
accessibilityLabel | string | Human-readable name - overrides all child text | 1.1.1, 4.1.2 | Yes (all interactive + image elements) |
accessibilityLabelledBy | string / string[] | References ID(s) of labelling element | 1.3.1 | For form inputs |
accessibilityRole | string (see roles table) | Communicates element type to AT | 4.1.2 | Yes (all interactive elements) |
accessibilityHint | string | Additional context spoken after label + role | 1.3.3 | When action isn't obvious |
accessibilityState | object | {checked, disabled, expanded, selected, busy} | 4.1.2 | State-bearing elements |
accessibilityValue | object | {min, max, now, text} | 1.3.1 | Sliders, steppers, progress bars |
accessibilityActions | array | [{name, label}] - defines custom actions | 4.1.3 | Context menus, long-press alternatives |
onAccessibilityAction | function | Handles custom action triggers | 4.1.3 | Paired with accessibilityActions |
accessibilityLiveRegion | string | 'none' / 'polite' / 'assertive' | 4.1.3 | Dynamic content updates |
accessibilityViewIsModal | boolean | true traps VoiceOver focus inside modal | 1.3.4 | Modals, drawers, sheets |
accessibilityElementsHidden | boolean | iOS - hides element and children from VoiceOver | 1.1.1 | Decorative elements |
importantForAccessibility | string | Android - 'auto' / 'yes' / 'no' / 'no-hide-descendants' | 1.1.1 | Decorative / grouped elements |
accessibilityIgnoresInvertColors | boolean | iOS - preserves colors in Inverted Colors mode | - | Images, video |
aria-label | string | RN 0.73+ alias for accessibilityLabel | 1.1.1, 4.1.2 | Preferred in new code |
aria-labelledby | string | RN 0.73+ alias for accessibilityLabelledBy | 1.3.1 | Form inputs |
aria-describedby | string | RN 0.73+ alias for accessibilityHint | 1.3.3 | Additional description |
aria-role | string | RN 0.73+ alias for accessibilityRole | 4.1.2 | All interactive elements |
aria-checked | boolean / 'mixed' | RN 0.73+ alias for accessibilityState.checked | 4.1.2 | Checkboxes |
aria-disabled | boolean | RN 0.73+ alias for accessibilityState.disabled | 4.1.2 | Disabled elements |
aria-expanded | boolean | RN 0.73+ alias for accessibilityState.expanded | 4.1.2 | Accordions, dropdowns |
aria-selected | boolean | RN 0.73+ alias for accessibilityState.selected | 4.1.2 | Tabs, list items |
aria-busy | boolean | RN 0.73+ alias for accessibilityState.busy | 4.1.3 | Loading elements |
aria-hidden | boolean | RN 0.73+ - maps to importantForAccessibility / accessibilityElementsHidden | 1.1.1 | Decorative content |
aria-live | string | RN 0.73+ alias for accessibilityLiveRegion | 4.1.3 | Dynamic content |
aria-modal | boolean | RN 0.73+ alias for accessibilityViewIsModal | 1.3.4 | Modals |
Each role, with maps to (ios), maps to (android) and use for.
| Role | Maps to (iOS) | Maps to (Android) | Use For |
|---|---|---|---|
'button' | UIAccessibilityTraitButton | AccessibilityNodeInfo.ROLE_BUTTON | Buttons, submission triggers |
'link' | UIAccessibilityTraitLink | AccessibilityNodeInfo.ROLE_LINK | Navigation links, external URLs |
'search' | - | ROLE_SEARCH | Search bars |
'image' | UIAccessibilityTraitImage | ROLE_IMAGE | Images (when accessible=true) |
'imagebutton' | UIAccessibilityTraitImage+Button | ROLE_BUTTON | Icon buttons |
'header' | UIAccessibilityTraitHeader | ROLE_HEADING | Headings |
'text' | UIAccessibilityTraitStaticText | ROLE_LABEL | Static text |
'adjustable' | UIAccessibilityTraitAdjustable | ROLE_SCROLL_VIEW | Sliders |
'checkbox' | - | ROLE_CHECKBOX | Checkboxes |
'combobox' | - | ROLE_DROP_DOWN_LIST | Dropdowns |
'menu' | - | ROLE_MENU | Menus |
'menuitem' | - | ROLE_MENU_ITEM | Menu items |
'menubar' | - | ROLE_MENU_BAR | Menu bars |
'progressbar' | UIAccessibilityTraitUpdatesFrequently | ROLE_PROGRESS_BAR | Progress indicators |
'radio' | - | ROLE_RADIO_BUTTON | Radio buttons |
'radiogroup' | - | - | Radio button groups |
'scrollbar' | - | ROLE_SCROLL_BAR | Scrollbars |
'spinbutton' | - | ROLE_SCROLL_VIEW | Steppers, number inputs |
'switch' | - | ROLE_SWITCH | Toggle switches |
'tab' | - | ROLE_TAB | Tab elements |
'tablist' | - | ROLE_TAB_LIST | Tab containers |
'timer' | UIAccessibilityTraitUpdatesFrequently | - | Countdown timers |
'toolbar' | - | ROLE_TOOL_BAR | Toolbars |
'grid' | - | ROLE_GRID | Data grids |
'list' | - | ROLE_LIST | Lists |
'listitem' | - | ROLE_LIST_ITEM | List items |
'summary' | UIAccessibilityTraitSummaryElement | - | Summary/status views |
'alert' | UIAccessibilityTraitCausesPageTurn | ROLE_ALERT | Alert dialogs |
'none' | UIAccessibilityTraitNone | ROLE_NONE | Suppress role |
Each platform, with its minimum size, recommended and standard.
| Platform | Minimum Size | Recommended | Standard |
|---|---|---|---|
| iOS | 44 x 44 pt | 44 x 44 pt | HIG |
| Android | 48 x 48 dp | 48 x 48 dp | Material Design |
| Web mobile | 44 x 44 CSS px (AAA) | 44 x 44 CSS px | WCAG 2.5.5 |
| Web mobile (AA, 2.2) | 24 x 24 CSS px with spacing | 44 x 44 CSS px | WCAG 2.5.8 |
// Violation: TouchableOpacity below minimum
const styles = StyleSheet.create({
closeBtn: { width: 24, height: 24 }, // FAIL - below 44pt
iconBtn: { width: 32, height: 32 }, // FAIL - below 44pt
navBtn: { padding: 4 }, // CONDITIONAL - depends on content size
compliant: { width: 44, height: 44 }, // PASS
compliantWithPadding: { padding: 12 }, // PASS if content >= 20pt
});Each modifier, with its purpose.
| Modifier | Purpose |
|---|---|
.accessibilityLabel("...") | Overrides spoken name |
.accessibilityHint("...") | Spoken usage hint (after pause) |
.accessibilityValue("...") | Spoken current value |
.accessibilityHidden(true) | Removes from VoiceOver tree |
.accessibilityElement(children: .combine) | Merges child elements into one node |
.accessibilityElement(children: .contain) | Groups children as sub-elements |
.accessibilityElement(children: .ignore) | Container becomes accessible, children hidden |
.accessibilityAddTraits(.isButton) | Adds role trait |
.accessibilityRemoveTraits(.isImage) | Removes wrong role trait |
.accessibilityInputLabels(["..."]) | Voice Control activation labels |
.accessibilitySortPriority(n) | Overrides VoiceOver reading order (higher = earlier) |
.accessibilityAction(named: "...", {}) | Custom action in the Actions rotor |
.accessibilityActivationPoint(CGPoint) | Override activation tap point |
.accessibilityCustomContent("label", "value") | Extra info in Accessibility Inspector |
isButton, isHeader, isLink, isImage, isStaticText, isSelected, isKeyboardKey, isSearchField, playsSound, isModal, updatesFrequently, startsMediaSession, allowsDirectInteraction, causesPageTurn, isTabBar, isSummaryElement
Each property, with its type and notes.
| Property | Type | Notes |
|---|---|---|
isAccessibilityElement | Bool | Set true on custom views |
accessibilityLabel | String? | Overrides spoken name |
accessibilityHint | String? | Spoken after pause |
accessibilityValue | String? | Current value (sliders, progress) |
accessibilityTraits | UIAccessibilityTraits | Bitfield of traits (.button, .header, etc.) |
accessibilityFrame | CGRect | Determines VoiceOver focus rect |
accessibilityActivate() | func | Override activation behavior |
accessibilityElements | [Any]? | Set container's VoiceOver child order |
shouldGroupAccessibilityChildren | Bool | Groups all children into single node |
accessibilityViewIsModal | Bool | true = VoiceOver trapped inside |
accessibilityElementsHidden | Bool | Hides all children from VoiceOver |
Each modifier / property, with its purpose.
| Modifier / Property | Purpose |
|---|---|
semantics { contentDescription = "..." } | Accessible name |
semantics { role = Role.Button } | Element role |
semantics { stateDescription = "..." } | Current state text |
semantics { heading() } | Marks as heading |
semantics { selected = true/false } | Selected state |
semantics { toggleableState = ToggleableState.On } | Toggle state |
semantics { onClick(label = "...", action = {...}) } | Click action with label |
semantics { disabled() } | Disabled state |
semantics { focused = true } | Force focus |
semantics { liveRegion = LiveRegion.Polite } | Live region announcements |
semantics { invisibleToUser() } | Hide from TalkBack |
semantics { mergeDescendants = true } | Merge child semantics into one node |
clearAndSetSemantics { ... } | Replace all descendant semantics |
Modifier.semantics(mergeDescendants = true) { } | Short merge pattern |
Role.Button, Role.Checkbox, Role.DropdownList, Role.Image, Role.RadioButton, Role.Switch, Role.Tab
// VIOLATION
<TouchableOpacity onPress={close}>
<Icon name="x" size={20} />
</TouchableOpacity>
// FIX
<TouchableOpacity
onPress={close}
accessibilityRole="button"
accessibilityLabel="Close"
>
<Icon name="x" size={20} aria-hidden />
</TouchableOpacity>// VIOLATION
<Image source={productImage} style={styles.product} />
// FIX - informational image
<Image
source={productImage}
style={styles.product}
accessibilityLabel="Blue suede shoes, size 10"
/>
// FIX - decorative image
<Image
source={decorativeBackground}
style={styles.bg}
accessible={false}
importantForAccessibility="no"
/>// VIOLATION - placeholder is not a label
<TextInput placeholder="Email" value={email} onChangeText={setEmail} />
// FIX
<View>
<Text nativeID="emailLabel">Email address</Text>
<TextInput
value={email}
onChangeText={setEmail}
accessibilityLabelledBy="emailLabel"
accessibilityHint="Enter your email address"
keyboardType="email-address"
autoComplete="email"
/>
</View>// VIOLATION
<TouchableOpacity onPress={toggle}>
<Image source={checked ? checkedIcon : uncheckedIcon} />
<Text>Accept terms</Text>
</TouchableOpacity>
// FIX
<TouchableOpacity
onPress={toggle}
accessibilityRole="checkbox"
accessibilityState={{ checked }}
accessibilityLabel="Accept terms and conditions"
>
<Image source={checked ? checkedIcon : uncheckedIcon} accessible={false} />
<Text>Accept terms</Text>
</TouchableOpacity>// VIOLATION - custom modal without VoiceOver trap
<View style={styles.modal}>
<Text>Are you sure?</Text>
<Button title="Confirm" onPress={confirm} />
</View>
// FIX - use Modal component (traps focus automatically) or set accessibilityViewIsModal
<Modal
visible={visible}
transparent
accessibilityViewIsModal={true} // traps VoiceOver
onRequestClose={close} // Android back button
>
<View style={styles.overlay}>
<Text>Are you sure?</Text>
<Button title="Confirm" onPress={confirm} />
<Button title="Cancel" onPress={close} />
</View>
</Modal>// VIOLATION
Image(
painter = painterResource(id = R.drawable.product),
contentDescription = null // null = decorative, but wrong for informational image
)
// FIX - informational
Image(
painter = painterResource(id = R.drawable.product),
contentDescription = stringResource(R.string.product_image_description)
)
// FIX - truly decorative
Image(
painter = painterResource(id = R.drawable.divider),
contentDescription = null,
modifier = Modifier.semantics { invisibleToUser() }
)Xcode -> Xcode menu -> Open Developer Tool -> Accessibility Inspector
- Run audit: Click "Audit" tab -> "Run Audit" button
- Inspect: "Inspection" tab -> hover over elements in Simulator
- Keyboard: Use +F7 to toggle VoiceOver in Simulator# Install (Play Store or adb)
adb install com.google.android.apps.accessibility.auditor
# Enable TalkBack via ADB (for CI)
adb shell settings put secure enabled_accessibility_services \
com.google.android.marvin.talkback/.TalkBackService
# Check accessibility node tree
adb shell uiautomator dump /sdcard/ui_dump.xml
adb pull /sdcard/ui_dump.xmlnpm install --save-dev @testing-library/react-nativeimport { render, screen, fireEvent } from '@testing-library/react-native';
test('button has accessible name and role', () => {
render(<SubmitButton onPress={jest.fn()} />);
const btn = screen.getByRole('button', { name: /submit/i });
expect(btn).toBeTruthy();
});
test('checkbox updates state', () => {
render(<TermsCheckbox />);
const checkbox = screen.getByRole('checkbox', { name: /accept terms/i });
expect(checkbox).toHaveAccessibilityState({ checked: false });
fireEvent.press(checkbox);
expect(checkbox).toHaveAccessibilityState({ checked: true });
});# .maestro/accessibility-checks.yaml
appId: com.example.myapp
---
- launchApp
- assertVisible:
label: "Submit form"
- tapOn:
label: "Close"
- assertNotVisible:
label: "Are you sure?"© Community-Access, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in skills/kb-mobile-accessibility of Community-Access/accessibility-agents.
Open the folder on GitHubat commit decf6ba
Kb Mobile Accessibility next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Kb Mobile Accessibility this skillCommunity-Access/accessibility-agents | 422 | — | ~3.8k | Automated safety check: Pass | MIT | |
| ThemingCode-with-Beto/skills | 141 | — | ~2.5k | Automated safety check: Pass | None | |
| Building Native UICherryHQ/cherry-studio-app | 4k | 8 repos | ~2.6k | Automated safety check: Pass | MIT | |
| Expo Tailwind SetupCherryHQ/cherry-studio-app | 4k | 8 repos | ~3k | Automated safety check: Pass | MIT | |
| Screenmapaleqsio/screenmap | 242 | — | ~7.2k | Automated safety check: Pass | MIT | |
| Expo Brownfield Integrationmweinbach/agent-coworker | 156 | 2 repos | ~900 | Automated safety check: Notes | Custom licence |
Code-with-Beto/skills
Scaffold a unified, cross-platform color theme system into an Expo Router app.
CherryHQ/cherry-studio-app
Complete guide for building beautiful apps with Expo Router.
CherryHQ/cherry-studio-app
Set up Tailwind CSS v4 in Expo with react-native-css and NativeWind v5 for universal styling
aleqsio/screenmap
Generate a visual navigation map of an Expo / React Native or NativeScript app.
mweinbach/agent-coworker
Helps add Expo and React Native to an existing native iOS or Android app, and choose between a prebuilt AAR or XCFramework and a fully integrated build.
arcboxlabs/linkcode
Framework (OSS). An agent skill from arcboxlabs/linkcode.
Community-Access/accessibility-agents
Shared contract for the Accessibility Agents skills - dispatch, findings schema, report rules.
Community-Access/accessibility-agents
Reference data, not a reviewer. An agent skill from Community-Access/accessibility-agents.
Community-Access/accessibility-agents
Web UI accessibility lead. An agent skill from Community-Access/accessibility-agents.
Community-Access/accessibility-agents
Alt text, SVGs, figures, charts, heading order, page titles and landmarks.
Community-Access/accessibility-agents
ARIA roles, states and properties for custom widgets and dynamic content.
Community-Access/accessibility-agents
Plain language, WCAG 2.2 cognitive criteria, COGA guidance and auth UX.
Works with
Categories
Reference data, not a reviewer. An agent skill from Community-Access/accessibility-agents. Kb Mobile Accessibility is an agent skill from Community-Access/accessibility-agents. Reference data, not a reviewer.
Kb Mobile Accessibility fits situations like: tasks that involve Accessibility; tasks that involve Cross-platform mobile apps; tasks that involve Mobile UI design.
Run `npx skills add Community-Access/accessibility-agents --skill kb-mobile-accessibility -a claude-code`. Or copy the skill folder (skills/kb-mobile-accessibility in Community-Access/accessibility-agents) into .claude/skills/kb-mobile-accessibility in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Community-Access/accessibility-agents --skill kb-mobile-accessibility -a codex`. Or copy the skill folder (skills/kb-mobile-accessibility in Community-Access/accessibility-agents) into .agents/skills/kb-mobile-accessibility in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Community-Access/accessibility-agents --skill kb-mobile-accessibility -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/kb-mobile-accessibility, .gemini/skills/kb-mobile-accessibility, .github/skills/kb-mobile-accessibility and .opencode/skills/kb-mobile-accessibility in your project.
Going by SKILL.md and its folder, Kb Mobile Accessibility needs the command-line tools its instructions call (adb and npm).
SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Kb Mobile Accessibility is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.8k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Kb Mobile Accessibility: Theming (Code-with-Beto/skills, 141 stars), Building Native UI (CherryHQ/cherry-studio-app, 4k stars), Expo Tailwind Setup (CherryHQ/cherry-studio-app, 4k stars) and Screenmap (aleqsio/screenmap, 242 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Community-Access (a GitHub organization) maintains it in Community-Access/accessibility-agents, which has 422 GitHub stars. The repository holds 108 skills in this directory. The repository was last updated on September 23, 2026.
Source: Community-Access/accessibility-agents on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.