.cursor/skills/ios-appstore-publish/SKILL.md
Publish the iOS app to Apple's App Store. Covers the full workflow from code signing setup through archive, upload, metadata, and submission. Use when the user asks to publish to App Store, submit for review, upload to App Store Connect, or distribute the iOS app.
npx skillsauth add baijum/ukulele-companion ios-appstore-publishInstall 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.
End-to-end workflow for publishing the iOS app to Apple's App Store.
com.baijum.ukufretboard.ioshttps://baijum.github.io/ukulele-companion/privacy-policy/)Use the github-release skill. iOS uses ios/vX.Y.Z prefix tags to avoid collisions with Android tags.
Use the ios-release skill. This bumps version, builds the KMP framework, and creates a signed archive.
Use the ios-screenshot-capture skill. Required displays:
| Display | Simulator | Output dir |
|---------|-----------|------------|
| iPhone 6.5" (1284x2778) | iPhone 16 Pro Max | docs/appstore-screenshots/iphone/ |
| iPad 13" (2064x2752) | iPad Pro 13-inch (M4/M5) | docs/appstore-screenshots/ipad/ |
Ask the user to navigate to each screen in the Simulator, then capture with xcrun simctl io. Resize to required dimensions (see ios-screenshot-capture skill).
Recommended screens (5-6): Explorer/Fretboard, Chord Library, Tuner, Songbook, a Learn screen, a Reference screen.
open build/UkuleleCompanion.xcarchive
In Xcode Organizer: Distribute App > App Store Connect > Upload.
The first upload may prompt for Keychain access. Apple processes the build in 15-30 minutes.
After processing, go to App Store Connect > TestFlight or iOS Builds to manage the build. Complete Export Compliance when prompted (select "None of the algorithms mentioned above" for this app since it is fully offline with no encryption).
In App Store Connect, fill in:
App Information:
Pricing: $0.00 (Free)
Tax Category: App Store software
Version Information:
Click Add for Review > Submit to App Review.
Apple review typically takes 24-48 hours. You'll receive an email when complete.
| Issue | Cause | Fix |
|-------|-------|-----|
| MinimumOSVersion validation error | Static frameworks embedded instead of linked | Remove shared.framework and onnxruntime.xcframework from "Embed Frameworks" build phase in project.pbxproj |
| Linker error: built for iOS-simulator | Release FRAMEWORK_SEARCH_PATHS includes simulator paths | Remove iosSimulatorArm64 and iosX64 paths from Release config in project.pbxproj |
| Screenshot dimensions wrong | Simulator renders at non-standard resolution | Resize with sips -z <height> <width> file.png |
| Code signing hangs | Keychain access dialog pending | User must enter Mac password and click "Always Allow" |
| Build not appearing in App Store Connect | Processing takes time | Wait 15-30 minutes after upload |
tools
Record scene video clips for a TOML video project. Reads the android.toml or ios.toml to get the scene list and min_clip_duration, navigates to each screen via ADB (Android) or simctl (iOS), and records individual clips. Use when the user says /record-clips and provides a TOML path.
tools
Upload a release AAB to Google Play Store using the Gradle Play Publisher plugin. Use when the user asks to upload to Play Store, publish to Google Play, deploy to internal testing, promote a release, or mentions Play Console.
development
Promote a release from Google Play internal testing to a closed testing track (Alpha or App Hive Testing). Use when the user asks to promote a release, move to closed testing, push to alpha, push to App Hive Testing, or mentions track promotion.
development
Promote a release to Google Play open testing or production tracks. Supports full rollout and staged rollout to production. Use when the user asks to promote to open testing, beta, go to production, release to all users, staged rollout, or increase rollout percentage.