conorluddy/ios-simulator-skill

An IOS Simulator Skill for ClaudeCode. Use it to optimise Claude's ability to build, run and interact with your apps, without using up any of the available token/context budget.

391 stars16 forksUpdated Jan 16, 2026
npx skills add conorluddy/ios-simulator-skill

README

iOS Simulator Skill for Claude Code

Production-ready automation for iOS app testing and building. 21 scripts optimized for both human developers and AI agents.

This is basically a Skill version of my XCode MCP: https://github.com/conorluddy/xc-mcp

[!WARNING] You want to take the ios-simulator-skill directory from this repo and drop it into your skills directory - not this entire repo. I'll update this soon with an easier approach. Feel free to fork this and get Claude to adjust it to your specific needs.

MCPs load a lot of tokens into the context window when they're active, but also seem to work really well. Skills don't load in any context. I'll make a plugin next and try to find the balance...

Updated: The Plugin version lets you easily disable MCPs for different tool groups. Optimise your context window by only enabling the tools you're actively using, such as xcodebuild: https://github.com/conorluddy/xclaude-plugin

What It Does

Instead of pixel-based navigation that breaks when UI changes:

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

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

Uses semantic navigation on accessibility APIs to interact with elements by their meaning, not coordinates. Works across different screen sizes and survives UI redesigns.

Features

  • 21 production scripts for building, testing, and automation
  • Semantic navigation - find elements by text, type, or ID
  • Token optimized - 96% reduction vs raw tools (3-5 lines default)
  • 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
  • Comprehensive testing - WCAG compliance, visual diffs, accessibility audits
  • CI/CD ready - JSON output, exit codes, automated device lifecycle

Installation

As Claude Code Skill

# 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.

From Release

# Download latest release
curl -L https://github.com/conorluddy/ios-simulator-skill/releases/download/vX.X.X/ios-simulator-skill-vX.X.X.zip -o skill.zip

# Extract
unzip skill.zip -d ~/.claude/skills/ios-simulator-skill

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)

Quick Start

# 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
# Output:
# Screen: LoginViewController (45 elements, 7 interactive)
# Buttons: "Login", "Cancel", "Forgot Password"
# TextFields: 2 (0 filled)

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

# 5. Enter text
python ~/.claude/skills/ios-simulator-skill/scripts/navigator.py --find-type TextField --enter-text "user@test.com"

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

21 Scripts Organized by Category

Build & Development

  • build_and_test.py - Build projects, run tests, parse results
  • log_monitor.py - Real-time log monitoring

Navigation & Interaction

  • screen_mapper.py - Analyze current screen
  • navigator.py - Find and interact with elements
  • gesture.py - Swipes, scrolls, pinches
  • keyboard.py - Text input and hardware buttons
  • app_launcher.py - App lifecycle control

Testing & Analysis

  • accessibility_audit.py - WCAG compliance checking
  • visual_diff.py - Screenshot comparison
  • test_recorder.py - Automated test documentation
  • app_state_capture.py - Debugging snapshots
  • sim_health_check.sh - Environment verification

Advanced Testing & Permissions

  • clipboard.py - Clipboard management
  • status_bar.py - Status bar control
  • push_notification.py - Push notifications
  • privacy_manager.py - Permission management

Device Lifecycle

  • simctl_boot.py - Boot simulator
  • simctl_shutdown.py - Shutdown simulator
  • simctl_create.py - Create simulator
  • simctl_delete.py - Delete simulator
  • simctl_erase.py - Factory reset

See SKILL.md for complete reference.

How It Works with Claude Code

Claude Code automatically detects when to use this

...

Read full README