ai/ios-skills/ios-asc-submission-health/SKILL.md
Preflight App Store submissions, submit builds, and monitor review status with asc. Use when shipping or troubleshooting review submissions.
npx skillsauth add kurko/dotfiles asc-submission-healthInstall 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 to reduce review submission failures and monitor status.
asc builds info --build "BUILD_ID"
Check:
processingState is VALIDusesNonExemptEncryption - if true, requires encryption declarationIf usesNonExemptEncryption: true:
# List existing declarations
asc encryption declarations list --app "APP_ID"
# Create declaration if needed
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
# Assign to build
asc encryption declarations assign-builds \
--id "DECLARATION_ID" \
--build "BUILD_ID"
Better approach: Add ITSAppUsesNonExemptEncryption = NO to Info.plist and rebuild.
Required for all App Store submissions:
# Check current status
asc apps get --id "APP_ID" --output json | jq '.data.attributes.contentRightsDeclaration'
# Set if missing
asc apps update --id "APP_ID" --content-rights "DOES_NOT_USE_THIRD_PARTY_CONTENT"
Valid values:
DOES_NOT_USE_THIRD_PARTY_CONTENTUSES_THIRD_PARTY_CONTENT# Check version details
asc versions get --version-id "VERSION_ID" --include-build
# Verify copyright is set
asc versions update --version-id "VERSION_ID" --copyright "2026 Your Company"
# List version localizations
asc localizations list --version "VERSION_ID"
# Check required fields: description, keywords, whatsNew, supportUrl
Each locale needs screenshots for the target platform.
# List app info IDs (if multiple exist)
asc app-infos list --app "APP_ID"
# Check privacy policy URL
asc localizations list --app "APP_ID" --type app-info --app-info "APP_INFO_ID"
# Create submission
asc review submissions-create --app "APP_ID" --platform IOS
# Add version to submission
asc review items-add \
--submission "SUBMISSION_ID" \
--item-type appStoreVersions \
--item-id "VERSION_ID"
# Submit for review
asc review submissions-submit --id "SUBMISSION_ID" --confirm
asc submit create --app "APP_ID" --version "1.2.3" --build "BUILD_ID" --confirm
Use --platform when multiple platforms exist.
# Check submission status
asc submit status --id "SUBMISSION_ID"
asc submit status --version-id "VERSION_ID"
# List all submissions
asc review submissions-list --app "APP_ID" --paginate
# Cancel submission
asc submit cancel --id "SUBMISSION_ID" --confirm
# Or via review API
asc review submissions-cancel --id "SUBMISSION_ID" --confirm
Fix issues, then re-submit.
Check:
The build has usesNonExemptEncryption: true. Either:
ITSAppUsesNonExemptEncryption = NO in Info.plistUse --app-info flag with the correct app info ID:
asc app-infos list --app "APP_ID"
asc submit create uses the new reviewSubmissions API automatically.--output table when you want human-readable status.--platform MAC_OS.tools
Create a GitHub pull request from the current branch. Use when user asks to create a PR, open a PR, submit a PR, push and create PR, or similar pull request workflows. Activates for phrases like "create a PR", "open a pull request", "submit PR", "push and PR", "make a PR for this", "open a draft PR".
data-ai
Merge the current worktree branch into main and sync main back. Use when the user says "merge to main", "ship it", "merge and continue", or after completing a task in a worktree and wanting to continue with the next one.
tools
Synchronize AI agent skills, commands, configs, permissions, hooks, and instructions across Claude Code, Codex CLI, and other Agent Skills-compatible tools. Use when the user asks to pull skills from Claude into Codex, sync Codex work back to Claude, migrate agent commands, reconcile frontmatter, update permissions, or keep agent setup files in parity.
testing
Write or update UI-independent use cases for QA. Use when the user says "write use cases", "add use cases", "QA use cases", "update use cases", "compose use cases", or when starting implementation of a new feature (after plan approval). Also activates for "what should we test", "regression cases", or "use cases for QA".