Build and deploy iOS apps to Simulator, TestFlight, or App Store. Auto-detects Xcode project config, resolves signing, and validates builds.
/deploy-ios [simulator|testflight|appstore] [--device name] [--scheme scheme]
--clean is also accepted to force a clean build.
testflight-internal; non-iOS projects (it stops if no Xcode project is found)APP_STORE_CONNECT_API_KEY_ID, APP_STORE_CONNECT_API_ISSUER_ID, and APP_STORE_CONNECT_API_KEY_PATH (path to your .p8 key file). Generate the key from your Apple Developer account under App Store Connect → Users and Access → Integrations. Without these, the skill falls back to producing a local IPA for you to upload manually.PROVISIONING_PROFILE_SPECIFIER and CODE_SIGN_IDENTITY set as environment variables before running the skill, e.g. export PROVISIONING_PROFILE_SPECIFIER=<profile-name> and export CODE_SIGN_IDENTITY=<identity-name>./deploy-ios
What you’ll see: the detected workspace/project and scheme, a simulator build (the default target), then the app installed and launched in the iOS Simulator with a summary of device, OS version, and bundle ID.
/deploy-ios # build + launch in the default simulator
/deploy-ios simulator --device "iPhone 16 Pro" # pick a specific simulator device
/deploy-ios testflight --scheme MyApp # archive + upload to TestFlight
/deploy-ios appstore # archive + upload for App Store review
/deploy-ios simulator --clean # clean build when caches are suspect
| Flag | Values | Default | What it does |
|---|---|---|---|
| target | simulator, testflight, appstore |
simulator |
Where the build goes |
--device |
simulator device name | most recent iPhone simulator available; falls back to any available iOS simulator if no iPhone found | Which simulator to boot and install on |
--scheme |
Xcode scheme name | asks if multiple | Which scheme to build |
--clean |
— | off | Cleans before building |
.xcworkspace (or .xcodeproj), lists schemes, detects the package manager (SPM/CocoaPods/Carthage), warns if Pods are stale, and reads build settings for bundle ID and deployment target. If multiple schemes exist and you didn’t pass --scheme, it asks which to use — a user-confirmation checkpoint. If there’s no Xcode project, it stops.After two failed build attempts it stops, shows the full error log, and asks for guidance.
If your project has a fastlane/ directory, the skill automatically uses your existing Fastlane lanes instead of raw xcodebuild — for simulator builds, fastlane run build_app; for TestFlight, fastlane pilot upload; for App Store, fastlane release if that lane exists. Make sure your lanes support the target you’re deploying to (simulator, testflight, appstore); the skill checks fastlane lanes first.
build/<scheme>.xcarchive, an exported IPA, and an upload to App Store Connect (with bundle version and build number reported)| Problem | Fix |
|---|---|
No signing certificate |
Sign in to your Apple Developer account: Xcode → Settings → Accounts |
No profiles found |
Enable Automatic Signing in Xcode, or create the provisioning profile in the Apple Developer portal |
Simulator not found |
Run xcrun simctl list devices and pass a valid name via --device |
xcodebuild: error: ... not found (scheme) |
Run xcodebuild -list and pass the correct --scheme |
| Stale/missing Pods | Run pod install in the project directory, then retry |
SPM resolution failed |
Run xcodebuild -resolvePackageDependencies, then retry |
| Upload times out | Retry the upload and check your network connection |
| Build mysteriously failing | Retry with --clean — and after 2 failures the skill stops with the full log rather than guessing |