# Run IOS Simulator

> Build and run an iPlug2 iOS app in the iOS Simulator

- Skill: `majiayu000/run-ios-simulator` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/run-ios-simulator`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/run-ios-simulator/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/run-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
```

