本文へ移動
cccskills
無料GitHub で公開

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.

インストール方法を見る

含まれるファイル(28)

  • SKILL.md5.4 KB
  • LICENSE1.0 KB
  • README.md5.6 KB
  • references/guidelines/by-app-type/ai_apps.md1.9 KB
  • references/guidelines/by-app-type/all_apps.md2.8 KB
  • references/guidelines/by-app-type/crypto_finance.md1.9 KB
  • references/guidelines/by-app-type/games.md1.8 KB
  • references/guidelines/by-app-type/health_fitness.md1.8 KB
  • references/guidelines/by-app-type/kids.md1.4 KB
  • references/guidelines/by-app-type/macos.md2.2 KB
  • references/guidelines/by-app-type/social_ugc.md1.8 KB
  • references/guidelines/by-app-type/subscription_iap.md2.0 KB
  • references/guidelines/by-app-type/vpn.md818 B
  • references/guidelines/README.md9.6 KB
  • references/rules/design/minimum_functionality.md3.9 KB
  • references/rules/design/sign_in_with_apple.md2.8 KB
  • references/rules/entitlements/unused_entitlements.md3.3 KB
  • references/rules/metadata/accurate_metadata.md2.5 KB
  • references/rules/metadata/apple_trademark.md4.0 KB
  • references/rules/metadata/china_storefront.md3.4 KB
  • references/rules/metadata/competitor_terms.md1.9 KB
  • references/rules/metadata/review_notes_new_submission.md4.7 KB
  • references/rules/metadata/review_notes_template.md2.4 KB
  • references/rules/metadata/subscription_metadata.md3.0 KB
  • references/rules/privacy/privacy_manifest.md3.3 KB
  • references/rules/privacy/unnecessary_data.md2.5 KB
  • references/rules/subscription/misleading_pricing.md3.0 KB
  • references/rules/subscription/missing_tos_pp.md2.4 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

App Store Preflight Skill

Run pre-submission checks on your iOS/macOS project to catch common App Store rejection patterns.

Prerequisites

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 TypeChecklist
Every appreferences/guidelines/by-app-type/all_apps.md
Subscriptions / IAPreferences/guidelines/by-app-type/subscription_iap.md
Social / UGCreferences/guidelines/by-app-type/social_ugc.md
Kids Categoryreferences/guidelines/by-app-type/kids.md
Health & Fitnessreferences/guidelines/by-app-type/health_fitness.md
Gamesreferences/guidelines/by-app-type/games.md
macOSreferences/guidelines/by-app-type/macos.md
AI / Generative AIreferences/guidelines/by-app-type/ai_apps.md
Crypto & Financereferences/guidelines/by-app-type/crypto_finance.md
VPNreferences/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.

CategoryRule Files
Metadatareferences/rules/metadata/*.md
Subscriptionreferences/rules/subscription/*.md
Privacyreferences/rules/privacy/*.md
Designreferences/rules/design/*.md
Entitlementsreferences/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.xcprivacy is required even if your app doesn't call Required Reason APIs directly. Third-party SDKs (Firebase, Amplitude, etc.) that use UserDefaults or NSFileManager trigger this requirement transitively.
  • asc auth — asc metadata pull requires App Store Connect authentication. Run asc auth login first, or set ASC_KEY_ID, ASC_ISSUER_ID, and one of ASC_PRIVATE_KEY_PATH / ASC_PRIVATE_KEY / ASC_PRIVATE_KEY_B64. If you're unsure what asc is picking up, run asc 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

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

このスキルの問題を報告する