asc-submission-health
rudrankriyam/app-store-connect-cli-skills
Validate App Store submission readiness, submit versions, and monitor review status with asc commands.
What is asc-submission-health?
Validates iOS/macOS app submissions for App Store review, checks build and metadata readiness, manages encryption and content rights declarations, and monitors submission status. Use this when preparing to ship an app or troubleshooting review rejections.
- Validate submission readiness with `asc validate` in strict or standard mode
- Check build processing state and encryption compliance before submission
- Manage encryption declarations and content rights declarations
- Verify metadata, localizations, screenshots, and app privacy status
- Submit prepared versions or upload and submit in one flow with `asc review submit` or `asc publish appstore`
- Monitor review submission status and cancel submissions if needed
How to install asc-submission-health
npx skills add https://github.com/rudrankriyam/app-store-connect-cli-skills --skill asc-submission-health- App Store Connect authentication configured
- App ID, version number, and build ID resolved
- Build processing completed (or use `--wait` flag for high-level flows)
- Metadata, screenshots, review details, pricing, and availability already configured in App Store Connect
How to use asc-submission-health
- 1.Run `asc validate --app APP_ID --version 1.2.3 --platform IOS` to check submission readiness
- 2.Review validation output; use `--strict` mode to fail on warnings if needed
- 3.Verify build status with `asc builds info --build-id BUILD_ID` and confirm processingState is VALID
- 4.Check and resolve encryption declarations with `asc encryption declarations list` and `asc encryption declarations create` if needed
- 5.Confirm content rights with `asc apps content-rights view` and update if required
- 6.Validate metadata, localizations, and screenshots using provided commands
- 7.Submit with `asc review submit --app APP_ID --version 1.2.3 --build BUILD_ID --confirm` or use `asc publish appstore --submit --confirm` for upload plus submission
- 8.Monitor status with `asc status --app APP_ID` or `asc submit status --id SUBMISSION_ID`
Use cases
- Pre-submission validation to catch metadata, encryption, or build issues before sending to Apple review
- Submitting a prepared app version to App Store review after all metadata and build are ready
- Checking encryption compliance and creating declarations for apps using non-exempt cryptography
- Verifying app privacy advisory status and publishing privacy information
- Monitoring review submission status and canceling submissions that need fixes
- iOS/macOS app developers preparing releases
- DevOps engineers automating App Store submission workflows
- QA teams validating submission readiness before handoff to review
- Release managers coordinating multi-version or multi-platform submissions
asc-submission-health FAQ
`asc validate` checks readiness without submitting. `asc review submit` submits an already-prepared version and build. `asc publish appstore --submit` uploads an IPA file, creates a version if needed, and submits in one flow.
List existing declarations with `asc encryption declarations list --app APP_ID`. Create a new declaration with `asc encryption declarations create` describing your encryption use, then assign it to your build with `asc encryption declarations assign-builds`. Alternatively, rebuild with exempt encryption metadata in your plist.
Yes, use the lower-level review-submission API: create a submission with `asc review submissions-create`, add items with `asc review items add` for each item type and ID, then submit with `asc review submissions-submit --confirm`.
Check that the build is attached and VALID, encryption and content rights are declared, required localizations and screenshots exist, review details are populated, pricing and availability are set, and App Privacy has been published in App Store Connect.
Cancel with `asc submit cancel --id SUBMISSION_ID --confirm` or `asc review submissions-cancel --id SUBMISSION_ID --confirm`. Fix any validation issues, then resubmit with `asc review submit` or `asc publish appstore --submit --confirm`.
Full instructions (SKILL.md)
Source of truth, from rudrankriyam/app-store-connect-cli-skills.
name: asc-submission-health description: Validate App Store submission readiness, submit prepared versions, and monitor review status with current asc commands. Use when shipping or troubleshooting review submissions.
asc submission health
Use this skill to reduce review submission failures and monitor review state. The current readiness command is asc validate; legacy submit-preflight and submit-create shortcuts must not be used.
Preconditions
- Auth configured and app/version/build IDs resolved.
- Build processing completed or the command uses a high-level flow with
--wait. - Metadata, app info, screenshots, review details, content rights, encryption, pricing, and availability are expected to be complete.
Pre-submission checklist
1. Verify build status
asc builds info --build-id "BUILD_ID"
Check:
processingStateisVALID.- encryption fields are understood before submission.
2. Run canonical readiness validation
asc validate --app "APP_ID" --version "1.2.3" --platform IOS --output table
Use strict mode when warnings should fail automation:
asc validate --app "APP_ID" --version "1.2.3" --platform IOS --strict --output table
If you already have the exact version ID:
asc validate --app "APP_ID" --version-id "VERSION_ID" --platform IOS --output table
3. Encryption compliance
If the build uses non-exempt encryption:
asc encryption declarations list --app "APP_ID"
asc encryption declarations create \
--app "APP_ID" \
--app-description "Uses standard HTTPS/TLS" \
--contains-proprietary-cryptography=false \
--contains-third-party-cryptography=true \
--available-on-french-store=true
asc encryption declarations assign-builds \
--id "DECLARATION_ID" \
--build "BUILD_ID"
If the app truly uses only exempt transport encryption, prefer updating the local plist and rebuilding:
asc encryption declarations exempt-declare --plist "./Info.plist"
4. Content rights declaration
asc apps content-rights view --app "APP_ID"
asc apps content-rights edit --app "APP_ID" --uses-third-party-content=false
5. Version metadata and localizations
asc versions view --version-id "VERSION_ID" --include-build --include-submission
asc localizations list --version "VERSION_ID" --output table
For canonical metadata repair:
asc metadata pull --app "APP_ID" --version "1.2.3" --platform IOS --dir "./metadata"
asc metadata validate --dir "./metadata" --output table
asc metadata push --app "APP_ID" --version "1.2.3" --platform IOS --dir "./metadata" --dry-run --output table
asc metadata push --app "APP_ID" --version "1.2.3" --platform IOS --dir "./metadata"
6. App info localizations and privacy policy
asc apps info list --app "APP_ID" --output table
asc localizations list --app "APP_ID" --type app-info --app-info "APP_INFO_ID" --output table
For subscription or IAP apps, make sure privacy policy URL is populated:
asc app-setup info set --app "APP_ID" --primary-locale "en-US" --privacy-policy-url "https://example.com/privacy"
7. Screenshots
asc screenshots list --version-localization "LOC_ID" --output table
asc screenshots sizes --output table
asc screenshots validate --path "./screenshots" --device-type "IPHONE_65" --output table
8. Digital goods readiness
asc validate iap --app "APP_ID" --output table
asc validate subscriptions --app "APP_ID" --output table
Use JSON when you need exact diagnostics:
asc validate subscriptions --app "APP_ID" --output json --pretty
9. App Privacy advisory
The public API cannot fully verify App Privacy publish state. If validation reports an advisory, use the experimental web-session flow or confirm manually.
asc web privacy pull --app "APP_ID" --out "./privacy.json"
asc web privacy plan --app "APP_ID" --file "./privacy.json"
asc web privacy apply --app "APP_ID" --file "./privacy.json"
asc web privacy publish --app "APP_ID" --confirm
Manual fallback:
https://appstoreconnect.apple.com/apps/APP_ID/appPrivacy
Submit
Submit a prepared version
Use asc review submit for explicit App Store review submission:
asc review submit --app "APP_ID" --version "1.2.3" --build "BUILD_ID" --dry-run --output table
asc review submit --app "APP_ID" --version "1.2.3" --build "BUILD_ID" --confirm
Use --version-id "VERSION_ID" when you have already resolved the version.
Upload and submit in one flow
asc publish appstore --app "APP_ID" --ipa "./App.ipa" --version "1.2.3" --submit --dry-run --output table
asc publish appstore --app "APP_ID" --ipa "./App.ipa" --version "1.2.3" --submit --confirm
Add --wait when the command should wait for build processing.
Multi-item review submissions
Use the lower-level review-submission API when the submission needs multiple review items, such as Game Center component versions:
asc review submissions-create --app "APP_ID" --platform IOS
asc review items add --submission "SUBMISSION_ID" --item-type appStoreVersions --item-id "VERSION_ID"
asc review items add --submission "SUBMISSION_ID" --item-type gameCenterChallengeVersions --item-id "GC_CHALLENGE_VERSION_ID"
asc review submissions-submit --id "SUBMISSION_ID" --confirm
For non-renewing IAPs that Apple requires to be selected with the next app version, the public API can reject both direct review items and standalone IAP submission. After validating IAP readiness, use the experimental web-session attachment only for that web-only gap:
asc web review iaps attach --app "APP_ID" --iap-id "IAP_ID" --confirm
This command uses unofficial Apple web-session endpoints and should be documented in the handoff.
Monitor
asc status --app "APP_ID"
asc submit status --id "SUBMISSION_ID"
asc submit status --version-id "VERSION_ID"
asc review submissions-list --app "APP_ID" --paginate
Cancel and retry
asc submit cancel --id "SUBMISSION_ID" --confirm
asc submit cancel --version-id "VERSION_ID" --app "APP_ID" --confirm
asc review submissions-cancel --id "SUBMISSION_ID" --confirm
Fix validation issues, then submit again with asc review submit or asc publish appstore --submit --confirm.
Common submission errors
Version is not in valid state
Check:
- Build is attached and
VALID. - Encryption declaration is resolved or exempt.
- Content rights declaration is set.
- Required localizations and screenshots are present.
- Review details are present.
- Pricing and availability exist.
- App Privacy has been reviewed and published in App Store Connect.
Export compliance must be approved
Either upload export compliance documentation or rebuild with exempt encryption metadata if that accurately describes the app.
Multiple app infos found
Use the exact app-info ID:
asc apps info list --app "APP_ID" --output table
Notes
- Do not use legacy submit-preflight or submit-create shortcuts; they are removed.
- Use
asc validatefor readiness. - Use
asc review submitfor prepared-version submission. - Use
asc publish appstore --submit --confirmfor high-level upload plus submission. - App Privacy publish state is not fully verifiable through the public API.
- Use
--output tablefor human status and JSON for automation. - macOS submissions follow the same review flow but use
--platform MAC_OS.
Related skills
More from rudrankriyam/app-store-connect-cli-skills and the wider catalog.

asc-subscription-localization
Bulk-localize subscription and IAP display names across all App Store Connect locales via CLI.

asc-testflight-orchestration
Orchestrate TestFlight distribution, groups, testers, and release notes via App Store Connect CLI.

asc-wall-submit
Submit or update Wall of Apps entries in App-Store-Connect-CLI repository

asc-whats-new-writer
Generate engaging, localized App Store release notes (What's New) from git log, bullet points, or free text using canonical metadata under `./metadata`. Optionally pairs with promotional text updates.

asc-workflow
Define and run multi-step App Store Connect automations with lane-style workflows and step outputs.

asc-xcode-build
Build, archive, and export Xcode projects for App Store Connect upload with version/build number management.