| name | mobiai-ios-device |
| description | Use when interacting with an iOS Simulator — run simctl commands, capture screenshots, read device logs, manage simulators. |
| license | MIT |
| compatibility | ["claude-code","cursor","copilot","codex"] |
| platforms | ["ios"] |
iOS Device Interaction
Community contribution welcome! This skill is a skeleton. If you have iOS development experience, please help flesh it out with battle-tested commands and workflows.
Interact with iOS Simulators using xcrun simctl and related tools.
When to Use
- Reproducing a bug on an iOS Simulator
- Taking screenshots or capturing logs
- Managing Simulators
Simulator Management
List Available Simulators
xcrun simctl list devices available
Boot a Simulator
xcrun simctl boot "iPhone 15 Pro"
xcrun simctl boot <UDID>
open -a Simulator
Shut Down
xcrun simctl shutdown <UDID>
xcrun simctl shutdown all
Erase (reset to clean state)
xcrun simctl erase <UDID>
App Management
Install
xcrun simctl install booted /path/to/MyApp.app
Launch
xcrun simctl launch booted com.example.myapp
Terminate
xcrun simctl terminate booted com.example.myapp
Uninstall
xcrun simctl uninstall booted com.example.myapp
UI Inspection
Accessibility Snapshot
xcrun simctl spawn booted accessibility_inspector
Note: iOS doesn't have a direct CLI equivalent to Android's uiautomator dump. For automated UI interaction, consider using:
- XCUITest for reliable UI automation
- Accessibility Inspector (GUI) for manual inspection
xcrun simctl io booted screenshot combined with vision analysis
Screenshots
xcrun simctl io booted screenshot screenshot.png
Screen Recording
xcrun simctl io booted recordVideo recording.mp4
Logs
View App Logs
xcrun simctl spawn booted log stream --predicate 'process == "MyApp"' --level debug
xcrun simctl spawn booted log show --predicate 'process == "MyApp"' --last 5m
xcrun simctl spawn booted log show --predicate 'eventMessage contains "crash"' --last 10m
Crash Reports
ls ~/Library/Logs/DiagnosticReports/ | grep MyApp
UI Interaction
Simulated Input
xcrun simctl openurl booted "myapp://screen/settings"
xcrun simctl push booted com.example.myapp notification.json
xcrun simctl location booted set 40.7128,-74.0060
xcrun simctl addmedia booted photo.jpg
Keyboard Input
xcrun simctl pbcopy booted <<< "Hello World"
Privacy & Permissions
xcrun simctl privacy booted grant photos com.example.myapp
xcrun simctl privacy booted grant camera com.example.myapp
xcrun simctl privacy booted grant location-always com.example.myapp
xcrun simctl privacy booted revoke all com.example.myapp
xcrun simctl privacy booted reset all com.example.myapp
Status Bar Override
xcrun simctl status_bar booted override \
--time "9:41" \
--batteryState charged \
--batteryLevel 100 \
--wifiBars 3 \
--cellularBars 4
Common Issues
Simulator won't boot
xcrun simctl shutdown all
xcrun simctl erase all
App crashes on launch
Check crash logs and Console.app for details.
Want to improve this skill? This is a community skeleton. Add your battle-tested workflows, common pitfalls, and advanced simctl techniques via a PR to MobiAI-Core.