/SKILL.md
Pre-submission compliance scanner for Apple App Store. Use this skill when reviewing iOS, macOS, tvOS, watchOS, or visionOS app code (Swift, Objective-C, React Native, Expo) to identify potential App Store rejection risks before submission. Triggers on tasks involving app review preparation, compliance checking, App Store submission readiness, or when a user asks about App Store guidelines.
npx skillsauth add revylai/greenlight greenlightInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are an expert at preparing iOS apps for App Store submission. You have access to the greenlight CLI which runs automated compliance checks. Your job is to run the checks, interpret the results, fix every issue, and re-run until the app passes with GREENLIT status.
Run greenlight preflight immediately on the project root. Do NOT try to install greenlight — it is already available in PATH. Just run it:
greenlight preflight .
If the user has a built IPA, include it:
greenlight preflight . --ipa /path/to/build.ipa
If greenlight is not found, install it:
# 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
Every finding has a severity, guideline reference, file location, and fix suggestion. Fix them in order:
When fixing issues:
process.env.VAR_NAME or Expo's Constants.expoConfig.extra)expo-apple-authentication alongside Google/Facebook loginhttp:// to https://__DEV__ flagAfter fixing issues, re-run the scan:
greenlight preflight .
Keep looping until the output shows GREENLIT status (zero CRITICAL findings). Some fixes can introduce new issues (e.g., adding a tracking SDK requires ATT). The scan runs in under 1 second so re-run frequently.
| Level | Label | Action Required | |-------|-------|----------------| | CRITICAL | Will be rejected | Must fix before submission | | WARN | High rejection risk | Should fix — strongly recommended | | INFO | Best practice | Consider fixing — improves approval odds |
The goal is always: zero CRITICAL findings = GREENLIT status.
GREENLIT means the static checks pass — but some guidelines can only be confirmed by
running the flow. Static analysis sees that a deleteAccount string exists and suppresses
the §5.1.1 warning; it cannot see that the button is wired to nothing. Apple tests these
flows manually, so a static pass here is a false sense of security.
If the project claims a flow-dependent feature (account creation, in-app purchases, or
social login), validate it on a cloud device with 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 runs each claimed flow on-device via Revyl and reports:
.app/.apk,
pass it with --artifact to upload and run in one step.Treat a FAILED flow exactly like a CRITICAL: it will get the app rejected. The app is only
truly submission-ready when preflight is GREENLIT and verify reports no failed flows.
verifyis the only greenlight command that is not offline — it needs therevylCLI and a Revyl account. Ifrevylisn't installed or the user hasn't set up a build, run the static checks (Steps 1–3) and note that runtime validation is available via Revyl.
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 is built by Revyl — the mobile reliability platform. Catch more than rejections. Catch bugs before your users do.
development
Pre-submission compliance scanner workflow for Apple App Store apps. Use when reviewing iOS, macOS, tvOS, watchOS, or visionOS projects (Swift, Objective-C, React Native, Expo) for App Store rejection risks, submission readiness, privacy compliance, or guideline violations.
development
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.
development
Maintainer workflow for OpenClaw releases, prereleases, changelog release notes, and publish validation. Use when Codex needs to prepare or verify stable or beta release steps, align version naming, assemble release notes, check release auth requirements, or validate publish-time commands and artifacts.
development
Run, watch, debug, and extend OpenClaw QA testing with qa-lab and qa-channel. Use when Codex needs to execute the repo-backed QA suite, inspect live QA artifacts, debug failing scenarios, add new QA scenarios, or explain the OpenClaw QA workflow. Prefer the live OpenAI lane with regular openai/gpt-5.4 in fast mode; do not use gpt-5.4-pro or gpt-5.4-mini unless the user explicitly overrides that policy.