A Claude Code plugin that bridges App Store Connect (ASC) and Rork to support IAP/subscription configuration, diagnosis, and submission preparation for iOS apps.
claude --plugin-dir /path/to/rork-asc-support-pluginSet the REVENUECAT_API_V2_SECRET_KEY environment variable to automatically connect the RevenueCat MCP server.
Get your API key from RevenueCat Dashboard > Project Settings > API Keys > V2 Secret Key.
export REVENUECAT_API_V2_SECRET_KEY="sk_..."Copy templates/Fastfile.template to your project's fastlane/Fastfile and set BUNDLE_ID.
cp templates/Fastfile.template your-project/fastlane/FastfilePlace your ASC API key at fastlane/asc_key.json:
{
"key_id": "XXXXXXXXXX",
"issuer_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"key": "-----BEGIN EC PRIVATE KEY-----\n...\n-----END EC PRIVATE KEY-----"
}Verifies that all required credentials and connections are properly configured. Use during initial project setup or when troubleshooting connection issues.
- ASC API Key (p8) — Validates
asc_key.jsonexistence,key_id/issuer_id/keyformat - Fastlane — Installation status, Fastfile presence,
BUNDLE_IDconfiguration, available lanes - RevenueCat MCP —
REVENUECAT_API_V2_SECRET_KEYenv var and.mcp.jsonconfiguration - Gitignore Safety — Ensures
asc_key.json,Local.xcconfig,.envare gitignored
Returns exit code 0 if all checks pass.
Diagnoses the review-readiness of IAP / subscription products. Used to identify the root cause of MISSING_METADATA issues.
What it checks:
| Category | Details |
|---|---|
| Non-Consumable | Product state, localizations (name + description), price schedule, review screenshot |
| Auto-Renewable Subscription | Product state, localizations, prices for all territories, screenshot, review note |
| Subscription Group (critical) | Group localizations (name + customAppName). Missing this keeps products in MISSING_METADATA even if everything else is complete |
| Version Association | Whether IAP products are linked to the current app version |
Can be verified using Fastlane's deep_iap_check / check_prices lanes.
Fixes MISSING_METADATA state for IAP products. Run /check-iap first to identify what's missing.
Targets and ASC API endpoints:
| Fix | API |
|---|---|
| Add Subscription Group localizations (most common cause) | POST /v1/subscriptionGroupLocalizations |
| Add Subscription localizations | POST /v1/subscriptionLocalizations |
| Add Non-Consumable localizations | POST /v2/inAppPurchaseLocalizations |
| Create Non-Consumable price schedule | POST /v1/inAppPurchasePriceSchedules |
After fixing, verify the state transition to READY_TO_SUBMIT with fastlane deep_iap_check.
Manages IAP pricing — check, set, or change prices. Also useful for troubleshooting incorrect price display in-app.
Features:
- Check current price schedules (Non-Consumable / Subscription)
- Look up Price Point IDs and create new price schedules
- Verify prices per territory
Note: A Non-Consumable without a price schedule may cause StoreKit to return incorrect values (e.g. $1,480 instead of $9.99).
Creates and configures Terms of Use for Apple Guideline 3.1.2(c) compliance.
Two options:
- Custom EULA (recommended for subscription apps) — Create a custom Terms of Use covering subscription terms, auto-renewal, cancellation policy, etc. Publish via GitHub Gist or web page.
- Apple Standard EULA — Link to Apple's built-in standard EULA.
Critical: The ASC EULA field must NOT be null — this is the #1 cause of 3.1.2(c) rejections. Both standard and custom EULA pass review.
Required setup (all four):
- ASC EULA field set (custom or Apple standard) — verify with
fastlane check_eula - App's Paywall / purchase screen (functional link)
- App's Settings screen
- App Store description (URL)
Validates all requirements before submitting for App Store review.
Verification categories:
- App Metadata — App name, description, keywords, screenshots, Privacy Policy URL, age rating
- Guideline 3.1.2 (Subscriptions) — Subscription info display on Paywall (title, duration, price, Privacy Policy, Terms of Use, cancellation instructions)
- Guideline 2.1(b) (IAP) — All products in
READY_TO_SUBMITstate and associated with the app version
Includes a mapping of common rejection reasons to fixes.
Batch generates review screenshots for IAP products from a source image (uses macOS sips).
./scripts/generate-iap-screenshots.sh <source_image> [output_dir] [sizes]Supported device sizes:
| Size | Device |
|---|---|
640x920 |
iPhone 4s (3.5-inch) — minimum required |
1242x2208 |
iPhone 6s Plus (5.5-inch) |
1242x2688 |
iPhone XS Max (6.5-inch) |
1290x2796 |
iPhone 15 Pro Max (6.7-inch) |
2048x2732 |
iPad Pro 12.9-inch |
Pass all as the sizes argument to generate all device sizes at once. Upload the generated screenshots to each product's Review Screenshot section in ASC.
Creates app-profile.json — the shared configuration that all marketing skills reference. Defines personas, brand voice, competitors, and monetization model.
Analyzes competitor App Store descriptions and category patterns. Generates docs/marketing-style-guide.md with headline formulas, keyword strategy, and tone examples.
Writes conversion-optimized, ASO-friendly App Store descriptions. Structures content around the critical first 3 lines (visible before "more"), feature highlights, and social proof.
Evaluates App Store screenshots and preview videos against persona fit, first impression effectiveness, story flow, and competitive differentiation. Generates scored reports with priority improvements.
Designs cost-per-acquisition strategy across Apple Search Ads, SNS, web, and organic channels. Includes funnel modeling, budget simulation, and integration with ASC Analytics API.
Generates structured release notes from git history with multi-locale translation support.
Integrates PostHog iOS SDK for product analytics. Covers SPM setup, AnalyticsService creation, SwiftUI screen tracking (.postHogScreenView()), custom events, and dashboard configuration. Includes privacy-safe defaults (Session Replay disabled, no user content transmitted).
Integrates Sentry iOS SDK for crash monitoring and performance tracing. Covers SPM setup, CrashReportingService creation, dSYM upload (Fastlane/Xcode/ASC integration), alert configuration, and dashboard views (Issues, Mobile Vitals, Session Health, Releases). Includes privacy-safe defaults (screenshots disabled).
Updates Privacy Policy, Terms of Use, and ASC EULA when third-party services change. Provides templates for RevenueCat, PostHog, and Sentry disclosures. Covers Gist publishing, ASC EULA field update, and link verification.
Fetches and analyzes crash reports from ASC and cross-references with Sentry data (breadcrumbs, mobile vitals, session health). Supports severity classification and triage reporting.
Configures App Store Product Page Optimization experiments for icons, screenshots, and promotional text.
Shell scripts included with the plugin:
| Script | Description |
|---|---|
scripts/check-env.sh |
Checks ASC API key, Fastlane, RevenueCat MCP, and gitignore configuration |
scripts/generate-iap-screenshots.sh |
Batch generates IAP review screenshots from a source image (macOS sips) |
Lanes included in the template:
| Lane | Description |
|---|---|
verify |
Verify ASC connection |
iap_status |
List IAP / subscription products |
deep_iap_check |
Detailed check of localizations, prices, and screenshots |
check_prices |
Detailed price verification (per territory) |
check_eula |
Check EULA configuration status and territory coverage |
set_group_localizations |
Add subscription group localizations |
get_description / set_description |
Get/set app description per locale |
get_screenshots / get_preview_sets |
Get screenshot and preview metadata |
app_analytics / download_analytics_report |
ASC Analytics Report API |
get_whats_new / set_whats_new |
Get/set release notes per locale |
list_builds / crash_signatures / crash_logs |
Crash triage |
list_experiments / create_experiment |
A/B test management |
| Guideline | Cause | Fix |
|---|---|---|
| 2.1(b) IAP not submitted | IAP not linked to app version | Associate IAPs in the "In-App Purchases and Subscriptions" section in ASC |
| 2.1(b) IAP not submitted | MISSING_METADATA state | Fix with /check-iap → /setup-iap-metadata |
| 3.1.2(c) Missing EULA | ASC EULA field is null | Set EULA in ASC with /setup-eula, verify with fastlane check_eula |
| 3.1.2(c) Missing subscription info | Incomplete info on Paywall | Add price, duration, management info, and policy links |
MIT