ios-debugger

SKILL.md

ABOUTME: XcodeBuildMCP integration for building, running, and debugging iOS apps via CLI

ABOUTME: Simulator control, UI interaction, log capture, screenshot automation

iOS Debugger

When to Invoke

  • Build/run iOS apps without Xcode UI
  • Automate simulator interactions
  • Capture app logs programmatically
  • UI testing via CLI
  • CI/CD iOS workflows

Capabilities

  • Build and run on booted simulator
  • Interact with simulator UI (tap, type, gestures)
  • Capture and filter app logs
  • Take screenshots
  • Install/uninstall apps

Prerequisites

# Ensure XcodeBuildMCP is available
# Check if simulator is booted
xcrun simctl list devices | grep Booted

# Boot simulator if needed
xcrun simctl boot "iPhone 16 Pro"

Build and Run

# Build for simulator
xcodebuild -workspace MyApp.xcworkspace \
    -scheme MyApp \
    -sdk iphonesimulator \
    -destination 'platform=iOS Simulator,name=iPhone 16 Pro' \
    build

# Install app on simulator
xcrun simctl install booted path/to/MyApp.app

# Launch app
xcrun simctl launch booted com.example.myapp

UI Interaction

# Tap at coordinates
xcrun simctl io booted tap 200 400

# Type text
xcrun simctl io booted type "Hello World"

# Swipe gesture (x1 y1 x2 y2 duration)
xcrun simctl io booted swipe 200 600 200 200 0.5

# Take screenshot
xcrun simctl io booted screenshot screenshot.png

Log Capture

# Stream all logs from booted simulator
xcrun simctl spawn booted log stream --predicate 'processImagePath CONTAINS "MyApp"'

# Filter by subsystem
xcrun simctl spawn booted log stream --predicate 'subsystem == "com.example.myapp"'

# Capture logs to file
xcrun simctl spawn booted log stream \
    --predicate 'processImagePath CONTAINS "MyApp"' \
    > app.log &

Common Workflows

Reset Simulator

# Erase all data
xcrun simctl erase "iPhone 16 Pro"

# Shutdown and boot
xcrun simctl shutdown "iPhone 16 Pro"
xcrun simctl boot "iPhone 16 Pro"

Tips

  • Always check simulator is booted before commands
  • Use log stream predicates to filter noise
  • Coordinate-based taps are fragile (prefer accessibility IDs in XCTest)
  • Capture screenshots for visual regression tests
  • Use xcrun simctl openurl to test deep links

Integration with Tests

# Run XCTests on simulator
xcodebuild test \
    -workspace App.xcworkspace \
    -scheme App \
    -destination 'platform=iOS Simulator,name=iPhone 16 Pro' \
    -resultBundlePath TestResults.xcresult
Weekly Installs
10
GitHub Stars
8
First Seen
Mar 1, 2026
Installed on
gemini-cli10
opencode10
codebuddy10
github-copilot10
codex10
kimi-cli10