skills/tddworks/asc-cli-skills/asc-builds-archive

asc-builds-archive

SKILL.md

asc Builds Archive & Export

Archive Xcode projects, export IPA/PKG binaries, and optionally upload to App Store Connect — all in one command. See workflow.md for the full end-to-end flow.

Commands

Archive and export

asc 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: .build

Workspace/project are auto-detected from the current directory if not specified. The command runs xcodebuild archive followed by xcodebuild -exportArchive with an auto-generated ExportOptions plist.

Archive + export + upload (one command)

asc builds archive \
  --scheme <SCHEME_NAME> \
  --upload \
  --app-id <APP_ID> \
  --version 1.0.0 \
  --build-number 42

The --upload flag chains the exported IPA/PKG directly into the existing asc builds upload flow.

Resolve App ID

See project-context.md — check .asc/project.json before asking the user or running asc apps list.

Typical Workflow

APP_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 only (no upload)

# 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

Export Methods

Method Use case
app-store-connect App Store / TestFlight distribution (default)
ad-hoc Direct distribution to registered devices
development Development testing on registered devices
enterprise In-house enterprise distribution

Signing Options

Flag Default Description
--signing-style automatic automatic lets Xcode manage profiles; manual requires pre-configured profiles
--team-id (none) Apple Developer team ID; useful when multiple teams are configured

When --signing-style automatic (the default), the export step passes -allowProvisioningUpdates to xcodebuild so profiles are automatically resolved.

CAEOAS Affordances

Archive-only responses include an upload affordance pointing to the exported binary:

{
  "data": [{
    "ipaPath": ".build/export/MyApp.ipa",
    "exportPath": ".build/export",
    "affordances": {
      "upload": "asc builds upload --file .build/export/MyApp.ipa"
    }
  }]
}

When --upload is used, the response matches the standard build upload format with checkStatus and listBuilds affordances.

Troubleshooting

Error Cause Fix
"Unknown platform: watchos" Invalid platform argument Use: ios, macos, tvos, visionos
"Scheme not found" Scheme doesn't exist or workspace not detected Pass --workspace or --project explicitly
"no signing identity found" Code signing not configured Configure signing in Xcode or pass --export-method development
"No profiles for 'X' were found" Provisioning profile not available Default --signing-style automatic resolves this; or pass --team-id explicitly
"app-store" is deprecated Old export method name Use app-store-connect (now the default)
"No .ipa or .pkg found" Export succeeded but no binary produced Check xcodebuild output, verify scheme builds an app target
"--app-id is required" --upload used without --app-id Provide --app-id or run asc init first

Reference

See workflow.md for:

  • Auto-detection logic for workspace/project
  • ExportOptions plist generation details
  • Platform-to-destination mapping
  • How archive chains into the upload flow
Weekly Installs
5
First Seen
4 days ago
Installed on
opencode5
gemini-cli5
github-copilot5
amp5
cline5
codex5