Skip to content
Code Review
Skill

/app-store-review-skill

Evaluates code against Apple's App Store Review Guidelines. Use this skill when reviewing iOS, macOS, tvOS, watchOS, or visionOS app code (Swift, Objective-C, React Native, or Expo) to identify potential App Store rejection issues before submission. Triggers on tasks involving

From plugin
app-store-review
2671 skill
Install
$ npx -y skills add safaiyeh/app-store-review-skill --skill app-store-review-skill --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition โ†’
  • You can call itInvoke it directly when you want it.
  • Slash command/app-store-review-skill

Context preview

The summary Claude sees to decide when to auto-load this skill.

Evaluates code against Apple's App Store Review Guidelines. Use this skill when reviewing iOS, macOS, tvOS, watchOS, or visionOS app code (Swift, Objective-C, React Native, or Expo) to identify potential App Store rejection issues before submission. Triggers on tasks involving

SKILL.md

app-store-review-skill.SKILL.md
name: app-store-review
description: Evaluates code against Apple's App Store Review Guidelines. Use this skill when reviewing iOS, macOS, tvOS, watchOS, or visionOS app code (Swift, Objective-C, React Native, or Expo) to identify potential App Store rejection issues before submission. Triggers on tasks involving app review preparation, compliance checking, or App Store submission readiness.
license: MIT
metadata:
  author: safaiyeh
  version: "1.1.1"

App Store Review Guidelines Checker

Comprehensive guide for evaluating iOS, macOS, tvOS, watchOS, and visionOS app code against Apple's App Store Review Guidelines. This skill covers EVERY guideline point to identify potential rejection issues before submission.

**Supports:** Swift, Objective-C, React Native, and Expo apps

**Guidelines current through:** Apple's June 8, 2026 App Review Guidelines update.

When to Apply

Use this skill when:

  • Preparing an app for App Store submission
  • Reviewing code for compliance issues
  • Implementing features that may trigger review concerns
  • Auditing existing apps for guideline violations
  • Building features involving payments, user data, or sensitive content

Guideline Sections

Read individual rule files for detailed explanations, checklists, and code examples:

| Section | File | Key Topics | |---------|------|------------| | **1. Safety** | [rules/1-safety.md](rules/1-safety.md) | Objectionable content, UGC moderation, Kids Category, physical harm, data security | | **2. Performance** | [rules/2-performance.md](rules/2-performance.md) | App completeness, metadata accuracy, hardware compatibility, software requirements | | **3. Business** | [rules/3-business.md](rules/3-business.md) | In-app purchase, subscriptions, cryptocurrencies, other business models | | **4. Design** | [rules/4-design.md](rules/4-design.md) | Copycats, minimum functionality, spam, extensions, Apple services, login | | **5. Legal** | [rules/5-legal.md](rules/5-legal.md) | Privacy, data collection, intellectual property, gambling, VPN, MDM, developer code of conduct |

Risk Levels by Category

| Risk Level | Category | Section | Common Rejection Reasons | |------------|----------|---------|--------------------------| | CRITICAL | Privacy & Data | 5.1 | Missing privacy policy, unauthorized data collection | | CRITICAL | Payments | 3.1 | Bypassing in-app purchase, unclear pricing | | HIGH | Safety | 1.x | Objectionable content, inadequate UGC moderation | | HIGH | Performance | 2.x | Crashes, incomplete features, deprecated APIs | | MEDIUM | Design | 4.x | Copycat apps, minimum functionality issues | | MEDIUM | Legal | 5.x | IP violations, gambling without license |

---

Quick Reference: High-Risk Rejection Patterns

Critical Issues (Immediate Rejection)

**Swift:**

// ๐Ÿ”ด Private API usage
let selector = NSSelectorFromString("_privateMethod")

// ๐Ÿ”ด Hardcoded secrets
let apiKey = "sk_live_xxxxx"

// ๐Ÿ”ด External payment for digital goods
func purchaseDigitalContent() {
    openStripeCheckout() // Use StoreKit instead
}

**React Native / Expo:**

// ๐Ÿ”ด Hardcoded secrets in JS bundle
const API_KEY = 'sk_live_xxxxx'; // REJECTION

// ๐Ÿ”ด External payment for digital goods
Linking.openURL('https://stripe.com/checkout'); // Use react-native-iap

// ๐Ÿ”ด Dynamic code execution
eval(downloadedCode); // REJECTION

// ๐Ÿ”ด Major feature changes via CodePush/expo-updates
// OTA updates for bug fixes only, not new features!

High-Risk Issues

**Swift:**

// ๐ŸŸก Missing ATT when using ad SDKs
import FacebookAds // Without ATTrackingManager

// ๐ŸŸก Account creation without deletion
func createAccount() { } // But no deleteAccount()

**React Native / Expo:**

// ๐ŸŸก Missing ATT (use expo-tracking-transparency)
import analytics from '@react-native-firebase/analytics';
analytics().logEvent('event'); // Without ATT prompt = REJECTION

// ๐ŸŸก Account deletion via website only
Linking.openURL('https://example.com/delete'); // Must be in-app!

// ๐ŸŸก Social login without a privacy-preserving alternative (4.8)
<GoogleSigninButton /> // Also offer a login meeting 4.8 criteria
                       // (Sign in with Apple is the simplest option)

// ๐ŸŸก Custom review prompts (5.6.1)
showCustomAlert('Rate us 5 stars!'); // Use StoreReview.requestReview()

Medium-Risk Issues

// ๐ŸŸ  Vague purpose strings in Info.plist
"This app needs camera access" // Be specific!

// ๐ŸŸ  WebView-only app (insufficient native functionality)
const App = () => <WebView source={{ uri: 'https://site.com' }} />;

// ๐ŸŸ  References to Android in iOS app
const text = "Also available on Android"; // REJECTION

// ๐ŸŸ  console.log in production
console.log('debug'); // Remove or wrap in __DEV__

---

Pre-Submission Checklist

Privacy (Section 5.1)

  • [ ] Privacy policy link in App Store Connect
  • [ ] Privacy policy link accessible within app
  • [ ] All purpose strings are specific and accurate
  • [ ] App Privacy details completed in App Store Connect
  • [ ] ATT implemented if tracking users
  • [ ] Account deletion available if accounts exist
  • [ ] Data minimization - only requesting necessary permissions
  • [ ] User consent obtained before data collection

Payments (Section 3.1)

  • [ ] StoreKit used for all digital purchases
  • [ ] Restore purchases implemented
  • [ ] Subscription terms clearly displayed
  • [ ] Loot box odds disclosed if applicable
  • [ ] No external payment for digital goods (unless entitled)
  • [ ] Credits/currencies don't expire

Safety (Section 1.x)

  • [ ] No objectionable content
  • [ ] UGC moderation implemented (filter, report, block, contact)
  • [ ] UGC violations can be removed quickly and backed by a remediation plan
  • [ ] Kids and teens receive age-appropriate experiences inside the app
  • [ ] Parental gates for Kids Category apps
  • [ ] No false information or prank features
  • [ ] Medical disclaimers if applicable
  • [ ] No substance promotion

Performanc

Read more
Ships withapp-store-review

An AI agent skill that exhaustively evaluates iOS, macOS, tvOS, watchOS, and visionOS app code against every point in Apple's App Store Review Guidelines.

Get the whole plugin
Stats
282
Stars
10
Forks
Active
Maintenance
MIT
License
6d ago
Last commit
6mo ago
Created

Repo: safaiyeh/app-store-review-skill

In this plugin
See everything inside