skills/ios-simulator/SKILL.md
--- name: ios-simulator description: Control the iOS Simulator using xcrun simctl. Use when asked to take a screenshot of the simulator, navigate to a screen, open a deep link, launch or kill an app, control the status bar, list simulators, or interact with the running iOS simulator. Trigger terms: simulator, xcrun, simctl, screenshot simulator, deep link, open app, navigate mobile. allowed-tools: Bash, Read, Glob --- # iOS Simulator Control Controls the iOS Simulator via `xcrun simctl`. All c
npx skillsauth add ronnycoding/.claude skills/ios-simulatorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Controls the iOS Simulator via xcrun simctl. All commands target the booted device unless a UDID is specified.
See commands.md for the full command reference.
xcrun simctl list devices | grep Booted
If nothing is booted, boot one:
# List available devices first
xcrun simctl list devices available
# Boot by UDID or name
xcrun simctl boot "iPhone 16"
open -a Simulator
xcrun simctl io booted screenshot /tmp/screen.png
Then read the image to show it to the user:
# After running the screenshot command, use the Read tool on the file path
Always show the screenshot to the user after taking it.
Expo dev build (Metro running on 8081):
xcrun simctl openurl booted "exp://localhost:8081/--/<route>"
Examples:
xcrun simctl openurl booted "exp://localhost:8081/--/training"
xcrun simctl openurl booted "exp://localhost:8081/--/nutrition"
xcrun simctl openurl booted "exp://localhost:8081/--/profile"
Production / preview build (custom scheme):
xcrun simctl openurl booted "myheavyduty://training"
Generic web URL:
xcrun simctl openurl booted "https://example.com"
Important: Custom app schemes (
myheavyduty://) fail in Expo dev mode with LSApplicationWorkspaceErrorDomain error 115. Always useexp://localhost:8081/--/<path>for development.
# Find the bundle ID
xcrun simctl listapps booted | grep -A3 "MyHeavyDuty\|heavyduty"
# Launch
xcrun simctl launch booted <bundle-id>
# Terminate
xcrun simctl terminate booted <bundle-id>
# Set clean demo status bar
xcrun simctl status_bar booted override \
--time "9:41" \
--batteryState charged \
--batteryLevel 100 \
--wifiBars 3 \
--cellularMode active \
--cellularBars 4
# Clear overrides (restore real status bar)
xcrun simctl status_bar booted clear
xcrun simctl tap — not a valid subcommandxcrun simctl io booted tap — not a valid io operationsimctl cannot simulate taps. Alternatives:
osascript -e 'tell application "System Events" to tell process "Simulator" to click at {x, y}'
Deep link — preferred: navigate directly instead of tapping.
Detox — for full E2E tap automation.
xcrun simctl openurl booted "exp://localhost:8081/--/training"
sleep 2
xcrun simctl io booted screenshot /tmp/training.png
Then use Read tool to show /tmp/training.png.
xcrun simctl listapps booted | grep -i heavy
xcrun simctl list devices | grep Booted
development
Expert guide for WebGL API development including 3D graphics, shaders (GLSL), rendering pipeline, textures, buffers, performance optimization, and canvas rendering. Use when working with WebGL, 3D graphics, canvas rendering, shaders, GPU programming, or when user mentions WebGL, OpenGL ES, GLSL, vertex shaders, fragment shaders, texture mapping, or 3D web graphics.
tools
Guide for using the Sentry CLI to interact with Sentry from the command line. Use when the user asks about viewing issues, events, projects, organizations, making API calls, or authenticating with Sentry via CLI.
development
Guide for performing secure web searches with privacy protection, source verification, and information validation. Use when the user wants to search the web securely, verify sources, fact-check information, or mentions secure search, privacy, source validation, or web research.
development
Drive the OpenWA WhatsApp HTTP API from the terminal with curl. Use when sending WhatsApp messages (text/image/video/audio/document/location/contact/bulk), managing sessions and QR login, listing contacts/groups/chats, registering webhooks, or managing scoped API keys against an OpenWA server. Triggers on "OpenWA", "penwa", "send WhatsApp via API", "WhatsApp session", or mentions of base URL http://0.0.0.0:2785.