app-store-publish
Automate this: /mobile-release:ship-beta for the TestFlight leg, /mobile-release:ship-release
for the production leg — the latter stops for explicit approval before submitting and before any
rollout. Which steps need which credential: skills/release-automation/references/automation-matrix.md.
Take a signed .ipa that already exists and get it to testers and then to the store. This skill starts at the .ipa and ends at a version in review.
Producing the .ipa is not this skill. Certificates, provisioning profiles, xcodebuild archive / -exportArchive, ExportOptions.plist, match and gym belong to ios-build-sign. Do not re-derive signing here — if the artifact is unsigned, ad-hoc signed, or signed with a development identity, stop and hand back.
Confidence marks used throughout this skill and its references: [verified] — read off a primary vendor source on 2026-08-05. [snippet] — secondary source only, plausible but unconfirmed. [unverified] — not confirmed anywhere; run the check given before relying on it.
Publish process:
- Clear the prerequisites below. A missing app record or an unregistered bundle id fails late and with a misleading error.
- Pick one upload path and stay on it — 1. Upload paths, detail in
references/upload-paths.md. - Validate before uploading (
--validate-app). It costs a minute and catches most ITMS errors before they burn a build number. - Upload, then wait for Apple to finish processing. The build is not addressable by any other tool until processing completes.
- Distribute on TestFlight — 2. TestFlight, detail in
references/testflight.md. - Submit the version for review — 3. Submitting for review, endpoints in
references/review-submission-api.md. - On failure, diagnose with 4. Troubleshooting before re-uploading. A re-upload at the same build number cannot succeed, so a blind retry wastes a build number as well as the time.