riligar-infra-stripe
npx machina-cli add skill riligar/agents-kit/riligar-infra-stripe --openclawStripe Setup Wizard
Esta skill configura a integração completa do Stripe no seu projeto. O agente vai guiar você através de um setup interativo.
Setup Workflow
Quando o usuário solicitar configurar o Stripe, siga este fluxo OBRIGATÓRIO:
Step 1: Coletar Chaves
Pergunte ao usuário:
Para configurar o Stripe, preciso das suas chaves da API. Você pode encontrá-las em: https://dashboard.stripe.com/apikeys
Por favor, me forneça:
- Publishable Key (pklive... ou pktest...)
- Secret Key (sklive... ou sktest...)
Aguarde as chaves antes de prosseguir.
Step 2: Identificar Produtos
Após receber as chaves, pergunte:
Agora preciso entender seus produtos. Me diga:
- Tipo de cobrança: Assinatura (recorrente) ou pagamento único?
- Quais planos/produtos você quer oferecer?
Exemplo de resposta:
- Assinatura mensal
- Plano Starter: R$ 29/mês (5 projetos, suporte email)
- Plano Pro: R$ 99/mês (ilimitado, suporte prioritário)
- Plano Enterprise: R$ 299/mês (tudo + SLA)
Step 3: Criar Produtos no Stripe
Com as informações coletadas, gere o script para criar os produtos:
// scripts/setup-stripe-products.js
import Stripe from 'stripe'
const stripe = new Stripe('SK_KEY_AQUI')
async function setupProducts() {
const products = [
// Substituir com os produtos do usuário
{
name: 'Plano Starter',
description: '5 projetos, suporte email',
price: 2900, // R$ 29,00 em centavos
interval: 'month',
features: ['5 projetos', 'Suporte email', '1GB storage'],
},
{
name: 'Plano Pro',
description: 'Ilimitado, suporte prioritário',
price: 9900, // R$ 99,00 em centavos
interval: 'month',
features: ['Projetos ilimitados', 'Suporte prioritário', '10GB storage'],
},
]
console.log('Criando produtos no Stripe...\n')
for (const product of products) {
const stripeProduct = await stripe.products.create({
name: product.name,
description: product.description,
metadata: { features: JSON.stringify(product.features) },
})
const stripePrice = await stripe.prices.create({
product: stripeProduct.id,
unit_amount: product.price,
currency: 'brl',
recurring: product.interval ? { interval: product.interval } : undefined,
})
console.log(`✓ ${product.name}`)
console.log(` Product ID: ${stripeProduct.id}`)
console.log(` Price ID: ${stripePrice.id}\n`)
}
console.log('Produtos criados com sucesso!')
}
setupProducts().catch(console.error)
Instrua o usuário a executar: bun run scripts/setup-stripe-products.js
Step 4: Coletar Price IDs
Após executar o script, peça:
O script gerou os Price IDs. Por favor, me envie os IDs gerados. Exemplo: price_1ABC123...
Step 5: Configurar Ambiente
Com as chaves e Price IDs, configure os arquivos de ambiente:
Backend: .env.development e .env.production
# .env.development (chaves de teste)
STRIPE_SECRET_KEY=sk_test_...
STRIPE_WEBHOOK_SECRET=whsec_...
# .env.production (chaves de produção)
STRIPE_SECRET_KEY=sk_live_...
STRIPE_WEBHOOK_SECRET=whsec_...
Frontend: .env.development e .env.production
# .env.development
VITE_STRIPE_PUBLISHABLE_KEY=pk_test_...
# .env.production
VITE_STRIPE_PUBLISHABLE_KEY=pk_live_...
Step 6: Configurar database
Gere a migration para adicionar campos do Stripe:
// database/schema.js - adicionar aos users
stripeCustomerId: text('stripe_customer_id').unique(),
stripeSubscriptionId: text('stripe_subscription_id').unique(),
plan: text('plan').default('free'),
subscriptionStatus: text('subscription_status'),
currentPeriodEnd: integer('current_period_end', { mode: 'timestamp' }),
Step 7: Configurar Webhook
Instrua o usuário:
Configure o webhook no Stripe Dashboard:
- Acesse https://dashboard.stripe.com/webhooks
- Clique em "Add endpoint"
- URL:
https://seu-dominio.com/api/webhook- Selecione os eventos:
checkout.session.completedcustomer.subscription.updatedcustomer.subscription.deletedinvoice.paidinvoice.payment_failed- Copie o "Signing secret" (whsec_...)
- Adicione ao
.env.developmente.env.production
Step 8: Gerar Código
Gere todos os arquivos necessários usando os templates de assets/:
| Arquivo | Baseado em |
|---|---|
plugins/stripe.js | stripe-server.js (seção 1) |
routes/billing.js | stripe-server.js (seção 2) |
routes/webhook.js | stripe-server.js (seção 3) |
services/billing.js | stripe-server.js (seção 4) |
config/stripe-prices.js | Price IDs coletados (Step 9) |
config/plans.js | PLAN_MAP + PLAN_LIMITS (Step 9) |
pages/Pricing.jsx | stripe-client.js (seção 3) |
components/BillingSettings.jsx | stripe-client.js (seção 4) |
hooks/useSubscription.js | stripe-client.js (seção 2) |
Step 9: Criar Configs de Planos e Preços
A) Arquivo de preços (config/stripe-prices.js):
// config/stripe-prices.js
export const STRIPE_PRICES = {
starter: {
priceId: 'price_COLETADO_STARTER',
name: 'Starter',
price: 29,
features: ['5 projetos', 'Suporte email', '1GB storage'],
},
pro: {
priceId: 'price_COLETADO_PRO',
name: 'Pro',
price: 99,
features: ['Projetos ilimitados', 'Suporte prioritário', '10GB storage'],
},
enterprise: {
priceId: 'price_COLETADO_ENTERPRISE',
name: 'Enterprise',
price: 299,
features: ['Tudo do Pro', 'Storage ilimitado', 'SLA garantido'],
},
}
export const getPrice = plan => STRIPE_PRICES[plan]
export const getPriceId = plan => STRIPE_PRICES[plan]?.priceId
B) Arquivo de mapeamento e limites (config/plans.js):
// config/plans.js
// Mapeia Price IDs do Stripe para nomes de planos internos
export const PLAN_MAP = {
price_COLETADO_STARTER: 'starter',
price_COLETADO_PRO: 'pro',
price_COLETADO_ENTERPRISE: 'enterprise',
}
// Define limites de features por plano
export const PLAN_LIMITS = {
free: {
maxFlows: 1,
maxContacts: 100,
// Adicione outros limites conforme necessário
},
starter: {
maxFlows: 3,
maxContacts: 500,
},
pro: {
maxFlows: 15,
maxContacts: 5000,
},
enterprise: {
maxFlows: 55,
maxContacts: Infinity,
},
}
Checklist Final
Ao completar o setup, confirme:
- Dependências instaladas (
bun add stripe @stripe/stripe-js @stripe/react-stripe-js) - Chaves no
.env.developmente.env.production(backend e frontend) - Produtos criados no Stripe
- Price IDs configurados em
config/stripe-prices.js -
PLAN_MAPePLAN_LIMITSconfigurados emconfig/plans.js - Schema do database atualizado (campos Stripe na tabela users)
- Webhook endpoint configurado no Stripe Dashboard (
/api/webhook) - Webhook secret nos arquivos de ambiente
- Rotas de billing funcionando (
/api/billing/*) - Página de pricing criada (com token de auth no ky)
-
useSubscriptionhook com header Authorization - Testado com cartão 4242 4242 4242 4242
Testing Local
# Instalar Stripe CLI
brew install stripe/stripe-cli/stripe
# Login
stripe login
# Forward webhooks (ajuste a porta conforme seu backend)
stripe listen --forward-to localhost:3333/api/webhook
# Testar checkout
stripe trigger checkout.session.completed
Specialized Guides
| Guide | Content |
|---|---|
| stripe-elysia.md | Backend routes completas |
| stripe-react.md | Componentes React/Mantine |
| stripe-webhooks.md | Handlers de eventos |
| stripe-database.md | Schema Drizzle |
Related Skills
- @[.agent/skills/riligar-dev-manager]
- @[.agent/skills/riligar-dev-dashboard]
- @[.agent/skills/riligar-dev-auth-elysia]
Source
git clone https://github.com/riligar/agents-kit/blob/prod/.agent/skills/riligar-infra-stripe/SKILL.mdView on GitHub Overview
Guia completo para integrar Stripe no seu projeto. O agente coleta chaves da API, define planos e produtos, e configura automaticamente ambientes, scripts e IDs necessários para funcionamento de pagamentos.
How This Skill Works
Ao iniciar, o agente coleta as chaves da API (Publishable e Secret). Em seguida, pergunta sobre tipos de cobrança e planos, gera produtos e históricos de preços via um script de setup, e finalmente atualiza os arquivos de ambiente (.env) e o esquema do banco de dados com os IDs do Stripe.
When to Use It
- Iniciar a integração do Stripe em um novo projeto.
- Configurar cobranças recorrentes (assinaturas) e pagamentos únicos.
- Migrar uma aplicação existente para Stripe com um fluxo automatizado.
- Preparar ambientes de desenvolvimento e produção com chaves corretas.
- Capturar e armazenar Stripe IDs (customer/subscription) após a configuração.
Quick Start
- Step 1: Recolha com segurança as Publishable Key e Secret Key da Stripe (dashboard).
- Step 2: Defina os tipos de cobrança e planos, depois execute o script de setup para criar produtos/ preços.
- Step 3: Atualize .env (backend/frontend) e realize a migração de DB para incluir stripe_customer_id e stripe_subscription_id.
Best Practices
- Solicite Publishable Key e Secret Key de forma segura e verifique permissões.
- Defina claramente seus planos antes de executar o script de criação de produtos.
- Teste primeiro em modo test com chaves de teste antes de produção.
- Guarde com segurança os IDs gerados (produto, preço, cliente, assinatura).
- Mantenha .env de backend e frontend sincronizados entre dev/prod e documente as mudanças.
Example Use Cases
- Configuração de planos Starter/Pro/Enterprise com Stripe e geração de Price IDs.
- Script de setup criando produtos e preços e exibindo Product ID e Price ID no console.
- Atualização de .env.development/.env.production com STRIPE_SECRET_KEY e STRIPE_WEBHOOK_SECRET.
- Migração do banco com campos stripe_customer_id e stripe_subscription_id.
- Validação end-to-end com keys de teste e verificação de webhooks após a configuração.