ship-ios-build-one-command
Use when you want to archive, sign, export, and upload an iOS App Store build in one command, or when a build is missing from App Store Connect and you need…
Skill by phrypy
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/phrypy-ship-ios-build-one-command
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Shell scripts
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/ship-ios-build-one-command
What's inside
- Skill name
ship-ios-build-one-command- Description
- Use when you want to archive, sign, export, and upload an iOS App Store build in one command, or when a build is missing from App Store Connect and you need the local archive-to-upload step automated. Complements solo-ios-release-flow, which holds the judgment and the checklist; this skill is the automation underneath it.
- License
- MIT
- Instructions
- 61 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (2)
- SKILL.md
- archive-ios-build.sh · reference/
SKILL.md (first lines)
# Ship iOS Build, One Command
The last mile, automated. One command takes HEAD to a build attached on App Store Connect.
This is the machine. `solo-ios-release-flow` is the judgment. Decide there, run here.
## The Flow
1. `xcodebuild archive` - Release, `-destination "generic/platform=iOS"`, `-allowProvisioningUpdates`
2. `xcodebuild -exportArchive` - App Store `ExportOptions.plist`, automatic signing, detected team
3. `asc publish appstore --ipa ... --version ... --wait` - uploads and attaches the build, no `--submit` by default
No submit on purpose. Uploading and attaching is reversible. Submitting is not. You submit when the readiness work is done, not as a side effect of a build.
## The Tool
The runnable script is [reference/archive-ios-build.sh](reference/archive-ios-build.sh). It is battle-tested and generic. Run it from the project dir; it auto-detects the rest.
```
reference/archive-ios-build.sh --dry-run # detect project/scheme/team/version/build, print the plan, run nothing
reference/archive-ios-build.sh # archive, export, upload, attach
reference/archive-ios-build.sh --no-upload # stop after the signed .ipa
reference/archive-ios-build.sh --submit # also submit for review (explicit)
```
Auto-detected: `.xcworkspace`/`.xcodeproj`, scheme, `DEVELOPMENT_TEAM`, `MARKETING_VERSION`, `CURRENT_PROJECT_VERSION`, `PRODUCT_BUNDLE_IDENTIFIER`, and the ASC app id resolved from the bundle id.
Always run `--dry-run` first. The archive reflects HEAD. Confirm the branch, version, and build before you commit minutes to a build.
## Signing Model
- Signing is automatic. `-allowProvisioningUpdates` lets `xcodebuild` create and download the Apple Distribution certificate and App Store provisioning profile using the Xcode-logged-in account.
- The first App Store archive on a machine creates a Distribution cert. Expected, not an error.
- Two separate auths. Signing uses the Xcode account. Upload uses asc's own keychain auth. They do not share credentials and do not need to.
## Gotchas, Baked In
These are the failures that cost hours. The script already handles them. Know them anyway.
- **Never pipe `xcodebuild` to `tail`/`grep` for the result.** The pipe's exit code is `tail`'s, not `xcodebuild`'s, so a failed build reads as success. Write to a log, check `${PIPESTATUS[0]}` and grep for "ARCHIVE SUCCEEDED" / "EXPORT SUCCEEDED". Then verify the `.xcarchive` and `.ipa` actually exist on disk. "SUCCEEDED" in the log is not proof a file landed.
- **First archive auto-creates the Distribution cert.** Via `-allowProvisioningUpdates` and the Xcode-logged-in account. Expected. If `xcodebuild` cannot create signing assets headlessly, sign in to the account in Xcode (Settings, Accounts), then rerun.
- **Never scan credential stores for upload keys.** Signing uses the Xcode account; upload uses asc's own keychain auth. Do not hunt the keychain, env, or config files for API issuer ids or `.p8` keys. If upload auth is missing, fix it with `asc auth`, not by guessing.
- **Re-uploading a changed binary needs a new build number.** App Store Connect rejects duplicate build numbers. Bump `CURRENT_PROJECT_VERSION` before you rebuild, or the upload fails late.
- **macOS ships bash 3.2.** Under `set -u`, expanding a possibly-empty array errors with "unbound variable". Guard it: `${arr[@]+"${arr[@]}"}`.
- **Older Xcode names the method "app-store", not "app-store-connect".** The script writes `app-store-connect` first and falls back to `app-store` if Xcode rejects it.
## When NOT To Use
- macOS app for outside-the-store distribution. Use notarization, not this.
- Deciding whether the release is ready, or doing the readiness work, contacts, App Privacy, age rating, availability. That is `solo-ios-release-flow` and `app-store-readiness`.
- TestFlight-only distribution to a group. Use `asc publish testflight --group ...`.
## Verify After
```
asc builds list --app <APP_ID> --sort -uploadedDate --limit 1
```
Newest build should read VALID, with the version you expected. If it does not, the upload is not done, no matter what the script printed.From phrypy/ios-app-playbook, MIT.
More from phrypy/ios-app-playbook
- 0.539score
ios-hig-design
phrypy
Use when establishing or auditing the Apple-platform baseline for an iPhone or iPad interface, especially native conventions, system constraints, and…
SkillCFreshness: C★ 7Claude Code +9 - 0.534score
app-store-screenshot-pipeline
phrypy
Use when producing App Store screenshots from real app renders instead of faked CSS mockups, covering the headless simulator export stage, the…
SkillCFreshness: C★ 7Claude Code +9 - 0.534score
app-store-readiness
phrypy
Use when auditing a prepared iOS release for App Store or TestFlight submission risk, including metadata, privacy, capabilities, and reviewer-facing behavior.
SkillCFreshness: C★ 7Claude Code +9 - 0.534score
ios-app-icon-and-brand-system
phrypy
Use when designing or reviewing an iOS app icon, lightweight brand system, launch assets, screenshot consistency, or App Store-facing visual identity choices.
SkillCFreshness: C★ 7Claude Code +9 - 0.534score
ios-settings-and-data-safety-ux
phrypy
Use when designing iOS settings screens and trust-sensitive flows involving sync, restore, storage, imports, exports, destructive actions, permissions, and…
SkillCFreshness: C★ 7Claude Code +9 - 0.534score
solo-ios-release-flow
phrypy
Use when coordinating the end-to-end release sequence for a prepared SwiftUI app, from final verification through TestFlight or App Store submission.
SkillCFreshness: C★ 7Claude Code +9 - 0.534score
swiftui-product-ui
phrypy
Use when composing a new or materially changed SwiftUI product screen or flow that needs clear hierarchy, state ownership, and a focused user journey.
SkillCFreshness: C★ 7Claude Code +9 - 0.534score
app-store-featuring-nomination
phrypy
Use when submitting an App Store featuring nomination in App Store Connect (Featuring -> Nominations) for an update, launch, or in-app event, including how to…
SkillCFreshness: C★ 7Claude Code +9 - 0.531score
ios-interface-polish
phrypy
Use after an iOS screen or flow works, when its visual execution, tactile feedback, or optical consistency still feels unfinished.
SkillCFreshness: C★ 7Claude Code +9 - 0.469score
ios-accessibility-design-review
phrypy
Use when auditing an iOS interface for accessibility, including Dynamic Type, contrast, VoiceOver clarity, hit targets, reduced motion, and interaction…
SkillDFreshness: D★ 7Claude Code +9 - 0.469score
ios-navigation-and-ia
phrypy
Use when deciding how an iPhone or iPad app should be organized, including tab bars, drill-down flows, sheets, settings grouping, information architecture…
SkillDFreshness: D★ 7Claude Code +9 - 0.469score
ios-motion-and-microinteractions
phrypy
Use when refining iOS interaction polish, including subtle motion, haptics, transitions, state feedback, loading behavior, and microinteractions that should…
SkillDFreshness: D★ 7Claude Code +9
Signals
- Stars
- 7
- Forks
- 2
- Open issues
- 0
- Last commit (this folder)
- Jun 2, 2026 (4 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/phrypy/ios-app-playbook
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from phrypy
- 0.539score
ios-hig-design
phrypy
Use when establishing or auditing the Apple-platform baseline for an iPhone or iPad interface, especially native conventions, system constraints, and…
SkillCFreshness: C★ 7Claude Code +9 - 0.534score
app-store-readiness
phrypy
Use when auditing a prepared iOS release for App Store or TestFlight submission risk, including metadata, privacy, capabilities, and reviewer-facing behavior.
SkillCFreshness: C★ 7Claude Code +9 - 0.534score
app-store-screenshot-pipeline
phrypy
Use when producing App Store screenshots from real app renders instead of faked CSS mockups, covering the headless simulator export stage, the…
SkillCFreshness: C★ 7Claude Code +9 - 0.534score
ios-settings-and-data-safety-ux
phrypy
Use when designing iOS settings screens and trust-sensitive flows involving sync, restore, storage, imports, exports, destructive actions, permissions, and…
SkillCFreshness: C★ 7Claude Code +9 - 0.534score
ios-app-icon-and-brand-system
phrypy
Use when designing or reviewing an iOS app icon, lightweight brand system, launch assets, screenshot consistency, or App Store-facing visual identity choices.
SkillCFreshness: C★ 7Claude Code +9 - 0.534score
solo-ios-release-flow
phrypy
Use when coordinating the end-to-end release sequence for a prepared SwiftUI app, from final verification through TestFlight or App Store submission.
SkillCFreshness: C★ 7Claude Code +9
Cite this page
ship-ios-build-one-command skill. Agent Mart. https://agentmart.dev/skills/phrypy-ship-ios-build-one-command (last updated 2026-10-24)