capacitor-apple-review-preflight
Guides the agent through an Apple App Store preflight review for Capacitor apps before submission or after rejection. Covers guideline checklist selection, App Store metadata review, Capacitor and iOS project inspection, privacy manifests, Sign in with Apple, entitlements, and common rejection patterns. Do not use for Google Play review, generic store publishing only, or non-Apple mobile runtimes.
What this skill does
# Capacitor Apple Review Preflight
Run a pre-submission or post-rejection Apple review audit for a Capacitor app.
This skill adapts the Apple guideline and rejection-rule corpus from [truongduy2611/app-store-preflight-skills](https://github.com/truongduy2611/app-store-preflight-skills) and narrows the workflow to Capacitor-specific project inspection.
## When to Use This Skill
- User wants an Apple App Store review preflight for a Capacitor app
- User received an Apple rejection and wants the project audited against likely guideline failures
- User wants to check metadata, entitlements, privacy manifests, Sign in with Apple, subscriptions, or minimum functionality before submission
- User wants reviewer-notes guidance for a Capacitor iOS submission
## Live Project Snapshot
Detected Capacitor, auth, subscription, analytics, and privacy-related packages:
!`node -e "const fs=require('fs');if(!fs.existsSync('package.json'))process.exit(0);const pkg=JSON.parse(fs.readFileSync('package.json','utf8'));const sections=['dependencies','devDependencies'];const out=[];for(const section of sections){for(const [name,version] of Object.entries(pkg[section]||{})){if(name.startsWith('@capacitor/')||name.startsWith('@capgo/')||name.includes('firebase')||name.includes('sentry')||name.includes('revenuecat')||name.includes('purchase')||name.includes('subscription')||name.includes('auth')||name.includes('analytics')||name.includes('segment')||name.includes('amplitude')||name.includes('mixpanel'))out.push(section+'.'+name+'='+version)}}console.log(out.sort().join('\n'))"`
Relevant Apple review file paths:
!`find . -maxdepth 6 \( -name 'package.json' -o -name 'capacitor.config.json' -o -name 'capacitor.config.ts' -o -name 'capacitor.config.js' -o -name 'Info.plist' -o -name '*.entitlements' -o -name 'PrivacyInfo.xcprivacy' -o -name 'project.pbxproj' -o -path './ios' -o -path './fastlane/metadata' -o -path './metadata' \)`
## Procedure
### Step 1: Confirm This Is the Right Review Scope
Use this skill for Apple-facing review work, not for generic publishing.
If the task is mostly about screenshots, release setup, or store upload mechanics, combine this skill with `capacitor-app-store`.
### Step 2: Identify App Type and Load the Right Checklist
Always read:
- `references/guidelines/by-app-type/all_apps.md`
Then add the checklist that matches the app:
- `subscription_iap.md` for subscriptions or IAP
- `social_ugc.md` for UGC or moderation-heavy apps
- `kids.md` for Kids Category
- `health_fitness.md` for health, fitness, or medical claims
- `games.md` for games
- `ai_apps.md` for AI or LLM features
- `crypto_finance.md` for crypto, trading, or financial workflows
- `vpn.md` for VPN and networking apps
- `macos.md` only when the submission also targets macOS
Use `references/guidelines/README.md` for the full guideline index when a rejection cites a specific section.
### Step 3: Inspect Capacitor and iOS Project State
Start from the injected snapshot above, then inspect:
- `package.json` for Capacitor, auth, analytics, subscription, and SDK dependencies
- `capacitor.config.*` for app identifiers, app name, web asset config, and live update settings
- `ios/App/App/Info.plist` or the project-specific `Info.plist`
- any `*.entitlements` files
- `PrivacyInfo.xcprivacy` if present
- `fastlane/metadata` or other local metadata directories if they exist
Pay special attention to Capacitor-specific Apple review risks:
- social login providers without a Sign in with Apple path when required
- heavy WebView-only apps that may trigger 4.2 minimum functionality concerns
- third-party SDKs that imply Required Reason API declarations or privacy disclosures
- native capabilities enabled in Xcode but not justified by shipped functionality
- Capgo, Appflow, or other live-update flows that need clear reviewer notes and compliance boundaries
- missing or vague usage strings for camera, photo library, microphone, location, notifications, Face ID, tracking, or local network access
### Step 4: Run Rule-Based Review Passes
Use the upstream rule files as the source of truth:
- 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`
Map them onto the Capacitor app:
- metadata rules against App Store text, screenshots, preview videos, and review notes
- privacy rules against `Info.plist`, privacy manifests, SDK usage, and data collection flows
- design rules against app navigation, native value, login flows, and reviewer accessibility
- entitlements rules against enabled capabilities in the iOS project
If App Store metadata is not stored locally and `asc` is available, pull it with `asc metadata pull --output-dir ./metadata`. If not, audit local metadata sources and state what remains unverified.
### Step 5: Produce a Capacitor-Focused Preflight Report
Use this format:
```markdown
## Apple Review Preflight
### Rejections Found
- [GUIDELINE X.X.X] Issue summary
- Evidence: file or metadata location
- Why it matters for this Capacitor app
- Fix: exact remediation
### Warnings
- [GUIDELINE X.X.X] Potential issue
### Passed
- [Category] Checks that looked clean
### Missing Inputs
- Metadata or review assets that were not available locally
```
Order findings by severity and make each fix concrete.
### Step 6: Suggest Reviewer Notes and Submission Follow-Ups
When relevant, draft reviewer notes for:
- demo accounts or test credentials
- hidden or non-obvious features
- hardware dependencies
- subscription test flows
- AI moderation or content controls
- live-update behavior and what code can change post-review
- reasons for special entitlements or network behavior
## Error Handling
- If app metadata is unavailable locally and `asc` is not configured, continue with the code and project audit and clearly mark metadata checks as partial.
- If the app is mostly a thin web wrapper, call out guideline 4.2 risk directly rather than burying it in warnings.
- If social login is present, verify whether guideline 4.8 requires Sign in with Apple before concluding the auth flow is review-safe.
- If third-party SDKs suggest Required Reason API usage, inspect `PrivacyInfo.xcprivacy` before assuming privacy compliance.
- If the user is asking how to fix a specific rejection, prioritize the cited guideline and only then expand to adjacent risks.
Related in AI Agents
skill-development
IncludedComprehensive meta-skill for creating, managing, validating, auditing, and distributing Claude Code skills and slash commands (unified in v2.1.3+). Provides skill templates, creation workflows, validation patterns, audit checklists, naming conventions, YAML frontmatter guidance, progressive disclosure examples, and best practices lookup. Use when creating new skills, validating existing skills, auditing skill quality, understanding skill architecture, needing skill templates, learning about YAML frontmatter requirements, progressive disclosure patterns, tool restrictions (allowed-tools), skill composition, skill naming conventions, troubleshooting skill activation issues, creating custom slash commands, configuring command frontmatter, using command arguments ($ARGUMENTS, $1, $2), bash execution in commands, file references in commands, command namespacing, plugin commands, MCP slash commands, Skill tool configuration, or deciding between skills vs slash commands. Delegates to docs-management skill for official documentation.
reprompter
IncludedTransform messy prompts into well-structured, effective prompts — single or multi-agent. Use when: "reprompt", "reprompt this", "clean up this prompt", "structure my prompt", rough text needing XML tags and best practices, "reprompter teams", "repromptception", "run with quality", "smart run", "smart agents", multi-agent tasks, audits, parallel work, anything going to agent teams. Don't use when: simple Q&A, pure chat, immediate execution-only tasks. See "Don't Use When" section for details. Outputs: Structured XML/Markdown prompt, quality score (before/after), optional team brief + per-agent sub-prompts, agent team output files. Success criteria: Single mode quality score ≥ 7/10; Repromptception per-agent prompt quality score 8+/10; all required sections present, actionable and specific.
adaptive-compaction
IncludedAdaptive add-on policy and recovery layer that decides WHEN to compact, prune, snapshot, or fork -- replacing fixed-percent auto-compaction across Claude Code, Codex, and MCP-capable hosts. Trigger on auto-compact timing or damage: "when should I compact", "is it safe to compact now or start a fresh session", "auto-compact fires too early/mid-task", "switching to an unrelated task but the window still has space", "context rot", "answers get worse the longer the session runs", "the agent forgot the plan or my decisions after it summarized", "add a layer on top that manages context without changing the agent", raising autoCompactWindow to give the policy room, or installing/tuning a cross-tool compaction policy or PreCompact hook -- even when "compaction" is never said but the problem is context-window pressure or post-summarization memory loss. Do NOT use to summarize a conversation, build RAG, write a summarization prompt (decides WHEN not HOW), or answer max-context-length trivia.
agent-skill-creator
IncludedCreate cross-platform agent skills from workflow descriptions. Activates when users ask to create an agent, automate a repetitive workflow, create a custom skill, or need advanced agent creation. Triggers on phrases like create agent for, automate workflow, create skill for, every day I have to, daily I need to, turn process into agent, need to automate, create a cross-platform skill, validate this skill, export this skill, migrate this skill. Supports single skills, multi-agent suites, transcript processing, template-based creation, interactive configuration, cross-platform export, and spec validation.
llm-wiki
IncludedUse when building or maintaining a persistent personal knowledge base (second brain) in Obsidian where an LLM incrementally ingests sources, updates entity/concept pages, maintains cross-references, and keeps a synthesis current. Triggers include "second brain", "Obsidian wiki", "personal knowledge management", "ingest this paper/article/book", "build a research wiki", "compound knowledge", "Memex", or whenever the user wants knowledge to accumulate across sessions instead of being re-derived by RAG on every query.
skill-master
IncludedAgent Skills authoring, evaluation, and optimization. Create, edit, validate, benchmark, and improve skills following the agentskills.io specification. Use when designing SKILL.md files, structuring skill folders (references, scripts, assets), ingesting external documentation into skills, running trigger evals, benchmarking skill quality, optimizing descriptions, or performing blind A/B comparisons. Keywords: agentskills.io, SKILL.md, skill authoring, eval, benchmark, trigger optimization.