accessibility-testing
WCAG compliance testing and accessibility quality assurance workflows for iOS apps. Use when validating accessibility labels,…
Accessibility-first UI automation using IDB. Query accessibility tree (fast, 50 tokens) before screenshots (slow, 170 tokens). Use when automating simulator interactions, tapping UI elements, finding buttons, or testing user flows. Covers idb-ui-describe, idb-ui-tap,
Claude Code
$ npx -y skills add conorluddy/xclaude-plugin --skill ui-automation-workflows --agent claude-code
Codex
$ npx skills add conorluddy/xclaude-plugin --skill ui-automation-workflows -a codex -y
Cursor
$ npx skills add conorluddy/xclaude-plugin --skill ui-automation-workflows -a cursor -y
Gemini CLI
$ npx skills add conorluddy/xclaude-plugin --skill ui-automation-workflows -a gemini-cli -y
GitHub Copilot
$ npx skills add conorluddy/xclaude-plugin --skill ui-automation-workflows -a github-copilot -y
OpenCode
$ npx skills add conorluddy/xclaude-plugin --skill ui-automation-workflows -a opencode -y
Windsurf
$ npx skills add conorluddy/xclaude-plugin --skill ui-automation-workflows -a windsurf -y
name: ui-automation-workflows description: Accessibility-first UI automation using IDB. Query accessibility tree (fast, 50 tokens) before screenshots (slow, 170 tokens). Use when automating simulator interactions, tapping UI elements, finding buttons, or testing user flows. Covers idb-ui-describe, idb-ui-tap, idb-ui-find-element patterns.
**Use the `execute_idb_command` MCP tool for all UI automation**
The xclaude-plugin provides the `execute_idb_command` MCP tool which consolidates all IDB UI automation operations into a single, token-efficient dispatcher.
**This is the most important rule:** When automating UI interactions, you MUST use the `execute_idb_command` MCP tool.
**Why?** The MCP tool provides:
If `execute_idb_command` fails, the issue is with parameters or app state - not that you should use bash.
**Always query the accessibility tree first.** Only use screenshots as a fallback.
Use the `execute_idb_command` MCP tool with operation `describe` to access the accessibility tree.
| Approach | Time | Tokens | Reliability | |----------|------|--------|-------------| | Accessibility tree | ~120ms | ~50 | Survives theme changes | | Screenshot | ~2000ms | ~170 | Breaks on visual changes |
**Result: 3-4x faster, 80% cheaper, more reliable**
Before starting automation, check if the app has good accessibility support:
Invoke the `execute_idb_command` MCP tool:
{
"operation": "check-accessibility",
"target": "booted"
}**Interprets:**
**Note:** Most modern iOS apps have good accessibility support. Skip this check if you're confident.
**This is your starting point for all UI automation:**
Invoke the `execute_idb_command` MCP tool:
{
"operation": "describe",
"target": "booted",
"parameters": {
"operation": "all"
}
}**Returns:**
{
"elements": [
{
"label": "Login",
"type": "Button",
"frame": { "x": 100, "y": 400, "width": 175, "height": 50 },
"centerX": 187,
"centerY": 425,
"enabled": true,
"visible": true
},
{
"label": "Email",
"type": "TextField",
"value": "",
"frame": { "x": 50, "y": 300, "width": 275, "height": 44 },
"centerX": 187,
"centerY": 322
}
]
}**Use `centerX` and `centerY` for tap coordinates.**
**Option A: Search by Label/Text (Preferred)**
{
"operation": "find-element",
"target": "booted",
"parameters": {
"query": "Login"
}
}**Option B: Manual Search**
From the accessibility tree response, find the element you want by:
**Tap:**
{
"operation": "tap",
"target": "booted",
"parameters": {
"x": 187,
"y": 425
}
}**Input Text:**
{
"operation": "input",
"target": "booted",
"parameters": {
"text": "user@example.com"
}
}**Keyboard Actions:**
{
"operation": "input",
"target": "booted",
"parameters": {
"key": "return"
}
}Available keys: `return`, `home`, `delete`, `space`, `escape`, `tab`, `up`, `down`, `left`, `right`
After interaction, query accessibility tree again to verify:
{
"operation": "describe",
"target": "booted"
}1. describe → Find "Email" text field 2. tap → Focus email field 3. input → Type email 4. describe → Find "Password" text field 5. tap → Focus password field 6. input → Type password 7. describe → Find "Login" button 8. tap → Submit form 9. describe → Verify next screen
1. describe → Get all buttons 2. find-element → Search for specific button 3. tap → Execute tap 4. describe → Verify navigation
1. describe → Get all text fields 2. For each field: - tap → Focus field - input → Enter text - input key:return → Next field 3. describe → Find submit button 4. tap → Submit
1. describe → Check if element visible 2. If not visible: - gesture (swipe up) → Scroll - describe → Check again 3. find-element → Locate target 4. tap → Interact
{
"operation": "gesture",
"target": "booted",
"parameters": {
"gesture_type": "swipe",
"direction": "up",
"duration": 200
}
}Directions: `up`, `down`, `left`, `right`
{
"operation": "gesture",
"target": "booted",
"parameters": {
"gesture_type": "button",
"button": "HOME"
}
}Buttons: `HOME`, `LOCK`, `SIRI`, `SIDE_BUTTON`, `APPLE_PAY`, `SCREENSHOT`, `APP_SWITCH`
**Only use screenshots if:**
1. **Accessibility quality is "poor"**
{ "operatiModular iOS development automation for Claude Code Build, test, and automate iOS apps through natural conversation with Claude. 8 workflow-specific MCP servers with 24 tools across Xcode, Simulator, and IDB. Enable only what you need.
WCAG compliance testing and accessibility quality assurance workflows for iOS apps. Use when validating accessibility labels,…
Crash log analysis, symbolication, and debugging workflows for iOS apps. Use when investigating app crashes, analyzing crash…
XCTest and XCUITest execution workflows and flaky test detection patterns
Instruments integration and performance analysis workflows for iOS apps. Use when profiling CPU usage, memory allocation, network…
iOS Simulator device and app management with simctl. Use when managing simulator devices (boot, create, delete),…
Cache management, configuration best practices, and progressive disclosure patterns for efficient context window usage. Use when…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.