v1.0 · Plugin MIT · macOS 12+

Build, test, and automate iOS apps with Claude Code.

A production-ready skill of 22 scripts wrapping xcodebuild, xcrun simctl, and idb with semantic interfaces designed for AI agents and developers.

/01
22
Production scripts
/02
96%
Token reduction
/03
100%
Eval pass rate
01 / WHY

Why it matters.

Three principles, applied to every script.

A

Token-efficient by default

Default output is 3–5 lines. Drill into errors, warnings, or full logs only when you need them. Conversations stay focused, costs stay low.

B

Semantic UI navigation

Find elements by meaning — labels, types, IDs — not pixels. Built on the iOS accessibility tree, so tests survive UI redesigns.

C

Production-ready

Class-based scripts, type hints, Black + Ruff CI. Auto-UDID detection. Idempotent device lifecycle. Works with real simulators today.

02 / RECEIPTS

Raw tools vs. this skill.

A typical login flow with raw idb output is ~400 lines. With this skill, ~15.

Screen analysis

Raw200+ lines
Skill5 lines

−97.5%

Find & tap button

Raw100+ lines
Skill1 line

−99%

Login flow

Raw400+ lines
Skill15 lines

−96%

03 / INSTALL

Install in Claude Code.

Two commands, no setup. Restart Claude Code; the skill loads automatically.

~/claude-code
/plugin marketplace add conorluddy/ios-simulator-skill
/plugin install ios-simulator-skill@conorluddy

Prerequisites: macOS 12+ · Xcode CLT · Python 3 · IDB (optional). Full list →

04 / CATALOG

22 scripts. 5 categories.

Every script supports --help and --json. Auto-detects the booted simulator unless you pass --udid.

/A

Build & Development

  • build_and_test.pyBuild, test, parse xcresult bundles with progressive error disclosure
  • log_monitor.pyReal-time log monitoring with severity filtering
/B

Navigation & Interaction

  • screen_mapper.pyAnalyze the current screen, list interactive elements
  • navigator.pyFind and interact with elements semantically
  • gesture.pySwipes, scrolls, pinches, long press, pull to refresh
  • keyboard.pyText input and hardware button control
  • app_launcher.pyLaunch, terminate, install, deep link apps
/C

Testing & Analysis

  • accessibility_audit.pyWCAG compliance checking on the current screen
  • visual_diff.pyCompare two screenshots for visual changes
  • test_recorder.pyAutomated test documentation with screenshots
  • app_state_capture.pyDebugging snapshots: screenshot, hierarchy, logs
  • sim_health_check.shVerify Xcode, simctl, IDB, Python toolchain
  • model_inspector.pyInspect Core Data / SwiftData models from project files
/D

Permissions & Environment

  • clipboard.pyCopy text to simulator clipboard for paste testing
  • status_bar.pyOverride status bar (time, battery, network)
  • push_notification.pySend simulated push notifications
  • privacy_manager.pyGrant, revoke, reset app permissions across 13 services
/E

Device Lifecycle

  • simctl_boot.pyBoot simulators with readiness verification
  • simctl_shutdown.pyGracefully shutdown simulators
  • simctl_create.pyCreate simulators by device type and OS version
  • simctl_delete.pyDelete simulators with safety confirmation
  • simctl_erase.pyFactory reset without deletion
05 / EVAL

Measured against itself.

Same iOS task suite. With and without the skill loaded. Run it yourself with claude evals run.

WITH SKILL

100%

3 of 3 tasks passed

WITHOUT SKILL

46%

~1.4 of 3 tasks passed

Tested with Claude Code evals.