MCPInstall

rc-price-changes

Use this skill when rolling out subscription price changes on Android with RevenueCat. Covers opt out decreases versus opt in increases, RevenueCat's automatic handling of the change confirmation flow, and the dashboard configuration involved.

Installs
627
Last 24h
—
Trending rank
—
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/revenuecat/ai-toolkit --skill rc-price-changes
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads rc-price-changes automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

Price Changes

Use this skill when you roll out a new price for an existing subscription product on Android and want RevenueCat to manage the cohort and consent plumbing for you.

Phase 1: Understand

Google Play supports two kinds of price changes for active subscribers:

  • Opt out changes (typically decreases, and increases within Google's opt out threshold). The new price applies automatically at the next renewal. No user action required.
  • Opt in changes (larger increases). Google shows its own in app consent dialog. If the user consents, they continue at the new price. If they decline, the subscription cancels at period end.

RevenueCat processes SUBSCRIPTION_PRICE_CHANGE_UPDATED and related RTDNs on its backend and updates CustomerInfo when a subscriber's cohort or consent state changes. Your app reads entitlements the same way it always does.

For most price change scenarios, there is nothing to implement in your app or backend.

Phase 2: Plan

Decide which path applies before you touch anything.

QuestionOpt outOpt in
Typical triggerDecrease, or small increase within Google's thresholdLarger increase above Google's threshold
User consentNot requiredRequired, prompted by Google Play UI
If user declinesN/ASubscription cancels at period end, CANCELLATION webhook fires
New price appliesAutomatically at next renewalAfter user consents in Play's dialog
RTDN RevenueCat consumesSUBSCRIPTION_PRICE_CHANGE_UPDATEDSUBSCRIPTION_PRICE_CHANGE_UPDATED, then SUBSCRIPTION_CANCELED if declined
App code changeNone requiredNone required
Paywall price sourcepkg.product.price.formatted (new purchases only)pkg.product.price.formatted (new purchases only)

Questions to answer before executing:

  • Is the change a decrease, a small increase, or a larger increase? That determines opt out vs opt in.
  • Do you want to notify existing subscribers in app before the change takes effect? That is optional, driven by a webhook or a Targeting rule, not a requirement.
  • Which legacy cohorts exist today? Existing subscribers keep paying their old price until Google migrates them. This is a Google Play concern, not visible in the SDK.

Phase 3: Execute

Most of the work is in the Play Console and the RevenueCat dashboard. Your app stays the same.

1. Update the price in Play Console

In Google Play Console, open the subscription, select the base plan, and edit the price. Google will prompt you to choose how existing subscribers are treated (opt out vs opt in) based on the magnitude of the change and your region.

2. Let RevenueCat pick up the change

RevenueCat processes the RTDNs from Google automatically. You do not need to toggle anything in the RevenueCat dashboard for the price change itself. Confirm the updated product price appears on the product in the RevenueCat dashboard after Google propagates it.

3. Refresh offerings in the client (optional)

If you want the paywall to show the new price immediately for new purchasers, refresh offerings after the Play Console change propagates. The SDK call is unchanged:

val offerings = Purchases.sharedInstance.awaitOfferings()
val pkg = offerings.current?.availablePackages?.firstOrNull() ?: return
val displayPrice = pkg.product.price.formatted

Legacy cohort subscribers continue to pay their old price until Google migrates them. pkg.product.price.formatted is always correct for new purchases.

4. Observe CustomerInfo on consent resolution

For opt in increases, RevenueCat updates CustomerInfo when the consent outcome is known. Read entitlements the usual way.

val info = Purchases.sharedInstance.awaitCustomerInfo()
val isPro = info.entitlements["pro"]?.isActive == true

Do not build a consent dialog. Google Play shows it.

5. Handle declines via webhook, if you care

If the user declines the opt in increase, the subscription cancels at period end. RevenueCat fires a CANCELLATION webhook event. Treat it the same way you treat any other cancellation on the server side.

6. Optional: notify affected users

If you want to warn subscribers about an upcoming increase before Google's dialog appears, drive an in app banner from a RevenueCat webhook event or show a specific Offering to the affected cohort with a Targeting rule. This is an enhancement, not part of the price change contract.

References

FAQ

What does the rc-price-changes skill do?

Use this skill when rolling out subscription price changes on Android with RevenueCat. Covers opt out decreases versus opt in increases, RevenueCat's automatic handling of the change confirmation flow, and the dashboard configuration involved.

How do I install rc-price-changes?

Run npx skills add https://github.com/revenuecat/ai-toolkit --skill rc-price-changes in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/rc-price-changes/ (personal) or .claude/skills/rc-price-changes/ (project).

Which AI agents can use rc-price-changes?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is rc-price-changes safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains rc-price-changes?

It is published by revenuecat in revenuecat/ai-toolkit. It has 627 recorded installs.

More from revenuecat/ai-toolkit

View all →

revenuecat-paywall

revenuecat/ai-toolkit

Display a RevenueCat paywall inside an app using the RevenueCatUI SDK. Use when the user asks to add a paywall, show a RevenueCat paywall, present PaywallView, integrate RevenueCatUI, gate a premium screen with a paywall, launch PaywallActivity, call presentPaywall or presentPaywallIfNeeded, or show the dashboard configured paywall UI on iOS, Android, Kotlin Multiplatform, Flutter, or React Native. To create, edit, evaluate, or audit the dashboard paywall itself, use revenuecat-paywall-design.

Mobile1.1K installs

integrate-revenuecat

revenuecat/ai-toolkit

End-to-end RevenueCat integration — sets up the dashboard side via the RevenueCat MCP or the rc CLI (project, app, public API key) and installs/configures the Purchases SDK in the app. Use when the user asks to add RevenueCat, hook up RevenueCat, add subscriptions or in-app purchases to an app, integrate Purchases, install the RevenueCat SDK, set up a RevenueCat API key, configure Purchases on launch, or set up a brand new RevenueCat integration on iOS, Android, Kotlin Multiplatform, Flutter, or React Native.

Mobile1.1K installs

revenuecat-purchase-flow

revenuecat/ai-toolkit

Implement the RevenueCat purchase and restore flow. Use when the user asks to buy a package, purchase a subscription, fetch offerings, build the purchase logic behind a custom (hand-coded) paywall, handle purchase errors, detect user cancelled, or restore previous purchases on iOS, Android, Kotlin Multiplatform, Flutter, or React Native.

Mobile987 installs

revenuecat-testing-setup

revenuecat/ai-toolkit

Set up a testing environment for RevenueCat purchases without charging real money. Use when the user says test RevenueCat purchases, sandbox setup, StoreKit configuration file, license tester, how do I test purchases without real money, set up sandbox account, internal testing track, or test paywall on iOS, Android, Kotlin Multiplatform, Flutter, or React Native.

Testing & QA901 installs

create-revenuecat-project

revenuecat/ai-toolkit

Set up a complete RevenueCat project from scratch — creates apps, products, entitlements, offerings, and packages in the correct order. Use when the user wants to create a new RevenueCat project, configure in-app purchases, set up subscriptions or monetization, or bootstrap IAP infrastructure for iOS, Android, or Web.

Mobile882 installs

revenuecat-troubleshoot

revenuecat/ai-toolkit

Diagnose and resolve RevenueCat integration issues — inspects dashboard configuration through the RevenueCat MCP, walks the SDK debug logs, and covers code-side gotchas. Use when the user says offerings are empty, products not loading, entitlement not active after purchase, paywall won't load, transactions not appearing, customer info shows no entitlements, sandbox purchase not working, an SDK-gated RevenueCat feature not working, or RevenueCat is broken on iOS, Android, Kotlin Multiplatform, Flutter, or React Native. Also use when asked to check or validate the store / product setup.

Mobile878 installs

Popular data & databases skills

View category →

Postgres best practices maintained by Supabase, for Postgres running anywhere. Load this skill BEFORE writing or changing anything that lives in a Postgres database: creating or altering tables and columns (including choosing column types), schema design, migrations and declarative schema files, RLS policies and the tests that verify them, indexes, triggers, database functions, queues and scheduled jobs (pgcron, pgmq), vector/semantic search (pgvector), and restoring dumps (pgrestore) or importing data. Also load it when diagnosing slow queries, high CPU, timeouts, EXPLAIN plans, connection exhaustion, locking, bloat, or rows visible to the wrong user or tenant. This is not just a performance guide — schema, migration, security, and SQL authoring tasks need these rules too, even for a one-column change or a single query.

OfficialData & Databases462.2K installs

prisma-client-api

prisma/skills

Prisma Client API reference covering model queries, filters, operators, and client methods. Use when writing database queries, using CRUD operations, filtering data, or configuring Prisma Client. Triggers on "prisma query", "findMany", "create", "update", "delete", "$transaction".

OfficialData & Databases393.5K installs

Deprecated compatibility name for prisma-orm-setup. Use only when a user or existing integration explicitly invokes prisma-database-setup; otherwise select prisma-orm-setup.

OfficialData & Databases392.3K installs

prisma-cli

prisma/skills

Prisma ORM 7 CLI reference for existing Prisma 7 applications or explicitly selected Prisma 7 workflows. Covers prisma init, generate, migrate, db, dev, studio, and mcp. For setup, connection repair, or Prisma 8, use prisma-orm-setup; not the Prisma Platform CLI.

OfficialData & Databases390.8K installs

prisma-postgres

prisma/skills

Deprecated compatibility name for prisma-postgres-setup. Use only when a user or existing integration explicitly invokes prisma-postgres; otherwise select prisma-postgres-setup.

OfficialData & Databases384.4K installs

Required reference for Prisma ORM 7 SQL driver adapter work. Use when implementing or modifying adapters, adding database drivers, or touching SqlDriverAdapter, Transaction, savepoint, result mapping, or DriverAdapterError behavior. Covers current transaction lifecycle, optional savepoint hooks, original database-error preservation, and verification.

OfficialData & Databases378.9K installs