iOS Simulator Skill for Claude Code

April 12, 2026 · View on GitHub

Ask DeepWiki

iOS Simulator Skill for Claude Code

Production-ready skill for building, testing, and automating iOS apps. 22 scripts optimized for both human developers and AI agents.

Xcode Build + Simulator Automation

This skill covers both sides of iOS development:

  • Xcode builds via xcodebuild — compile, test, and parse results with progressive error disclosure
  • Simulator interaction via xcrun simctl and idb — semantic UI navigation, accessibility testing, device lifecycle

If you only need Xcode build tooling without the simulator scripts, see the plugin version: xclaude-plugin

Installation

In Claude Code:

/plugin marketplace add conorluddy/ios-simulator-skill
/plugin install ios-simulator-skill@conorluddy

Via Git Clone

# 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: brew tap facebook/fb && brew install idb-companion)
  • Pillow (optional, for visual diffs: pip3 install pillow)

Features

Xcode Build with Progressive Disclosure

The build_and_test.py script wraps xcodebuild with token-efficient output. A build returns a single summary line with an xcresult ID:

Build: SUCCESS (0 errors, 3 warnings) [xcresult-20251018-143052]

Then drill into details on demand:

python scripts/build_and_test.py --get-errors xcresult-20251018-143052
python scripts/build_and_test.py --get-warnings xcresult-20251018-143052
python scripts/build_and_test.py --get-log xcresult-20251018-143052

This keeps agent conversations focused — no walls of build output unless you ask for them.

Simulator Navigation via Accessibility

Instead of fragile pixel-coordinate tapping, all navigation uses iOS accessibility APIs to find elements by meaning:

# Fragile — breaks if UI changes
idb ui tap 320 400

# Robust — finds by meaning
python scripts/navigator.py --find-text "Login" --tap

The accessibility tree gives structured data (element types, labels, frames, tap targets) at ~10 tokens default output vs 1,600-6,300 tokens for a screenshot. See AI-Accessible Apps for more on why accessibility-first navigation matters for AI agents.

Screenshot Token Optimization

When screenshots are needed (visual verification, bug reports, diffs), the skill automatically resizes and compresses them to minimize token cost. Default output across all 22 scripts is 3-5 lines — 96% reduction vs raw tool output.

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

All 22 Scripts

Every script supports --help and --json. See SKILL.md for the complete reference.

Build & Development

ScriptWhat it doesKey flags
build_and_test.pyBuild Xcode projects, run tests, parse xcresult bundles--project, --scheme, --test, --get-errors, --get-warnings
log_monitor.pyReal-time log monitoring with severity filtering--app, --severity, --follow, --duration
ScriptWhat it doesKey flags
screen_mapper.pyAnalyze current screen, list interactive elements--verbose, --hints
navigator.pyFind and interact with elements semantically--find-text, --find-type, --find-id, --tap, --enter-text
gesture.pySwipes, scrolls, pinches, long press, pull to refresh--swipe, --scroll, --pinch, --long-press, --refresh
keyboard.pyText input and hardware button control--type, --key, --button, --clear, --dismiss
app_launcher.pyLaunch, terminate, install, deep link apps--launch, --terminate, --install, --open-url, --list

Testing & Analysis

ScriptWhat it doesKey flags
accessibility_audit.pyWCAG compliance checking on current screen--verbose, --output
visual_diff.pyCompare two screenshots for visual changes--threshold, --output, --details
test_recorder.pyAutomated test documentation with screenshots--test-name, --output
app_state_capture.pyDebugging snapshots (screenshot, hierarchy, logs)--app-bundle-id, --output, --log-lines
sim_health_check.shVerify environment (Xcode, simctl, IDB, Python)
model_inspector.pyInspect Core Data / SwiftData models from project files--project-path, --raw, --show-versions

Permissions & Environment

ScriptWhat it doesKey flags
clipboard.pyCopy text to simulator clipboard for paste testing--copy, --test-name
status_bar.pyOverride status bar (time, battery, network)--preset, --time, --battery-level, --clear
push_notification.pySend simulated push notifications--bundle-id, --title, --body, --payload
privacy_manager.pyGrant, revoke, reset app permissions (13 services)--bundle-id, --grant, --revoke, --reset

Device Lifecycle

ScriptWhat it doesKey flags
simctl_boot.pyBoot simulators with readiness verification--name, --wait-ready, --timeout, --all, --type
simctl_shutdown.pyGracefully shutdown simulators--name, --verify, --all, --type
simctl_create.pyCreate simulators by device type and OS version--device, --runtime, --list-devices
simctl_delete.pyDelete simulators with safety confirmation--name, --yes, --all, --old
simctl_erase.pyFactory reset without deletion--name, --verify, --all, --booted

Evaluation

Tested using Claude Code evals:

ConditionPass Rate
With skill100% (3/3)
Without skill46% (~1.4/3)
claude evals run evals/evals.json --skill ios-simulator-skill

License

MIT