Agent skill

App Rejection Recovery

by appeeky in appeeky/aso-skills

When the user's app or update was rejected by Apple App Review or Google Play Review and they need to diagnose why, fix it, and resubmit fast.

MITAuto-check passedMobile

Install App Rejection Recovery

skills CLI
$ npx skills add appeeky/aso-skills --skill app-rejection-recovery -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install appeeky/aso-skills app-rejection-recovery --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/appeeky/aso-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/app-rejection-recovery .claude/skills/app-rejection-recovery && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
app-rejection-recovery
GitHub stars
2.2k
Token cost
~2.4k tokens
SKILL.md length
963 words
Files
1
Skills in repo
39
Repo updated
First seen
Licence
MIT

At a glance

When the user's app or update was rejected by Apple App Review or Google Play Review and they need to diagnose why, fix it, and resubmit fast.

  • Works in 6 steps: Ask the user to paste the full rejection… → Ask: App Store, Play Store, or both? → Ask: First submission or update? (First… → …
  • Update was rejected by Apple App Review
  • SKILL.md covers Initial Assessment, Apple Rejection Taxonomy, Common Rejection → Fix Playbook and Google Play Rejection Taxonomy, plus 6 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

App Rejection Recovery is an agent skill from appeeky/aso-skills. When the user's app or update was rejected by Apple App Review or Google Play Review and they need to diagnose why, fix it, and resubmit fast. Use when the user mentions "app rejected", "App Review rejection", "guideline violation", "Apple rejected my app", "Google Play rejected", "Play policy violation", "Resolution Center", "metadata rejection", "binary rejection", "guideline 2.1", "guideline 4.3", "guideline 5.1.1", "Sign in with Apple required", "Apple ID rejection", "Play Store suspension", "appeal", "I need…

Its SKILL.md is about 2.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Mobile, covering App store release and Customer feedback analysis. The repository describes itself as: AI agent skills for App Store Optimization (ASO) and app marketing. Built for indie developers, app marketers, and growth teams who want Cursor, Claude Code, or any Agent… The licence is MIT.

When your agent uses it

  • Update was rejected by Apple App Review
  • Google Play Review and they need to diagnose why
  • The user mentions app rejected
  • App Review rejection

Example prompts

  • “app rejected”
  • “App Review rejection”
  • “guideline violation”
  • “/app-rejection-recovery”

Workflow steps

6 steps, taken from the first numbered list in SKILL.md.

  1. Ask the user to paste the full rejection message verbatim — including the guideline number(s)
  2. Ask: App Store, Play Store, or both?
  3. Ask: First submission or update? (First submissions are scrutinized harder)
  4. Ask: App ID and app category
  5. Ask: What was changed in this version vs the last approved version (for updates)
  6. Ask: Is this time-sensitive (launch date, marketing tied)?

What it can do on your machine

Read from SKILL.md and the folder at commit 3919d7c. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

App Rejection Recovery loads about 2.4k tokens when it runs. Until then it costs about 173 tokens; SKILL.md has 963 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~173
When it runs · the whole SKILL.md, loaded when a task matches
~2.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from appeeky/aso-skills at commit 3919d7c, republished under its MIT licence (© appeeky). 963 words, ~2,376 tokens.

Download SKILL.mdSave it as .claude/skills/app-rejection-recovery/SKILL.md (or your agent's skills folder).
name
app-rejection-recovery
description
When the user's app or update was rejected by Apple App Review or Google Play Review and they need to diagnose why, fix it, and resubmit fast. Use when the user mentions "app rejected", "App Review rejection", "guideline violation", "Apple rejected my app", "Google Play rejected", "Play policy violation", "Resolution Center", "metadata rejection", "binary rejection", "guideline 2.1", "guideline 4.3", "guideline 5.1.1", "Sign in with Apple required", "Apple ID rejection", "Play Store suspension", "appeal", "I need to respond to App Review", or "expedited review". For pre-submission listing health, see aso-audit. For metadata-only fixes, see metadata-optimization.
metadata.version
1.0.0

App Rejection Recovery

You are an App Review specialist. Your goal is to diagnose the rejection, write a clean response (or appeal), fix the underlying issue, and get the user resubmitted within 24–72 hours.

Initial Assessment

  1. Ask the user to paste the full rejection message verbatim — including the guideline number(s)
  2. Ask: App Store, Play Store, or both?
  3. Ask: First submission or update? (First submissions are scrutinized harder)
  4. Ask: App ID and app category
  5. Ask: What was changed in this version vs the last approved version (for updates)
  6. Ask: Is this time-sensitive (launch date, marketing tied)?

Do not start writing the fix until you've classified the rejection type below.

Apple Rejection Taxonomy

Map the guideline number to the bucket:

GuidelineBucketTypical fix
2.1Performance / completenessTest on physical device, fix crashes, add missing demo content
2.3.xAccurate metadataMatch screenshots to actual app, remove unsupported devices, fix description
2.5.xSoftware requirementsUse approved APIs only, fix private API use, fix HealthKit/SiriKit misuse
3.1.1In-app purchaseUse IAP for digital goods, no external payment links
3.1.2SubscriptionsAuto-renewal disclosure, restore purchases, terms link
3.2.2Unacceptable business modelMulti-level marketing, scams, etc.
4.0DesignSpam, copycat UI, broken layouts
4.2Minimum functionalityWeb wrappers, "thin" apps, brochureware
4.3SpamDuplicate of own/other app — most common rejection
4.5.xApple sites and servicesWrong logo use, push notification misuse
5.1.1Privacy / data collectionPrivacy policy URL, data collection disclosure, ATT prompt copy
5.1.2Data use & sharingMatch privacy nutrition labels to actual collection
5.1.5Location servicesJustify "Always" location, ATT-style strings
5.1.7Health & medicalDisclaimers, no diagnostic claims without FDA
5.2.xIntellectual propertyTrademark/IP holder permission required
5.3.xGaming, gambling, lotteriesLicense requirements
5.6.1Developer code of conductSpam, fake reviews, manipulation

Common Rejection → Fix Playbook

Guideline 2.1 — Crashes / incomplete functionality

Fix:

  1. Read the device + iOS version Apple tested on
  2. Reproduce on that exact config (or closest available)
  3. Provide demo account + walkthrough video in Resolution Center if reproduction is environmental
  4. If crash: ship fixed binary, note exact line in response
Guideline 2.3.10 — Inaccurate metadata / screenshots

Fix: Replace any screenshot showing UI that doesn't exist in the binary, remove "iPad" mentions if iPad isn't supported, remove third-party trademarks from screenshots.

Guideline 3.1.1 — IAP required

Fix: Remove links to external payment, remove "Buy on web" CTAs, use StoreKit. (Since 2024, US users can have External Purchase Link Entitlement — note this is opt-in and requires entitlement request.)

Guideline 4.3 — Design spam (duplicate)

Fix: Hardest rejection to recover from. Steps:

  1. Identify which app(s) yours is being compared to
  2. Differentiate substantially: unique features, unique branding, distinct value prop in metadata
  3. If it's your own portfolio: consolidate or kill old apps
  4. If first submission, expect this is permanent unless you fundamentally change the app
Guideline 5.1.1 — Privacy

Fix:

  1. Privacy policy URL must be live, accessible, app-specific
  2. App Privacy section in ASC must accurately list every SDK's data collection
  3. ATT prompt string must be specific (not generic "improve the app")
  4. NSUsageDescription strings must explain WHY, not just what
Guideline 5.1.5 — Location

Fix: "Always" location requires the app to demonstrably need background location. Most apps should request "When In Use" only. Update Info.plist + prompt copy.

Show full SKILL.md (422 more words)Show less

Google Play Rejection Taxonomy

PolicyBucketTypical fix
Restricted ContentSexual content, hate, violenceContent moderation, age gate
Privacy, Deception, Device AbuseDisclosure, permissionsPrivacy policy, accurate Data Safety form
Intellectual PropertyTrademark, copyrightGet rights or remove
Monetization & AdsDisruptive ads, IAP bypassUse Play Billing
Store Listing & PromotionMisleading metadataMatch listing to app
Spam & Minimum FunctionalityRepetitive content, low qualityAdd unique value
FamiliesApps for kidsCOPPA/GDPR-K compliance, ad SDK whitelist
PermissionsHigh-risk permsRemove or justify (Special Permissions Declaration form)
Health misinformationMedical claimsAdd disclaimers, provide credentials
Foreground servicesBackground workJustify in Play Console form

Play also has automated suspensions (no human review). For these, use the Play Console appeal form with a written justification.

The Resolution Center Response Template

A good response gets re-reviewed in 24h. Use this exact structure:

Hello App Review Team,

Thank you for the feedback regarding guideline <X.Y.Z>.

UNDERSTANDING:
We understand the issue is <one sentence describing what they flagged>.

CHANGES MADE:
1. <specific change>
2. <specific change>
3. <specific change>

DEMO INFO (if applicable):
  Username: demo@example.com
  Password: <password>
  Steps to test: <numbered steps>
  Walkthrough video: <URL if needed>

We have submitted build <X.Y.Z (build N)> with these changes. Please let us know if any further information is needed.

Thank you,
<Name>

Rules:

  • Never argue the guideline. Acknowledge it.
  • Never resubmit the same binary with only a metadata change unless that was the issue.
  • Always reference the new build number.
  • Provide demo creds even if your app doesn't need login for some flows — anything to reduce reviewer friction.

When to Appeal vs Fix

SituationAction
Reviewer applied guideline incorrectlyAppeal via App Review Board (Apple) — be polite, factual, brief
Reviewer mis-tested (e.g. wrong device)Respond in Resolution Center with reproduction info; no formal appeal needed
Guideline 4.3 spam — first timeFix and resubmit with substantial differentiation; don't appeal
Sub-policy you genuinely meet but were dinged onAppeal with evidence (screenshots, code references)
5.6.1 developer account threats / suspensionAppeal immediately, provide context, don't ignore

Apple's App Review Board response time: 5–10 business days. Don't appeal trivial issues — fix and resubmit is faster.

Expedited Review (Apple)

Apply via App Store Connect → Contact Us → App Review → Expedited Request. Valid reasons:

  • Critical bug fix affecting users
  • Time-sensitive event (launch tied to date, partner integration)
  • Security fix

Don't request for marketing reasons — Apple denies and may flag your account.

Output Template

REJECTION DIAGNOSIS — <App Name>

REJECTION TYPE:
  Platform: Apple / Google
  Guideline / Policy: <number>
  Bucket: <category from playbook>
  Severity: low / medium / high (fix complexity)

ROOT CAUSE:
  <one paragraph in plain English>

FIX PLAN:
  Code changes: <list>
  Metadata changes: <list>
  Configuration changes (Info.plist, ASC settings): <list>
  Estimated effort: <hours>

RESOLUTION CENTER RESPONSE (draft):
  <use template above>

RESUBMISSION CHECKLIST:
  [ ] Tested on device Apple tested on
  [ ] Demo account verified
  [ ] Build number incremented
  [ ] Privacy nutrition labels match
  [ ] Response posted in Resolution Center
  [ ] Expedited review requested (if justified)

POST-RESUBMISSION:
  - Expected re-review: 24-48h Apple / variable Google
  - If rejected again: <next escalation step>

Prevent Future Rejections

After resolving, run aso-audit to catch the next likely rejection before submission. Common pre-submission checks:

  • Test on oldest supported iOS / Android version
  • All NSUsageDescription strings written for humans
  • Privacy policy URL live and matches in-app collection
  • No third-party logos/trademarks in screenshots
  • No "BETA", "BUG FIXES", or generic descriptions
  • Demo account ready and seeded with realistic data
  • Sign in with Apple offered alongside any third-party social login

Cross-Skill Handoffs

  • After approval, optimize the listing → aso-audit
  • Privacy nutrition labels need overhaul → metadata-optimization (description) + manual ASC update
  • Rejection caused by paywall flow → paywall-optimization
  • Rejection caused by onboarding permission prompt → onboarding-optimization

© appeeky, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/app-rejection-recovery of appeeky/aso-skills.

Open the folder on GitHubat commit 3919d7c

Compare with similar skills

App Rejection Recovery next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

App Rejection Recovery compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
App Rejection Recovery this skillappeeky/aso-skills2.2k—~2.4kAutomated safety check: PassMIT
Pp Ascmvanhorn/printing-press-library2.1k—~6.5kAutomated safety check: NotesApache-2.0
Publish App Store VersionKeeForge/KeeForge117—~3.5kAutomated safety check: PassGPL-3.0
Testflightkmworks/kmreader113—~403Automated safety check: PassMIT
Replica EntrepreneurJakeschincariol/replica-skill1.4k—~1.2kAutomated safety check: PassMIT
Review Miningshawnpang/startup-founder-skills343—~1.5kAutomated safety check: PassMIT

Similar skills

  • Pp Asc

    mvanhorn/printing-press-library

    A read-only App Store Connect cockpit that shows every app you ship at once — review state, builds, downloads, and ratings in one glance.

    2.1k GitHub stars~6.5k tokensUpdated yesterday
    MobileAuto-check: notes
  • Publish App Store Version

    KeeForge/KeeForge

    Prepare and publish an already-built KeeForge iOS or macOS version through the App Store Connect API using an API key.

    117 GitHub stars~3.5k tokensUpdated today
    MobileAuto-check passed
  • Testflight

    kmworks/kmreader

    Distribute KMReader builds to TestFlight groups via the asc CLI.

    113 GitHub stars~403 tokensUpdated today
    MobileAuto-check passed
  • Replica Entrepreneur

    Jakeschincariol/replica-skill

    Researches the app being cloned and reads what its real users say in public reviews (App Store, Google Play, G2, Capterra, Trustpilot, Reddit, Hacker News, its own feature-request board), then ranks…

    1.4k GitHub stars~1.2k tokensUpdated 8 days ago
    Sales & SupportAuto-check passed
  • Review Mining

    shawnpang/startup-founder-skills

    When the user wants to research customer pain points, complaints, or sentiment using review platforms like Trustpilot, G2, Capterra, or app stores.

    343 GitHub stars~1.5k tokensUpdated 6 mo ago
    Sales & SupportAuto-check passed
  • Shopify Policy Guardrails

    jeremylongshore/tons-of-skills-marketplace

    Implement Shopify app policy enforcement with ESLint rules for API key detection, query cost budgets, and App Store compliance checks.

    2.8k GitHub stars~1k tokensUpdated yesterday
    AI & LLM EngineeringAuto-check: notes

More from appeeky/aso-skills

All 39 skills in this repo
  • Ab Test Store Listing

    appeeky/aso-skills

    When the user wants to A/B test App Store product page elements to improve conversion rate.

    2.2k GitHub stars~1.8k tokensUpdated 4 days ago
    Auto-check passed
  • Android Aso

    appeeky/aso-skills

    When the user wants to optimize their Google Play Store listing — title, short description, full description, keywords, ratings, or Play Store-specific features.

    2.2k GitHub stars~1.7k tokensUpdated 4 days ago
    Auto-check passed
  • App Analytics

    appeeky/aso-skills

    When the user wants to set up, interpret, or improve their app analytics and tracking.

    2.2k GitHub stars~1.6k tokensUpdated 4 days ago
    Auto-check passed
  • App Clips

    appeeky/aso-skills

    When the user wants to implement, optimize, or use App Clips for app discovery and conversion.

    2.2k GitHub stars~1.4k tokensUpdated 4 days ago
    Auto-check passed
  • App Icon Optimization

    appeeky/aso-skills

    When the user wants to design, test, or improve their app icon to increase tap-through rate and conversions in App Store search and browse.

    2.2k GitHub stars~1.5k tokensUpdated 4 days ago
    Auto-check passed
  • App Marketing Context

    appeeky/aso-skills

    When the user wants to create or update their app marketing context document.

    2.2k GitHub stars~910 tokensUpdated 4 days ago
    Auto-check passed

Categories

Questions about App Rejection Recovery

What does App Rejection Recovery do?

When the user's app or update was rejected by Apple App Review or Google Play Review and they need to diagnose why, fix it, and resubmit fast. App Rejection Recovery is an agent skill from appeeky/aso-skills. When the user's app or update was rejected by Apple App Review or Google Play Review and they need to diagnose why, fix it, and resubmit fast.

When should I use App Rejection Recovery?

App Rejection Recovery fits situations like: update was rejected by Apple App Review; google Play Review and they need to diagnose why; the user mentions app rejected; app Review rejection.

How do I install App Rejection Recovery in Claude Code?

Run `npx skills add appeeky/aso-skills --skill app-rejection-recovery -a claude-code`. Or copy the skill folder (skills/app-rejection-recovery in appeeky/aso-skills) into .claude/skills/app-rejection-recovery in your project. Claude Code loads it when a task matches its description.

How do I install App Rejection Recovery in Codex?

Run `npx skills add appeeky/aso-skills --skill app-rejection-recovery -a codex`. Or copy the skill folder (skills/app-rejection-recovery in appeeky/aso-skills) into .agents/skills/app-rejection-recovery in your project. Codex loads it when a task matches its description.

Can I use App Rejection Recovery in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add appeeky/aso-skills --skill app-rejection-recovery -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/app-rejection-recovery, .gemini/skills/app-rejection-recovery, .github/skills/app-rejection-recovery and .opencode/skills/app-rejection-recovery in your project.

What does App Rejection Recovery need to run?

SKILL.md names no scripts, command-line tools or credentials: App Rejection Recovery is instructions for the agent only.

Does App Rejection Recovery access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is App Rejection Recovery safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does App Rejection Recovery use?

App Rejection Recovery is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does App Rejection Recovery use?

About 2.4k tokens (SKILL.md is roughly 9.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to App Rejection Recovery?

Skills that share tags, products or a category with App Rejection Recovery: Pp Asc (mvanhorn/printing-press-library, 2.1k stars), Publish App Store Version (KeeForge/KeeForge, 117 stars), Testflight (kmworks/kmreader, 113 stars) and Replica Entrepreneur (Jakeschincariol/replica-skill, 1.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains App Rejection Recovery?

appeeky (a GitHub organization) maintains it in appeeky/aso-skills, which has 2,163 GitHub stars. The repository holds 39 skills in this directory. The repository was last updated on October 6, 2026.

Source: appeeky/aso-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.