Agent Skills: Stripe Scaffold

|

UncategorizedID: phrazzld/claude-config/stripe-scaffold

Install this agent skill to your local

pnpm dlx add-skill https://github.com/phrazzld/claude-config/tree/HEAD/skills/stripe-scaffold

Skill Files

Browse the full folder contents for stripe-scaffold.

Download Skill

Loading file tree…

skills/stripe-scaffold/SKILL.md

Skill Metadata

Name
stripe-scaffold
Description
|

Stripe Scaffold

Generate the code for a Stripe integration.

Branching

Assumes you start on master/main. Before generating code:

git checkout -b feat/stripe-integration-$(date +%Y%m%d)

Objective

Turn a design document into working code. Delegate implementation to Codex aggressively — that's what it's for.

Process

1. Review the Design

Read the design document from stripe-design. Understand:

  • Checkout flow
  • Webhook events
  • State management approach
  • Access control logic

2. Research Current Implementation

Before generating code:

  • Use Gemini to find current Stripe SDK usage patterns
  • Check the Stripe docs for your specific use case
  • Look at how similar apps implement this

Code patterns change. Don't rely on cached knowledge.

3. Delegate to Codex

For each component, delegate to Codex with clear specs:

codex exec --full-auto "Implement Stripe webhook handler for [events]. \
Follow pattern in [reference]. Use Convex mutations for state updates. \
Verify signature first. Handle idempotency. \
Run pnpm typecheck after." \
--output-last-message /tmp/codex-webhook.md 2>/dev/null

Then: git diff --stat && pnpm typecheck && pnpm test

4. Components to Generate

Typical Next.js + Convex stack:

Backend:

  • src/lib/stripe.ts — Stripe client initialization
  • src/app/api/stripe/checkout/route.ts — Checkout session creation
  • src/app/api/stripe/webhook/route.ts — Webhook receiver (signature verification)
  • convex/stripe.ts — Webhook event processing
  • convex/subscriptions.ts — Subscription state management
  • convex/billing.ts — Billing queries and portal session creation
  • convex/schema.ts updates — Subscription fields on users
  • .env.example updates — Document required variables

Subscription Management UX (Required): Reference stripe-subscription-ux for full requirements.

  • components/billing/SubscriptionCard.tsx — Current plan overview
  • components/billing/BillingCycleInfo.tsx — Next billing date, amount
  • components/billing/PaymentMethodDisplay.tsx — Card on file
  • components/billing/BillingHistory.tsx — Past invoices
  • components/billing/ManageSubscriptionButton.tsx — Opens Stripe Portal
  • components/billing/TrialBanner.tsx — Trial status/countdown
  • Settings page section for subscription management

This UX is non-negotiable. No Stripe integration is complete without it.

5. Don't Forget

  • Trial handling: pass trial_end when user upgrades mid-trial
  • Access control: check subscription status before gated features
  • Error handling: webhook should return 200 even on processing errors (to prevent Stripe retries)
  • Signature verification: MUST be first thing in webhook handler

Quality Gates

After generation:

  • pnpm typecheck — No type errors
  • pnpm lint — No lint errors
  • pnpm test — Tests pass (if they exist)
  • Manual review of generated code

Adaptation

Default stack is Next.js + Convex. If different:

  • Express/Fastify: Different route setup, same Stripe logic
  • Supabase/Postgres: Different ORM, same state management concepts
  • No Convex: Webhook processing happens in the API route directly

The Stripe parts are the same; the framework parts adapt.