App-store-connect-cli-skills asc-xcode-build

Build, archive, export, and manage Xcode version/build numbers with asc and xcodebuild before uploading to App Store Connect. Use when you need to create an IPA or PKG for upload.

install
source · Clone the upstream repo
git clone https://github.com/rorkai/app-store-connect-cli-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/rorkai/app-store-connect-cli-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/asc-xcode-build" ~/.claude/skills/rorkai-app-store-connect-cli-skills-asc-xcode-build && rm -rf "$T"
manifest: skills/asc-xcode-build/SKILL.md
source content

Xcode Build and Export

Use this skill when you need to build an app from source and prepare it for upload to App Store Connect.

Preconditions

  • Xcode installed and command line tools configured
  • Valid signing identity and provisioning profiles (or automatic signing enabled)

Manage version and build numbers with
asc

Before archiving, prefer

asc xcode version ...
over manual
pbxproj
edits when you need to inspect or bump app versions.

asc xcode version view
asc xcode version edit --version "1.3.0" --build-number "42"
asc xcode version bump --type build
asc xcode version bump --type patch

Notes:

  • Use
    --project-dir "./MyApp"
    when you are not running from the project root.
  • Use
    --target "App"
    for deterministic reads in multi-target projects.
  • These commands support both legacy
    agvtool
    projects and modern
    MARKETING_VERSION
    /
    CURRENT_PROJECT_VERSION
    setups.

iOS Build Flow

1. Clean and Archive

xcodebuild clean archive \
  -scheme "YourScheme" \
  -configuration Release \
  -archivePath /tmp/YourApp.xcarchive \
  -destination "generic/platform=iOS"

2. Export IPA

xcodebuild -exportArchive \
  -archivePath /tmp/YourApp.xcarchive \
  -exportPath /tmp/YourAppExport \
  -exportOptionsPlist ExportOptions.plist \
  -allowProvisioningUpdates

A minimal

ExportOptions.plist
for App Store distribution:

<?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-connect</string>
    <key>teamID</key>
    <string>YOUR_TEAM_ID</string>
</dict>
</plist>

3. Upload with asc

asc builds upload --app "APP_ID" --ipa "/tmp/YourAppExport/YourApp.ipa"

macOS Build Flow

1. Archive

xcodebuild archive \
  -scheme "YourMacScheme" \
  -configuration Release \
  -archivePath /tmp/YourMacApp.xcarchive \
  -destination "generic/platform=macOS"

2. Export PKG

xcodebuild -exportArchive \
  -archivePath /tmp/YourMacApp.xcarchive \
  -exportPath /tmp/YourMacAppExport \
  -exportOptionsPlist ExportOptions.plist \
  -allowProvisioningUpdates

3. Upload PKG with asc

macOS apps export as

.pkg
files. Upload with
asc
:

asc builds upload \
  --app "APP_ID" \
  --pkg "/tmp/YourMacAppExport/YourApp.pkg" \
  --version "1.0.0" \
  --build-number "123"

Notes:

  • --pkg
    automatically sets platform to
    MAC_OS
    .
  • For
    .pkg
    uploads,
    --version
    and
    --build-number
    are required (they are not auto-extracted like IPA uploads).
  • Add
    --wait
    if you want to wait for build processing to complete.

Build Number Management

Each upload requires a unique build number higher than previously uploaded builds.

In Xcode project settings:

  • CURRENT_PROJECT_VERSION
    - build number (e.g., "316")
  • MARKETING_VERSION
    - version string (e.g., "2.2.0")

Check existing builds:

asc builds list --app "APP_ID" --platform IOS --limit 5

Troubleshooting

"No profiles for bundle ID" during export

  • Add
    -allowProvisioningUpdates
    flag
  • Verify your Apple ID is logged into Xcode

Build rejected for missing icon (macOS)

macOS requires ICNS format icons with all sizes:

  • 16x16, 32x32, 128x128, 256x256, 512x512 (1x and 2x)

CFBundleVersion too low

The build number must be higher than any previously uploaded build. Increment it with

asc xcode version bump --type build
, or resolve a remote-safe number with
asc builds next-build-number --app "APP_ID" --version "2.2.0" --platform IOS
and then apply it with
asc xcode version edit --build-number "NEXT_BUILD"
before rebuilding.

Notes

  • Always clean before archive for release builds
  • Use
    xcodebuild -showBuildSettings
    to verify configuration
  • For submission issues (encryption, content rights), see
    asc-submission-health
    skill