From d3d733d8fc4fc9b4a98fc589067f23e2bbd07fb1 Mon Sep 17 00:00:00 2001 From: Josh Holtz Date: Mon, 7 Sep 2026 09:15:26 -0500 Subject: [PATCH 1/4] docs(cookbook): fix examples that don't run customers grant takes positional args, not --customer-id/--entitlement-id flags; 'customer list' isn't a command; entitlements create is promptless so --yes was dead weight; the refund note said the opposite of what the example shows. Co-Authored-By: Claude Fable 5 --- docs/cookbook.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/cookbook.md b/docs/cookbook.md index 432d28a1..03fac5d9 100644 --- a/docs/cookbook.md +++ b/docs/cookbook.md @@ -30,11 +30,11 @@ rc customers show cus_abc --json | jq '.data.subscriptions.items' Grant a one-month promotional entitlement: ```bash -rc customers grant --customer-id cus_abc --entitlement-id pro --duration monthly --yes +rc customers grant cus_abc pro --duration monthly --yes ``` -Refund a Web Billing subscription (this is `--yes` by intent — confirmation -matters): +Refund a Web Billing subscription (no `--yes` on purpose — this one should +prompt): ```bash rc subscriptions refund sub_abc @@ -63,7 +63,7 @@ rc entitlements list --json | jq -r '.data.items[].lookup_key' Create an entitlement and immediately attach products: ```bash -rc entitlements create --lookup-key plus --display-name "Plus" --yes --json +rc entitlements create --lookup-key plus --display-name "Plus" --json rc entitlements attach plus prod_monthly prod_yearly ``` @@ -127,7 +127,7 @@ Separate staging and prod credentials cleanly: rc login --profile staging --api-key sk_staging_... rc login --profile prod --api-key sk_prod_... -rc --profile staging customer list --limit 5 +rc --profile staging customers list --limit 5 rc --profile prod metrics --json ``` From 848f4a8d92703ecc59b56d06fbac460afe39dc5e Mon Sep 17 00:00:00 2001 From: Josh Holtz Date: Mon, 7 Sep 2026 09:16:11 -0500 Subject: [PATCH 2/4] docs(command-surface): catch the tree up to shipped commands rc api, rc packages list, and rc capital setup all shipped without landing in the tree this file claims is the source of truth. Co-Authored-By: Claude Fable 5 --- docs/command-surface.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/command-surface.md b/docs/command-surface.md index 348069db..0e877acb 100644 --- a/docs/command-surface.md +++ b/docs/command-surface.md @@ -70,6 +70,7 @@ names; there's no list endpoint. rc setup # one-shot agent-driven bootstrap; featured in --help/home/README, runs non-interactively for the prompt rc setup google [app-id] # experimental (hidden from --help until the Google OAuth consent screen is verified): local Google sign-in, bootstrap the Play service-account credential, grant package-scoped access, upload to RC rc setup apple [app-id] # interactive: App Store Connect sign-in + 2FA, create/upload IAP & ASC keys, vendor number (rc apps apple setup is a hidden alias) +rc capital setup [app-id] # experimental: RevenueCat Capital onboarding — the same guided Apple credential flow under the product's name rc # bare rc -> getting-started help; --all reveals experimental commands # Auth / meta @@ -79,6 +80,7 @@ rc auth logout # clears credentials fr rc auth status # show auth state plus cached account identity; auth whoami and root rc whoami are aliases rc commands # agent discovery (tree) rc schema # agent discovery (flags) +rc api # raw v2 request escape hatch for endpoints the surface doesn't cover; --body for payloads rc skills install # install the core skills globally for RC-supported agents without a picker; --agent overrides rc skills prompts # show copy-ready starter prompts; --json returns prompts for agent UIs rc open [section] [id] # open the dashboard deep-linked to the active project (uses existing browser session) @@ -149,6 +151,7 @@ rc offerings delete rc offerings archive rc offerings restore rc offerings packages # nested resource +rc packages list # all packages across all offerings rc packages show rc packages create rc packages update From ffa1b64c2e3c9972c54321f42e76e639ce76e447 Mon Sep 17 00:00:00 2001 From: Josh Holtz Date: Mon, 7 Sep 2026 09:16:34 -0500 Subject: [PATCH 3/4] docs(readme): un-stale the store-state pitch, fill command-table gaps Store-state isn't Apple/Play-only since the server took over store rules. The Products row was missing update, push, and the prices commands the AI Toolkit section already references; Offerings was missing restore and delete. Co-Authored-By: Claude Fable 5 --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 2c372796..27b01f3d 100644 --- a/README.md +++ b/README.md @@ -90,9 +90,9 @@ rc charts show mrr | **Customers** | `show` · `list` · `grant` · `revoke` · `transfer` · `aliases` · `attributes` · `simulate-purchase` | | **Subscriptions** | `show` · `cancel` · `extend` · `refund` · `transactions` | | **Entitlements** | `list` · `show` · `create` · `update` · `attach` · `detach` | -| **Offerings** | `list` · `show` · `verify` · `preview` · `create` · `update` · `set-current` · `archive` | +| **Offerings** | `list` · `show` · `verify` · `preview` · `create` · `update` · `set-current` · `archive` · `restore` · `delete` | | **Packages** | `list` (across all offerings) · `show` · `products` · `create` · `update` · `delete` · `attach` · `detach` | -| **Products** | `list` · `show` · `create` · `archive` · `restore` · `delete` · `store sync` | +| **Products** | `list` · `show` · `create` · `update` · `archive` · `restore` · `delete` · `push` · `prices` / `prices set` · `store sync` | | **Paywalls** | `list` · `show` · `create` · `generate` (AI) · `edit` (AI) · `rewind` · `publish` · `unpublish` · `attach` · `detach` · `delete` | | **Rico (AI assistant)** | `rico` (streaming chat, tool approvals) · `conversations list/show/delete` · `feedback` | | **Charts & metrics** | Interactive bar/line charts · daily/weekly/monthly/quarterly/yearly | @@ -126,8 +126,9 @@ dashboard paywall. ### Product store-state plans (experimental) -Manage your App Store / Google Play catalog as a reviewable plan: describe the -desired state, review the computed diff, then apply it. +Manage your store product catalog as a reviewable plan: describe the desired +state, review the computed diff, then apply it. The server decides which +stores and fields it supports; App Store and Google Play are the most complete. ```bash rc products store sync app_abc # interactive: review, then apply From cbec68a18ce9041f6366cfb90d90b625156094d1 Mon Sep 17 00:00:00 2001 From: Josh Holtz Date: Tue, 8 Sep 2026 17:03:09 -0500 Subject: [PATCH 4/4] =?UTF-8?q?docs:=20review-team=20fixes=20=E2=80=94=20c?= =?UTF-8?q?orrect=20more=20examples=20the=20pass=20missed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit grant takes an entitlement ID, not a lookup key; set-attribute uses --set key=value; customers show requires the ID; charts prose names the real 'charts show' command; packages list only fetches the first page per offering, so stop claiming 'all'; the no-bulk-import bullet now carves out store-state plans, which are exactly that. Co-Authored-By: Claude Fable 5 --- README.md | 2 +- docs/command-surface.md | 11 ++++++----- docs/cookbook.md | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 27b01f3d..4636c224 100644 --- a/README.md +++ b/README.md @@ -91,7 +91,7 @@ rc charts show mrr | **Subscriptions** | `show` · `cancel` · `extend` · `refund` · `transactions` | | **Entitlements** | `list` · `show` · `create` · `update` · `attach` · `detach` | | **Offerings** | `list` · `show` · `verify` · `preview` · `create` · `update` · `set-current` · `archive` · `restore` · `delete` | -| **Packages** | `list` (across all offerings) · `show` · `products` · `create` · `update` · `delete` · `attach` · `detach` | +| **Packages** | `list` (across offerings) · `show` · `products` · `create` · `update` · `delete` · `attach` · `detach` | | **Products** | `list` · `show` · `create` · `update` · `archive` · `restore` · `delete` · `push` · `prices` / `prices set` · `store sync` | | **Paywalls** | `list` · `show` · `create` · `generate` (AI) · `edit` (AI) · `rewind` · `publish` · `unpublish` · `attach` · `detach` · `delete` | | **Rico (AI assistant)** | `rico` (streaming chat, tool approvals) · `conversations list/show/delete` · `feedback` | diff --git a/docs/command-surface.md b/docs/command-surface.md index 0e877acb..752481f8 100644 --- a/docs/command-surface.md +++ b/docs/command-surface.md @@ -59,7 +59,7 @@ refund_rate, revenue, subscription_retention, subscription_status, trial_conversion_rate, trials, trials_movement, trials_new ``` -CLI surface: `rc charts ` should validate against this enum and offer +CLI surface: `rc charts show ` should validate against this enum and offer shell completion. `rc charts list` is a static command that prints these names; there's no list endpoint. @@ -113,11 +113,11 @@ rc apps apple check [app-id] # validate Apple login, rc apps apple setup [app-id] # hidden alias of rc setup apple (kept for back-compat) # Customers — busiest noun -rc customers show [id] # embeds active_entitlements +rc customers show # embeds active_entitlements rc customers list rc customers aliases rc customers attributes # GET all subscriber attributes -rc customers set-attribute # set a single subscriber attribute +rc customers set-attribute --set = # set subscriber attributes (--set is repeatable) rc customers grant [--duration ...] rc customers revoke rc customers transfer --to @@ -151,7 +151,7 @@ rc offerings delete rc offerings archive rc offerings restore rc offerings packages # nested resource -rc packages list # all packages across all offerings +rc packages list # packages across offerings (first page per offering; large catalogs page via the API) rc packages show rc packages create rc packages update @@ -250,7 +250,8 @@ rc audit # /audit_logs with --li deferred because its component schema needs a purpose-built editing UX. - **No plugin system.** YAGNI; oclif model is a Node bet, not a Go one. - **No `--account` flag.** Account is implicit in the API key. -- **No bulk-import** until there's a concrete ask. +- **No generic bulk-import** (customers, catalog CRUD) until there's a concrete + ask — store-state plans' CSV/JSON input is the one deliberate exception. ## Build order diff --git a/docs/cookbook.md b/docs/cookbook.md index 03fac5d9..b2fe3def 100644 --- a/docs/cookbook.md +++ b/docs/cookbook.md @@ -30,7 +30,7 @@ rc customers show cus_abc --json | jq '.data.subscriptions.items' Grant a one-month promotional entitlement: ```bash -rc customers grant cus_abc pro --duration monthly --yes +rc customers grant cus_abc entl_pro --duration monthly --yes ``` Refund a Web Billing subscription (no `--yes` on purpose — this one should