Get the FREE Ultimate OpenClaw Setup Guide →

riligar-infra-stripe

npx machina-cli add skill riligar/agents-kit/riligar-infra-stripe --openclaw
Files (1)
SKILL.md
8.7 KB

Stripe 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:

  1. Publishable Key (pklive... ou pktest...)
  2. 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:

  1. Tipo de cobrança: Assinatura (recorrente) ou pagamento único?
  2. 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:

  1. Acesse https://dashboard.stripe.com/webhooks
  2. Clique em "Add endpoint"
  3. URL: https://seu-dominio.com/api/webhook
  4. Selecione os eventos:
    • checkout.session.completed
    • customer.subscription.updated
    • customer.subscription.deleted
    • invoice.paid
    • invoice.payment_failed
  5. Copie o "Signing secret" (whsec_...)
  6. Adicione ao .env.development e .env.production

Step 8: Gerar Código

Gere todos os arquivos necessários usando os templates de assets/:

ArquivoBaseado em
plugins/stripe.jsstripe-server.js (seção 1)
routes/billing.jsstripe-server.js (seção 2)
routes/webhook.jsstripe-server.js (seção 3)
services/billing.jsstripe-server.js (seção 4)
config/stripe-prices.jsPrice IDs coletados (Step 9)
config/plans.jsPLAN_MAP + PLAN_LIMITS (Step 9)
pages/Pricing.jsxstripe-client.js (seção 3)
components/BillingSettings.jsxstripe-client.js (seção 4)
hooks/useSubscription.jsstripe-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.development e .env.production (backend e frontend)
  • Produtos criados no Stripe
  • Price IDs configurados em config/stripe-prices.js
  • PLAN_MAP e PLAN_LIMITS configurados em config/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)
  • useSubscription hook 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

GuideContent
stripe-elysia.mdBackend routes completas
stripe-react.mdComponentes React/Mantine
stripe-webhooks.mdHandlers de eventos
stripe-database.mdSchema 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

  1. Step 1: Recolha com segurança as Publishable Key e Secret Key da Stripe (dashboard).
  2. Step 2: Defina os tipos de cobrança e planos, depois execute o script de setup para criar produtos/ preços.
  3. 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.

Frequently Asked Questions

Add this skill to your agents
Sponsor this space

Reach thousands of developers