swiftship/internal/skills/data/features/asc-xcode-build/SKILL.md
Build, archive, and export iOS/macOS apps with xcodebuild before uploading to App Store Connect. Use when you need to create an IPA or PKG for upload.
npx skillsauth add abdullah4ai/apple-developer-toolkit asc-xcode-buildInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this skill when you need to build an app from source and prepare it for upload to App Store Connect.
project.yml exists, run xcodegen generate before building to sync build settingsIf project.yml exists in the project directory:
xcodegen generate
xcodebuild clean archive \
-scheme "YourScheme" \
-configuration Release \
-archivePath /tmp/YourApp.xcarchive \
-destination "generic/platform=iOS"
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>
asc builds upload --app "APP_ID" --ipa "/tmp/YourAppExport/YourApp.ipa"
xcodebuild archive \
-scheme "YourMacScheme" \
-configuration Release \
-archivePath /tmp/YourMacApp.xcarchive \
-destination "generic/platform=macOS"
xcodebuild -exportArchive \
-archivePath /tmp/YourMacApp.xcarchive \
-exportPath /tmp/YourMacAppExport \
-exportOptionsPlist ExportOptions.plist \
-allowProvisioningUpdates
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..pkg uploads, --version and --build-number are required (they are not auto-extracted like IPA uploads).--wait if you want to wait for build processing to complete.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
-allowProvisioningUpdates flagmacOS requires ICNS format icons with all sizes:
The build number must be higher than any previously uploaded build. Increment CURRENT_PROJECT_VERSION and rebuild.
xcodebuild -showBuildSettings to verify configurationasc-submission-health skilltesting
Use for 3D games: racing, 3D sports, board games, marble maze, tower defense, bowling. SceneKit + SceneView architecture, 3D scene hierarchy, physics, game loop, primitives, materials, cameras, particles, audio.
documentation
Game UI patterns: SwiftUI HUD overlays on SpriteKit, menus (main/pause/game-over), virtual joystick/d-pad, score displays, health bars, tutorial onboarding.
tools
Download free game sprites/textures/3D models and generate procedural assets. Covers nw_download_asset tool, texture factories, sprite atlas organization, 3D model loading, and programmatic asset creation.
testing
Use for 2D games: arcade, puzzle, sports, ping pong, platformer, shooter, 2D racing. SpriteKit + SpriteView architecture, scene hierarchy, physics, game loop, audio, particles, game feel.