iOS Simulator Skill

Production-ready iOS app testing and building automation with 21 scripts for semantic navigation, accessibility audits, visual diffs, and device lifecycle management.

Who this is for: iOS developers who need to test apps in the iOS Simulator with semantic navigation, accessibility-first design, and token-efficient output for AI agent workflows.

What This Skill Does

Provides 21 production-ready scripts for iOS app testing, building, and automation with semantic navigation that finds elements by meaning (text, type, ID) instead of pixel coordinates.

Core Capabilities

  • 21 Production Scripts — Build, test, navigate, audit, and manage simulators
  • Semantic Navigation — Find elements by text, type, or ID (not coordinates)
  • Token Optimized — 96% reduction vs raw tools (3-5 lines default output)
  • Zero Configuration — Works immediately on macOS with Xcode
  • Structured Output — JSON and formatted text, easy to parse
  • Auto-UDID Detection — No need to specify device each time
  • Batch Operations — Boot, delete, erase multiple simulators at once
  • Accessibility Audits — WCAG compliance checking built-in
  • Visual Diffs — Screenshot comparison for regression testing
  • CI/CD Ready — JSON output, exit codes, automated device lifecycle

Usage

Quick Start

BASH
# 1. Check environment
bash ~/.claude/skills/ios-simulator-skill/scripts/sim_health_check.sh

# 2. Launch your app
python ~/.claude/skills/ios-simulator-skill/scripts/app_launcher.py --launch com.example.app

# 3. See what's on screen
python ~/.claude/skills/ios-simulator-skill/scripts/screen_mapper.py

# 4. Tap login button
python ~/.claude/skills/ios-simulator-skill/scripts/navigator.py --find-text "Login" --tap

# 5. Check accessibility
python ~/.claude/skills/ios-simulator-skill/scripts/accessibility_audit.py

Login Flow Example

BASH
# Launch app
python scripts/app_launcher.py --launch com.example.app

# Map screen to find fields
python scripts/screen_mapper.py

# Enter credentials
python scripts/navigator.py --find-type TextField --index 0 --enter-text "user@test.com"
python scripts/scripts/navigator.py --find-type SecureTextField --enter-text "password"

# Tap login
python scripts/navigator.py --find-text "Login" --tap

# Verify accessibility
python scripts/accessibility_audit.py

Visual Testing

BASH
# Capture baseline
python scripts/app_state_capture.py --output baseline/

# Make changes, then compare
python scripts/visual_diff.py baseline/screenshot.png current/screenshot.png

Permission Testing

BASH
# Grant permissions
python scripts/privacy_manager.py --bundle-id com.example.app --grant camera,location

# Test app behavior, then revoke
python scripts/privacy_manager.py --bundle-id com.example.app --revoke camera,location

CI/CD Device Lifecycle

BASH
# Create test device
DEVICE_ID=$(python scripts/simctl_create.py --device "iPhone 16 Pro" --json | jq -r '.new_udid')

# Run tests
python scripts/build_and_test.py --project MyApp.xcodeproj

# Clean up
python scripts/simctl_delete.py --udid $DEVICE_ID --yes

21 Scripts by Category

Build & Development

ScriptPurpose
build_and_test.pyBuild projects, run tests, parse results
log_monitor.pyReal-time log monitoring
ScriptPurpose
screen_mapper.pyAnalyze current screen
navigator.pyFind and interact with elements
gesture.pySwipes, scrolls, pinches
keyboard.pyText input and hardware buttons
app_launcher.pyApp lifecycle control

Testing & Analysis

ScriptPurpose
accessibility_audit.pyWCAG compliance checking
visual_diff.pyScreenshot comparison
test_recorder.pyAutomated test documentation
app_state_capture.pyDebugging snapshots
sim_health_check.shEnvironment verification

Advanced Testing

ScriptPurpose
clipboard.pyClipboard management
status_bar.pyStatus bar control
push_notification.pyPush notifications
privacy_manager.pyPermission management

Device Lifecycle

ScriptPurpose
simctl_boot.pyBoot simulator
simctl_shutdown.pyShutdown simulator
simctl_create.pyCreate simulator
simctl_delete.pyDelete simulator
simctl_erase.pyFactory reset

Design Principles

PrincipleDescription
Semantic NavigationFind elements by meaning, not coordinates — survives UI changes
Token EfficiencyDefault output 3-5 lines, 96% reduction vs raw tools
Accessibility-FirstBuilt on iOS accessibility APIs for reliability
Zero ConfigurationWorks immediately on macOS with Xcode
Structured DataJSON or formatted text output, easy to parse
Auto-LearningRemembers device preference for next time

Output Efficiency

TaskRaw ToolsThis SkillSavings
Screen analysis200+ lines5 lines97.5%
Find & tap button100+ lines1 line99%
Enter text50+ lines1 line98%
Login flow400+ lines15 lines96%

Installation

BASH
# Personal installation
git clone https://github.com/conorluddy/ios-simulator-skill.git ~/.claude/skills/ios-simulator-skill

# Project installation
git clone https://github.com/conorluddy/ios-simulator-skill.git .claude/skills/ios-simulator-skill

Restart Claude Code. The skill loads automatically.

Prerequisites

  • macOS 12+
  • Xcode Command Line Tools (xcode-select --install)
  • Python 3
  • IDB (optional, for interactive features)
  • iOS app testing and validation
  • Accessibility compliance auditing
  • Visual regression testing
  • CI/CD pipeline integration
  • Permission testing workflows
  • Device lifecycle management
  • Test documentation generation