vibiz-payments
Use when editing pricing, offers, checkout CTAs, payment links, redirects, or revenue-related UI in the Vibiz sandbox template.
SKILL.md.opencode/skills/vibiz-payments/SKILL.md
GitHubVibiz Payments
The customer site must stay Stripe-free. Vibiz owns Stripe products, prices, Payment Links, webhooks, attribution, refunds, and reporting in the parent app. This sandbox template only renders platform-minted links.
Before editing payment surfaces, read:
src/lib/offers.tssrc/lib/entitlements.tssrc/lib/vibiz-runtime.tssrc/components/EntitlementGate.tsxsrc/app/payment-success/page.tsxsrc/components/landing/pricing.tsxdata/offers.jsontemplate.config.ts
Rules:
- Never install or import the
stripeSDK. - Never create
lib/stripe.ts,/api/stripe/*, checkout-session routes, webhook routes, or payment-intent code. - Never add
STRIPE_SECRET_KEY,STRIPE_WEBHOOK_SECRET, or secret Stripe values to any file. - Never modify
data/offers.json; it is seeded by Vibiz on sandbox bootstrap and deploy. - Render real checkout CTAs with
href={offer.paymentLinkUrl}when seeded offers exist. - Gate paid post-checkout features with
offer.entitlementKey,src/components/EntitlementGate.tsx, or the helpers insrc/lib/entitlements.ts; those helpers revalidate the local entitlement with Vibiz before unlocking. - Keep
/?payment=success&claim=...as the legacy-safe Stripe landing URL and/payment-success?claim=...as the Vibiz claim exchange route. The root page forwards claims to/payment-success, which calls the Vibiz runtime claim endpoint, stores the returned entitlement locally, and future visits unlock only after Vibiz runtime revalidation succeeds. - Keep the
NEXT_PUBLIC_VIBIZ_DEPLOY === "1"behavior: Vibiz-managed deployments must not show placeholder pricing when offers are missing. - If offers are empty on a Vibiz-managed deployment, show a truthful empty state instead of fake tiers.
Verification:
- Search for forbidden Stripe additions with
rg -n "stripe|STRIPE|checkout.session|payment_intent|/api/stripe". - Run
npm run buildafter code changes. - Confirm customer-visible CTAs still point at seeded
paymentLinkUrlvalues, not locally generated checkout URLs.