agentleFS
moasqmoasq/ios-dev-agent/.agents/skills/asc-xcode-build/SKILL.md

asc-xcode-build

Skill4 starsChanged 6 months agoMITView on GitHub

Use when building, archiving, exporting, versioning, or uploading Xcode builds for App Store Connect using current asc xcode helpers.

8 other projects use a version of this, 8 of them edited.

Adopted by

Most recently taken up by

Used with

Projects with it also use asc-apple-ads, asc-in-app-events and 3 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • rudrankriyamSkill

    asc-apple-ads

    Use when managing Apple Ads with asc, including OAuth profiles, ad-account discovery, Platform API v1 campaigns and targeting, reports, assets, recommendations, guarded mutations, raw requests, and Campaign Management API v5 migration.

    Also in 4 projects that use this

  • rorkaiSkill

    asc-in-app-events

    Create and localize App Store in-app events, upload event media, and submit or recover event review submissions with asc. Use when managing in-app events, event card or details page assets, or event-specific submission errors.

    Also in 4 projects that use this

  • eugenepyvovarovSkill

    swift-concurrency-expert

    Swift Concurrency review and remediation for Swift 6.2+. Use when asked to review Swift Concurrency usage, improve concurrency compliance, or fix Swift concurrency compiler errors in a feature or file.

    Also in 3 projects that use this

  • kingsidharthSkill

    swiftui-pro

    Comprehensively reviews SwiftUI code for best practices on modern APIs, maintainability, and performance. Use when reading, writing, or reviewing SwiftUI projects.

    Also in 4 projects that use this

  • jamesrochabrunSkill

    swift-concurrency

    Guide for building, auditing, and refactoring Swift code using modern concurrency patterns (Swift 6+). This skill should be used when working with async/await, Tasks, actors, MainActor, Sendable types, isolation domains, or when migrating legacy callback/Combine code to structured concurrency. Covers Approachable Concurrency settings, isolated parameters, and common pitfalls.

    Also in 3 projects that use this

The file

We split this skill into the rules it gives an agent

12 rules. 1 is common, 0 are distinctive, and 11 are very specific to this project.

  • 1

    Common

    Most of the 8 edited versions we read keep these.

  • 0

    Distinctive

    This author's own choices. Worth a look.

  • 11

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

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

    line 8
  2. Very specific:

    Use --project-dir "./MyApp" when not running from the project root.

    line 25
  3. Very specific:

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

    line 50
  4. Very specific:

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

    line 63
  5. Very specific:

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

    line 111
  6. Very specific:

    Use raw xcodebuild only when asc xcode archive/export --help does not cover a project-specific option.

    line 132
  7. Very specific:

    Add --xcodebuild-flag=-allowProvisioningUpdates to asc xcode export.

    line 142
  8. Common:

    Verify the Apple ID is logged into Xcode.

    line 143
  9. Very specific:

    Verify profiles with the asc-signing-setup skill.

    line 144
  10. Very specific:

    Prefer asc xcode archive and asc xcode export for deterministic local artifacts.

    line 161
  11. Very specific:

    Use --overwrite only when replacing existing local artifacts intentionally.

    line 162
  12. Very specific:

    Use --wait on upload/publish paths when the next step depends on processed builds.

    line 163

“Common” is measured: kept by at least 6 in 10 of the 8 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Xcode build and export

Use this skill when you need to build an app from source and prepare it for App Store Connect. Prefer asc xcode archive and asc xcode export over raw xcodebuild recipes when they fit the project.

Preconditions

  • Xcode and command line tools are installed.
  • Signing identity and provisioning profiles are available, or automatic signing is enabled.
  • App Store Connect auth is configured when upload or build lookup is needed.

Manage version and build numbers

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

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.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.