Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when automating iOS Simulator interactions, capturing screenshots/video, or inspecting accessibility via AXe CLI.
.claude/skills/aiskillstore-axe-ios-simulator/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -48% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 0% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 48% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -36% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -22% | 0% |
AXe is a single-binary CLI for iOS Simulator automation via Apple's Accessibility APIs and HID.
bashbrew install cameroncooke/axe/axe
bash# Get simulator UDID axe list-simulators UDID="<simulator-udid>" # Basic interactions axe tap -x 100 -y 200 --udid $UDID axe tap --label "Safari" --udid $UDID axe type 'Hello World!' --udid $UDID axe gesture scroll-down --udid $UDID axe button home --udid $UDID axe screenshot --udid $UDID
bash# Tap at coordinates axe tap -x 100 -y 200 --udid $UDID # Tap by accessibility identifier or label axe tap --id "myButton" --udid $UDID axe tap --label "Submit" --udid $UDID # With timing controls axe tap -x 100 -y 200 --pre-delay 1.0 --post-delay 0.5 --udid $UDID # Swipe axe swipe --start-x 100 --start-y 300 --end-x 300 --end-y 100 --udid $UDID axe swipe --start-x 50 --start-y 500 --end-x 350 --end-y 500 --duration 2.0 --delta 25 --udid $UDID # Low-level touch control axe touch -x 150 -y 250 --down --udid $UDID axe touch -x 150 -y 250 --up --udid $UDID axe touch -x 150 -y 250 --down --up --delay 1.0 --udid $UDID
| Preset | Use Case | |--------|----------| | scroll-up | Content navigation | | scroll-down | Content navigation | | scroll-left | Horizontal scrolling | | scroll-right | Horizontal scrolling | | swipe-from-left-edge | Back navigation | | swipe-from-right-edge | Forward navigation | | swipe-from-top-edge | Dismiss/close | | swipe-from-bottom-edge | Open/reveal |
bashaxe gesture scroll-down --udid $UDID axe gesture swipe-from-left-edge --udid $UDID axe gesture scroll-up --screen-width 430 --screen-height 932 --udid $UDID axe gesture scroll-down --pre-delay 1.0 --post-delay 0.5 --udid $UDID
bash# Direct text (use single quotes for special characters) axe type 'Hello World!' --udid $UDID # From stdin (best for automation) echo "Complex text" | axe type --stdin --udid $UDID # From file axe type --file input.txt --udid $UDID # Individual key press by HID keycode axe key 40 --udid $UDID # Enter key axe key 42 --duration 1.0 --udid $UDID # Hold Backspace # Key sequence axe key-sequence --keycodes 11,8,15,15,18 --udid $UDID # "hello"
bashaxe button home --udid $UDID axe button lock --duration 2.0 --udid $UDID axe button side-button --udid $UDID axe button siri --udid $UDID axe button apple-pay --udid $UDID
bash# Screenshot (auto-generates filename) axe screenshot --udid $UDID # Screenshot to specific path axe screenshot --output ~/Desktop/screenshot.png --udid $UDID # Video recording to MP4 axe record-video --udid $UDID --fps 15 --output recording.mp4 axe record-video --udid $UDID --fps 10 --quality 60 --scale 0.5 --output low-bandwidth.mp4 # Stream MJPEG axe stream-video --udid $UDID --fps 10 --format mjpeg > stream.mjpeg # Pipe to ffmpeg axe stream-video --udid $UDID --fps 30 --format ffmpeg | \ ffmpeg -f image2pipe -framerate 30 -i - -c:v libx264 -preset ultrafast output.mp4
Press Ctrl+C to stop recording. AXe finalizes MP4 and prints path to stdout.
bash# Full screen accessibility tree axe describe-ui --udid $UDID # Accessibility info at specific point axe describe-ui --point 100,200 --udid $UDID
bashaxe tap --label "Continue" --pre-delay 2.0 --udid $UDID
bashfor i in {1..5}; do axe describe-ui --udid $UDID | grep -q "targetElement" && break axe gesture scroll-down --udid $UDID done axe tap --label "targetElement" --udid $UDID
bashaxe tap --label "Email" --udid $UDID axe type 'user@example.com' --udid $UDID axe tap --label "Password" --udid $UDID axe type 'secret123' --udid $UDID axe tap --label "Sign In" --udid $UDID
bashaxe tap --label "Submit" --post-delay 1.0 --udid $UDID axe screenshot --output result.png --udid $UDID
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 21,209 | 2,677 | -87% | 1 | 1 | 0% | 3,703 | 1,915 | -48% | 0 | 0 | — |
case-02 | fail→pass | 12,758 | 3,441 | -73% | 1 | 1 | 0% | 2,109 | 2,103 | -0% | 0 | 0 | — |
case-03 | fail→pass | 8,081 | 2,431 | -70% | 1 | 1 | 0% | 1,248 | 1,853 | +48% | 0 | 0 | — |
case-04 | fail→fail | 11,825 | 4,860 | -59% | 1 | 1 | 0% | 1,885 | 2,360 | +25% | 0 | 0 | — |
case-05 | pass→pass | 12,381 | 5,520 | -55% | 1 | 1 | 0% | 1,416 | 2,381 | +68% | 0 | 0 | — |
case-06 | pass→pass | 14,958 | 10,138 | -32% | 1 | 1 | 0% | 2,356 | 3,211 | +36% | 0 | 0 | — |
case-07 | fail→pass | 15,257 | 2,329 | -85% | 1 | 1 | 0% | 2,758 | 1,771 | -36% | 0 | 0 | — |
case-08 | fail→pass | 12,429 | 2,182 | -82% | 1 | 1 | 0% | 2,342 | 1,831 | -22% | 0 | 0 | — |
case-09 | fail→pass | 18,908 | 2,322 | -88% | 1 | 1 | 0% | 3,205 | 1,811 | -43% | 0 | 0 | — |
case-10 | fail→pass | 7,495 | 3,578 | -52% | 1 | 1 | 0% | 1,272 | 1,990 | +56% | 0 | 0 | — |
case-11 | fail→pass | 13,005 | 2,988 | -77% | 1 | 1 | 0% | 2,083 | 1,896 | -9% | 0 | 0 | — |
case-12 | fail→pass | 7,574 | 2,652 | -65% | 1 | 1 | 0% | 1,265 | 1,899 | +50% | 0 | 0 | — |
case-13 | fail→pass | 19,337 | 2,800 | -86% | 1 | 1 | 0% | 3,241 | 1,832 | -43% | 0 | 0 | — |
case-14 | pass→pass | 7,405 | 2,830 | -62% | 1 | 1 | 0% | 1,214 | 1,836 | +51% | 0 | 0 | — |
case-15 | pass→pass | 7,200 | 2,599 | -64% | 1 | 1 | 0% | 1,342 | 1,928 | +44% | 0 | 0 | — |
case-16 | fail→pass | 18,601 | 2,427 | -87% | 1 | 1 | 0% | 3,105 | 1,744 | -44% | 0 | 0 | — |
case-17 | fail→pass | 14,264 | 2,635 | -82% | 1 | 1 | 0% | 2,262 | 1,810 | -20% | 0 | 0 | — |
case-18 | fail→pass | 5,660 | 2,762 | -51% | 1 | 1 | 0% | 951 | 1,916 | +101% | 0 | 0 | — |
case-19 | fail→pass | 6,721 | 2,004 | -70% | 1 | 1 | 0% | 1,086 | 1,759 | +62% | 0 | 0 | — |
case-20 | fail→pass | 10,830 | 1,926 | -82% | 1 | 1 | 0% | 1,707 | 1,647 | -4% | 0 | 0 | — |
case-21 | fail→pass | 12,265 | 1,985 | -84% | 1 | 1 | 0% | 1,888 | 1,709 | -9% | 0 | 0 | — |
case-22 | fail→pass | 13,291 | 1,784 | -87% | 1 | 1 | 0% | 2,138 | 1,666 | -22% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +77 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.