App Store Connect App Creation

VerifiedSafe

Create a new App Store Connect app record via browser automation when no public API is available.

Sby Skills Guide Bot
DevOpsIntermediate
7/22/2026
Claude CodeCursor
#app-store-connect#browser-automation#ios#release-management#cli

Recommended for

Automated summary

Automates the creation of an App Store Connect app record by driving the New App form in a browser, then verifies the result through the API and the `asc` CLI.

Strengths

  • Field-by-field instructions in the exact fill order, with the quirks of each control (platform checkboxes, asynchronously loaded Bundle ID dropdown, User Access radio buttons).
  • Documents the workaround for the `<span>` overlay that intercepts clicks on the User Access radios and otherwise keeps the Create button disabled.
  • Solid preflight and post-verification: bundle ID registration, check that no app exists yet, then confirmation of creation plus availability and category bootstrap.
  • Explicit safety guardrails: visible browser session only, no cookie export, a confirmation pause before "Create", and no automatic retry of the Create action.

Limitations

  • Entirely dependent on the App Store Connect web UI, which can change without notice and break the described selectors.
  • Cannot run in headless CI: a human must be signed in and complete 2FA.
  • Assumes the bundle ID is already registered and that SKU, language and access level are known upfront; no business validation of those values is performed.
When to use it

Use it when you need to create a new App Store Connect app record and no public API exists for app creation.

When not to use it

Avoid it when the app record already exists, or in an automated environment without a visible browser and an authenticated Apple session.

Security analysis

Safe
Quality score87/100

The skill is a transparent, opt-in UI automation guide for a legitimate gap in Apple's API. It contains no obfuscated payloads, no curl|sh, no destructive filesystem operations, and no instruction to exfiltrate credentials; in fact it adds positive guardrails (no cookie export, visible browser, confirm before Create, no auto-retry). The residual risk is ordinary privileged-tool use (an authenticated browser session plus an `asc` CLI), which is proportionate to the stated task.

Findings
  • •Uses browser automation against a signed-in App Store Connect session with 2FA — inherently privileged, but skill explicitly forbids exporting/storing cookies and requires a visible session.
  • •Runs external `asc` CLI commands that mutate Apple account state (register bundle IDs, create availability records); these are intended actions but irreversible/outward-facing.
  • •Post-create hand-off example sets categories (`--primary GAMES`) and availability territories that may not match the user's actual app — reader could execute them blindly.
How this analysis is made

Examples

Create a new app record
Create a new App Store Connect app record for bundle ID com.example.app, name "My App", SKU MYAPP001, platform iOS, primary language English (U.S.), Full Access. The bundle ID is already registered — use the browser to fill the New App form and verify with `asc apps list`.
Handle the User Access radio
The Create button is disabled because clicking the Full Access radio does nothing. Scroll the radio into view and click it directly to get past the overlay span, then finish creating the app.
Post-create bootstrap
The app was just created with ID 1234567890. Verify it with `asc apps view --id 1234567890 --output json --pretty`, then set the primary locale and categories and create the initial availability for USA and GBR.

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.

asc app create (UI automation)

Use this skill to create a new App Store Connect app by driving the web UI. This is opt-in, local-only automation that requires the user to be signed in.

Preconditions

  • A browser automation tool is available (Playwright, Cursor browser MCP, or equivalent).
  • User is signed in to App Store Connect (or can complete login + 2FA).
  • The bundle ID must already be registered in the Apple Developer portal.
  • Required inputs are known:
    • app name (max 30 characters)
    • bundle ID (must exist and be unused by another app)
    • SKU
    • platform (iOS, macOS, tvOS, visionOS)
    • primary language
    • user access (Full Access or Limited Access)

Safety Guardrails

  • Never export or store cookies.
  • Use a visible browser session only.
  • Pause for a final confirmation before clicking "Create" (for standalone scripts).
  • Do not retry the Create action automatically on failure.

Workflow

1. Preflight: register bundle ID and verify no existing app

# Register the bundle ID via public API (if not already registered)
asc bundle-ids create --identifier "com.example.app" --name "My App" --platform IOS

# Confirm no app record exists yet
asc apps list --bundle-id "com.example.app" --output json

2. Open App Store Connect

Navigate to https://appstoreconnect.apple.com/apps and ensure the user is signed in.

3. Open the New App form

