mcpField
A
asc-check-readiness

asc-check-readiness

github.com/tddworksCloud & DevOps586 installsUpdated 5w ago
Repository

About asc-check-readiness

asc-check-readiness is a command-line skill for checking whether an App Store version meets key submission requirements. It reports blocking issues separately from warnings and provides a submit command when its pre-check passes.

Key features

  1. 01Checks version state, build, pricing, and review details
  2. 02Separates blocking failures from warnings
  3. 03Returns readiness report and submit affordance
  4. 04Identifies common fixes for failed checks

Use cases

  1. 01Check a version before App Store submission
  2. 02Gate a submission in a CI script

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/tddworks/asc-cli-skills --skill asc-check-readiness

After installing, type/asc-check-readinessin Claude Code to confirm it loaded.

Details

From the project README

asc versions check-readiness

Pre-flight check that aggregates all App Store submission requirements for a version.

Command

asc versions check-readiness --version-id <VERSION_ID> [--pretty]

Runs 6 API checks and returns a VersionReadiness report.

Reading the Output

Top-level decision field
"isReadyToSubmit": true  → safe to submit; affordances.submit is present
"isReadyToSubmit": false → one or more MUST FIX checks failed
Check severity
FieldSeverityBlocks isReadyToSubmit?
stateCheckMUST FIXYes — state must be PREPARE_FOR_SUBMISSION
buildCheckMUST FIXYes — build must be linked, valid, not expired
pricingCheckMUST FIXYes — app must have a price schedule configured
reviewContactCheckSHOULD FIXNo — warning only, submission still proceeds
localizations[].passSHOULD FIXNo — Apple may reject post-submit

Readiness is a pre-check, not Apple's verdict. Apple runs more checks when the version is added to a submission — every required device screenshot size (e.g. iPad 12.9"), the content rights declaration, published App Privacy answers — which check-readiness doesn't see. So isReadyToSubmit: true can still be refused at submit time. When that happens, asc versions submit / asc review-submissions items add print Apple's reasons one per line (Apple refused the review submission: … - <reason>); relay each as something to fix. See submit-with-products.md.

Build check fields
"buildCheck": {
  "linked": true,
  "valid": true,
  "notExpired": true,
  "buildVersion": "2.1.0 (102)",
  "pass": true
}

pass = linked && valid && notExpired

CAEOAS — Use Affordances

When isReadyToSubmit == true, the response includes affordances.submit:

"affordances": {
  "checkReadiness": "asc versions check-readiness --version-id v-123",
  "listLocalizations": "asc version-localizations list --version-id v-123",
  "submit": "asc versions submit --version-id v-123"
}

Always copy affordances.submit directly — never construct the submit command manually. When isReadyToSubmit == false, affordances.submit is absent.

Typical Workflow

# 1. Find the version in PREPARE_FOR_SUBMISSION
asc versions list --app-id <APP_ID> --output table

# 2. Check readiness (use checkReadiness affordance from step 1 output)
asc versions check-readiness --version-id <VERSION_ID> --pretty

# 3a. Ready → submit using affordances.submit value
asc versions submit --version-id <VERSION_ID>

# 3b. Not ready → diagnose and fix (see Fix Guide below)

Fix Guide

Failing checkHow to fix
stateCheck failsVersion is already live or in review — create a new version with asc versions create
buildCheck.linked == falseLink a build: asc versions set-build --version-id <id> --build-id <id>
buildCheck.valid == falseBuild is still processing — wait and re-check, or upload a new build
buildCheck.notExpired == falseBuild expired — upload a new build with asc builds upload
pricingCheck failsasc apps price-points list --app-id <id> then asc apps prices set --app-id <id> --base-territory USA --price-point-id <id> (0.0 = Free)
reviewContactCheck failsasc version-review-detail update --version-id <id> --contact-email [email protected] --contact-phone "+1-555-0100"

CI Gate Script

#!/bin/bash
set -e
RESULT=$(asc versions check-readiness --version-id "$VERSION_ID")
IS_READY=$(echo "$RESULT" | jq -r '.data[0].isReadyToSubmit')

if [ "$IS_READY" = "true" ]; then
  eval "$(echo "$RESULT" | jq -r '.data[0].affordances.submit')"
else
  echo "NOT ready. Failing checks:"
  echo "$RESULT" | jq '.data[0] | {stateCheck, buildCheck, pricingCheck}'
  exit 1
fi

Comments

Markdown supported