Loading...
Loading...
Archive and export Xcode projects to IPA/PKG using the `asc` CLI tool, with optional upload to App Store Connect. Use this skill when: (1) Archiving an Xcode project: "asc builds archive --scheme MyApp" (2) Exporting an archive to IPA or PKG for distribution (3) Archive + export + upload in one step: "asc builds archive --scheme MyApp --upload --app-id ..." (4) User says "archive my app", "build for TestFlight", "export IPA", "archive and upload", "build and distribute", "create an IPA from my Xcode project" (5) User wants to go from Xcode project to TestFlight without manually running xcodebuild
npx skill4agent add tddworks/asc-cli-skills asc-builds-archiveasc builds archive \
--scheme <SCHEME_NAME> \
[--workspace MyApp.xcworkspace] # auto-detected from cwd
[--project MyApp.xcodeproj] # auto-detected from cwd
[--platform ios|macos|tvos|visionos] # default: ios
[--configuration Release] # default: Release
[--export-method app-store-connect|ad-hoc|development|enterprise] # default: app-store-connect
[--signing-style automatic|manual] # default: automatic
[--team-id ABCD1234] # team ID for signing
[--output-dir .build] # default: .buildxcodebuild archivexcodebuild -exportArchiveasc builds archive \
--scheme <SCHEME_NAME> \
--upload \
--app-id <APP_ID> \
--version 1.0.0 \
--build-number 42--uploadasc builds upload.asc/project.jsonasc apps listAPP_ID=$(cat .asc/project.json 2>/dev/null | jq -r '.appId // empty')
# If empty: ask user or run `asc apps list | jq -r '.data[0].id'`
# 1. Archive, export, and upload in one command
asc builds archive --scheme MyApp --upload \
--app-id "$APP_ID" --version 1.2.0 --build-number 55
# 2. Get the processed build ID
BUILD_ID=$(asc builds list --app-id $APP_ID | jq -r '.data[0].id')
# 3. Distribute to TestFlight beta group
asc builds add-beta-group --build-id $BUILD_ID --beta-group-id $GROUP_ID
# 4. Set TestFlight notes
asc builds update-beta-notes --build-id $BUILD_ID --locale en-US --notes "New features"
# 5. Link to version and submit for review
asc versions set-build --version-id $VERSION_ID --build-id $BUILD_ID
asc versions submit --version-id $VERSION_ID# Archive and export to default .build/export/
asc builds archive --scheme MyApp
# The output includes an affordance for the next step:
# "upload": "asc builds upload --file .build/export/MyApp.ipa"
# Ad-hoc distribution
asc builds archive --scheme MyApp --export-method ad-hoc --output-dir dist/
# Manual signing with team ID
asc builds archive --scheme MyApp --signing-style manual --team-id ABCD1234
# macOS app
asc builds archive --scheme MyMacApp --platform macos| Method | Use case |
|---|---|
| App Store / TestFlight distribution (default) |
| Direct distribution to registered devices |
| Development testing on registered devices |
| In-house enterprise distribution |
| Flag | Default | Description |
|---|---|---|
| | |
| (none) | Apple Developer team ID; useful when multiple teams are configured |
--signing-style automatic-allowProvisioningUpdatesxcodebuildupload{
"data": [{
"ipaPath": ".build/export/MyApp.ipa",
"exportPath": ".build/export",
"affordances": {
"upload": "asc builds upload --file .build/export/MyApp.ipa"
}
}]
}--uploadcheckStatuslistBuilds| Error | Cause | Fix |
|---|---|---|
| "Unknown platform: watchos" | Invalid platform argument | Use: |
| "Scheme not found" | Scheme doesn't exist or workspace not detected | Pass |
| "no signing identity found" | Code signing not configured | Configure signing in Xcode or pass |
| "No profiles for 'X' were found" | Provisioning profile not available | Default |
| "app-store" is deprecated | Old export method name | Use |
| "No .ipa or .pkg found" | Export succeeded but no binary produced | Check xcodebuild output, verify scheme builds an app target |
| "--app-id is required" | | Provide |