SKILL.md
只读
名称
asc-app-create-ui
描述
通过浏览器自动化在 App Store Connect 中创建新的 App 记录。适用于缺乏公开创建 API,需要 Agent 自动填写“新建 App”表单的场景。
asc app create (UI 自动化)
本 Skill 用于通过自动化操作 Web 界面,在 App Store Connect 中创建新的 App。
该自动化为可选功能(opt-in),仅在本地执行,且需要用户保持已登录状态。
前置条件
- 已安装并可运行浏览器自动化工具(如 Playwright、Cursor 浏览器 MCP 或等效工具)。
- 用户已登录 App Store Connect(或能够完成登录及双重认证 2FA)。
- App 对应的 Bundle ID 必须已在 Apple Developer portal 中注册。
- 已准备好所有必需参数:
- App 名称(不超过 30 个字符)
- Bundle ID(必须已存在且未被其它 App 使用)
- SKU
- 平台(iOS、macOS、tvOS、visionOS)
- 主要语言
- 用户访问权限(完全访问权限或限定访问权限)
安全防护规则 (Safety Guardrails)
- 切勿导出或存储 Cookie。
- 仅在可见(非 Headless)浏览器会话中操作。
- 点击“创建”之前暂停并等待最终确认(适用于独立运行的脚本)。
- 失败时切勿自动重试“创建”操作。
工作流程
1. 预检:注册 Bundle ID 并确认 App 记录不存在
# 若尚未注册,通过公开 API 注册 Bundle ID
asc bundle-ids create --identifier "com.example.app" --name "My App" --platform IOS
# 确认尚不存在该 App 记录
asc apps list --bundle-id "com.example.app" --output json
2. 打开 App Store Connect
访问 https://appstoreconnect.apple.com/apps 并确认用户处于已登录状态。
3. 打开“新建 App”表单
“新建 App”按钮(蓝色“+”图标)触发的是下拉菜单,而非直接弹窗。
- 点击“新建 App”按钮打开下拉菜单。
- 点击下拉菜单内部的“新建 App”菜单项。
- 此时弹出创建弹窗/模态框。
4. 按顺序填写必填字段
平台 (复选框/Checkboxes)
平台选择使用的是复选框(而非单选框)。勾选所需平台的复选框:
- iOS、macOS、tvOS、visionOS
- 支持同时选择多个平台。
名称 (文本输入框)
- 标签:
Name - 最多 30 个字符。
主要语言 (下拉选择框/Select)
- 标签:
Primary Language - 使用
select_option或等效方法选择对应语言标签(例如"English (U.S.)")。
Bundle ID (下拉选择框/Select)
- 标签:
Bundle ID - 这是一个
<select>下拉菜单。相关选项会在选择平台后异步加载。 - 等待下拉菜单加载完毕(初始状态会显示“Loading...”)。
- 根据同时包含名称与标识符的标签文本匹配进行选择:
"My App - com.example.app"
SKU (文本输入框)
- 标签:
SKU
用户访问权限 (单选按钮/Radio) -- 必填
- 此字段为必填项。在选择其中一个选项前,“创建”按钮将一直保持禁用状态。
- 选项:
Limited Access或Full Access。 - 这些属于带有
<span>覆盖层的自定义单选按钮。 - 已知问题: 基于无障碍 (Accessibility) 的点击事件可能会被覆盖层的
<span>拦截。 - 变通方案: 先对单选框元素调用
scrollIntoView滚动到视野中,然后直接点击单选框的元素引用 (ref)。这样可以绕过覆盖层拦截。
5. 点击创建
- 在所有必填字段填写完毕且选择了“用户访问权限”之后,“创建”按钮才会变为可点击状态。
- 点击后,处理过程中按钮文本将变为“Creating”(正在创建)。
- 等待页面跳转至新 App 的详情页(URL 匹配规则:
/apps/<APP_ID>/...)。
6. 通过 API 验证创建结果
asc apps view --id "APP_ID" --output json --pretty
# 或
asc apps list --bundle-id "com.example.app" --output json
7. 转交至创建后的配置步骤
asc app-setup info set --app "APP_ID" --primary-locale "en-US"
asc app-setup categories set --app "APP_ID" --primary GAMES
asc pricing availability create \
--app "APP_ID" \
--territory "USA,GBR" \
--available true \
--available-in-new-territories true
仅在首次初始化 App 可售性 (availability) 时使用 asc pricing availability create。如果 App 可售性已设置过,后续修改销售地区请切换为 asc pricing availability edit --app "APP_ID" ...。
已知 UI 自动化问题
“新建 App”是个下拉菜单,而非直接触发的动作
首次点击会打开包含“新建 App”和“新建 App 组合”的菜单。你必须显式点击菜单项,而不能只点击顶层按钮。
用户访问权限单选按钮带有 span 覆盖层
Apple 的自定义单选按钮使用带有样式的 <span> 元素包裹了 <input type="radio">。直接通过 ref 点击可能会因“点击目标被拦截”而失败。解决方案:
- 将单选框元素滚动到视野中 (
scrollIntoView)。 - 直接点击单选框的 ref(不要使用偏移量或点击 label)。
Bundle ID 下拉菜单为异步加载
选择平台后,Bundle ID 下拉菜单会显示“Loading...”并处于禁用状态。在选择前,请务必等待其加载完成并填入数据。
browser_fill 可能无法触发表单校验
Apple 的 Ember.js 表单使用了自定义变更监听器。browser_fill(原子化设值)可能无法触发校验逻辑。如果在填完所有字段后“创建”按钮仍处于禁用状态:
- 尝试在至少一个文本框中慢速(逐字符)重新输入内容。
- 或者先点击输入框、清空内容,然后再慢速输入。
异常处理
- 若无法定位任何字段或按钮,请立即停止并请求用户人工协助。
- 截取当前屏幕截图,并汇报最后记录的操作步骤。
- 发生失败时,切勿自动重试点击“创建”。
- 失败时,用户应在浏览器中检查是否存在表单校验错误(红框标红、内联错误提示)。
注意事项
- 本 Skill 是缺乏公开 API 时的变通方案。Apple 官方文档明确说明:“请勿使用此 API 创建新 App,请改为在 App Store Connect 网站上创建新 App。”
- UI 选择器可能在无通知的情况下发生变更。相比 CSS 选择器,优先推荐使用基于 role/label/text 的选择器。
- 唯一的人工步骤应当仅为登录。其它所有步骤均可由 Agent 自动化完成。






