$npx -y skills add rshankras/claude-code-apple-skills --skill rejection-handlerHandle App Store rejections, prepare submissions to avoid common rejection reasons, write Resolution Center responses, and navigate the appeal process. Use when user's app was rejected, is preparing for submission, or needs help with App Review.
| 1 | # App Store Rejection Handler |
| 2 | |
| 3 | Guide developers through handling App Store rejections — from understanding why the rejection happened, to crafting effective responses, to escalating when appropriate. |
| 4 | |
| 5 | ## When This Skill Activates |
| 6 | |
| 7 | Use this skill when the user: |
| 8 | - Says their app was rejected by App Review |
| 9 | - Asks for help understanding a rejection notice |
| 10 | - Wants to prepare a submission to minimize rejection risk |
| 11 | - Needs help writing a response in Resolution Center |
| 12 | - Wants to appeal a rejection decision |
| 13 | - Asks about common App Store rejection reasons |
| 14 | - Mentions "App Review", "guideline violation", or "rejection" |
| 15 | - Wants a pre-submission audit for guideline compliance |
| 16 | |
| 17 | ## Reference Files |
| 18 | |
| 19 | Before handling a rejection, load: |
| 20 | |
| 21 | | File | Purpose | |
| 22 | |------|---------| |
| 23 | | **common-rejections.md** | Top 20 rejection reasons with fixes and response templates | |
| 24 | |
| 25 | ## Pre-Submission Audit Checklist |
| 26 | |
| 27 | Run through this before submitting to avoid the most common rejections. Each item maps to a specific App Store Review Guideline. |
| 28 | |
| 29 | ### App Completeness (Guideline 2.1) |
| 30 | |
| 31 | - [ ] App launches without crashing on all supported devices |
| 32 | - [ ] All features described in metadata are functional |
| 33 | - [ ] No placeholder content (lorem ipsum, test data, TODO screens) |
| 34 | - [ ] No broken links or dead-end navigation |
| 35 | - [ ] All buttons and interactive elements work |
| 36 | - [ ] Demo/test accounts provided in App Review notes if login is required |
| 37 | - [ ] Beta or test labels removed from UI and metadata |
| 38 | |
| 39 | ### Accurate Metadata (Guideline 2.3) |
| 40 | |
| 41 | - [ ] App name matches what the app actually does |
| 42 | - [ ] Screenshots show the actual current app UI |
| 43 | - [ ] Description accurately represents functionality |
| 44 | - [ ] Category selection is appropriate |
| 45 | - [ ] No misleading claims ("best", "#1") without substantiation |
| 46 | - [ ] Age rating reflects actual content |
| 47 | - [ ] What's New text describes actual changes (not marketing copy) |
| 48 | - [ ] Keywords do not include competitor names or misleading terms |
| 49 | |
| 50 | ### Software Requirements (Guideline 2.5) |
| 51 | |
| 52 | - [ ] App uses only public APIs (no private frameworks) |
| 53 | - [ ] No deprecated APIs that are marked for removal |
| 54 | - [ ] App works on the oldest supported iOS/macOS version claimed |
| 55 | - [ ] No remote code execution (no downloading and running code) |
| 56 | - [ ] IPv6 networking compatibility |
| 57 | |
| 58 | ### In-App Purchase Compliance (Guideline 3.1) |
| 59 | |
| 60 | - [ ] All digital content/features use Apple's IAP (not Stripe, PayPal, etc.) |
| 61 | - [ ] Physical goods/services CAN use external payment |
| 62 | - [ ] Subscription terms are clear before purchase |
| 63 | - [ ] "Restore Purchases" button exists and works |
| 64 | - [ ] Subscription management is accessible within the app |
| 65 | - [ ] No language directing users to purchase outside the app |
| 66 | - [ ] Free trial terms are clearly stated |
| 67 | |
| 68 | ### Design Quality (Guideline 4.0) |
| 69 | |
| 70 | - [ ] App uses native UI components (not a web wrapper for existing website) |
| 71 | - [ ] Supports current device screen sizes |
| 72 | - [ ] No empty states without guidance |
| 73 | - [ ] Error messages are user-friendly |
| 74 | - [ ] Loading states exist for async operations |
| 75 | - [ ] App provides meaningful functionality (not a glorified bookmark) |
| 76 | |
| 77 | ### Privacy Compliance (Guideline 5.1) |
| 78 | |
| 79 | - [ ] Privacy policy URL is provided and accessible |
| 80 | - [ ] Privacy policy accurately describes data collection |
| 81 | - [ ] App Tracking Transparency prompt shown before tracking (if applicable) |
| 82 | - [ ] Privacy Nutrition Labels in App Store Connect match actual behavior |
| 83 | - [ ] Data minimization — only collect what you need |
| 84 | - [ ] User data deletion mechanism exists (if data is collected) |
| 85 | - [ ] Privacy manifest included (required for certain APIs, iOS 17+) |
| 86 | |
| 87 | ### Legal Requirements (Guideline 5.2) |
| 88 | |
| 89 | - [ ] App complies with local laws in all territories where distributed |
| 90 | - [ ] Required age gates for restricted content |
| 91 | - [ ] Health/medical disclaimers if applicable |
| 92 | - [ ] Financial disclaimers if applicable |
| 93 | |
| 94 | ### App Review Notes (Submission) |
| 95 | |
| 96 | - [ ] Demo account credentials provided (if login required) |
| 97 | - [ ] Special hardware instructions noted (if needed) |
| 98 | - [ ] Backend requirements explained (if features need server access) |
| 99 | - [ ] Explain non-obvious features or flows |
| 100 | - [ ] Mention any entitlements and why they're needed |
| 101 | |
| 102 | ## Rejection Handling Process |
| 103 | |
| 104 | ### Step 1: Read the Rejection Notice Carefully |
| 105 | |
| 106 | When a user reports a rejection, gather: |
| 107 | |
| 108 | 1. **The exact guideline cited** (e.g., "Guideline 4.2 - Design - Minimum Functionality") |
| 109 | 2. **The full rejection message text** (Apple provides specific details) |
| 110 | 3. **Any screenshots or annotations** Apple included |
| 111 | 4. **Whether this is a first submission or re-submission** |
| 112 | |
| 113 | Ask via AskUserQuestion: |
| 114 | - "Can you paste the full rejection |