---
name: run-ios-simulator
description: Build and run an iPlug2 iOS app in the iOS Simulator
---
# Run iOS App in Simulator
Use this skill when the user wants to run an iPlug2 iOS project in the iOS Simulator.
## Workflow
1. **Identify the project:**
- If not specified, look for `.xcworkspace` files in the repo root
- Ask user to choose if multiple projects exist
2. **Check available simulators and get UDID:**
```bash
xcrun simctl list devices available | grep -E "iPhone|iPad"
```
Extract the UDID from the output (the value in parentheses, e.g., `9E866BC3-9E64-4608-B4D0-D20F1DE3E980`)
Or programmatically:
```bash
xcrun simctl list devices available -j | jq -r '.devices[] | .[] | select(.name=="[DeviceName]") | .udid'
```
3. **Build for Simulator:**
```bash
xcodebuild -workspace [Project]/[Project].xcworkspace \
-scheme "iOS-APP with AUv3" \
-configuration Debug \
-destination 'platform=iOS Simulator,name=[DeviceName]' \
build
```
4. **Find the built app:**
```bash
find ~/Library/Developer/Xcode/DerivedData -name "[Project].app" -path "*Debug-iphonesimulator*" -type d 2>/dev/null | head -1
```
5. **Boot simulator and install (use UDID, not "booted"):**
```bash
open -a Simulator
xcrun simctl boot [UDID] 2>/dev/null || true
xcrun simctl install [UDID] "[path/to/Project.app]"
```
Using the UDID ensures the correct simulator is targeted even when multiple are running.
6. **Launch the app (use UDID):**
```bash
# Get bundle ID from Info.plist
/usr/libexec/PlistBuddy -c "Print :CFBundleIdentifier" "[path/to/Project.app]/Info.plist"
xcrun simctl launch [UDID] [bundle.identifier]
```
## Notes
- **No code signing required** for Simulator builds
- **Always use UDID** to target a specific simulator, not `booted`
- Default device: iPhone 17 Pro (or latest available)
- The AUv3 plugin is embedded in the app and will be available to host apps in the Simulator
- Use `xcrun simctl list devices available` to see all device options
- If `jq` is not installed, extract UDID manually from `xcrun simctl list devices available` output
## Example
For TemplateProject on iPhone 17 Pro:
```bash
# Get the UDID for iPhone 17 Pro
UDID=$(xcrun simctl list devices available -j | jq -r '.devices[] | .[] | select(.name=="iPhone 17 Pro") | .udid')
# Build
xcodebuild -workspace TemplateProject/TemplateProject.xcworkspace \
-scheme "iOS-APP with AUv3" -configuration Debug \
-destination "platform=iOS Simulator,id=$UDID" build
# Install and run using UDID
open -a Simulator
xcrun simctl boot $UDID 2>/dev/null || true
xcrun simctl install $UDID ~/Library/Developer/Xcode/DerivedData/TemplateProject-*/Build/Products/Debug-iphonesimulator/TemplateProject.app
xcrun simctl launch $UDID com.AcmeInc.TemplateProject
```