asc-app-create-ui

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

ASC App Create (UI Automation)

ASC应用创建(UI自动化)

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.
使用此Skill通过驱动Web UI来创建新的App Store Connect应用。 这是可选的本地自动化功能,要求用户已登录。

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)
  • 具备浏览器自动化工具(Playwright、Cursor browser MCP或同类工具)。
  • 用户已登录App Store Connect(或可完成登录+2FA验证)。
  • Bundle ID必须已在Apple开发者门户中注册
  • 已知所需输入信息:
    • 应用名称(最多30个字符)
    • Bundle ID(必须已存在且未被其他应用使用)
    • SKU
    • 平台(iOS、macOS、tvOS、visionOS)
    • 主要语言
    • 用户权限(完全访问或受限访问)

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.
  • 绝不导出或存储Cookie。
  • 仅使用可见的浏览器会话。
  • (对于独立脚本)点击“创建”前暂停并等待最终确认。
  • 创建操作失败时不要自动重试。

Workflow

工作流程

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

1. 预检:注册Bundle ID并验证无现有应用

bash
undefined
bash
undefined

Register the bundle ID via public API (if not already registered)

通过公开API注册Bundle ID(若尚未注册)

asc bundle-ids create --identifier "com.example.app" --name "My App" --platform IOS
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
undefined
asc apps list --bundle-id "com.example.app" --output json
undefined

2. Open App Store Connect

2. 打开App Store Connect

Navigate to
https://appstoreconnect.apple.com/apps
and ensure the user is signed in.
导航至
https://appstoreconnect.apple.com/apps
并确保用户已登录。

3. Open the New App form

3. 打开新建应用表单

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)

4. 按顺序填写必填字段

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.
平台选项为复选框(而非单选按钮)。点击所需平台的复选框:
  • iOS、macOS、tvOS、visionOS
  • 可多选。

Name (text input)

名称(文本输入框)

  • Label:
    Name
  • Max 30 characters.
  • 标签:
    Name
  • 最多30个字符。

Primary Language (select/combobox)

主要语言(选择框/组合框)

  • Label:
    Primary Language
  • Use
    select_option
    or equivalent with the language label (e.g.,
    "English (U.S.)"
    ).
  • 标签:
    Primary Language
  • 使用
    select_option
    或同类方法,传入语言标签(例如
    "English (U.S.)"
    )。

Bundle ID (select/combobox)

Bundle ID(选择框/组合框)

  • 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"
  • 标签:
    Bundle ID
  • 这是一个
    <select>
    下拉框。选择平台后,选项会异步加载。
  • 等待下拉框加载完成(初始显示“Loading...”)。
  • 通过匹配包含名称和标识符的标签文本进行选择:
    "My App - com.example.app"

SKU (text input)

SKU(文本输入框)

  • Label:
    SKU
  • 标签:
    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.
  • 此字段为必填项。在选择选项前,“创建”按钮会处于禁用状态。
  • 选项:
    Limited Access
    (受限访问)或
    Full Access
    (完全访问)。
  • 这些是自定义单选按钮,带有
    <span>
    覆盖层。
  • 已知问题:基于无障碍功能的点击可能会被覆盖层
    <span>
    拦截。
  • 解决方法:先对单选框元素执行
    scrollIntoView
    ,然后直接点击单选框引用。这样可以绕过覆盖层拦截。

5. Click Create

5. 点击创建

  • 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>/...
    ).
  • 所有必填字段填写完成选择用户权限后,“创建”按钮才会启用。
  • 点击后,按钮文本会变为“Creating”(正在创建)并开始处理。
  • 等待页面导航至新应用的页面(URL格式:
    /apps/<APP_ID>/...
    )。

6. Verify creation via API

6. 通过API验证创建结果

bash
asc apps get --id "APP_ID" --output json --pretty
bash
asc apps get --id "APP_ID" --output json --pretty

or

asc apps list --bundle-id "com.example.app" --output json
undefined
asc apps list --bundle-id "com.example.app" --output json
undefined

7. Hand off to post-create setup

7. 移交至创建后设置

bash
asc app-setup info set --app "APP_ID" --primary-locale "en-US"
asc app-setup categories set --app "APP_ID" --primary GAMES
asc app-setup availability set --app "APP_ID" --territory "USA,GBR" --available true
bash
asc app-setup info set --app "APP_ID" --primary-locale "en-US"
asc app-setup categories set --app "APP_ID" --primary GAMES
asc app-setup availability set --app "APP_ID" --territory "USA,GBR" --available true

Known UI Automation Issues

已知UI自动化问题

"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

用户权限单选按钮带有span覆盖层

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).
Apple的自定义单选按钮将
<input type="radio">
包裹在样式化的
<span>
元素中。直接基于引用的点击可能会因“点击目标被拦截”而失败。修复方法:
  1. 将单选框元素滚动到视图中(
    scrollIntoView
    )。
  2. 直接点击单选框引用(而非通过偏移或标签点击)。

Bundle ID dropdown loads asynchronously

Bundle ID下拉框异步加载

After selecting a platform, the Bundle ID dropdown shows "Loading..." and is disabled. Wait for it to become enabled and populated before selecting.
选择平台后,Bundle ID下拉框会显示“Loading...”并处于禁用状态。等待其启用并加载完成后再进行选择。

browser_fill may not trigger form validation

browser_fill可能无法触发表单验证

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.
Apple的Ember.js表单使用自定义变更处理程序。
browser_fill
(原子设置)可能无法触发验证。若填写所有字段后“创建”按钮仍处于禁用状态:
  • 至少在一个文本框中缓慢重新输入值(逐字符输入)。
  • 或点击该字段,清空后缓慢输入。

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.
  • 此Skill是针对缺失公开API的替代方案。Apple文档明确指出:“请勿使用此API创建新应用;请在App Store Connect网站上创建新应用。”
  • UI选择器可能会无预警地变更。优先使用角色/标签/文本选择器,而非CSS选择器。
  • 唯一的手动步骤应为登录。其他所有操作均可由Agent驱动。