{"id":"dc93af32-69ea-49d0-8f37-0e63b9ed84ba","shortId":"5wEP2d","kind":"skill","title":"asc-submission-health","tagline":"Validate App Store submission readiness, submit prepared versions, and monitor review status with current asc commands. Use when shipping or troubleshooting review submissions.","description":"# asc submission health\n\nUse 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.\n\n## Preconditions\n\n- Auth configured and app/version/build IDs resolved.\n- Build processing completed or the command uses a high-level flow with `--wait`.\n- Metadata, app info, screenshots, review details, content rights, encryption, pricing, and availability are expected to be complete.\n\n## Pre-submission checklist\n\n### 1. Verify build status\n\n```bash\nasc builds info --build-id \"BUILD_ID\"\n```\n\nCheck:\n\n- `processingState` is `VALID`.\n- encryption fields are understood before submission.\n\n### 2. Run canonical readiness validation\n\n```bash\nasc validate --app \"APP_ID\" --version \"1.2.3\" --platform IOS --output table\n```\n\nUse strict mode when warnings should fail automation:\n\n```bash\nasc validate --app \"APP_ID\" --version \"1.2.3\" --platform IOS --strict --output table\n```\n\nIf you already have the exact version ID:\n\n```bash\nasc validate --app \"APP_ID\" --version-id \"VERSION_ID\" --platform IOS --output table\n```\n\n### 3. Encryption compliance\n\nIf the build uses non-exempt encryption:\n\n```bash\nasc encryption declarations list --app \"APP_ID\"\n\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\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 updating the local plist and rebuilding:\n\n```bash\nasc encryption declarations exempt-declare --plist \"./Info.plist\"\n```\n\n### 4. Content rights declaration\n\n```bash\nasc apps content-rights view --app \"APP_ID\"\nasc apps content-rights edit --app \"APP_ID\" --uses-third-party-content=false\n```\n\n### 5. Version metadata and localizations\n\n```bash\nasc versions view --version-id \"VERSION_ID\" --include-build --include-submission\nasc localizations list --version \"VERSION_ID\" --output table\n```\n\nFor canonical metadata repair:\n\n```bash\nasc metadata pull --app \"APP_ID\" --version \"1.2.3\" --platform IOS --dir \"./metadata\"\nasc metadata validate --dir \"./metadata\" --output table\nasc metadata push --app \"APP_ID\" --version \"1.2.3\" --platform IOS --dir \"./metadata\" --dry-run --output table\nasc metadata push --app \"APP_ID\" --version \"1.2.3\" --platform IOS --dir \"./metadata\"\n```\n\n### 6. App info localizations and privacy policy\n\n```bash\nasc apps info list --app \"APP_ID\" --output table\nasc localizations list --app \"APP_ID\" --type app-info --app-info \"APP_INFO_ID\" --output table\n```\n\nFor subscription or IAP apps, make sure privacy policy URL is populated:\n\n```bash\nasc app-setup info set --app \"APP_ID\" --primary-locale \"en-US\" --privacy-policy-url \"https://example.com/privacy\"\n```\n\n### 7. Screenshots\n\n```bash\nasc screenshots list --version-localization \"LOC_ID\" --output table\nasc screenshots sizes --output table\nasc screenshots validate --path \"./screenshots\" --device-type \"IPHONE_65\" --output table\n```\n\n### 8. Digital goods readiness\n\n```bash\nasc validate iap --app \"APP_ID\" --output table\nasc validate subscriptions --app \"APP_ID\" --output table\n```\n\nUse JSON when you need exact diagnostics:\n\n```bash\nasc validate subscriptions --app \"APP_ID\" --output json --pretty\n```\n\n### 9. App Privacy advisory\n\nThe public API cannot fully verify App Privacy publish state. If validation reports an advisory, use the experimental web-session flow or confirm manually.\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\nManual fallback:\n\n```text\nhttps://appstoreconnect.apple.com/apps/APP_ID/appPrivacy\n```\n\n## Submit\n\n### Submit a prepared version\n\nUse `asc review submit` for explicit App Store review submission:\n\n```bash\nasc review submit --app \"APP_ID\" --version \"1.2.3\" --build \"BUILD_ID\" --dry-run --output table\nasc review submit --app \"APP_ID\" --version \"1.2.3\" --build \"BUILD_ID\" --confirm\n```\n\nUse `--version-id \"VERSION_ID\"` when you have already resolved the version.\n\n### Upload and submit in one flow\n\n```bash\nasc publish appstore --app \"APP_ID\" --ipa \"./App.ipa\" --version \"1.2.3\" --submit --dry-run --output table\nasc publish appstore --app \"APP_ID\" --ipa \"./App.ipa\" --version \"1.2.3\" --submit --confirm\n```\n\nAdd `--wait` when the command should wait for build processing.\n\n### Multi-item review submissions\n\nUse the lower-level review-submission API when the submission needs multiple review items, such as Game Center component versions:\n\n```bash\nasc review submissions-create --app \"APP_ID\" --platform IOS\nasc review items-add --submission \"SUBMISSION_ID\" --item-type appStoreVersions --item-id \"VERSION_ID\"\nasc review items-add --submission \"SUBMISSION_ID\" --item-type gameCenterChallengeVersions --item-id \"GC_CHALLENGE_VERSION_ID\"\nasc review submissions-submit --id \"SUBMISSION_ID\" --confirm\n```\n\n## Monitor\n\n```bash\nasc status --app \"APP_ID\"\nasc submit status --id \"SUBMISSION_ID\"\nasc submit status --version-id \"VERSION_ID\"\nasc review submissions-list --app \"APP_ID\" --paginate\n```\n\n## Cancel and retry\n\n```bash\nasc submit cancel --id \"SUBMISSION_ID\" --confirm\nasc submit cancel --version-id \"VERSION_ID\" --app \"APP_ID\" --confirm\nasc review submissions-cancel --id \"SUBMISSION_ID\" --confirm\n```\n\nFix validation issues, then submit again with `asc review submit` or `asc publish appstore --submit --confirm`.\n\n## Common submission errors\n\n### Version is not in valid state\n\nCheck:\n\n1. Build is attached and `VALID`.\n2. Encryption declaration is resolved or exempt.\n3. Content rights declaration is set.\n4. Required localizations and screenshots are present.\n5. Review details are present.\n6. Pricing and availability exist.\n7. App Privacy has been reviewed and published in App Store Connect.\n\n### Export compliance must be approved\n\nEither upload export compliance documentation or rebuild with exempt encryption metadata if that accurately describes the app.\n\n### Multiple app infos found\n\nUse the exact app-info ID:\n\n```bash\nasc apps info list --app \"APP_ID\" --output table\n```\n\n## Notes\n\n- Do not use legacy submit-preflight or submit-create shortcuts; they are removed.\n- Use `asc validate` for readiness.\n- Use `asc review submit` for prepared-version submission.\n- Use `asc publish appstore --submit --confirm` for high-level upload plus submission.\n- App Privacy publish state is not fully verifiable through the public API.\n- Use `--output table` for human status and JSON for automation.\n- macOS submissions follow the same review flow 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 · 801 github stars · SKILL.md body (6,839 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-18T18:53:27.369Z","embedding":null,"createdAt":"2026-04-18T21:56:52.639Z","updatedAt":"2026-05-18T18:53:27.369Z","lastSeenAt":"2026-05-18T18:53:27.369Z","tsv":"'/app.ipa':665,681 '/apps/app_id/appprivacy':593 '/info.plist':274 '/metadata':348,353,367,384 '/privacy':454 '/privacy.json':561,570,579 '/screenshots':477 '1':105,867 '1.2.3':140,160,344,363,380,617,633,667,683 '2':128,873 '3':189,880 '4':275,886 '5':304,893 '6':385,898 '65':482 '7':455,903 '8':485 '9':523 'accur':933 'add':686,738,755 'advisori':526,541 'alreadi':168,647 'api':529,709,1012 'app':6,85,136,137,156,157,177,178,205,206,212,213,216,252,281,286,287,290,295,296,340,341,359,360,376,377,386,394,397,398,405,406,410,413,415,424,435,439,440,493,494,501,502,517,518,524,533,557,558,566,567,575,576,584,585,605,613,614,629,630,661,662,677,678,729,730,783,784,805,806,828,829,904,912,936,938,945,950,953,954,1001 'app-descript':215 'app-info':409,412,944 'app-setup':434 'app/version/build':67 'appli':574 'approv':919 'appstor':660,676,854,991 'appstoreconnect.apple.com':592 'appstoreconnect.apple.com/apps/app_id/appprivacy':591 'appstorevers':745 'asc':2,19,28,48,110,134,154,175,201,208,238,267,280,289,310,324,337,349,356,373,393,402,433,458,468,473,490,498,514,553,562,571,580,600,610,626,658,674,724,734,751,770,781,786,792,800,813,820,832,848,852,949,975,980,989 'asc-submission-health':1 'assign':242 'assign-build':241 'attach':870 'auth':64 'autom':152,1022 'avail':95,233,901 'available-on-french-stor':232 'bash':109,133,153,174,200,266,279,309,336,392,432,457,489,513,552,609,657,723,780,812,948 'build':70,107,111,114,116,194,243,247,248,320,618,619,634,635,694,868 'build-id':113 'cancel':809,815,822,836 'cannot':530 'canon':130,333 'center':720 'challeng':767 'check':118,866 'checklist':104 'command':20,46,75,690 'common':857 'complet':72,100 'complianc':191,916,923 'compon':721 'configur':65 'confirm':550,587,637,685,778,819,831,840,856,993 'connect':914 'contain':222,227 'contains-proprietary-cryptographi':221 'contains-third-party-cryptographi':226 'content':90,276,283,292,302,881 'content-right':282,291 'creat':57,211,728,969 'cryptographi':224,230 'current':18,44 'declar':203,210,240,245,269,272,278,875,883 'describ':934 'descript':217 'detail':89,895 'devic':479 'device-typ':478 'diagnost':512 'digit':486 'dir':347,352,366,383 'document':924 'dri':369,622,670 'dry-run':368,621,669 'edit':294 'either':920 'en':446 'en-us':445 'encrypt':92,122,190,199,202,209,239,258,268,874,929 'error':859 'exact':171,511,943 'example.com':453 'example.com/privacy':452 'exempt':198,256,271,879,928 'exempt-declar':270 'exist':902 'expect':97 'experiment':544 'explicit':604 'export':915,922 'fail':151 'failur':38 'fallback':589 'fals':225,303 'field':123 'file':569,578 'fix':841 'flow':81,548,656,1029 'follow':1025 'found':940 'french':235 'fulli':531,1007 'game':719 'gamecenterchallengevers':762 'gc':766 'good':487 'health':4,30 'high':79,996 'high-level':78,995 'https/tls':220 'human':1017 'iap':423,492 'id':68,115,117,138,158,173,179,182,184,207,214,244,246,249,288,297,315,317,329,342,361,378,399,407,417,441,465,495,503,519,559,568,577,586,615,620,631,636,641,643,663,679,731,741,748,750,758,765,769,775,777,785,789,791,797,799,807,816,818,825,827,830,837,839,947,955 'includ':319,322 'include-build':318 'include-submiss':321 'info':86,112,387,395,411,414,416,437,939,946,951 'io':142,162,186,346,365,382,733 'ipa':664,680 'iphon':481 'issu':843 'item':698,716,737,743,747,754,760,764 'item-id':746,763 'item-typ':742,759 'items-add':736,753 'json':507,521,1020 'legaci':50,962 'level':80,705,997 'list':204,326,396,404,460,804,952 'loc':464 'local':262,308,325,388,403,444,463,888 'lower':704 'lower-level':703 'mac':1033 'maco':1023 'make':425 'manual':551,588 'metadata':84,306,334,338,350,357,374,930 'mode':147 'monitor':14,40,779 'multi':697 'multi-item':696 'multipl':714,937 'must':59,917 'need':510,713 'non':197 'non-exempt':196 'note':958 'one':655 'os':1034 'output':143,164,187,330,354,371,400,418,466,471,483,496,504,520,624,672,956,1014 'pagin':808 'parti':229,301 'path':476 'plan':565 'platform':141,161,185,345,364,381,732,1032 'plist':263,273 'plus':999 'polici':391,428,450 'popul':431 'pre':102 'pre-submiss':101 'precondit':63 'prefer':259 'preflight':53,965 'prepar':11,597,985 'prepared-vers':984 'present':892,897 'pretti':522 'price':93,899 'primari':443 'primary-local':442 'privaci':390,427,449,525,534,555,564,573,582,905,1002 'privacy-policy-url':448 'process':71,695 'processingst':119 'proprietari':223 'public':528,1011 'publish':535,583,659,675,853,910,990,1003 'pull':339,556 'push':358,375 'readi':9,45,131,488,978 'rebuild':265,926 'reduc':35 'remov':973 'repair':335 'report':539 'requir':887 'resolv':69,648,877 'retri':811 'review':15,26,36,41,88,601,607,611,627,699,707,715,725,735,752,771,801,833,849,894,908,981,1028 'review-submiss':706 'right':91,277,284,293,882 'run':129,370,623,671 'screenshot':87,456,459,469,474,890 'session':547 'set':438,885 'setup':436 'ship':23 'shortcut':58,970 'size':470 'skill':33 'skill-asc-submission-health' 'source-rorkai' 'standard':219 'state':42,536,865,1004 'status':16,108,782,788,794,1018 'store':7,236,606,913 'strict':146,163 'submiss':3,8,27,29,37,103,127,323,608,700,708,712,727,739,740,756,757,773,776,790,803,817,835,838,858,987,1000,1024 'submissions-cancel':834 'submissions-cr':726 'submissions-list':802 'submissions-submit':772 'submit':10,52,56,594,595,602,612,628,653,668,684,774,787,793,814,821,845,850,855,964,968,982,992 'submit-cr':55,967 'submit-preflight':51,963 'subscript':421,500,516 'sure':426 'tabl':144,165,188,331,355,372,401,419,467,472,484,497,505,625,673,957,1015 'text':590 'third':228,300 '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':257 'troubleshoot':25 'true':231,237 'truli':253 'type':408,480,744,761 'understood':125 'updat':260 'upload':651,921,998 'url':429,451 'us':447 'use':21,31,62,76,145,195,218,254,299,506,542,599,638,701,941,961,974,979,988,1013,1031 'uses-third-party-cont':298 'valid':5,49,121,132,135,155,176,351,475,491,499,515,538,842,864,872,976 'verifi':106,532,1008 'version':12,139,159,172,181,183,305,311,314,316,327,328,343,362,379,462,598,616,632,640,642,650,666,682,722,749,768,796,798,824,826,860,986 'version-id':180,313,639,795,823 'version-loc':461 'view':285,312 'wait':83,687,692 'warn':149 'web':546,554,563,572,581 'web-sess':545","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-18T18:53:27.369Z"},{"listingId":"dc93af32-69ea-49d0-8f37-0e63b9ed84ba","source":"skills_sh","sourceId":"rorkai/app-store-connect-cli-skills/asc-submission-health","sourceUrl":"https://skills.sh/rorkai/app-store-connect-cli-skills/asc-submission-health","isPrimary":true,"firstSeenAt":"2026-05-07T20:42:09.232Z","lastSeenAt":"2026-05-07T22:41:25.930Z"}],"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":801,"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-05-03T17:28:47Z","description":"Skills to automate app store deployed and everything related to it using the asc cli","skill_md_sha":"737dae34cc6354c89d16f66804765bc463e9ddcd","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":"Validate App Store submission readiness, submit prepared versions, and monitor review status with current asc commands. 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-18T18:53:27.369Z"}}