Skip to content

feat(integrate-revenuecat): settle how the paywall is built before coding it - #62

Merged
trinya merged 4 commits into
mainfrom
tanyaaulachynskaya/paywall-approach-choice
Sep 25, 2026
Merged

trinya merged 4 commits into
mainfrom
tanyaaulachynskaya/paywall-approach-choice

Conversation

@trinya

@trinya trinya commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

Why

Codex and Claude Code, both with the toolkit installed, got the same prompt ("Now hook up RevenueCat") and did different things:

  • Codex hand-coded a paywall wired to offerings (dynamic products and prices, no paywall builder).
  • Claude Code stopped and asked whether to code a paywall or use the builder.

The skills never made the call. integrate-revenuecat ended by listing revenuecat-paywall and revenuecat-purchase-flow as equal follow-ups. revenuecat-purchase-flow's description matched "build paywall purchase logic", which is close to what "hook up" means. Nothing recommended the builder, so each agent went with its own default. Codex doesn't usually stop to ask, so "ask the user" on its own won't fix this. The skill needs a stated default.

What changed

  • integrate-revenuecat: new 5c. Choose how the paywall is built, and the overview points to it.
    • RevenueCat Paywall is the recommended default when the app has no paywall screen, created with create-paywall-ai / rc paywalls generate (both on main since 2.3.0).
    • If the app already has a paywall screen, keep it, wire it to offerings, and mention the builder.
    • Ask when possible, with the recommendation first. When the agent can't ask, it takes the default and says in its summary which path it took and how to switch.
    • Describes the trade-off: paywall changes need an app release and can't be A/B tested, while price and offering tests still work with a custom paywall.
    • The description now also triggers on "hook up RevenueCat" and on adding subscriptions or in-app purchases.
  • revenuecat-purchase-flow: the description is scoped to custom (hand-coded) paywalls, and the intro points back at 5c.
  • revenuecat-paywall: removes a stale "(when available)" and points at 5c.
  • No version bump or CHANGELOG entry. Those go in one release PR together with the other skill-fix PRs, so the plugin ships (and goes to Cursor) once.

For reviewers

  • Please confirm: the new section says the app shows the default fallback layout until a paywall is published and attached. If an unpublished draft paywall is served to the SDK, that sentence should change.
  • Default for apps that already have a paywall screen: this PR keeps the existing screen. If we'd rather push the builder even there, it's a one-line change.

Testing

Only skill text changed. I haven't done a behavioral run yet. The useful check is a sample app with no paywall, run through Codex and Claude Code several times each with "hook up RevenueCat", counting builder vs. hand-coded vs. asked, before and after this change.

🤖 Generated with Claude Code


Note

Low Risk
Documentation-only skill guidance changes with no runtime, auth, or data-handling impact.

Overview
Adds an explicit paywall strategy step so agents don’t treat dashboard RevenueCatUI paywalls and hand-coded purchase flows as interchangeable follow-ups after SDK integration.

integrate-revenuecat now requires settling Section 5c before paywall code: RevenueCat Paywall is the default when there’s no existing paywall (create via revenuecat-paywall-design, present via revenuecat-paywall); custom UI stays the path when the app already has a subscription screen, wired through getOfferings() and revenuecat-purchase-flow. The section documents trade-offs (OTA design vs app releases, paywall A/B testing), when to ask vs default non-interactively, and that unpublished drafts show the SDK fallback until published on the offering. The skill description also triggers on “hook up RevenueCat” and adding subscriptions/IAP.

Follow-up skills are re-scoped: former “5c. Subsequent skills” becomes 5d and lists revenuecat-paywall-design; revenuecat-purchase-flow is described as custom-paywall-only and defers to 5c; revenuecat-paywall drops stale “when available” and points at 5c for users who haven’t chosen a path.

Reviewed by Cursor Bugbot for commit 968b719. Bugbot is set up for automated code reviews on this repo. Configure here.

Tanya Aulachynskaya and others added 2 commits September 25, 2026 15:56
…ding it

Given "hook up RevenueCat", agents split: one hand-coded a paywall wired to
offerings, another asked whether to use the paywall builder. The skills listed
both paths as equal follow-ups with no recommendation.

integrate-revenuecat now has an explicit paywall choice step: RevenueCat
Paywall is the default for apps with no paywall screen, an existing screen is
kept and wired to offerings, agents ask when they can and otherwise take the
default and say so. purchase-flow and paywall point back at that choice.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…at Paywall

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@trinya
trinya marked this pull request as ready for review September 25, 2026 14:31
@trinya
trinya requested a review from a team as a code owner September 25, 2026 14:31

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit aa6f5be. Configure here.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…l-design

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@trinya
trinya merged commit 7f30586 into main Sep 25, 2026
2 checks passed
@trinya
trinya deleted the tanyaaulachynskaya/paywall-approach-choice branch September 25, 2026 16:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants