用途
该技能旨在将 Expo 应用的一个提交发布为经过处理的 TestFlight 构建,并确保测试人员和用户获得的构建与预期完全一致:正确的身份、版本号和构建号,不包含仅测试代码、StoreKit 测试文件、调试授权、占位符值,且所有使用描述字符串在所有语言中齐全。
主要能力
- 提供两条发布路径:EAS Build + EAS Submit(默认)和本地命令行路径(
npm run release:ios -- --variant preview|production),后者无需 Expo 账户,使用团队 App Store Connect API 密钥通过 Apple 命令行工具签名。 - 强制执行一系列规则:上传、推送标签和提交审核等外向操作必须获得开发者明确同意;绝不打开、打印、复制、移动、提交或记录 .p8 密钥、JWT 或 Authorization 头;仅使用团队 API 密钥签名;构建号计数器只增不减;仅通过发布命令从干净树构建;预览构建仅限内部测试;在导出 .ipa 上执行商店产物门禁检查;上传后等待处理状态达到 VALID;遇到特定错误时停止并询问,不重试;为每个处理的构建打注解标签;通过 DEVELOPER_DIR 选择固定版本的 Xcode;禁止未完成内容发布;禁止占位符值发布;确保每个构建包含所有使用描述。
使用方式
- 在仓库首次发布前,阅读
references/signing-and-keys.md和references/human-steps.md,向开发者询问所有缺失的一次性步骤(开发者计划与协议、具有 Admin 角色的团队 API 密钥、Xcode 许可证)以及每个应用步骤(每个上传变体的应用记录及其内部测试组)。 - 选择路径:EAS(默认)阅读
references/eas-lane-and-android.md;本地路径安装模板(templates/scripts/release/*到scripts/release/,templates/scripts/asc/*到scripts/asc/,templates/contracts/ios-release.json和.schema.json到contracts/,以及其他模板),在app.config.ts中添加构建号行,在package.json中添加"release:ios": "node scripts/release/release-ios.ts",然后运行类型检查、ESLint 和 Jest。 - 运行
node ${CLAUDE_SKILL_DIR}/scripts/check-release-setup.mjs ..检查设置,修复所有 FAIL 并重新运行直到 RESULT: PASS。 - 准备提交:运行
npm run verify通过,生产构建的版本号需高于上一个发布标签,如有 E2E 和截图则包含。 - 在开发者同意后发布:本地路径运行
npm run release:ios -- --variant production(或 preview,可加--notes和--known-issue);EAS 路径按顺序运行eas build --profile production --platform ios,下载 .ipa 到build/ios-release/export/app.ipa,运行门禁检查,然后eas submit --profile production --platform ios --path build/ios-release/export/app.ipa --non-interactive --what-to-test '<text>'。 - 证明构建:运行
node ${CLAUDE_SKILL_DIR}/scripts/check-store-artifact.mjs . --ipa <ipa> --variant <v> --version <x.y.z> --build <n>必须输出 RESULT: PASS 且无 --rehearsal,运行必须打印 processed (VALID)。 - 失败时,阅读运行输出的消息(已匹配
references/failure-playbook.md),按 Resume 行指示重新运行:相同命令、--resume build(相同编号,不上传)或--resume processing(上传已完成)。 - 报告并等待:按
examples/release-messages.md格式发送一条消息,包含应用、版本、构建号、变体、门禁结果、What to Test、一个问题(“ship”或“don't ship”)以及“人工步骤(不阻塞)”。在“ship”时执行git tag -a v<version> -m "...";仅在“submit”时提交审核。
适用场景
适用于需要将 Expo iOS 应用发布到 TestFlight 的团队,尤其是希望自动化签名、构建、上传和验证流程,同时保持严格安全控制和人工决策点的场景。
限制
- 需要开发者提供团队 API 密钥(Admin 角色)、开发者计划协议和 Xcode 许可证等。
- 上传、推送标签和提交审核必须获得开发者明确同意。
- 某些错误(如 errSecInternalComponent、Xcode 许可证、协议错误、应用记录缺失、HTTP 401/403、INVALID/FAILED 处理)必须停止并询问,不能重试。
- 预览构建仅限内部测试,不能到达外部测试人员或 App Store。
- 不能使用占位符值通过门禁。
- 无密钥排练(--rehearsal)不能作为发布证据。
- 具体费用、价格、平台兼容性等未在资料中提供。