Use when automating iOS Simulator UI interactions beyond simctl capabilities. Reference for AXe CLI covering accessibility-based tapping, gestures, text input, screenshots, video recording, and UI tree inspection.
View on GitHubSelect agents to install to:
npx add-skill https://github.com/CharlesWiltgen/Axiom/blob/main/.claude-plugin/plugins/axiom/skills/axiom-axe-ref/SKILL.md -a claude-code --skill axiom-axe-refInstallation paths:
.claude/skills/axiom-axe-ref/# AXe Reference (iOS Simulator UI Automation) AXe is a CLI tool for interacting with iOS Simulators using Apple's Accessibility APIs and HID functionality. Single binary, no daemon required. ## Installation ```bash brew install cameroncooke/axe/axe # Verify installation axe --version ``` ## Critical Best Practice: describe_ui First **ALWAYS run `describe_ui` before UI interactions.** Never guess coordinates from screenshots. **Best practice:** Use describe-ui to get precise element coordinates prior to using x/y parameters (don't guess from screenshots). ```bash # 1. FIRST: Get the UI tree with frame coordinates axe describe-ui --udid $UDID # 2. THEN: Tap by accessibility ID (preferred) axe tap --id "loginButton" --udid $UDID # 3. OR: Tap by label axe tap --label "Login" --udid $UDID # 4. LAST RESORT: Tap by coordinates from describe-ui output axe tap -x 200 -y 400 --udid $UDID ``` **Priority order for targeting elements:** 1. `--id` (accessibilityIdentifier) - most stable 2. `--label` (accessibility label) - stable but may change with localization 3. `-x -y` coordinates from `describe-ui` - fragile, use only when no identifier ## Core Concept: Accessibility-First **AXe's key advantage**: Tap elements by accessibility identifier or label, not just coordinates. ```bash # Coordinate-based (fragile - breaks with layout changes) axe tap -x 200 -y 400 --udid $UDID # Accessibility-based (stable - survives UI changes) axe tap --id "loginButton" --udid $UDID axe tap --label "Login" --udid $UDID ``` **Always prefer `--id` or `--label` over coordinates.** ## Getting the Simulator UDID AXe requires the simulator UDID for most commands: ```bash # Get booted simulator UDID UDID=$(xcrun simctl list devices -j | jq -r '.devices | to_entries[] | .value[] | select(.state == "Booted") | .udid' | head -1) # List all simulators axe list-simulators ``` ## Touch & Tap Commands ### Tap by Accessibility Identifier (Recommended) ```bash # Tap element with accessibili