The "New App" button (blue "+" icon) opens a dropdown menu, not a dialog directly.

  • Click the "New App" button to open the dropdown.
  • Click the "New App" menu item inside the dropdown.
  • The creation dialog/modal appears.

4. Fill required fields (in order)

Platform (checkboxes)

The platforms are checkboxes (not radio buttons). Click the checkbox for the desired platform(s):

  • iOS, macOS, tvOS, visionOS
  • Multiple can be selected.

Name (text input)

  • Label: Name
  • Max 30 characters.

Primary Language (select/combobox)

  • Label: Primary Language
  • Use select_option or equivalent with the language label (e.g., "English (U.S.)").

Bundle ID (select/combobox)

  • Label: Bundle ID
  • This is a <select> dropdown. The options load asynchronously after platform selection.
  • Wait for the dropdown to finish loading (it shows "Loading..." initially).
  • Select by matching the label text which includes both the name and identifier: "My App - com.example.app"

SKU (text input)

  • Label: SKU

User Access (radio buttons) -- REQUIRED

  • This field is required. The Create button stays disabled until one option is selected.
  • Options: Limited Access or Full Access.
  • These are custom radio buttons with <span> overlays.
  • Known issue: Accessibility-based clicks may be intercepted by the overlay <span>.
  • Workaround: Use scrollIntoView on the radio element first, then click the radio ref directly. This bypasses the overlay interception.

5. Click Create

  • The "Create" button is disabled until all required fields are filled and User Access is selected.
  • After clicking, the button text changes to "Creating" while processing.
  • Wait for navigation to the new app's page (URL pattern: /apps/<APP_ID>/...).

6. Verify creation via API

asc apps view --id "APP_ID" --output json --pretty
# or
asc apps list --bundle-id "com.example.app" --output json

7. Hand off to post-create setup

asc app-setup info set --app "APP_ID" --primary-locale "en-US"
asc app-setup categories set --app "APP_ID" --primary GAMES
asc web apps availability create \
  --app "APP_ID" \
  --territory "USA,GBR" \
  --available-in-new-territories true

Use 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.

Known UI Automation Issues

"New App" is a dropdown menu, not a direct action

The first click opens a menu with "New App" and "New App Bundle". You must click the menu item, not just the button.

User Access radio buttons have span overlays

Apple'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:

  1. Scroll the radio element into view (scrollIntoView).
  2. Click the radio ref directly (not via offset or label click).

Bundle ID dropdown loads asynchronously

After selecting a platform, the Bundle ID dropdown shows "Loading..." and is disabled. Wait for it to become enabled and populated before selecting.

browser_fill may not trigger form validation

Apple'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:

  • Retype the value slowly (character-by-character) in at least one text field.
  • Or click the field, clear it, and type slowly.

Failure Handling

  • If any field or button cannot be located, stop and request user help.
  • Capture a screenshot and report the last known step.
  • Do not retry the Create click automatically.
  • On failure, the user should check the browser for validation errors (red outlines, inline messages).

Notes

  • 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."
  • UI selectors can change without notice. Prefer role/label/text selectors over CSS.
  • The only manual step should be signing in. Everything else is agent-drivable.

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/app-store-connect-app-creation-mrwakep5/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/app-store-connect-app-creation-mrwakep5' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/app-store-connect-app-creation-mrwakep5/download' --output '.skill-downloads/app-store-connect-app-creation-mrwakep5/SKILL.md.part' && mv '.skill-downloads/app-store-connect-app-creation-mrwakep5/SKILL.md.part' '.skill-downloads/app-store-connect-app-creation-mrwakep5/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/app-store-connect-app-creation-mrwakep5/SKILL.md' && test -s '.skill-downloads/app-store-connect-app-creation-mrwakep5/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/asc-app-create-ui' && cp -R '.skill-downloads/app-store-connect-app-creation-mrwakep5' '.claude/skills/asc-app-create-ui'

Cursor
test -f '.skill-downloads/app-store-connect-app-creation-mrwakep5/SKILL.md' && test -s '.skill-downloads/app-store-connect-app-creation-mrwakep5/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/asc-app-create-ui' && cp -R '.skill-downloads/app-store-connect-app-creation-mrwakep5' '.cursor/skills/asc-app-create-ui'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/app-store-connect-app-creation-mrwakep5'

openskills read 'app-store-connect-app-creation-mrwakep5'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/app-store-connect-app-creation-mrwakep5/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills