Manage iOS/watchOS/tvOS/visionOS simulators - boot, install apps, and control device state.
Manages iOS/watchOS/tvOS/visionOS simulators for app testing and device control.
/plugin marketplace add briannadoubt/AppleDocsTool/plugin install briannadoubt-apple-docs@briannadoubt/AppleDocsToolThis skill inherits all available tools. When active, it can use any tool Claude has access to.
Manage iOS/watchOS/tvOS/visionOS simulators - boot, install apps, and control device state.
# All devices
xcrun simctl list devices
# Only booted devices
xcrun simctl list devices | grep Booted
# Available device types
xcrun simctl list devicetypes
# Available runtimes (iOS versions)
xcrun simctl list runtimes
# Boot a device (use device name or UUID)
xcrun simctl boot "iPhone 16"
# Shutdown a device
xcrun simctl shutdown "iPhone 16"
# Shutdown all simulators
xcrun simctl shutdown all
# Open Simulator.app with a device
open -a Simulator --args -CurrentDeviceUDID $(xcrun simctl list devices | grep "iPhone 16" | grep -oE "[A-F0-9-]{36}")
# Find UUID for a specific device
xcrun simctl list devices | grep "iPhone 16"
# Output: iPhone 16 (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX) (Booted)
# Get just the UUID
DEVICE_UUID=$(xcrun simctl list devices available | grep "iPhone 16 Pro (" | head -1 | grep -oE "[A-F0-9-]{36}")
echo $DEVICE_UUID
# Install an app (needs .app bundle, not .ipa)
xcrun simctl install booted /path/to/MyApp.app
# Launch an app
xcrun simctl launch booted com.example.myapp
# Launch and wait for debugger
xcrun simctl launch -w booted com.example.myapp
# Launch with arguments
xcrun simctl launch booted com.example.myapp --arg1 value1
# Terminate running app
xcrun simctl terminate booted com.example.myapp
# Uninstall app
xcrun simctl uninstall booted com.example.myapp
# List installed apps
xcrun simctl listapps booted
# Capture screenshot (PNG)
xcrun simctl io booted screenshot screenshot.png
# Different formats
xcrun simctl io booted screenshot --type=jpeg screenshot.jpg
xcrun simctl io booted screenshot --type=png screenshot.png
# With mask (device frame)
xcrun simctl io booted screenshot --mask=black screenshot.png
# Start recording
xcrun simctl io booted recordVideo output.mov
# Press Ctrl+C to stop recording
# With specific codec
xcrun simctl io booted recordVideo --codec=h264 output.mp4
# Set specific coordinates
xcrun simctl location booted set 37.7749,-122.4194
# Clear location (return to default)
xcrun simctl location booted clear
# Create payload file
cat > /tmp/push.json << 'EOF'
{
"aps": {
"alert": {
"title": "Test Notification",
"body": "Hello from simctl!"
},
"badge": 1,
"sound": "default"
}
}
EOF
# Send to app
xcrun simctl push booted com.example.myapp /tmp/push.json
# Grant permission
xcrun simctl privacy booted grant photos com.example.myapp
xcrun simctl privacy booted grant camera com.example.myapp
xcrun simctl privacy booted grant location com.example.myapp
# Revoke permission
xcrun simctl privacy booted revoke photos com.example.myapp
# Reset all permissions
xcrun simctl privacy booted reset all com.example.myapp
Available services: all, calendar, contacts, location, photos, camera, microphone, media-library, motion, reminders, siri
# Set perfect status bar for screenshots
xcrun simctl status_bar booted override \
--time "9:41" \
--batteryState charged \
--batteryLevel 100 \
--cellularMode active \
--cellularBars 4
# Clear overrides
xcrun simctl status_bar booted clear
# Open URL in simulator
xcrun simctl openurl booted "https://example.com"
# Test deep links
xcrun simctl openurl booted "myapp://path/to/content"
# Copy text to simulator clipboard
echo "Hello" | xcrun simctl pbcopy booted
# Get text from simulator clipboard
xcrun simctl pbpaste booted
# Create new device
xcrun simctl create "My Test Phone" "iPhone 16" "iOS-18-0"
# Delete device
xcrun simctl delete "My Test Phone"
# Erase device (reset to clean state)
xcrun simctl erase "iPhone 16"
# Clone device
xcrun simctl clone "iPhone 16" "iPhone 16 Copy"
# Erase, boot, install, launch
xcrun simctl erase "iPhone 16" && \
xcrun simctl boot "iPhone 16" && \
xcrun simctl install booted MyApp.app && \
xcrun simctl launch booted com.example.myapp
xcrun simctl status_bar booted override --time "9:41" --batteryState charged --batteryLevel 100 && \
xcrun simctl io booted screenshot --mask=black screenshot.png && \
xcrun simctl status_bar booted clear
booted as device name to target the currently running simulator"iPhone 16 Pro Max"xcrun simctl help shows all available commandsFor structured data or complex operations:
simctl_list_devices - JSON list of devices with statesimctl_device_control - Boot/shutdown/create/deletesimctl_app_control - Install/launch/terminatesimctl_screenshot / simctl_record_video - Media captureActivates when the user asks about Agent Skills, wants to find reusable AI capabilities, needs to install skills, or mentions skills for Claude. Use for discovering, retrieving, and installing skills.
Activates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use for discovering, retrieving, and improving prompts.
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.