From apple-docs
Manage iOS/watchOS/tvOS/visionOS simulators - boot, install apps, and control device state.
npx claudepluginhub briannadoubt/claude-marketplace --plugin apple-docsThis skill uses the workspace's default tool permissions.
Manage iOS/watchOS/tvOS/visionOS simulators - boot, install apps, and control device state.
Provides Ktor server patterns for routing DSL, plugins (auth, CORS, serialization), Koin DI, WebSockets, services, and testApplication testing.
Conducts multi-source web research with firecrawl and exa MCPs: searches, scrapes pages, synthesizes cited reports. For deep dives, competitive analysis, tech evaluations, or due diligence.
Provides demand forecasting, safety stock optimization, replenishment planning, and promotional lift estimation for multi-location retailers managing 300-800 SKUs.
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 capture