accessibility-testing
WCAG compliance testing and accessibility quality assurance workflows for iOS apps. Use when validating accessibility labels, testing VoiceOver compatibility,…
iOS Simulator device and app management with simctl. Use when managing simulator devices (boot, create, delete), installing/launching apps, or troubleshooting simulator issues. Covers device lifecycle, app lifecycle, and diagnostics.
$ npx -y skills add conorluddy/xclaude-plugin --skill simulator-workflows --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/simulator-workflowsContext preview
The summary Claude sees to decide when to auto-load this skill.
iOS Simulator device and app management with simctl. Use when managing simulator devices (boot, create, delete), installing/launching apps, or troubleshooting simulator issues. Covers device lifecycle, app lifecycle, and diagnostics.
name: simulator-workflows description: iOS Simulator device and app management with simctl. Use when managing simulator devices (boot, create, delete), installing/launching apps, or troubleshooting simulator issues. Covers device lifecycle, app lifecycle, and diagnostics.
**Use the `execute_simulator_command` MCP tool for all simulator management**
The xclaude-plugin provides the `execute_simulator_command` MCP tool which consolidates all simctl operations into a single, token-efficient dispatcher.
**This is the most important rule:** When working with iOS simulators, you MUST use the `execute_simulator_command` MCP tool.
**Why?** The MCP tool provides:
If `execute_simulator_command` fails, the issue is with parameters or device state - not that you should use bash.
| Task | ❌ WRONG (Bash) | ✅ RIGHT (MCP Tool) | |------|---------------|-------------------| | List devices | `xcrun simctl list` | `execute_simulator_command` op: "list" | | Boot simulator | `xcrun simctl boot <UDID>` | `execute_simulator_command` op: "device-lifecycle" sub: "boot" | | Install app | `xcrun simctl install <UDID> <app.app>` | `execute_simulator_command` op: "app-lifecycle" sub: "install" | | Launch app | `xcrun simctl launch <UDID> <bundle-id>` | `execute_simulator_command` op: "app-lifecycle" sub: "launch" | | Screenshot | `xcrun simctl io <UDID> screenshot` | `execute_simulator_command` op: "io" sub: "screenshot" |
| Task | MCP Tool | Operation | Sub-Operation | |------|----------|-----------|---------------| | List devices | `execute_simulator_command` | `list` | - | | Boot device | `execute_simulator_command` | `device-lifecycle` | `boot` | | Shutdown device | `execute_simulator_command` | `device-lifecycle` | `shutdown` | | Create device | `execute_simulator_command` | `device-lifecycle` | `create` | | Delete device | `execute_simulator_command` | `device-lifecycle` | `delete` | | Install app | `execute_simulator_command` | `app-lifecycle` | `install` | | Launch app | `execute_simulator_command` | `app-lifecycle` | `launch` | | Screenshot | `execute_simulator_command` | `io` | `screenshot` | | Health check | `execute_simulator_command` | `health-check` | - |
Invoke the `execute_simulator_command` MCP tool:
{
"operation": "list"
}**Returns (Progressive Disclosure):**
{
"summary": {
"total_devices": 47,
"available_devices": 31,
"booted_devices": 1
},
"booted": [
{
"name": "iPhone 15",
"udid": "ABC123...",
"state": "Booted",
"runtime": "iOS 17.0"
}
],
"cache_id": "sim-list-xyz789",
"next_steps": [
"Use device name or UDID for operations",
"Query cache_id for full device list if needed"
]
}**Note:** Large device lists use progressive disclosure to save tokens.
Invoke the `execute_simulator_command` MCP tool:
**By Name:**
{
"operation": "device-lifecycle",
"sub_operation": "boot",
"device_id": "iPhone 15"
}**By UDID:**
{
"operation": "device-lifecycle",
"sub_operation": "boot",
"device_id": "ABC123-DEF456-...",
"parameters": {
"wait_for_boot": true
}
}**wait_for_boot:** Blocks until device fully booted (recommended)
{
"operation": "device-lifecycle",
"sub_operation": "shutdown",
"device_id": "iPhone 15"
}{
"operation": "device-lifecycle",
"sub_operation": "create",
"device_id": "My iPhone 15 Test",
"parameters": {
"device_type": "iPhone 15",
"runtime": "iOS 17.0"
}
}**Returns:** New device UDID
**Available Device Types:**
**Check available runtimes:** Use `list` to see installed iOS versions
{
"operation": "device-lifecycle",
"sub_operation": "delete",
"device_id": "My iPhone 15 Test"
}**Warning:** This is permanent and cannot be undone.
**Remove all data but keep device:**
{
"operation": "device-lifecycle",
"sub_operation": "erase",
"device_id": "iPhone 15"
}**When to erase:**
**Duplicate a device with all its data:**
{
"operation": "device-lifecycle",
"sub_operation": "clone",
"device_id": "iPhone 15",
"parameters": {
"new_name": "iPhone 15 Clone"
}
}**Use case:** Preserve a specific test state
{
"operation": "app-liModular 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.
Repo: conorluddy/xclaude-plugin
WCAG compliance testing and accessibility quality assurance workflows for iOS apps. Use when validating accessibility labels, testing VoiceOver compatibility,…
Crash log analysis, symbolication, and debugging workflows for iOS apps. Use when investigating app crashes, analyzing crash reports, symbolicating stack…
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 activity, or energy…
Cache management, configuration best practices, and progressive disclosure patterns for efficient context window usage. Use when working with large responses,…
Accessibility-first UI automation using IDB. Query accessibility tree (fast, 50 tokens) before screenshots (slow, 170 tokens). Use when automating simulator…