asc-xcode-build

Build, archive, export, upload, and manage Xcode version/build numbers with the current asc xcode helpers before App Store Connect upload or submission. Use…

INSTALLATION
npx skills add https://github.com/rorkai/app-store-connect-cli-skills --skill asc-xcode-build
Run in your project or agent environment. Adjust flags if your CLI version differs.

SKILL.md

$2b

Use --project-dir "./MyApp" when not running from the project root. Use --project "./MyApp/App.xcodeproj" when the directory contains multiple projects. Use --target "App" for deterministic reads in multi-target projects.

To avoid low build-number rejects, resolve a remote-safe build number first:

asc builds next-build-number --app "APP_ID" --version "1.2.3" --platform IOS --output json

asc xcode version edit --build-number "NEXT_BUILD"

Preferred iOS/tvOS/visionOS build flow

1. Archive with asc

asc xcode archive \

  --workspace "App.xcworkspace" \

  --scheme "App" \

  --configuration Release \

  --clean \

  --archive-path ".asc/artifacts/App.xcarchive" \

  --xcodebuild-flag=-destination \

  --xcodebuild-flag=generic/platform=iOS \

  --output json

Use --project "App.xcodeproj" instead of --workspace for project-only apps.

2. Export with asc

asc xcode export \

  --archive-path ".asc/artifacts/App.xcarchive" \

  --export-options "ExportOptions.plist" \

  --ipa-path ".asc/artifacts/App.ipa" \

  --xcodebuild-flag=-allowProvisioningUpdates \

  --output json

If ExportOptions.plist uses direct App Store Connect upload, add --wait to poll for build discovery and processing:

asc xcode export \

  --archive-path ".asc/artifacts/App.xcarchive" \

  --export-options "UploadExportOptions.plist" \

  --ipa-path ".asc/artifacts/App.ipa" \

  --wait \

  --output json

3. Upload or publish

Upload an exported IPA:

asc builds upload --app "APP_ID" --ipa ".asc/artifacts/App.ipa" --wait

Distribute to TestFlight:

asc publish testflight --app "APP_ID" --ipa ".asc/artifacts/App.ipa" --group "GROUP_ID" --wait

Publish to the App Store:

asc publish appstore --app "APP_ID" --ipa ".asc/artifacts/App.ipa" --version "1.2.3" --wait

asc publish appstore --app "APP_ID" --ipa ".asc/artifacts/App.ipa" --version "1.2.3" --wait --submit --confirm

macOS App Store flow

Archive with the helper:

asc xcode archive \

  --project "MacApp.xcodeproj" \

  --scheme "MacApp" \

  --configuration Release \

  --clean \

  --archive-path ".asc/artifacts/MacApp.xcarchive" \

  --xcodebuild-flag=-destination \

  --xcodebuild-flag=generic/platform=macOS \

  --output json

If your macOS export produces a .pkg, use Xcode export with your ExportOptions.plist, then upload the package:

xcodebuild -exportArchive \

  -archivePath ".asc/artifacts/MacApp.xcarchive" \

  -exportPath ".asc/artifacts/MacAppExport" \

  -exportOptionsPlist "ExportOptions.plist" \

  -allowProvisioningUpdates

asc builds upload \

  --app "APP_ID" \

  --pkg ".asc/artifacts/MacAppExport/MacApp.pkg" \

  --version "1.0.0" \

  --build-number "123" \

  --wait

For .pkg uploads, --version and --build-number are required because they are not auto-extracted like IPA metadata.

Raw xcodebuild fallback

Use raw xcodebuild only when asc xcode archive/export --help does not cover a project-specific option. Prefer passing extra arguments through --xcodebuild-flag first.

xcodebuild -showBuildSettings -scheme "App"

Troubleshooting

No profiles for bundle ID during export

  • Add --xcodebuild-flag=-allowProvisioningUpdates to asc xcode export.
  • Verify the Apple ID is logged into Xcode.
  • Verify profiles with the asc-signing-setup skill.

CFBundleVersion too low

asc builds next-build-number --app "APP_ID" --version "1.2.3" --platform IOS

asc xcode version edit --build-number "NEXT_BUILD"

Then rebuild and upload again.

Build rejected for missing macOS icon

macOS requires ICNS icons with all required sizes. Fix the asset catalog, rebuild, then export/upload again.

Notes

  • Prefer asc xcode archive and asc xcode export for deterministic local artifacts.
  • Use --overwrite only when replacing existing local artifacts intentionally.
  • Use --wait on upload/publish paths when the next step depends on processed builds.
  • For submission readiness, use asc-submission-health.
BrowserAct

Let your agent run on any real-world website

Bypass CAPTCHA & anti-bot for free. Start local, scale to cloud.

Explore BrowserAct Skills →

Stop writing automation&scrapers

Install the CLI. Run your first Skill in 30 seconds. Scale when you're ready.

Start free
free · no credit card