Skip to content
Development
Skill

/rejection-handler

Handle 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.

From plugin
rshankras-apple-skills
848181 skills

Claude Code

$ npx -y skills add rshankras/claude-code-apple-skills --skill rejection-handler --agent claude-code

SKILL.md

rejection-handler.SKILL.md
name: rejection-handler
description: Handle 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.
allowed-tools: [Read, Glob, Grep, AskUserQuestion]
last_verified: 2026-11-08
review_by: 2027-06-22
os_version: iOS 27 / macOS 27

App Store Rejection Handler

Guide developers through handling App Store rejections — from understanding why the rejection happened, to crafting effective responses, to escalating when appropriate.

When This Skill Activates

Use this skill when the user:

  • Says their app was rejected by App Review
  • Asks for help understanding a rejection notice
  • Wants to prepare a submission to minimize rejection risk
  • Needs help writing a response in Resolution Center
  • Wants to appeal a rejection decision
  • Asks about common App Store rejection reasons
  • Mentions "App Review", "guideline violation", or "rejection"
  • Wants a pre-submission audit for guideline compliance

Reference Files

Before handling a rejection, load:

| File | Purpose | |------|---------| | **common-rejections.md** | Top 20 rejection reasons with fixes and response templates |

Pre-Submission Audit Checklist

Run through this before submitting to avoid the most common rejections. Each item maps to a specific App Store Review Guideline.

App Completeness (Guideline 2.1)

  • [ ] App launches without crashing on all supported devices
  • [ ] All features described in metadata are functional
  • [ ] No placeholder content (lorem ipsum, test data, TODO screens)
  • [ ] No broken links or dead-end navigation
  • [ ] All buttons and interactive elements work
  • [ ] Demo/test accounts provided in App Review notes if login is required
  • [ ] Beta or test labels removed from UI and metadata

Accurate Metadata (Guideline 2.3)

  • [ ] App name matches what the app actually does
  • [ ] Screenshots show the actual current app UI
  • [ ] Description accurately represents functionality
  • [ ] Category selection is appropriate
  • [ ] No misleading claims ("best", "#1") without substantiation
  • [ ] Age rating reflects actual content
  • [ ] What's New text describes actual changes (not marketing copy)
  • [ ] Keywords do not include competitor names or misleading terms

Software Requirements (Guideline 2.5)

  • [ ] App uses only public APIs (no private frameworks)
  • [ ] No deprecated APIs that are marked for removal
  • [ ] App works on the oldest supported iOS/macOS version claimed
  • [ ] No remote code execution (no downloading and running code)
  • [ ] IPv6 networking compatibility
  • [ ] No hidden, dormant, or undocumented features (2.5.19): everything in the binary is documented and reachable for review, including flag-gated features

In-App Purchase Compliance (Guideline 3.1)

  • [ ] All digital content/features use Apple's IAP (not Stripe, PayPal, etc.)
  • [ ] Physical goods/services CAN use external payment
  • [ ] Subscription terms are clear before purchase
  • [ ] "Restore Purchases" button exists and works
  • [ ] Subscription management is accessible within the app
  • [ ] No language or links directing users to purchase outside the app, except where allowed: the US storefront (no entitlement needed), a StoreKit External Purchase Link Entitlement in its permitted regions and destinations (3.1.1(a)), or a 3.1.3 category such as Reader apps
  • [ ] Free trial terms are clearly stated

Design Quality (Section 4: Design; web wrappers are 4.2)

  • [ ] App uses native UI components (not a web wrapper for existing website)
  • [ ] Supports current device screen sizes
  • [ ] No empty states without guidance
  • [ ] Error messages are user-friendly
  • [ ] Loading states exist for async operations
  • [ ] App provides meaningful functionality (not a glorified bookmark)

Privacy Compliance (Guideline 5.1)

  • [ ] Privacy policy URL is provided and accessible
  • [ ] Privacy policy accurately describes data collection
  • [ ] App Tracking Transparency prompt shown before tracking (if applicable)
  • [ ] Privacy Nutrition Labels in App Store Connect match actual behavior
  • [ ] Data minimization — only collect what you need
  • [ ] User data deletion mechanism exists (if data is collected)
  • [ ] Privacy manifest included (required for certain APIs, iOS 17+)

Legal Requirements (Guideline 5)

  • [ ] App complies with local laws in all territories where distributed
  • [ ] Required age gates for restricted content
  • [ ] Health/medical disclaimers if applicable
  • [ ] Financial disclaimers if applicable

Intellectual Property (Guideline 5.2)

  • [ ] All content is created by you or licensed (5.2)
  • [ ] No unauthorized third-party trademarks, copyrighted works, or patented ideas (5.2.1)
  • [ ] Third-party service terms respected (APIs, streaming, data sources)

App Review Notes (Submission)

  • [ ] Every new feature, functionality, and product change is described specifically (2.3.1(a)). Generic notes are rejected.
  • [ ] Demo account credentials provided (if login required)
  • [ ] Special hardware instructions noted (if needed)
  • [ ] Backend requirements explained (if features need server access)
  • [ ] Explain non-obvious features or flows
  • [ ] Mention any entitlements and why they're needed

Rejection Handling Process

Step 1: Read the Rejection Notice Carefully

When a user reports a rejection, gather:

1. **The exact guideline cited** (e.g., "Guideline 4.2 - Design - Minimum Functionality") 2. **The full rejection message text** (Apple provides specific details) 3. **Any screenshots or annotations** Apple included 4. **Whether this is a first submission or re-submission**

Ask via AskUserQuestion:

  • "Can you paste the full rejection message from App Store Connect?"
  • "Which guideline number was cited?"
  • "Is this the first time this app has been submitted?"
  • "Have you made changes since a previous rejection?"

Step 2: Identify the Rejection

Read more
@rshankras
Ships withrshankras-apple-skills

A collection of Claude Code skills for iOS, macOS, watchOS, visionOS, and Apple platform development. These skills help you plan and build apps, maintain code quality, ensure HIG compliance, and guide you from idea to App Store.

Stars on GitHub

Momentum

stars in total
848
Star history of rshankras/claude-code-apple-skills on GitHub, a chart by star-history.com

Other skills on rshankras-apple-skills.

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills10d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc12d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react1d252k
@facebook@facebookInstall Skill

Questions about rejection-handler.

Which coding agents can use rejection-handler?
rejection-handler installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.