SKILL.md
$27
Safety defaults
- Start in audit mode (read-only).
- Require explicit confirmation before writes.
- Never delete resources in this workflow.
- Continue on per-item failures and report all failures at the end.
Canonical identifiers
- Primary cross-system key: ASC
productId== RevenueCatstore_identifier.
- Keep
productIdstable once products are live.
- Do not use display names as unique identifiers.
Scope boundary
- RevenueCat MCP configures RevenueCat resources; it does not create App Store Connect products directly.
- Use
asccommands to create missing ASC subscription groups, subscriptions, and IAPs before RevenueCat mapping.
Modes
1) Audit mode (default)
- Read ASC source catalog.
- Read RevenueCat target catalog.
- Build a diff with actions:
- missing in ASC
- missing in RevenueCat
- mapping conflicts (identifier/type/app mismatch)
- Present a plan and wait for confirmation.
2) Apply mode (explicit)
Execute approved actions in this order:
- Ensure ASC groups/subscriptions/IAP exist.
- Ensure RevenueCat app/products exist.
- Ensure entitlements and product attachments.
- Ensure offerings/packages and package attachments.
- Verify and print a final reconciliation summary.
Step-by-step workflow
Step A - Read current ASC catalog
asc subscriptions groups list --app "APP_ID" --paginate --output json
asc iap list --app "APP_ID" --paginate --output json
# for each subscription group:
asc subscriptions list --group-id "GROUP_ID" --paginate --output json
Step B - Read current RevenueCat catalog (MCP)
Use these MCP tools (with project_id and pagination where applicable):
mcp_RC_get_project
mcp_RC_list_apps
mcp_RC_list_products
mcp_RC_list_entitlements
mcp_RC_list_offerings
mcp_RC_list_packages
Step C - Build mapping plan
Map ASC product types to RevenueCat product types:
- ASC subscription -> RevenueCat
subscription
- ASC IAP
CONSUMABLE-> RevenueCatconsumable
- ASC IAP
NON_CONSUMABLE-> RevenueCatnon_consumable
- ASC IAP
NON_RENEWING_SUBSCRIPTION-> RevenueCatnon_renewing_subscription
Suggested entitlement policy:
- subscriptions: one entitlement per subscription group (or explicit map provided by user)
- non-consumable IAP: one entitlement per product
- consumable IAP: no entitlement by default unless user asks
Step D - Ensure missing ASC items (if requested)
Create missing ASC resources first, then re-read ASC to capture canonical IDs.
# create subscription group
asc subscriptions groups create --app "APP_ID" --reference-name "Premium"
# create subscription
asc subscriptions create \
--group-id "GROUP_ID" \
--reference-name "Monthly" \
--product-id "com.example.premium.monthly" \
--subscription-period ONE_MONTH
# create iap
asc iap create \
--app "APP_ID" \
--type NON_CONSUMABLE \
--ref-name "Lifetime" \
--product-id "com.example.lifetime"
Step E - Ensure RevenueCat app and products
Use MCP:
- create app if missing:
mcp_RC_create_app
- create products:
mcp_RC_create_product
store_identifier= ASCproductId
app_id= RevenueCat app ID
typefrom mapping above
Step F - Ensure entitlements and attachments
Use MCP:
- list/create entitlements:
mcp_RC_list_entitlements,mcp_RC_create_entitlement
- attach products:
mcp_RC_attach_products_to_entitlement
- verify attachments:
mcp_RC_get_products_from_entitlement
Step G - Ensure offerings and packages (optional)
Use MCP:
- list/create/update offerings:
mcp_RC_list_offerings
mcp_RC_create_offering
mcp_RC_update_offering(is_current=trueonly if requested)
- list/create packages:
mcp_RC_list_packages
mcp_RC_create_package
- attach products to packages:
mcp_RC_attach_products_to_packagewitheligibility_criteria: "all"
Recommended package keys:
ONE_WEEK->$rc_weekly
ONE_MONTH->$rc_monthly
TWO_MONTHS->$rc_two_month
THREE_MONTHS->$rc_three_month
SIX_MONTHS->$rc_six_month
ONE_YEAR->$rc_annual
- lifetime IAP ->
$rc_lifetime
- custom ->
$rc_custom_<name>
Expected output format
Return a final summary with:
- ASC created counts (groups/subscriptions/IAP)
- RevenueCat created counts (apps/products/entitlements/offerings/packages)
- attachment counts (entitlement-products, package-products)
- skipped existing items
- failed items with actionable errors
Example:
ASC: created groups=1 subscriptions=2 iap=1, skipped=14, failed=0
RC: created apps=0 products=3 entitlements=2 offerings=1 packages=2, skipped=27, failed=1
Attachments: entitlement_products=3 package_products=2
Failures:
- com.example.premium.annual: duplicate store_identifier exists on another RC app
Agent behavior
- Always run audit first, even in apply mode.
- Ask for confirmation before create/update operations.
- Match by
store_identifierfirst.
- Use full pagination (
--paginatefor ASC,starting_afterfor RevenueCat tools).
- Continue processing after per-item failures and report all failures together.
- Never auto-delete ASC or RevenueCat resources in this skill.
Common pitfalls
- Wrong RevenueCat
project_idor app ID.
- Creating RC products under the wrong platform app.
- Accidentally assigning consumables to entitlements.
- Skipping the post-create ASC re-read step.
- Missing offering/package verification after product creation.
Additional resources
- Workflow examples: examples.md
- Source references: references.md