iblai-vibe-monetization-app-paywalllisted
Install: claude install-skill iblai/vibe
# /iblai-vibe-monetization-app-paywall
Gate a whole app behind a one-time or subscription payment on the **tenant's
own Stripe account**. The ibl.ai platform (DM) owns entitlement end to end:
it mints the Stripe Checkout session, verifies the buyer's return
read-after-write, records payments durably, caches answers (grants 60s,
denies 15s — a `session_id` punches through a cached deny), checks
subscriptions live so cancellation bites within the cache window, and keeps
recorded payers in during a Stripe outage (`stale: true`) while failing
closed for unknown users. The app stays thin: two server routes, one client
gate, one pricing page. **No cookies, no webhooks, no local payment ledger.**
How a visit flows: anonymous visitor → `AuthProvider` → hosted Auth SPA →
back logged in → `PaywallGate` (inside the `(app)` layout) asks
`GET /api/paywall/access` → denied → `/paywall` pricing page → buy → Stripe
Checkout → `/paywall/return?session_id=…` → access confirmed → app.
> **Common setup (brand, conventions, env files, verification):** see [docs/skill-setup.md](https://raw.githubusercontent.com/iblai/vibe/refs/heads/main/docs/skill-setup.md).
## This rail vs the Connect family
| | This skill (direct rail) | `/iblai-vibe-monetization-checkout` (Connect rail) |
|---|---|---|
| Sells | Entry to the **whole app** | Individual items (agents, courses…) in-platform |
| Stripe account | Tenant's **own** key (`rk_…`) via the DM Stripe proxy | Stripe Connect Express, ibl.ai-managed |
|