关于 asc-cli-usage
用于运行和设计 App Store Connect `asc` 命令的技能,涵盖命令发现、原生命令选择、身份验证、输出处理及安全操作。
主要功能
- 01通过 help 和 search 查找命令
- 02检查端点架构与功能覆盖
- 03优先使用原生命令而非 `asc api`
- 04处理身份验证与输出格式
- 05使用分页并遵循变更保护
适用场景
- 01查找 App Store Connect 任务对应的命令和参数
- 02设计命令前检查 API 字段
- 03为 API 或网页会话操作选择身份验证方式
- 04通过明确的安全检查自动执行读写
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ rorkai/ app-store-connect-cli-skills --skill asc-cli-usage安装后在 Claude Code 中输入/asc-cli-usage确认已加载。
详细介绍
asc cli 用法
在需要运行或设计 App Store Connect 的 asc 命令时使用此技能。
命令发现
- 始终使用
--help来发现命令和标志。asc --helpasc builds --helpasc builds list --help
- 如果你了解工作流但不知道命令路径,请使用
asc search进行本地、确定性的命令发现。asc search "submit app for review"asc search --output table "upload build"
- 设计面向 API 的命令前,使用
asc schema检查随附的 App Store Connect 端点架构以及请求和查询字段。asc schema --pretty "GET /v1/apps"asc schema --method POST appStoreVersions
- 使用
asc capabilities说明 CLI 支持的工作流、部分支持的工作流、基于 Web 会话的工作流,以及受公共 API 限制的工作流覆盖范围。asc capabilities --area release --output tableasc capabilities --status web-session --output tableasc capabilities --status not-public-api --output markdown
优先使用原生命令,而不是 asc api
- 每次读取和写入都使用原生命令。使用
asc api前,先通过asc search "TASK"或--help查找命令。 - 对于支持
--include的原生读取命令,使用它在一次调用中获取相关记录,而不是针对每种关联分别发起请求。使用--output json检查included数组中的相关资源。asc versions view --version-id "VERSION_ID" --include build,appStoreVersionSubmissionasc builds info --build-id "BUILD_ID" --include buildBetaDetail,betaAppReviewSubmission,betaGroupsasc iap view --id "IAP_ID" --include inAppPurchaseLocalizations,appStoreReviewScreenshotasc review submissions-get --id "SUBMISSION_ID" --include items,appStoreVersionForReview
- 单个资源和子项列表读取有各自的命令,例如
asc localizations view --id "LOCALIZATION_ID"、asc testflight groups builds list --group-id "GROUP_ID"和asc pricing availability territory-availabilities --app "APP_ID"。 - 仅当没有原生命令能完成任务时,才使用
asc api <METHOD> <PATH>。使用该命令写入时必须加上--confirm。不要使用asc auth token手动编写curl请求。
规范动词(当前 asc)
- 在文档和自动化中,对于只读命令,优先使用
view,而不是旧版get别名。asc apps view --id "APP_ID"asc versions view --version-id "VERSION_ID" --include build- 不加
--include时,asc versions view会输出已弃用的摘要;JSON 输出也会在 stderr 上发出警告。请使用--include build,而不是--include-build;使用--include appStoreVersionSubmission,而不是--include-submission。 asc pricing availability view --app "APP_ID"
- 对于仅更新的可用性界面和其他规范编辑流程,优先使用
edit。asc pricing availability edit --app "APP_ID" --territory "USA,GBR" --available trueasc app-setup availability edit --app "APP_ID" --territory "USA,GBR" --available trueasc xcode version edit --build-number "42"
- 使用
asc pricing availability create初始化 App 可用性,然后再使用仅支持更新的edit命令。如果 Apple 拒绝通过公共 API 进行初始化,请验证 Web 会话身份并使用asc web apps availability create,或在 App Store Connect 中配置 Pricing and Availability。asc pricing availability create --app "APP_ID" --territory "USA,GBR" --available true --available-in-new-territories trueasc web apps availability create --app "APP_ID" --territory "USA,GBR" --available-in-new-territories true
- 如果 CLI 有意将
set设计为更高级的替换/配置流程,且--help仍将set显示为规范动词,则继续使用set。
标志约定
- 使用明确的长标志(例如,
--app、--output)。 - 自动化时优先使用明确的标志;某些较新的命令在交互运行时可以提示用户填写缺失字段。
- 破坏性操作需要
--confirm。 - 用户需要获取所有页面时,使用
--paginate。 - 将特定于命令的标志放在叶子子命令之后;父级命令组会拒绝位置不正确的标志。
- 将
--nextURL 视为不透明的续接标记。不要将其与新的筛选条件、排序或页面大小标志组合使用;请遵循所选命令帮助中要求的选择器。
输出格式
- 输出默认根据 TTY 状态自动选择:交互式终端中使用
table,通过管道传输或非交互时使用json。 - 仅在人类可读输出场景中使用
--output table或--output markdown。 --pretty仅适用于 JSON 输出。- 除了检查 stdout,也要检查退出状态。批处理操作失败时可能会输出部分回执;重试修改操作前,请检查已完成的操作和资源 ID。
身份验证和默认值
- 优先使用
asc auth login进行钥匙串身份验证。 - 备用环境变量:
ASC_KEY_ID、ASC_ISSUER_ID、ASC_PRIVATE_KEY_PATH、ASC_PRIVATE_KEY、ASC_PRIVATE_KEY_B64。 ASC_APP_ID可用于提供默认应用 ID。- App Store Server API 读取操作(交易、订阅状态、退款、通知历史记录)位于
asc storekit下,并使用通过asc storekit auth login注册的独立应用内购买密钥,而非asc auth配置文件。 - 权限不明确时,通过
asc web auth capabilities检查 API 密钥的具体角色权限。- 此功能属于 Web 会话身份验证接口。
- 默认情况下,它可以解析当前本地身份验证;也可以使用
--key-id检查指定密钥。
- 通过缓存的 Apple Account Web 会话创建 App Store Connect 团队 API 密钥,使用
asc web api-keys create。- 需要 Account Holder 或 Admin 会话;必要时,先使用
asc web auth login --apple-id "[email protected]"。 - 命令会将一次性 P8 保存为
AuthKey_<KEY_ID>.p8,不会打印其内容;请使用--output-dir指定私有目录。 - 示例:
asc web api-keys create --name "CI uploads" --role APP_MANAGER --output-dir "./keys" --output json。
- 需要 Account Holder 或 Admin 会话;必要时,先使用
在请求另一个验证码前复用身份验证
- API 密钥身份验证(
asc auth)和 Apple 账户 Web 会话(asc web auth)彼此独立。对于受支持的操作,优先使用现有的钥匙串 API 配置;开始 Web 登录前,先检查asc auth status和命令功能。配置名称只是本地标签,并非应用级权限边界。 - 对于仅限 Web 的工作,先检查
asc web auth status --apple-id "[email protected]" --output json。复用已通过身份验证的缓存会话,并在执行变更前确认其提供商与预期账户一致。不要把登出或清除信任/会话状态当作常规准备步骤。 - 对于一个 Apple 账户的交互式登录,只让一个进程负责。当验证码提示待处理时,继续使用同一进程;应协调其他 Agent 或将其操作串行化,而不是启动可能使当前验证挑战失效的另一次登录。
- 输入与当前提示对应的验证码。受信任设备通知中的验证码和短信备用验证码属于不同的验证步骤。CLI 提示已向手机发送验证码后,请使用新收到的手机验证码,而不是先前通知中的验证码。不要把故意提交错误验证码当作常规的重新发送策略;请查看已安装命令的帮助,了解受支持的恢复方式。
- 失败时,应区分验证码被拒绝与验证或提供商选择完成后发生超时的情况。查看具体错误和已安装的版本,再请求更多验证码。增加请求超时时间并不能证明交互式会话问题已解决。
- 登录后,通过单独读取状态来确认
authenticated和所选提供商;报告成功前,确认下一项 Web 操作会复用缓存。Apple 之后可能会使会话过期,因此不要承诺可以永久无人值守地完成身份验证。 - 配置受支持的
--two-factor-code-command前,请先查看asc web auth login --help。不要将凭据和验证码写入日志、源代码、shell 历史记录或 PR。不要假设可以将密码管理器的通行密钥提供给 CLI,也不要假设浏览器登录会刷新其缓存;只能使用已安装 CLI 明确支持的身份验证机制。 - 新的非交互式 Web 登录需要
--two-factor-code-command或ASC_WEB_2FA_CODE_COMMAND;如果没有提供其中之一,登录会在发送密码前失败。复用缓存会话无需重新登录。 - 使用
--public-provider-id选择公开团队 ID;--provider-id接受 Apple 的数字提供商 ID。不要用 API 配置名称替代这两种 ID。
Apple Ads
- 选择命令前,请先使用
asc ads --help。 - Apple Ads 使用
asc ads auth、--ads-profile和ASC_ADS_*变量。它不使用 App Store Connect API 凭据。 - 直接资源命令使用 Platform API v1,并通过
--ad-account或ASC_ADS_AD_ACCOUNT_ID指定广告账户。已弃用的 Campaign Management API v5 命令位于asc ads v5下,并使用--org或ASC_ADS_ORG_ID;切勿将两种 ID 混用。 - 使用
asc ads auth discover --output json查找广告账户访问权限,或使用asc ads acls list --output json查看单个 ACL 响应。 - 请求体命令使用
--file,文件内容必须符合叶级帮助中指定的确切架构。V1 查询筛选器使用单数形式的value,批量请求体可能使用包装对象,而不是 v5 数组。 - Apple Ads 资源命令会输出 JSON。仅在帮助中注明支持的位置使用
--paginate;报告和大多数查询请求体会在 JSON 文件中携带分页参数。 - 删除以及涉及支出、账单、投放、定向或访问权限的变更都需要
--confirm。明确创建为暂停状态的 Campaign 是文档中主要的安全例外。 - 执行实时变更测试时,创建名称清晰的暂停资源,保存每个 ID,优先暂停会产生支出的资源,并且只删除测试创建的资源。
超时
ASC_TIMEOUT/ASC_TIMEOUT_SECONDS控制请求超时。ASC_UPLOAD_TIMEOUT/ASC_UPLOAD_TIMEOUT_SECONDS控制上传超时。
评论
支持 Markdown