conorluddy/ios-simulator-skill
Overview
This skill provides 21 production-ready Python scripts to build, test, and automate iOS apps on simulator instances. It focuses on accessibility-driven, semantic UI navigation, simulator lifecycle management, and concise machine-friendly output. The toolset is optimized for AI agents and CI/CD pipelines with a default minimal token footprint and optional verbose or JSON modes.
How this skill works
Scripts use accessibility APIs and simctl/IDB interactions to discover UI elements, perform taps, type text, run gestures, and manage simulator devices. Build and test tooling invokes Xcode command line tools, parses xcresult bundles, and streams logs while other scripts capture screenshots, accessibility trees, and structured debug snapshots. Most commands auto-resolve booted simulators by name or UDID and return concise human-readable summaries or full JSON for automation.
When to use it
- Automate end-to-end UI flows without brittle pixel coordinates
- Run builds and tests with progressive streaming and parsed results
- Manage simulator lifecycle in CI (create, boot, erase, delete, shutdown)
- Perform accessibility audits and generate remediation reports
- Capture debugging snapshots for bug reports with logs and UI trees
Best practices
- Start with sim_health_check.sh to verify environment and dependencies
- Use device names (e.g., "iPhone 16 Pro") instead of UDIDs for readability
- Prefer --json in CI for stable machine parsing and --verbose locally for debugging
- Leverage accessibility identifiers and hints to make semantic navigation robust
- Batch operations with --all or --type for scalable CI workflows
Example use cases
- CI job: boot simulators, install app, run build_and_test.py, upload test artifacts
- Agent-driven QA: map current screen, find elements semantically, and run interaction scripts
- Accessibility sweep: run accessibility_audit.py across screens and export JSON reports
- Regression check: capture app_state_capture.py snapshots and visual_diff.py between runs
- Preflight test: set status bar preset and push simulated notifications to validate UX
FAQ
No special configuration is required beyond macOS, Xcode CLT, and Python 3; IDB is optional for additional interactive features.
How do I integrate outputs into CI?
Use the --json flag to produce machine-readable output and pipe logs/artifacts to your CI storage; scripts return concise summaries by default to save tokens.