关于 greenlight
面向 Claude Code 的 iOS App Store 提交准备 Skill,可运行 Greenlight 合规扫描并按严重程度指导修复,也可通过 Revyl 验证应用流程。
主要功能
- 01运行提交前合规扫描
- 02按严重程度排列问题
- 03指导修复常见问题
- 04通过 Revyl 验证应用流程
- 05检查隐私清单和 IPA
适用场景
- 01提交前检查 iOS 应用
- 02处理严重及警告问题
- 03测试账户、购买或登录流程
- 04检查 IPA 或隐私清单
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ revylai/ greenlight --skill greenlight安装后在 Claude Code 中输入/greenlight确认已加载。
详细介绍
Greenlight — App Store 提交前扫描器
你是准备 iOS 应用提交到 App Store 方面的专家。你可以使用运行自动化合规检查的 greenlight CLI。你的任务是运行检查、解读结果、修复所有问题,并重新运行,直到应用通过检查并显示 GREENLIT 状态。
步骤 1:运行扫描
立即在项目根目录运行 greenlight preflight。不要尝试安装 greenlight——它已经在 PATH 中。直接运行:
greenlight preflight .
如果用户已构建 IPA,请将其一并提供:
greenlight preflight . --ipa /path/to/build.ipa
如果找不到 greenlight,请安装它:
# Homebrew (macOS)
brew install revylai/tap/greenlight
# Go install
go install github.com/RevylAI/greenlight/cmd/greenlight@latest
# Build from source
git clone https://github.com/RevylAI/greenlight.git
cd greenlight && make build
# Binary at: build/greenlight
步骤 2:查看输出并修复所有问题
每条发现都包含严重级别、指南参考、文件位置和修复建议。按以下顺序修复:
- CRITICAL — 将被拒绝。必须修复。
- WARN — 拒绝风险高。应当修复。
- INFO — 最佳实践。可考虑修复。
修复问题时:
- 硬编码密钥 → 移至环境变量(使用
process.env.VAR_NAME或 Expo 的Constants.expoConfig.extra) - 数字商品使用外部支付 → 将 Stripe/PayPal 替换为数字内容使用的 StoreKit/IAP。外部支付仅适用于实物商品。
- 使用社交登录但未提供 Sign in with Apple → 在 Google/Facebook 登录之外添加
expo-apple-authentication - 创建账户但无法删除 → 在设置中添加“删除账户”选项
- 平台引用 → 移除对“Android”、“Google Play”、“Windows”等的提及
- 占位内容 → 用真实内容替换“Lorem ipsum”、“Coming soon”、“TBD”
- 用途描述含糊 → 重写说明,具体解释应用为何需要该权限(不要只写“需要摄像头”,而应写“PostureGuard 使用摄像头实时分析坐姿”)
- 硬编码 IPv4 地址 → 将 IP 地址替换为适当的主机名
- HTTP URL → 将
http://改为https:// - 控制台日志 → 移除日志,或用
__DEV__标志控制 - 缺少隐私政策 → 请注意,需要在 App Store Connect 中设置
步骤 3:重新运行并重复
修复问题后,重新运行扫描:
greenlight preflight .
持续重复,直到输出显示 GREENLIT 状态(没有 CRITICAL 发现)。 某些修复可能会引入新问题(例如,添加跟踪 SDK 后需要 ATT)。扫描运行时间不到 1 秒,因此请频繁重新运行。
严重级别
| 级别 | 标签 | 所需操作 |
|---|---|---|
| CRITICAL | 将被拒绝 | 提交前必须修复 |
| WARN | 拒绝风险高 | 应当修复——强烈建议 |
| INFO | 最佳实践 | 可考虑修复——有助于提高获批几率 |
目标始终是:CRITICAL 发现数为零 = GREENLIT 状态。
第 4 步(可选):在运行时验证依赖流程的指南
GREENLIT 表示静态检查已通过,但有些指南只能通过运行流程来确认。静态分析能看到存在 deleteAccount 字符串并因此不再显示 §5.1.1 警告,却无法看出按钮没有连接到任何功能。Apple 会手动测试这些流程,因此仅通过静态检查会让人产生虚假的安全感。
如果项目声称支持依赖流程的功能(创建账户、应用内购买或社交登录),请使用 greenlight verify 在云端设备上进行验证:
# See which flows the app claims and the exact tests that would run — no device needed:
greenlight verify . --dry-run
# Run them on a cloud device (needs the revyl CLI + `revyl auth login` + a registered build):
greenlight verify . --build-name "<your Revyl build>" \
--var email=<test account> --var password=<test password>
# Have a local build that isn't on Revyl yet? Upload it as part of the run with
# --artifact. Revyl runs on cloud simulators, so pass a simulator .app (iOS) or
# an .apk (Android) — NOT a device .ipa. A new --build-name registers a new app.
greenlight verify . --build-name "<your Revyl build>" --artifact ./build/MyApp.app \
--var email=<test account> --var password=<test password>
verify 会通过 Revyl 在设备上运行每个声称支持的流程,并报告:
- VERIFIED — 流程运行正常。
- FAILED — 流程通过了静态分析,但在运行时失败(例如,删除账户流程陷入死胡同、“恢复购买”不起作用、“使用 Apple 登录”按钮无响应)。请修复连接逻辑,而不只是确保字符串存在,然后重新运行。
- SETUP — 无法运行(未通过身份验证、没有构建版本或没有设备)。请解决问题并重试。如果构建版本尚未上传到 Revyl,但你有本地模拟器
.app/.apk,请使用--artifact上传并一步运行。
请将 FAILED 流程视为 CRITICAL:它会导致应用被拒。只有在 preflight 为 GREENLIT 且 verify 未报告任何失败流程时,应用才真正可以提交。
verify是唯一不能离线运行的 greenlight 命令——它需要revylCLI 和 Revyl 账户。如果未安装revyl,或用户尚未设置构建版本,请运行静态检查(第 1–3 步),并说明可以通过 Revyl 进行运行时验证。
其他 CLI 命令
greenlight codescan . # Code-only scan
greenlight privacy . # Privacy manifest scan
greenlight ipa /path/to/build.ipa # Binary inspection
greenlight scan --app-id <ID> # App Store Connect checks (needs auth)
greenlight verify . --dry-run # Runtime flow validation via Revyl (needs revyl CLI)
greenlight guidelines search "privacy" # Search Apple guidelines
关于
Greenlight 由 Revyl 打造——这是一个移动可靠性平台。发现更多问题,而不只是避免应用被拒。在用户发现 bug 之前先将其找出。