App Store Compliance logo

App Store Compliance

Community
mjmirza
app-store-compliance

Run an enterprise pre submission compliance audit on a mobile app project before uploading to the Apple App Store or Google Play. Use when the user is about to submit, ship, or release an iOS or Android app, when an app was rejected and needs a fix plan, when reviewing App Store Review Guidelines or Google Play policy compliance, or when the user mentions App Store rejection, Play Console rejection, Resolution Center, Data Safety form, privacy nutrition labels, account deletion requirement, in app purchase rules, or app review.

Overview

Publishermjmirza
Repositoryapp-store-compliance
Skill nameapp-store-compliance
Stars
386
Forks
38
Bundled files
Instructions only
LicenseLicenseRef-OpenRoots-ORA-2.3
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by mjmirza on GitHub. Read the source before you install it.

Installation

Install the App Store Compliance AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/mjmirza/app-store-compliance/tree/main/agent-os/skill
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/mjmirza/app-store-compliance.git /tmp/app-store-compliance
mkdir -p .claude/skills
cp -r /tmp/app-store-compliance/agent-os/skill .claude/skills/app-store-compliance
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable App Store Compliance in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads App Store Compliance on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so App Store Compliance is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

App Store Compliance Audit

This skill runs a full pre submission compliance audit against the Apple App Store Review Guidelines and the Google Play Developer Program Policies, then produces a fix plan ranked by severity. It exists because roughly one in four App Store submissions is rejected and Google blocked over 1.75 million Play submissions in 2025, almost always for the same handful of preventable causes.

When to run it

  • Before any upload to App Store Connect or the Play Console.
  • After a rejection, to build the exact fix and appeal plan.
  • During a release review, as a release blocker gate.

How to run it

Step 1. Locate the project and the reference

The compliance reference lives in the app-store-compliance repo. The key files are.

  • data/rejection-patterns.json the machine readable taxonomy.
  • docs/APPLE.md and docs/GOOGLE-PLAY.md the full rejection maps.
  • docs/PRE-SUBMISSION-CHECKLIST.md the verifiable checklist.
  • docs/MISTAKE-PATTERNS.md root causes, the appeal playbook, and real rejection case studies.
  • docs/BY-APP-TYPE.md the rejection map routed by app type. Load the section that matches the app.
  • docs/ADVANCED-2026.md the modern upload time and legal layer.
  • docs/EU-REGULATORY-2026.md the EU legal hard rules with dated sources. the EU AI Act, the DMA and the Core Technology Fee, DSA trader status, and the European Accessibility Act. Load it for any app reaching EU users.
  • docs/GLOBAL-REGULATORY-2026.md the USA and other-global legal hard rules with dated sources. COPPA, the US state App Store Accountability Acts, the external-link rules, the UK, Australia, Brazil, Canada, South Korea, India, and more, plus Apple's cross-region age-assurance spine. Load it for any app reaching those users.
  • docs/PLATFORM-MECHANICS-2026.md the platform-mechanics and newer-policy hard rules with dated sources. macOS notarization, Guideline 4.2 and 4.3 with the June 2026 saturation tightening, reader apps, France ANSSI encryption, visionOS and watchOS and tvOS specifics, Android developer verification, Foreground Service types, Play Integrity, Play Billing v8, target API, Health Connect, and the cross-cutting CSAM, UGC, accessibility, sanctions, and PCI items. Load it for any app whose type touches these.
  • references/ the structured, AI loadable tree. Load references/guidelines/by-app-type/<type>.md for the app at hand and the relevant references/rules/<category>.md files for full context before judging.
  • templates/REVIEW-NOTES-TEMPLATE.md the review notes template to hand the user for a new submission.
  • app-store-compliance-guard.sh the automated scanner. The install puts it in your tool's hooks folder, listed in Step 2.

For the strongest audit, also run the metadata layer. A large share of rejections live in the listing text, not the source.

bash scripts/pull-metadata.sh apple      # pulls the live listing into ./metadata via the asc CLI
python3 scripts/metadata-audit.py ./metadata        # audits name, subtitle, keywords, description, URLs
python3 scripts/metadata-audit.py ./metadata --propose   # writes suggested fixes, source copy untouched
python3 scripts/metadata-audit.py ./metadata/android --platform google   # Google Play limits and rules
python3 scripts/release-audit.py /path/to/app --metadata ./metadata     # full gate, exit 0 clear, 2 blocked, 3 incomplete

The metadata audit checks character limits, other platform mentions, future functionality, negative Apple sentiment, profanity, ranking and price claims, keyword formatting, missing privacy policy and subscription terms, China storefront AI references, and malformed URLs (pass --check-urls to also test that each URL loads). It audits every locale folder on its own, filled from a fastlane default/ folder and parent folders like fastlane does, and names the locale in each finding. It flags a URL that is not a real http or https address, an Apple listing with no support URL, a Google listing with no contact email, and a subscription with no real Terms or EULA link. Run it, then re run it after applying fixes. That is the detect, propose, re validate loop.

The release audit blocks on any critical or high finding with exit 2. It exits 3 when a scan failed or the listing was not audited, so pass --metadata with your pulled listing.

