{"id":"316ef832-d837-4632-a1f3-554cfc584a69","shortId":"6pb99g","kind":"skill","title":"asc-app-create-ui","tagline":"Create a new App Store Connect app record via browser automation. Use when there is no public API for app creation and you need an agent to drive the New App form.","description":"# asc app create (UI automation)\n\nUse this skill to create a new App Store Connect app by driving the web UI.\nThis is opt-in, local-only automation that requires the user to be signed in.\n\n## Preconditions\n- A browser automation tool is available (Playwright, Cursor browser MCP, or equivalent).\n- User is signed in to App Store Connect (or can complete login + 2FA).\n- The **bundle ID must already be registered** in the Apple Developer portal.\n- Required inputs are known:\n  - app name (max 30 characters)\n  - bundle ID (must exist and be unused by another app)\n  - SKU\n  - platform (iOS, macOS, tvOS, visionOS)\n  - primary language\n  - user access (Full Access or Limited Access)\n\n## Safety Guardrails\n- Never export or store cookies.\n- Use a visible browser session only.\n- Pause for a final confirmation before clicking \"Create\" (for standalone scripts).\n- Do not retry the Create action automatically on failure.\n\n## Workflow\n\n### 1. Preflight: register bundle ID and verify no existing app\n```bash\n# Register the bundle ID via public API (if not already registered)\nasc bundle-ids create --identifier \"com.example.app\" --name \"My App\" --platform IOS\n\n# Confirm no app record exists yet\nasc apps list --bundle-id \"com.example.app\" --output json\n```\n\n### 2. Open App Store Connect\nNavigate to `https://appstoreconnect.apple.com/apps` and ensure the user is signed in.\n\n### 3. Open the New App form\nThe \"New App\" button (blue \"+\" icon) opens a **dropdown menu**, not a dialog directly.\n- Click the \"New App\" button to open the dropdown.\n- Click the \"New App\" **menu item** inside the dropdown.\n- The creation dialog/modal appears.\n\n### 4. Fill required fields (in order)\n\n#### Platform (checkboxes)\nThe platforms are **checkboxes** (not radio buttons). Click the checkbox for the desired platform(s):\n- iOS, macOS, tvOS, visionOS\n- Multiple can be selected.\n\n#### Name (text input)\n- Label: `Name`\n- Max 30 characters.\n\n#### Primary Language (select/combobox)\n- Label: `Primary Language`\n- Use `select_option` or equivalent with the language label (e.g., `\"English (U.S.)\"`).\n\n#### Bundle ID (select/combobox)\n- Label: `Bundle ID`\n- This is a `<select>` dropdown. The options load asynchronously after platform selection.\n- Wait for the dropdown to finish loading (it shows \"Loading...\" initially).\n- Select by matching the label text which includes both the name and identifier:\n  `\"My App - com.example.app\"`\n\n#### SKU (text input)\n- Label: `SKU`\n\n#### User Access (radio buttons) -- REQUIRED\n- **This field is required.** The Create button stays disabled until one option is selected.\n- Options: `Limited Access` or `Full Access`.\n- These are custom radio buttons with `<span>` overlays.\n- **Known issue:** Accessibility-based clicks may be intercepted by the overlay `<span>`.\n- **Workaround:** Use `scrollIntoView` on the radio element first, then click the radio ref directly. This bypasses the overlay interception.\n\n### 5. Click Create\n- The \"Create\" button is disabled until all required fields are filled **and** User Access is selected.\n- After clicking, the button text changes to \"Creating\" while processing.\n- Wait for navigation to the new app's page (URL pattern: `/apps/<APP_ID>/...`).\n\n### 6. Verify creation via API\n```bash\nasc apps view --id \"APP_ID\" --output json --pretty\n# or\nasc apps list --bundle-id \"com.example.app\" --output json\n```\n\n### 7. Hand off to post-create setup\n```bash\nasc app-setup info set --app \"APP_ID\" --primary-locale \"en-US\"\nasc app-setup categories set --app \"APP_ID\" --primary GAMES\nasc web apps availability create \\\n  --app \"APP_ID\" \\\n  --territory \"USA,GBR\" \\\n  --available-in-new-territories true\n```\n\nUse the experimental web flow above only for the first availability bootstrap. If app availability already exists, switch to `asc pricing availability edit --app \"APP_ID\" ...` for later territory changes.\n\n## Known UI Automation Issues\n\n### \"New App\" is a dropdown menu, not a direct action\nThe first click opens a menu with \"New App\" and \"New App Bundle\". You must click the menu item, not just the button.\n\n### User Access radio buttons have span overlays\nApple's custom radio buttons wrap the `<input type=\"radio\">` in styled `<span>` elements. Direct ref-based clicks may fail with \"click target intercepted\". The fix is:\n1. Scroll the radio element into view (`scrollIntoView`).\n2. Click the radio ref directly (not via offset or label click).\n\n### Bundle ID dropdown loads asynchronously\nAfter selecting a platform, the Bundle ID dropdown shows \"Loading...\" and is disabled. Wait for it to become enabled and populated before selecting.\n\n### browser_fill may not trigger form validation\nApple's Ember.js forms use custom change handlers. `browser_fill` (atomic set) may not trigger validation. If the Create button stays disabled after filling all fields:\n- Retype the value slowly (character-by-character) in at least one text field.\n- Or click the field, clear it, and type slowly.\n\n## Failure Handling\n- If any field or button cannot be located, stop and request user help.\n- Capture a screenshot and report the last known step.\n- Do not retry the Create click automatically.\n- On failure, the user should check the browser for validation errors (red outlines, inline messages).\n\n## Notes\n- This skill is a workaround for a missing public API. Apple's docs explicitly state: \"Don't use this API to create new apps; instead, create new apps on the App Store Connect website.\"\n- UI selectors can change without notice. Prefer role/label/text selectors over CSS.\n- The only manual step should be signing in. Everything else is agent-drivable.","tags":["asc","app","create","store","connect","cli","skills","rorkai","agent-skills","ai-skills","app-store-connect","apple"],"capabilities":["skill","source-rorkai","skill-asc-app-create-ui","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-app-create-ui","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 (5,605 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:01.368Z","embedding":null,"createdAt":"2026-04-18T21:56:40.439Z","updatedAt":"2026-05-02T18:53:01.368Z","lastSeenAt":"2026-05-02T18:53:01.368Z","tsv":"'/apps':240,499 '1':182,675 '2':231,683 '2fa':101 '3':248 '30':121,327 '4':290 '5':459 '6':500 '7':525 'access':142,144,147,397,417,420,431,475,645 'accessibility-bas':430 'action':177,620 'agent':31,883 'agent-driv':882 'alreadi':106,202,592 'anoth':131 'api':23,199,504,835,845 'app':3,9,12,25,36,39,50,53,94,118,132,191,213,218,223,233,252,256,271,280,389,494,507,510,517,536,540,541,551,555,556,562,565,566,590,600,601,612,629,632,849,853,856 'app-setup':535,550 'appear':289 'appl':111,651,730,836 'appstoreconnect.apple.com':239 'appstoreconnect.apple.com/apps':238 'asc':2,38,204,222,506,516,534,549,560,596 'asc-app-create-ui':1 'asynchron':360,699 'atom':740 'autom':16,42,67,79,609 'automat':178,809 'avail':82,563,572,587,591,598 'available-in-new-territori':571 'base':432,664 'bash':192,505,533 'becom':717 'blue':258 'bootstrap':588 'browser':15,78,85,158,723,738,817 'bundl':103,123,185,195,206,226,347,351,520,633,695,705 'bundle-id':205,225,519 'button':257,272,304,399,407,425,464,481,643,647,655,749,785 'bypass':455 'cannot':786 'captur':794 'categori':553 'chang':483,606,736,863 'charact':122,328,761,763 'character-by-charact':760 'check':815 'checkbox':297,301,307 'clear':774 'click':167,268,277,305,433,449,460,479,623,636,665,669,684,694,771,808 'com.example.app':210,228,390,522 'complet':99 'confirm':165,216 'connect':11,52,96,235,858 'cooki':154 'creat':4,6,40,47,168,176,208,406,461,463,485,531,564,748,807,847,851 'creation':26,287,502 'css':870 'cursor':84 'custom':423,653,735 'desir':310 'develop':112 'dialog':266 'dialog/modal':288 'direct':267,453,619,661,688 'disabl':409,466,712,751 'doc':838 'drivabl':884 'drive':33,55 'dropdown':262,276,285,356,367,615,697,707 'e.g':344 'edit':599 'element':446,660,679 'els':880 'ember.js':732 'en':547 'en-us':546 'enabl':718 'english':345 'ensur':242 'equival':88,339 'error':820 'everyth':879 'exist':126,190,220,593 'experiment':579 'explicit':839 'export':151 'fail':667 'failur':180,779,811 'field':293,402,470,755,769,773,783 'fill':291,472,724,739,753 'final':164 'finish':369 'first':447,586,622 'fix':673 'flow':581 'form':37,253,728,733 'full':143,419 'game':559 'gbr':570 'guardrail':149 'hand':526 'handl':780 'handler':737 'help':793 'icon':259 'id':104,124,186,196,207,227,348,352,509,511,521,542,557,567,602,696,706 'identifi':209,387 'includ':382 'info':538 'initi':374 'inlin':823 'input':115,323,393 'insid':283 'instead':850 'intercept':436,458,671 'io':135,215,313 'issu':429,610 'item':282,639 'json':230,513,524 'known':117,428,607,801 'label':324,332,343,350,379,394,693 'languag':140,330,334,342 'last':800 'later':604 'least':766 'limit':146,416 'list':224,518 'load':359,370,373,698,709 'local':65,545 'local-on':64 'locat':788 'login':100 'maco':136,314 'manual':873 'match':377 'max':120,326 'may':434,666,725,742 'mcp':86 'menu':263,281,616,626,638 'messag':824 'miss':833 'multipl':317 'must':105,125,635 'name':119,211,321,325,385 'navig':236,490 'need':29 'never':150 'new':8,35,49,251,255,270,279,493,574,611,628,631,848,852 'note':825 'notic':865 'offset':691 'one':411,767 'open':232,249,260,274,624 'opt':62 'opt-in':61 'option':337,358,412,415 'order':295 'outlin':822 'output':229,512,523 'overlay':427,439,457,650 'page':496 'pattern':498 'paus':161 'platform':134,214,296,299,311,362,703 'playwright':83 'popul':720 'portal':113 'post':530 'post-creat':529 'precondit':76 'prefer':866 'preflight':183 'pretti':514 'price':597 'primari':139,329,333,544,558 'primary-local':543 'process':487 'public':22,198,834 'radio':303,398,424,445,451,646,654,678,686 'record':13,219 'red':821 'ref':452,663,687 'ref-bas':662 'regist':108,184,193,203 'report':798 'request':791 'requir':69,114,292,400,404,469 'retri':174,805 'retyp':756 'role/label/text':867 'safeti':148 'screenshot':796 'script':171 'scroll':676 'scrollintoview':442,682 'select':320,336,363,375,414,477,701,722 'select/combobox':331,349 'selector':861,868 'session':159 'set':539,554,741 'setup':532,537,552 'show':372,708 'sign':74,91,246,877 'skill':45,827 'skill-asc-app-create-ui' 'sku':133,391,395 'slowli':759,778 'source-rorkai' 'span':649 'standalon':170 'state':840 'stay':408,750 'step':802,874 'stop':789 'store':10,51,95,153,234,857 'style':659 'switch':594 'target':670 'territori':568,575,605 'text':322,380,392,482,768 'tool':80 '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' 'trigger':727,744 'true':576 'tvos':137,315 'type':777 'u.s':346 'ui':5,41,58,608,860 'unus':129 'url':497 'us':548 'usa':569 'use':17,43,155,335,441,577,734,843 'user':71,89,141,244,396,474,644,792,813 'valid':729,745,819 'valu':758 'verifi':188,501 'via':14,197,503,690 'view':508,681 'visibl':157 'visiono':138,316 'wait':364,488,713 'web':57,561,580 'websit':859 'without':864 'workaround':440,830 'workflow':181 'wrap':656 'yet':221","prices":[{"id":"e4f6c2d3-ad76-4d45-9f40-6af419d8bab4","listingId":"316ef832-d837-4632-a1f3-554cfc584a69","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:40.439Z"}],"sources":[{"listingId":"316ef832-d837-4632-a1f3-554cfc584a69","source":"github","sourceId":"rorkai/app-store-connect-cli-skills/asc-app-create-ui","sourceUrl":"https://github.com/rorkai/app-store-connect-cli-skills/tree/main/skills/asc-app-create-ui","isPrimary":false,"firstSeenAt":"2026-04-18T21:56:40.439Z","lastSeenAt":"2026-05-02T18:53:01.368Z"}],"details":{"listingId":"316ef832-d837-4632-a1f3-554cfc584a69","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"rorkai","slug":"asc-app-create-ui","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":"62180be014575e13ac33dac113ff47a06d2dffdb","skill_md_path":"skills/asc-app-create-ui/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/rorkai/app-store-connect-cli-skills/tree/main/skills/asc-app-create-ui"},"layout":"multi","source":"github","category":"app-store-connect-cli-skills","frontmatter":{"name":"asc-app-create-ui","description":"Create a new App Store Connect app record via browser automation. Use when there is no public API for app creation and you need an agent to drive the New App form."},"skills_sh_url":"https://skills.sh/rorkai/app-store-connect-cli-skills/asc-app-create-ui"},"updatedAt":"2026-05-02T18:53:01.368Z"}}