shipcheck is a Claude Code plugin for React Native and Expo apps. It reads your project and store listing, checks them against the live App Store Review Guidelines and Google Play policies, and tells you the clause, the reviewer's likely wording, and the fix.
$ /shipcheck:scan shipcheck · guidelines fetched 2026-09-05 · risk 71/100 HIGH 5.1.1(v) Account deletion not found Reviewer will say: "Your app supports account creation but does not include an option to initiate account deletion." Fix: add a Delete account action under Settings → Account that calls DELETE /v1/users/me, then confirm in review notes. HIGH ITMS-91053 Privacy manifest does not declare FileTimestamp Used by expo-file-system. Upload is rejected before review. Fix: add an NSPrivacyAccessedAPITypes entry with reason C617.1. MED 3.1.2 Paywall shows price but not renewal period Fix: "$39.99 / year, renews automatically. Cancel anytime in Settings." PASS 4.8 Sign in with Apple present · 2.1 no placeholder text · 1024px icon has no alpha · export compliance key set 6 more findings in the full report. Run /shipcheck:unlock to add a license.
/plugin marketplace add BakerVentures/shipcheck
Runs inside your own Claude Code. Your code never leaves your machine.
Apple's App Review team evaluated 9.1 million submissions in 2025 and rejected over 2 million of them — including 443,000+ for privacy violations alone. (Apple Newsroom, May 2026)
The guideline corpus is fetched live and cached with a date and hash, so you're never checking against last year's rules. /shipcheck:refresh shows you what Apple changed since your last scan.
The deterministic half — everything except store-listing judgment — is a zero-dependency CLI, so it runs in CI or under any other agent.
git clone https://github.com/BakerVentures/shipcheck && shipcheck/bin/shipcheck scan .
Exits 1 on a critical finding, so it gates a pipeline.
# .github/workflows/shipcheck.yml
- uses: BakerVentures/shipcheck@v1
with:
fail-on: critical
The judgment checks — store listing, paywall disclosure, category rules, guideline 4.2 — need a model reading current guideline text, so those stay in the Claude Code plugin, where your own Claude does that work at no cost to us.
Paste the Resolution Center message into /shipcheck:reply. It reads the cited guideline, checks what you've changed, and drafts the reply in the register reviewers actually respond to. If the fix isn't actually in the code yet, it says so and makes it — it won't draft a reply claiming something that isn't true.
Yes — several. The deterministic code and config checks are table stakes now and free everywhere, including in shipcheck's own free scan. What the free tools can't reach is your actual store listing: the description, screenshots, paywall copy, and demo account you're about to paste into App Store Connect, a whole rejection surface (guideline 2.3.x) that a code scanner cannot see at all. See the measured comparison against greenlight and five other free Claude Code checkers →
There is no checkout yet, so none of the paid tiers can be bought today. The free scan is the whole product right now: a risk score and your top three findings, with the clause text and the fix. The prices below are what the paid tiers will cost when payment is set up, not an offer.
Full report, unlimited rescans, Resolution Center reply drafts.
Not on sale yetEverything above across every project you ship.
Not on sale yetNeed team seats? $149/yr — unlimited apps, shareable across your team, priority guideline updates. Not on sale yet.
--offline); and, if you buy a license, a key check carrying your key, the plugin version, and an opaque per-app token. No project path, dependency list, source, metadata, or finding is ever transmitted — _payload() in scripts/license.py is the entire request body, so you can check rather than trust me./shipcheck:refresh shows you exactly what changed since your last scan. A citation in your report is text it actually fetched, not text a model remembered.