For monitoring evolving developer requirements, also run the Apple Developer requirements monitor. This tracks 25 key categories against active developer news/announcements and maps updates directly to repository impact:

python3 scripts/monitor.py --project /path/to/app/project

Or simulate a simulated track update (e.g., "Privacy Manifests") to preview impact:

python3 scripts/monitor.py --project /path/to/app/project --simulate "Privacy Manifests"

The monitor determines repository impact, identifies affected files, generates migration tasks, estimates release impact, and drafts a complete pull request description.

Step 2. Run the automated scan

Run the guard against the project root. Use the copy the install put in your tool's hooks folder.

ToolGuard
Claude Code~/.claude/hooks/app-store-compliance-guard.sh
Codex CLI~/.codex/hooks/app-store-compliance-guard.sh
Gemini CLI~/.gemini/hooks/app-store-compliance-guard.sh
OpenCode~/.config/opencode/hooks/app-store-compliance-guard.sh
Cursor~/.cursor/hooks/app-store-compliance-guard.sh
Copilot CLI~/.copilot/hooks/app-store-compliance-guard.sh, or under $COPILOT_HOME when set
Grok~/.grok/hooks/app-store-compliance-guard.sh
Qwen Code~/.qwen/hooks/app-store-compliance-guard.sh, or under $QWEN_HOME when set
Kimi Code~/.kimi-code/hooks/app-store-compliance-guard.sh, or under $KIMI_CODE_HOME when set
Factory Droid~/.factory/hooks/app-store-compliance-guard.sh
Auggie~/.augment/hooks/app-store-compliance-guard.sh
Windsurf~/.codeium/windsurf/hooks/app-store-compliance-guard.sh
From a checkout~/repositories/app-store-compliance/agent-os/hooks/app-store-compliance-guard.sh
bash <guard path from the table> "/path/to/app/project"

The scripts/ paths in this skill are relative to this skill's own folder.

It detects iOS and Android, scans for the rejection patterns, and prints findings ranked critical, high, medium. It exits 2 when a critical risk is present.

Step 3. Run the human checks the scanner cannot see

Some rejection causes are not visible in code. Walk these by hand against the project.

  • Is the production backend live and will it stay up during the entire review window.
  • Is a working demo account provided in the Notes for Review or the Play test instructions.
  • Do the privacy nutrition labels (Apple) and the Data Safety form (Google) match the real runtime behavior including every third party SDK. This is the single biggest cause on both stores.
  • Do the screenshots show the app in use, not a splash or login screen.
  • Does the listing claim only what the app actually does.
  • For a new Google personal account, is the closed test of 12 testers over 14 days complete.
  • Are the 2026 Apple age rating questions answered.
  • For any app reaching EU, US, or other-global users, is the legal layer satisfied. the EU AI Act AI-disclosure and the European Accessibility Act, US COPPA and the state age-assurance laws, the DSA trader status, and the per-region 18-plus age gating. Store review does not check these. See docs/EU-REGULATORY-2026.md and docs/GLOBAL-REGULATORY-2026.md.
  • Are the platform-mechanics gates satisfied for the app's type. macOS notarization, Guideline 4.2 and 4.3, reader-app rules, Android developer verification, Foreground Service types, Play Integrity, Play Billing v8, target API, Health Connect, and the cross-cutting CSAM, UGC, accessibility, deletion-URL, sanctions, and PCI items. See docs/PLATFORM-MECHANICS-2026.md.

Step 4. Produce the fix plan

For every finding, output a table row. The pattern id, the platform, the cited guideline, the severity, the concrete fix, and the file or setting to change. Order by severity. Mark each critical as a release blocker.

Step 5. If the app was already rejected

Read the exact guideline number the store cited, find the matching pattern in data/rejection-patterns.json, apply the fix, then follow the appeal playbook in docs/MISTAKE-PATTERNS.md. Never resubmit an unchanged build. On Google, a careless resubmit moves the account toward suspension.

The two checks that matter most

If time is short, verify these two first, because they cause the majority of rejections across both stores.

  1. A working demo account with a live backend.
  2. A privacy declaration that matches actual runtime behavior, including every SDK.

Output contract

The audit ends with a ranked findings table and a clear verdict. Clear to submit, or blocked with a numbered fix list. Never report clear while a critical finding stands.

Frequently asked questions

What does the App Store Compliance AI skill do?

Run an enterprise pre submission compliance audit on a mobile app project before uploading to the Apple App Store or Google Play. Use when the user is about to submit, ship, or release an iOS or Android app, when an app was rejected and needs a fix plan, when reviewing App Store Review Guidelines or Google Play policy compliance, or when the user mentions App Store rejection, Play Console rejection, Resolution Center, Data Safety form, privacy nutrition labels, account deletion requirement, in app purchase rules, or app review.

Why use App Store Compliance on TypingMind?

Because you install it once and use it with any model. App Store Compliance is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install App Store Compliance in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/mjmirza/app-store-compliance/tree/main/agent-os/skill. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use App Store Compliance?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with App Store Compliance?

As many as you like. As long as a model supports skills, you can use App Store Compliance with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the App Store Compliance AI skill free?

Yes. It is published on GitHub by mjmirza under the LicenseRef-OpenRoots-ORA-2.3 license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