원클릭으로
ios-testflight-release
Archive an iOS app with Xcode and upload it to TestFlight using xcodebuild.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Archive an iOS app with Xcode and upload it to TestFlight using xcodebuild.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
Autonomous optimization loop. Modifies code, measures a target metric, keeps improvements, and reverts regressions. Use for API latency, OCR time, bundle size, query speed, or any measurable optimization task.
Generate skills for Claude AI agents.
Organizes and maintains a filesystem-based career management workspace including resume versioning, job application pipelines, company research reuse, and progress tracking. Use when creating/updating resumes, adding applications, preparing interviews, or cleaning career docs structure.
Provides expert guidance for Git commit messages, including conventional commit formatting and best practices. Use when creating or editing Git commit messages.
Documents development work into changelog-style markdown files organized by date. Analyzes recent changes and creates structured work logs. Use when logging completed work or creating development history.
Guides coding sessions in a learning-first rubber duck style. Use when user wants to study while fixing bugs or implementing features, with Socratic questioning, hypothesis-first debugging, and reflection before final solutions.
SOC 직업 분류 기준
| name | ios-testflight-release |
| description | Archive an iOS app with Xcode and upload it to TestFlight using xcodebuild. |
| metadata | {"tags":"ios, xcode, testflight, app-store-connect, deployment, release"} |
Use this skill when the user wants to archive an iOS app and upload the resulting build to TestFlight.
.xcodeproj or .xcworkspace, scheme, target, and signing setupxcodebuild.ipa for App Store Connect or uploading directly during exportBefore uploading, confirm all of the following:
xcode-selectFind the project or workspace and any release automation already present.
ls
xcodebuild -list -project "App.xcodeproj"
# or
xcodebuild -list -workspace "App.xcworkspace"
Also inspect for existing release helpers like:
FastfileREADME.mdExportOptions.plistCheck the build settings for the Release configuration.
xcodebuild -showBuildSettings -project "App.xcodeproj" -scheme "App" -configuration Release
Focus on these values:
PRODUCT_BUNDLE_IDENTIFIERMARKETING_VERSIONCURRENT_PROJECT_VERSIONDEVELOPMENT_TEAMCODE_SIGN_STYLEUse a generic iOS destination and an explicit archive path.
xcodebuild \
-project "App.xcodeproj" \
-scheme "App" \
-configuration Release \
-destination "generic/platform=iOS" \
-archivePath "$PWD/build/App.xcarchive" \
-allowProvisioningUpdates \
archive
If the project uses a workspace, replace -project with -workspace.
Create an export options plist like this:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>destination</key>
<string>export</string>
<key>manageAppVersionAndBuildNumber</key>
<false/>
<key>method</key>
<string>app-store</string>
<key>signingStyle</key>
<string>automatic</string>
<key>teamID</key>
<string>YOUR_TEAM_ID</string>
</dict>
</plist>
Then export:
xcodebuild \
-exportArchive \
-archivePath "$PWD/build/App.xcarchive" \
-exportPath "$PWD/build/export" \
-exportOptionsPlist "/tmp/AppExportOptions.plist"
Use destination = upload in the export options plist.
Export option keys and accepted values are somewhat Xcode-version sensitive. For broad compatibility, prefer method = app-store. Some newer Xcode flows may accept app-store-connect, but that value is not as portable.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>method</key>
<string>app-store</string>
<key>destination</key>
<string>upload</string>
<key>signingStyle</key>
<string>automatic</string>
<key>teamID</key>
<string>YOUR_TEAM_ID</string>
<key>uploadSymbols</key>
<true/>
<key>manageAppVersionAndBuildNumber</key>
<false/>
</dict>
</plist>
Upload with:
xcodebuild \
-exportArchive \
-archivePath "$PWD/build/App.xcarchive" \
-exportPath "$PWD/build/testflight-upload" \
-exportOptionsPlist "/tmp/AppTestFlightExportOptions.plist" \
-allowProvisioningUpdates
If an App Store Connect API key is preferred, pair this command with:
-authenticationKeyPath-authenticationKeyID-authenticationKeyIssuerIDFor headless or repeatable automation, App Store Connect API key authentication is preferred over Apple ID login. Apple ID auth can be brittle and may require interactive verification.
Archive success does not guarantee export or upload success. Many failures happen later when Xcode tries to re-sign for distribution.
automatic: use -allowProvisioningUpdates during archive and upload so Xcode can fetch or refresh signing assetsmanual: provide provisioningProfiles in the export options plist, keyed by bundle identifier, and ensure the matching distribution certificate is available locallyExample manual-signing export fragment:
<key>signingStyle</key>
<string>manual</string>
<key>provisioningProfiles</key>
<dict>
<key>com.example.app</key>
<string>App Store Profile Name</string>
</dict>
App Store Connect rejects duplicate CFBundleVersion values for the same CFBundleShortVersionString.
If upload fails with a message like:
The bundle version must be higher than the previously uploaded version
then bump the app's build number, re-archive, and retry the upload.
In many Xcode projects, CURRENT_PROJECT_VERSION is the source for CFBundleVersion, but that is not universal. Verify how the app sets its build number before editing release metadata.
Once a build number has been used for a given marketing version in App Store Connect, it cannot be reused even if the older build is removed.
The app record and bundle identifier must already exist in App Store Connect and match the archive being uploaded. If the bundle identifier is missing or mismatched, the upload can fail even when signing is correct.
After a successful run, verify these signals in command output:
** ARCHIVE SUCCEEDED **** EXPORT SUCCEEDED **Uploaded package is processingUpload succeededThen confirm in App Store Connect that the build moves from Processing to Ready to Test.
security find-identity -v -p codesigning-allowProvisioningUpdates when automatic signing is configuredCFBundleVersion source, often CURRENT_PROJECT_VERSION.xcworkspacexcodebuild -list only shows the project scheme, .xcodeproj is sufficientWhen the workflow completes, report: