{"id":"dc93af32-69ea-49d0-8f37-0e63b9ed84ba","shortId":"5wEP2d","kind":"skill","title":"asc-submission-health","tagline":"Preflight App Store submissions, submit builds, and monitor review status with asc. Use when shipping or troubleshooting review submissions.","description":"# asc submission health\n\nUse this skill to reduce review submission failures and monitor status.\n\n## Preconditions\n- Auth configured and app/version/build IDs resolved.\n- Build is processed (not in processing state).\n- All required metadata is complete.\n\n## Pre-submission Checklist\n\n### 1. Verify Build Status\n```bash\nasc builds info --build-id \"BUILD_ID\"\n```\nCheck:\n- `processingState` is `VALID`\n- `usesNonExemptEncryption` - if `true`, requires encryption declaration\n\n### 2. Encryption Compliance\nIf `usesNonExemptEncryption: true`:\n```bash\n# If the app should be exempt, patch the local plist helper, rebuild, and re-upload\nasc encryption declarations exempt-declare --plist \"./Info.plist\"\n\n# List existing declarations\nasc encryption declarations list --app \"APP_ID\"\n\n# Create declaration if needed\nasc encryption declarations create \\\n  --app \"APP_ID\" \\\n  --app-description \"Uses standard HTTPS/TLS\" \\\n  --contains-proprietary-cryptography=false \\\n  --contains-third-party-cryptography=true \\\n  --available-on-french-store=true\n\n# Assign to build\nasc encryption declarations assign-builds \\\n  --id \"DECLARATION_ID\" \\\n  --build \"BUILD_ID\"\n```\n\nIf the app truly uses only exempt transport encryption, prefer `asc encryption declarations exempt-declare --plist \"./Info.plist\"` and rebuild instead of creating a declaration that does not match the binary.\n\n### 3. Content Rights Declaration\nRequired for all App Store submissions:\n```bash\n# Check current status\nasc apps content-rights view --app \"APP_ID\"\n\n# Set it for most apps\nasc apps content-rights edit --app \"APP_ID\" --uses-third-party-content=false\n```\nValid values:\n- `DOES_NOT_USE_THIRD_PARTY_CONTENT`\n- `USES_THIRD_PARTY_CONTENT`\n\n### 4. Version Metadata\n```bash\n# Check version details\nasc versions view --version-id \"VERSION_ID\" --include-build\n\n# Verify copyright is set\nasc versions update --version-id \"VERSION_ID\" --copyright \"2026 Your Company\"\n```\n\n### 5. Localizations Complete\n```bash\n# List version localizations\nasc localizations list --version \"VERSION_ID\"\n\n# Check required fields: description, keywords, whatsNew, supportUrl\n```\n\n### 6. Screenshots Present\nEach locale needs screenshots for the target platform.\n\n### 7. App Info Localizations (Privacy Policy)\n```bash\n# List app info IDs (if multiple exist)\nasc apps info list --app \"APP_ID\"\n\n# Check privacy policy URL\nasc localizations list --app \"APP_ID\" --type app-info --app-info \"APP_INFO_ID\"\n```\n\n### 8. App Privacy readiness advisory\n`asc` can warn about App Privacy readiness, but the public App Store Connect API\ncannot verify whether App Privacy is fully published. Before final submission:\n\n```bash\nasc submit preflight --app \"APP_ID\" --version \"1.2.3\" --platform IOS\nasc validate --app \"APP_ID\" --version \"1.2.3\" --platform IOS\n```\n\nPrefer the version string form for top-level readiness checks in this skill so it stays aligned with `asc submit preflight`. Lower-level commands later in this guide still use `VERSION_ID` where the API requires it.\n\nIf either command reports an App Privacy advisory, the public API cannot verify\npublish state. Use the web-session privacy workflow if you rely on those endpoints:\n\n```bash\nasc web privacy pull --app \"APP_ID\" --out \"./privacy.json\"\nasc web privacy plan --app \"APP_ID\" --file \"./privacy.json\"\nasc web privacy apply --app \"APP_ID\" --file \"./privacy.json\"\nasc web privacy publish --app \"APP_ID\" --confirm\n```\n\nIf you do not want to use the experimental `asc web privacy ...` commands,\nconfirm App Privacy manually in App Store Connect:\n\n```text\nhttps://appstoreconnect.apple.com/apps/APP_ID/appPrivacy\n```\n\n### 9. Digital goods readiness (IAPs / subscriptions)\nIf the app sells subscriptions or in-app purchases, validate those separately before submit:\n\n```bash\nasc validate iap --app \"APP_ID\" --output table\nasc validate subscriptions --app \"APP_ID\" --output table\n```\n\nIn current asc, `asc validate subscriptions` expands `MISSING_METADATA` into a per-subscription diagnostics matrix. Use it to identify missing review screenshots, promotional images, pricing or availability coverage gaps, offer readiness, and app/build evidence before retrying submit or first-review attach.\n\nUse `--output json --pretty` when you want exact territory gaps in machine-readable form.\n\n## Submit\n\n### Using Review Submissions API (Recommended)\n```bash\n# Create submission\nasc review submissions-create --app \"APP_ID\" --platform IOS\n\n# Add version to submission\nasc review items-add \\\n  --submission \"SUBMISSION_ID\" \\\n  --item-type appStoreVersions \\\n  --item-id \"VERSION_ID\"\n\n# Submit for review\nasc review submissions-submit --id \"SUBMISSION_ID\" --confirm\n```\n\n### Using Submit Command\n```bash\nasc submit preflight --app \"APP_ID\" --version \"1.2.3\" --platform IOS\nasc submit create --app \"APP_ID\" --version \"1.2.3\" --build \"BUILD_ID\" --confirm\n```\nUse `--platform` when multiple platforms exist.\n\n## Monitor\n```bash\n# Check submission status\nasc submit status --id \"SUBMISSION_ID\"\nasc submit status --version-id \"VERSION_ID\"\n\n# List all submissions\nasc review submissions-list --app \"APP_ID\" --paginate\n```\n\n## Cancel / Retry\n```bash\n# Cancel submission\nasc submit cancel --id \"SUBMISSION_ID\" --confirm\n\n# Or via review API\nasc review submissions-cancel --id \"SUBMISSION_ID\" --confirm\n```\nFix issues, then re-submit.\n\n## Common Submission Errors\n\n### \"Version is not in valid state\"\nCheck:\n1. Build is attached and VALID\n2. Encryption declaration approved (or exempt)\n3. Content rights declaration set\n4. All localizations complete\n5. Screenshots present for all locales\n6. App Privacy has been reviewed and published in App Store Connect\n\n### \"Export compliance must be approved\"\nThe build has `usesNonExemptEncryption: true`. Either:\n- Upload export compliance documentation\n- Or rebuild with `ITSAppUsesNonExemptEncryption = NO` in Info.plist\n\n### \"Multiple app infos found\"\nUse `--app-info` flag with the correct app info ID:\n```bash\nasc apps info list --app \"APP_ID\"\n```\n\n## Notes\n- `asc submit create` uses the new reviewSubmissions API automatically.\n- `asc submit preflight` can return non-blocking advisories; review them before submitting.\n- App Privacy publish state is not verifiable via the public API.\n- Prefer `asc apps content-rights view/edit` over ad-hoc app JSON inspection.\n- `asc validate subscriptions` now provides much richer per-subscription diagnostics for `MISSING_METADATA` cases.\n- If you use ASC web-session flows, `asc web privacy pull|plan|apply|publish` is the CLI path for App Privacy.\n- If you avoid the experimental web-session commands, confirm App Privacy manually in App Store Connect.\n- Use `--output table` when you want human-readable status.\n- macOS submissions follow the same process but use `--platform MAC_OS`.","tags":["asc","submission","health","app","store","connect","cli","skills","rorkai","agent-skills","ai-skills","app-store-connect"],"capabilities":["skill","source-rorkai","skill-asc-submission-health","topic-agent-skills","topic-ai-skills","topic-app-store-connect","topic-apple","topic-asc","topic-automation","topic-cicd","topic-cli","topic-devops","topic-ios","topic-macos","topic-testflight"],"categories":["app-store-connect-cli-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/rorkai/app-store-connect-cli-skills/asc-submission-health","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add rorkai/app-store-connect-cli-skills","source_repo":"https://github.com/rorkai/app-store-connect-cli-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 776 github stars · SKILL.md body (6,734 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-02T18:53:03.014Z","embedding":null,"createdAt":"2026-04-18T21:56:52.639Z","updatedAt":"2026-05-02T18:53:03.014Z","lastSeenAt":"2026-05-02T18:53:03.014Z","tsv":"'/apps/app_id/appprivacy':543 '/info.plist':114,191 '/privacy.json':492,501,510 '1':61,796 '1.2.3':404,413,703,713 '2':84,802 '2026':291 '3':205,808 '4':260,813 '5':294,817 '6':314,823 '7':325 '8':366 '9':544 'ad':923 'ad-hoc':922 'add':659,667 'advisori':370,462,898 'align':433 'api':384,452,465,644,770,888,913 'app':6,93,122,123,133,134,137,176,212,220,225,226,232,234,239,240,326,333,340,343,344,353,354,358,361,363,367,375,381,388,400,401,409,410,460,488,489,497,498,506,507,515,516,533,537,552,558,569,570,577,578,654,655,699,700,709,710,751,752,824,832,858,863,869,874,877,878,903,916,925,963,975,979 'app-descript':136 'app-info':357,360,862 'app/build':615 'app/version/build':42 'appli':505,956 'approv':805,839 'appstoreconnect.apple.com':542 'appstoreconnect.apple.com/apps/app_id/appprivacy':541 'appstorevers':674 'asc':2,16,24,66,107,118,129,162,184,219,233,267,282,301,339,350,371,397,407,435,484,493,502,511,528,566,574,584,585,649,663,683,696,706,729,735,746,760,771,873,881,890,915,928,946,951 'asc-submission-health':1 'assign':159,166 'assign-build':165 'attach':624,799 'auth':39 'automat':889 'avail':154,609 'available-on-french-stor':153 'avoid':967 'bash':65,90,215,263,297,331,396,483,565,646,695,725,757,872 'binari':204 'block':897 'build':10,45,63,67,70,72,161,167,171,172,277,714,715,797,841 'build-id':69 'cancel':755,758,762,775 'cannot':385,466 'case':942 'check':74,216,264,307,346,426,726,795 'checklist':60 'cli':960 'command':441,457,531,694,973 'common':786 'compani':293 'complet':56,296,816 'complianc':86,836,848 'configur':40 'confirm':518,532,691,717,766,779,974 'connect':383,539,834,981 'contain':143,148 'contains-proprietary-cryptographi':142 'contains-third-party-cryptographi':147 'content':206,222,236,246,255,259,809,918 'content-right':221,235,917 'copyright':279,290 'correct':868 'coverag':610 'creat':125,132,196,647,653,708,883 'cryptographi':145,151 'current':217,583 'declar':83,109,112,117,120,126,131,164,169,186,189,198,208,804,811 'descript':138,310 'detail':266 'diagnost':596,938 'digit':545 'document':849 'edit':238 'either':456,845 'encrypt':82,85,108,119,130,163,182,185,803 'endpoint':482 'error':788 'evid':616 'exact':632 'exempt':96,111,180,188,807 'exempt-declar':110,187 'exist':116,338,723 'expand':588 'experiment':527,969 'export':835,847 'failur':34 'fals':146,247 'field':309 'file':500,509 'final':394 'first':622 'first-review':621 'fix':780 'flag':865 'flow':950 'follow':994 'form':420,639 'found':860 'french':156 'fulli':391 'gap':611,634 'good':546 'guid':445 'health':4,26 'helper':101 'hoc':924 'https/tls':141 'human':989 'human-read':988 'iap':548,568 'id':43,71,73,124,135,168,170,173,227,241,272,274,287,289,306,335,345,355,365,402,411,449,490,499,508,517,571,579,656,670,677,679,688,690,701,711,716,732,734,740,742,753,763,765,776,778,871,879 'identifi':601 'imag':606 'in-app':556 'includ':276 'include-build':275 'info':68,327,334,341,359,362,364,859,864,870,875 'info.plist':856 'inspect':927 'instead':194 'io':406,415,658,705 'issu':781 'item':666,672,676 'item-id':675 'item-typ':671 'items-add':665 'itsappusesnonexemptencrypt':853 'json':627,926 'keyword':311 'later':442 'level':424,440 'list':115,121,298,303,332,342,352,743,750,876 'local':99,295,300,302,318,328,351,815,822 'lower':439 'lower-level':438 'mac':1001 'machin':637 'machine-read':636 'maco':992 'manual':535,977 'match':202 'matrix':597 'metadata':54,262,590,941 'miss':589,602,940 'monitor':12,36,724 'much':933 'multipl':337,721,857 'must':837 'need':128,319 'new':886 'non':896 'non-block':895 'note':880 'offer':612 'os':1002 'output':572,580,626,983 'pagin':754 'parti':150,245,254,258 'patch':97 'path':961 'per':594,936 'per-subscript':593,935 'plan':496,955 'platform':324,405,414,657,704,719,722,1000 'plist':100,113,190 'polici':330,348 'pre':58 'pre-submiss':57 'precondit':38 'prefer':183,416,914 'preflight':5,399,437,698,892 'present':316,819 'pretti':628 'price':607 'privaci':329,347,368,376,389,461,475,486,495,504,513,530,534,825,904,953,964,976 'process':47,50,997 'processingst':75 'promot':605 'proprietari':144 'provid':932 'public':380,464,912 'publish':392,468,514,830,905,957 'pull':487,954 'purchas':559 're':105,784 're-submit':783 're-upload':104 'readabl':638,990 'readi':369,377,425,547,613 'rebuild':102,193,851 'recommend':645 'reduc':31 'reli':479 'report':458 'requir':53,81,209,308,453 'resolv':44 'retri':618,756 'return':894 'review':13,22,32,603,623,642,650,664,682,684,747,769,772,828,899 'reviewsubmiss':887 'richer':934 'right':207,223,237,810,919 'screenshot':315,320,604,818 'sell':553 'separ':562 'session':474,949,972 'set':228,281,812 'ship':19 'skill':29,429 'skill-asc-submission-health' 'source-rorkai' 'standard':140 'state':51,469,794,906 'status':14,37,64,218,728,731,737,991 'stay':432 'still':446 'store':7,157,213,382,538,833,980 'string':419 'submiss':3,8,23,25,33,59,214,395,643,648,652,662,668,669,686,689,727,733,745,749,759,764,774,777,787,993 'submissions-cancel':773 'submissions-cr':651 'submissions-list':748 'submissions-submit':685 'submit':9,398,436,564,619,640,680,687,693,697,707,730,736,761,785,882,891,902 'subscript':549,554,576,587,595,930,937 'supporturl':313 'tabl':573,581,984 'target':323 'territori':633 'text':540 'third':149,244,253,257 'top':423 'top-level':422 'topic-agent-skills' 'topic-ai-skills' 'topic-app-store-connect' 'topic-apple' 'topic-asc' 'topic-automation' 'topic-cicd' 'topic-cli' 'topic-devops' 'topic-ios' 'topic-macos' 'topic-testflight' 'transport':181 'troubleshoot':21 'true':80,89,152,158,844 'truli':177 'type':356,673 'updat':284 'upload':106,846 'url':349 'use':17,27,139,178,243,252,256,447,470,525,598,625,641,692,718,861,884,945,982,999 'uses-third-party-cont':242 'usesnonexemptencrypt':78,88,843 'valid':77,248,408,560,567,575,586,793,801,929 'valu':249 'verifi':62,278,386,467,909 'version':261,265,268,271,273,283,286,288,299,304,305,403,412,418,448,660,678,702,712,739,741,789 'version-id':270,285,738 'via':768,910 'view':224,269 'view/edit':920 'want':523,631,987 'warn':373 'web':473,485,494,503,512,529,948,952,971 'web-sess':472,947,970 'whatsnew':312 'whether':387 'workflow':476","prices":[{"id":"ea7c1db2-763d-46a0-8964-ac1d8c5f3874","listingId":"dc93af32-69ea-49d0-8f37-0e63b9ed84ba","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"rorkai","category":"app-store-connect-cli-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:56:52.639Z"}],"sources":[{"listingId":"dc93af32-69ea-49d0-8f37-0e63b9ed84ba","source":"github","sourceId":"rorkai/app-store-connect-cli-skills/asc-submission-health","sourceUrl":"https://github.com/rorkai/app-store-connect-cli-skills/tree/main/skills/asc-submission-health","isPrimary":false,"firstSeenAt":"2026-04-18T21:56:52.639Z","lastSeenAt":"2026-05-02T18:53:03.014Z"}],"details":{"listingId":"dc93af32-69ea-49d0-8f37-0e63b9ed84ba","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"rorkai","slug":"asc-submission-health","github":{"repo":"rorkai/app-store-connect-cli-skills","stars":776,"topics":["agent-skills","ai-skills","app-store-connect","apple","asc","automation","cicd","cli","devops","ios","macos","testflight","xcode"],"license":"mit","html_url":"https://github.com/rorkai/app-store-connect-cli-skills","pushed_at":"2026-04-24T08:59:37Z","description":"Skills to automate app store deployed and everything related to it using the asc cli","skill_md_sha":"cb230d691b4a075fbd4981e75485ee1225e8488d","skill_md_path":"skills/asc-submission-health/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/rorkai/app-store-connect-cli-skills/tree/main/skills/asc-submission-health"},"layout":"multi","source":"github","category":"app-store-connect-cli-skills","frontmatter":{"name":"asc-submission-health","description":"Preflight App Store submissions, submit builds, and monitor review status with asc. Use when shipping or troubleshooting review submissions."},"skills_sh_url":"https://skills.sh/rorkai/app-store-connect-cli-skills/asc-submission-health"},"updatedAt":"2026-05-02T18:53:03.014Z"}}