名称: auditing-appstore-readiness
描述: 审核 iOS 应用仓库(Swift/Xcode 或 React Native/Expo)是否符合 App Store 规范并评估发布就绪度;输出通过/警告/失败报告及发布清单。
元数据: {"openclaw":{"emoji":"🧾","requires":{"bins":["git"]}}}
此技能用于审查应用仓库,并为 iOS App Store / TestFlight 提交生成发布就绪度报告。
支持的项目类型:
- 原生 iOS (Swift/Obj‑C, Xcode 项目/工作空间)
- React Native (裸项目)
- Expo (托管或预构建项目)
在仓库根目录运行只读审核脚本:
{ "tool": "exec", "command": "node {baseDir}/scripts/audit.mjs --repo . --format md" }
如果需要同时输出 JSON 格式:
{ "tool": "exec", "command": "node {baseDir}/scripts/audit.mjs --repo . --format md --json audit.json" }
如果仓库是单体仓库,请指向应用目录:
{ "tool": "exec", "command": "node {baseDir}/scripts/audit.mjs --repo apps/mobile --format md" }
始终返回:
- 总体结论:通过 / 警告 / 失败
- 检测到的项目类型及关键标识符(包标识符、版本号、构建号)
- 包含证据和修复步骤的检查项列表
- 开发者可勾选的发布清单
使用模板:references/report-template.md
默认使用只读命令。除非满足以下条件,否则不要运行会修改工作空间的命令:
- 用户明确要求,或
- 修复操作简单且明显是用户期望的(需先解释将进行哪些更改)
可能修改仓库的命令示例:
- 依赖安装 (npm i, yarn, pnpm i, pod install)
- 配置生成 (expo prebuild)
- 签名自动化 (fastlane match)
- 归档 (xcodebuild archive, eas build) —— 会生成产物并可能需要签名
如果必须运行会修改仓库的命令,请在执行前明确标记为修改操作。
优先使用脚本检测 (audit.mjs)。如需手动识别:
package.json 包含 expo 且存在 app.json / app.config.*package.json 包含 react-native 且存在 ios/ 目录*.xcodeproj 或 *.xcworkspace 文件如果存在多个应用,请选择符合用户意图的那个;否则,选择满足以下条件的目录:
- 包含单个 ios/<AppName>/Info.plist 文件,且
- 根目录附近恰好有一个 .xcodeproj 或 .xcworkspace 文件。
即使没有 Xcode,也应运行以下检查:
PrivacyInfo.xcprivacy) 是否存在或已明确说明NSAllowsArbitraryLoads)脚本会为这些检查项输出通过/警告/失败。
仅在Xcode 可用时运行(本地 macOS 网关或已配对的 macOS 节点)。
推荐步骤(会生成构建产物):
1) 显示 Xcode 和 SDK 版本:
2) 列出方案(根据检测到的项目/工作空间):
{ "tool": "exec", "command": "xcodebuild -list -json -workspace <路径>.xcworkspace" }
或
3) 为模拟器进行 Release 构建(快速,无需签名):
4) 如果需要分发产物(修改操作 / 签名):
- 如果已配置 Fastlane,优先使用
- 否则使用 xcodebuild archive + xcodebuild -exportArchive
如果无法执行构建检查,报告必须明确说明,并将总体结论保持在警告(除非存在明确的失败项)。
始终在报告末尾包含此清单部分(即使自动化检查已通过):
参见:references/manual-checklist.md
切换到修复模式:
1) 识别可在仓库内安全修复的失败项(Info.plist 字符串、PrivacyInfo.xcprivacy 模板、收紧 ATS 例外设置等)
2) 提出最小化补丁并使用 apply_patch 应用
3) 重新运行 audit.mjs 并更新报告