Use when you have a written implementation plan to execute in a separate session with review checkpoints
npx skills add phrazzld/claude-config --skill "stripe-scaffold"
Install specific skill from multi-skill repository
# Description
|
# SKILL.md
name: stripe-scaffold
description: |
Generate Stripe integration code from a design document.
Produces working code, not just templates.
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 overviewcomponents/billing/BillingCycleInfo.tsx— Next billing date, amountcomponents/billing/PaymentMethodDisplay.tsx— Card on filecomponents/billing/BillingHistory.tsx— Past invoicescomponents/billing/ManageSubscriptionButton.tsx— Opens Stripe Portalcomponents/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_endwhen 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.
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.