mcpField
G
greenlight

greenlight

github.com/revylai测试与质量2.5k342 次安装12 周前更新
代码仓库

关于 greenlight

面向 Claude Code 的 iOS App Store 提交准备 Skill,可运行 Greenlight 合规扫描并按严重程度指导修复,也可通过 Revyl 验证应用流程。

主要功能

  1. 01运行提交前合规扫描
  2. 02按严重程度排列问题
  3. 03指导修复常见问题
  4. 04通过 Revyl 验证应用流程
  5. 05检查隐私清单和 IPA

适用场景

  1. 01提交前检查 iOS 应用
  2. 02处理严重及警告问题
  3. 03测试账户、购买或登录流程
  4. 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:查看输出并修复所有问题

每条发现都包含严重级别、指南参考、文件位置和修复建议。按以下顺序修复:

  1. CRITICAL — 将被拒绝。必须修复。
  2. WARN — 拒绝风险高。应当修复。
  3. 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 命令——它需要 revyl CLI 和 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 之前先将其找出。

评论

支持 Markdown