Skip to content

Commit 5da9ee2

Browse files
committed
Teach agents to generate and edit paywalls
1 parent 9374823 commit 5da9ee2

2 files changed

Lines changed: 14 additions & 7 deletions

File tree

revenuecat/skills/create-revenuecat-project/SKILL.md

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -187,14 +187,21 @@ Decide whether the user wants a RevenueCat dashboard paywall or custom app UI.
187187
For a dashboard paywall:
188188

189189
1. Confirm the current offering and packages are complete.
190-
2. Inspect `rc schema paywalls create --json` and create the default draft attached to the intended offering:
190+
2. Inspect `rc schema paywalls generate --json`. When available, use Paywall AI Editor to create a designed draft from the user's direction and the app context already gathered in Stage 0:
191191

192192
```bash
193-
rc paywalls create --offering-id <offering-id> --json --no-input
193+
rc paywalls generate <offering-id> \
194+
--prompt "<approved paywall direction>" \
195+
--context "<concise product, audience, brand, and premium-feature context>" \
196+
--json --no-input
194197
```
195198

196-
3. Capture the paywall ID. Creation always produces a draft; `published_at` is null until publish succeeds.
197-
4. Review the selected template, then publish the customer-facing draft only after approval:
199+
The command waits for the persisted Astra task by default. If using `--async`, capture `data.task_id` and run `rc paywalls task <task-id> --wait --json --no-input`; do not start the same generation again while its task is queued or running.
200+
201+
If AI generation is unavailable or the user explicitly wants the default template, use `rc paywalls create --offering-id <offering-id> --json --no-input`.
202+
203+
3. Capture `data.paywall_id` and `data.editor_url`. Paywall AI Editor always saves an unpublished draft. For requested revisions, run `rc paywalls edit <paywall-id> --prompt "<change>" --context "<relevant context>" --json --no-input`; do not manipulate the raw components JSON.
204+
4. Review the draft and editor link, then publish the customer-facing draft only after approval:
198205

199206
```bash
200207
rc paywalls publish <paywall-id> --yes --json --no-input
@@ -203,7 +210,7 @@ For a dashboard paywall:
203210
5. Require the publish response and `rc paywalls show <paywall-id> --json --no-input` to contain a non-null `published_at`.
204211
6. Verify the SDK payload with `rc offerings preview <test-store-app-id> --json --no-input`. Require the intended current offering and non-null `paywall_components`; null means the SDK is still receiving fallback components.
205212

206-
If `rc schema paywalls publish --json` is unavailable in the installed build, check an authenticated MCP publish tool. Otherwise hand off exactly: RevenueCat dashboard → Paywalls → open the created draft → customize/reviewPublish.
213+
If neither `rc paywalls generate` nor the Cloud MCP Paywall AI Editor tools are available, create the default draft or hand customization off exactly: RevenueCat dashboard → Paywalls → open the draft → customize/review. If `rc schema paywalls publish --json` is unavailable, check an authenticated MCP publish tool or hand off the final Publish action.
207214

208215
Do not confuse a created draft or fallback paywall layout with a published dashboard paywall. If `published_at` is empty or only the fallback renders, mark dashboard paywall configuration incomplete.
209216

revenuecat/skills/revenuecat-paywall/SKILL.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
name: revenuecat-paywall
3-
description: Configure and display a RevenueCat paywall using a dashboard paywall plus the RevenueCatUI SDK, or identify the exact dashboard handoff when paywall creation is not exposed by CLI/MCP. Use when adding a paywall, presenting PaywallView, gating a premium screen, installing RevenueCatUI, or verifying paywall purchases on iOS, Android, Kotlin Multiplatform, Flutter, or React Native.
3+
description: Generate or edit a RevenueCat paywall with Paywall AI Editor, publish it, and display it through RevenueCatUI, or identify the exact dashboard handoff when an operation is unavailable. Use when creating or revising paywall design/copy, adding a paywall, presenting PaywallView, gating a premium screen, installing RevenueCatUI, or verifying paywall purchases on iOS, Android, Kotlin Multiplatform, Flutter, or React Native.
44
---
55

66
# revenuecat-paywall: display a RevenueCat paywall
@@ -24,7 +24,7 @@ If several match (e.g. an `ios/` folder inside a Flutter project), pick the **ou
2424
## 2. Shared concepts (all platforms)
2525

2626
- **Paywalls require an Offering with a paywall attached in the RevenueCat dashboard.** The SDK pulls offerings via `getOfferings()`. If no offering has a paywall configured, RevenueCatUI falls back to a default paywall layout, which is not what you want in production.
27-
- **Dashboard creation, publication, and app presentation are separate.** Use `rc paywalls create --offering-id <id>` for the attached draft, review it, then `rc paywalls publish <paywall-id> --yes`. Require a non-null `published_at`. Use `rc offerings preview <app-id>` to confirm the SDK response contains non-null `paywall_components`; null means fallback components. If the installed CLI lacks publish, use an authenticated MCP publish tool or hand off exactly: Paywalls → open draft → customize/review → Publish. Do not claim that creating a draft or installing RevenueCatUI published it.
27+
- **Design, publication, and app presentation are separate.** Prefer `rc paywalls generate <offering-id> --prompt "<direction>" --context "<app context>"` to create an AI-designed draft and `rc paywalls edit <paywall-id> --prompt "<change>"` for revisions. These commands wait for Astra by default and return an editor URL; `--async` returns a task for `rc paywalls task <task-id> --wait`. They never publish. Review the resulting draft, then run `rc paywalls publish <paywall-id> --yes`. Require a non-null `published_at` and use `rc offerings preview <app-id>` to confirm non-null `paywall_components`. If AI generation is unavailable, use `rc paywalls create --offering-id <id>` for the default draft or the exact dashboard handoff. Do not claim that generating, editing, or installing RevenueCatUI published the paywall.
2828
- **The active key selects the store products.** A debug build using `test_…` must render the Test Store products attached to each package; a release build using `appl_…` or `goog_…` must render the corresponding platform products attached to those same packages.
2929
- **Offering vs. entitlement.** Users purchase a product through a package in an offering. Access is granted via an entitlement (typically `"premium"` or `"pro"`). Gate premium features on the entitlement, not on the offering.
3030
- **Three presentation patterns**:

0 commit comments

Comments
 (0)