Catch review problems before submission. When Apple rejects a build, know what to fix and what to say.
app-store-review reads an iOS or iPadOS project and looks for evidence that can cause trouble during App Review. Use it before submission, after a rejection, or when an app feels too close to a template. It detects Xcode, Expo, React Native, and Flutter projects. The first pass is read-only. You get the report first, then a grouped fix plan if you want one. The policy references were verified on July 17, 2026 and include Apple's June 8, 2026 change to Guideline 4.3(b). Recovery advice keeps Apple's published rules separate from documented developer cases, observed patterns, and inference.
A build can work on your phone and still be difficult for App Review. A widget may have no privacy manifest. The camera call may not match a purpose string. Account deletion may stop at the app instead of the server. Review notes may leave the reviewer with no usable path.
Guideline 4.3 needs a different kind of review. A clean build can still look generic, copied, or unfinished. This skill checks the parts Apple can actually review, such as product depth, asset reuse, template provenance, microcopy, missing states, accessibility, and the App Store product page. It does not claim to detect AI-written code.
Install for Codex, Claude Code, or another compatible agent:
npx skills add ElxMaj/app-store-review-skillInstall the managed Tessl release:
npx tessl install maj-labs/app-store-reviewInstall as a Claude Code marketplace plugin:
/plugin marketplace add ElxMaj/app-store-review-skill
/plugin install app-store-review@app-store-review-skill
Then use normal language:
Audit this Expo app before submission. Report first and do not edit files.
Apple rejected build 42 under 4.3(a). Find the cause and draft my reply.
Run the human-craft audit. Show me what feels generic or unfinished.
The scanner finds the project type and native targets, then collects file-level evidence. It checks permission strings, privacy manifests, Required Reason APIs, dynamic code, account deletion, Sign in with Apple, IAP restore paths, ATT, third-party AI consent, placeholders, shipped internal files, and optional exact asset reuse. Manual checks cover the areas source code cannot prove, including App Store metadata, privacy answers, purchases, reviewer access, iPad behavior, and error states.
The rejection message is kept exactly as Apple wrote it. The skill classifies the next step as FIX, CLARIFY, APPEAL, or REQUEST INTERPRETATION. For 4.3 cases, it separates portfolio duplication from the indistinguishable-app test, ranks possible remediation by evidence quality, includes a framework false-positive response, and prepares a Resolution Center reply with exact navigation, build details, and attachments to include.
The app is graded across product distinction, provenance, visual identity, microcopy and states, and product-page specificity. Grades are DISTINCT, CREDIBLE, GENERIC, HIGH RISK, or UNVERIFIED. The aim is to improve a thin or generic app, not hide it with a new color palette.
The reviewed JSON becomes a self-contained editorial report, not a dashboard. It uses the system font, one verdict accent, precise rules, light and dark appearances, phone-width reflow, and clean print output. The visual pass applies the same Apple design rules even when the optional design skill is not installed.
Every finding shows what was found, where it was found, why it matters, what to change, and how to verify it. Reports also come as readable Markdown and stable JSON. Scanner findings keep stable IDs for CI, issue reports, and later audits.
- Discover: find the framework, native iOS project, app targets, extensions, configuration sources, and available archive.
- Scan: run deterministic checks and collect paths, lines, plist keys, package signals, and exact file matches.
- Review: inspect each result, remove false positives, and walk the parts that need a person or a real build.
- Report: give a verdict, evidence confidence, reviewer checklist, App Review Notes draft, and approval-required fix groups.
The scanner gathers evidence. It does not make the final judgment by itself. Missing context stays a MANUAL CHECK instead of becoming a fake defect.
| Guideline family | What is reviewed |
|---|---|
| 2.1 | Crashes, placeholders, demo access, broken paths, network behavior, and iPad reviewability |
| 2.3 | Build-to-metadata accuracy, screenshots, keywords, age rating, and purchase claims |
| 3.1 | Digital purchases, paywall terms, StoreKit pricing, trials, and restoration |
| 4.2 / 4.3 | Minimum functionality, templates, portfolio duplication, provenance, and distinct value |
| 5.1 | Purpose strings, privacy manifests, deletion, ATT, labels, and third-party AI consent |
| 1.2 | UGC filtering, reporting, blocking, contact details, moderation, and anonymous chat |
references/research-prompt.md is a ready-to-run quarterly research prompt. It checks official policy changes and refreshes rejection evidence without treating unresolved reports as successful recovery. New cases must include the guideline, Apple's wording when available, the response, the outcome, the date, and a source URL.
SKILL.md Main workflow and review rules
references/ Policy, recovery, craft, framework, and report guidance
scripts/app_store_review_scan.py Read-only deterministic scanner
scripts/render_app_store_report.py Self-contained visual HTML renderer
scripts/tests/ Scanner regression tests
evals/ Behavior and trigger cases
assets/ README visuals
examples/ Sample JSON and rendered visual report
skills/app-store-review/ Cross-agent compatibility entry point
.claude-plugin/ Claude Code marketplace files
.codex-plugin/ Codex plugin manifest
.tessl-plugin/ Tessl registry manifest
Real rejection cases and false-positive reports are welcome. Read CONTRIBUTING.md before opening an issue or pull request. Do not publish credentials, signing material, personal data, or private app details.
Built by Elie, a product design engineer. Published by Maj Labs.
This project checks publicly available Apple guidance and clearly labeled community evidence. It cannot guarantee approval, does not contact Apple for you, and is not affiliated with or endorsed by Apple Inc.
Licensed under the MIT License.
