App store preflight skills
Skill facultymemberunwieldiness454/app-store-preflight-skills
Scan an iOS/macOS Xcode project for common App Store rejection patterns before submission. Use when preparing an app for App Store review, after receiving a rejection from Apple, or when auditing metadata, subscriptions, privacy manifests, entitlements, or design compliance. Integrates with the asc CLI for metadata inspection.From its SKILL.md
npx -y skills add facultymemberunwieldiness454/app-store-preflight-skillsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.4 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it
App Store Preflight Skill
Run pre-submission checks on your iOS/macOS project to catch common App Store rejection patterns.
Prerequisites
- asc CLI — Install via Homebrew:
brew install asc(App-Store-Connect-CLI) - ASC CLI Skills — app-store-connect-cli-skills for
ascusage patterns - jq — Optional, but used by some JSON-inspection examples in the rule docs
Step 1: Identify App Type → Load Checklist
Determine which guidelines apply by loading the relevant checklist from references/guidelines/by-app-type/. Always start with all_apps.md, then add the app-type-specific one:
| App Type | Checklist |
|---|---|
| Every app | references/guidelines/by-app-type/all_apps.md |
| Subscriptions / IAP | references/guidelines/by-app-type/subscription_iap.md |
| Social / UGC | references/guidelines/by-app-type/social_ugc.md |
| Kids Category | references/guidelines/by-app-type/kids.md |
| Health & Fitness | references/guidelines/by-app-type/health_fitness.md |
| Games | references/guidelines/by-app-type/games.md |
| macOS | references/guidelines/by-app-type/macos.md |
| AI / Generative AI | references/guidelines/by-app-type/ai_apps.md |
| Crypto & Finance | references/guidelines/by-app-type/crypto_finance.md |
| VPN | references/guidelines/by-app-type/vpn.md |
Full guideline index: references/guidelines/README.md
Step 2: Pull Metadata for Inspection
Pull the latest App Store metadata using the asc CLI:
# Pull canonical metadata JSON for the version you want to review
asc metadata pull --app "<APP_ID>" --version "<VERSION>" --dir ./metadata
asc metadata pull writes app info files to ./metadata/app-info/*.json and
version-localization files to ./metadata/version/<VERSION>/*.json.
Most rule examples below assume the canonical JSON layout written by
asc metadata pull.
If you already have metadata in another layout (for example fastlane
metadata/), either adapt the file-path examples to that structure or pull the
canonical asc layout first.
Step 3: Run Rejection Rule Checks
For each category, load the relevant rule files from references/rules/ and inspect. Each rule contains: What to Check, How to Detect, Resolution, and Example Rejection.
| Category | Rule Files |
|---|---|
| Metadata | references/rules/metadata/*.md |
| Subscription | references/rules/subscription/*.md |
| Privacy | references/rules/privacy/*.md |
| Design | references/rules/design/*.md |
| Entitlements | references/rules/entitlements/*.md |
Step 4: Report Findings
Produce a summary report using this template:
## Preflight Report
### ❌ Rejections Found (N)
- [GUIDELINE X.X.X] Description of issue
- File: path/to/offending/file
- Fix: What to do
### ⚠️ Warnings (N)
- [GUIDELINE X.X.X] Potential issue
### ✅ Passed (N)
- [Category] All checks passed
Order by severity: rejections first, then warnings, then passed.
Step 5: Autofix + Validate
Some issues can be auto-fixed:
- Competitor terms → Suggest replacement text with competitor names removed
- Metadata character limits → Show current vs. max length
- Missing links → Generate template ToS/PP URLs
After applying any auto-fix, re-run the affected checks to confirm the fix resolved the violation. Only mark as resolved once the re-scan passes.
For issues requiring manual intervention (screenshots, UI redesign), provide clear instructions but do not auto-fix.
Gotchas
- China storefront — Banned AI terms (ChatGPT, Gemini, etc.) are checked across ALL locales, not just
zh-Hans. Apple checks every locale visible in the China storefront. - Privacy manifests —
PrivacyInfo.xcprivacyis required even if your app doesn't call Required Reason APIs directly. Third-party SDKs (Firebase, Amplitude, etc.) that useUserDefaultsorNSFileManagertrigger this requirement transitively. - asc auth —
asc metadata pullrequires App Store Connect authentication. Runasc auth loginfirst, or setASC_KEY_ID,ASC_ISSUER_ID, and one ofASC_PRIVATE_KEY_PATH/ASC_PRIVATE_KEY/ASC_PRIVATE_KEY_B64. If you're unsure whatascis picking up, runasc auth doctor. - Subscription metadata — Apple requires ToS/PP links in BOTH the App Store description AND the in-app subscription purchase screen. Missing either one is a separate rejection.
- macOS entitlements — Apple will ask you to justify every temporary exception entitlement (
com.apple.security.temporary-exception.*). Remove entitlements you don't actively use.
Adding New Rules
Create a .md file in the appropriate references/rules/ subdirectory:
# Rule: [Short Title]
- **Guideline**: [Apple Guideline Number]
- **Severity**: REJECTION | WARNING
- **Category**: metadata | subscription | privacy | design | entitlements
## What to Check
## How to Detect
## Resolution
## Example Rejection
What ships with it: 26 files
591.9 KB alongside SKILL.md
references/
- guidelines/by-app-type/ai_apps.md1.9 KB
- guidelines/by-app-type/all_apps.md2.6 KB
- guidelines/by-app-type/crypto_finance.md1.9 KB
- guidelines/by-app-type/games.md1.8 KB
- guidelines/by-app-type/health_fitness.md1.8 KB
- guidelines/by-app-type/kids.md1.4 KB
- guidelines/by-app-type/macos.md2.2 KB
- guidelines/by-app-type/social_ugc.md1.8 KB
- guidelines/by-app-type/subscription_iap.md2.0 KB
- guidelines/by-app-type/vpn.md818 B
- guidelines/README.md9.6 KB
- rules/design/minimum_functionality.md3.9 KB
- rules/design/sign_in_with_apple.md2.8 KB
- rules/entitlements/unused_entitlements.md3.3 KB
- rules/metadata/accurate_metadata.md2.5 KB
- rules/metadata/apple_trademark.md4.0 KB
- rules/metadata/app_preflight_skills_store_Chowanoc.zip518.6 KB
- rules/metadata/china_storefront.md3.4 KB
- rules/metadata/competitor_terms.md1.9 KB
- rules/metadata/subscription_metadata.md3.0 KB
- rules/privacy/privacy_manifest.md3.3 KB
- rules/privacy/unnecessary_data.md2.5 KB
- rules/subscription/misleading_pricing.md3.0 KB
- rules/subscription/missing_tos_pp.md2.4 KB