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.
Use it when you need to create a new App Store Connect app record and no public API exists for app creation.
Avoid it when the app record already exists, or in an automated environment without a visible browser and an authenticated Apple session.
Security analysis
SafeThe 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.
- •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.
Examples
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`.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.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_optionor 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 AccessorFull Access. - These are custom radio buttons with
<span>overlays. - Known issue: Accessibility-based clicks may be intercepted by the overlay
<span>. - Workaround: Use
scrollIntoViewon 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:
- Scroll the radio element into view (
scrollIntoView). - 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 filesThis 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.mdFrom 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 installationopenskills 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 syncManual 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.
Configure a Chat Channel with SecretRefs
DevOps
Set up chat channels using non-interactive commands, with secrets only as SecretRefs. Covers gather, mutate, repair, and prove steps for reliable delivery.
Investigate ClickHouse CI Failures
DevOps
Investigate a ClickHouse CI failure end-to-end from a PR or S3 report URL. Fetches failed tests, classifies flaky vs real regression, and checks for existing issues/fixes.
Ansible PR Review
DevOps
Reviews an Ansible PR following the project's standardized process, including changelog checks, test coverage validation, and feedback tracking.