01 — Instalación y primeros pasos
⚡ Instalación rápida
Requiere Node 18+ y npm / pnpm globales
npm install -g @anthropic-ai/claude-code
claude --version
cd ~/projects/growbot-app
claude
🚀 Flujo de trabajo diario
Patrón recomendado para el equipo GrowBot
1
Abrir Claude Code en el repo
Ejecutar claude desde la raíz del proyecto
2
Describir la tarea con contexto
Incluir módulo, comportamiento esperado y tests afectados
3
Revisar los cambios propuestos
Claude muestra diffs; aprobar o rechazar por archivo
4
Claude ejecuta typecheck + tests
Itera automáticamente hasta que todo pase en verde
5
Crear branch + PR automático
Claude crea la rama y abre el PR con descripción generada
02 — Archivos CLAUDE.md para GrowBot
📄 CLAUDE.md — Raíz del proyecto
Copiar en /growbot-app/CLAUDE.md
CLAUDE.md
# GrowBot — Marketing Automation SaaS
## Stack
- Next.js 14 App Router, TypeScript strict
- Prisma ORM + PostgreSQL (dev: localhost:5432/growbot_dev)
- Resend para transaccional de email
- Stripe Billing (suscripciones + metered usage)
- Vitest + Testing Library + Playwright E2E
## Comandos esenciales
- pnpm dev — servidor en puerto 3000
- pnpm test:unit — Vitest modo watch
- pnpm test:e2e — Playwright headless
- pnpm typecheck — tsc --noEmit
- pnpm db:migrate — Prisma migrate dev
- pnpm db:studio — Prisma Studio UI
## Convenciones de código
- Result<T,E> para errores de dominio, NUNCA throw
- Zod en todos los endpoints de API (src/schemas/)
- Logging estructurado con Pino (NO console.log)
- Feature flags via src/lib/flags.ts
- Consultas DB exclusivamente por Prisma client
## Antes de modificar código
1. Leer el archivo de test del módulo afectado
2. Ejecutar los tests existentes del módulo
3. Después de cambios: pnpm typecheck && pnpm test:unit
## Reglas absolutas
- NO añadir dependencias sin preguntar al usuario
- NO modificar schema Prisma sin crear migración
- NO cambiar lógica de auth sin aprobación explícita
- NUNCA commitear directamente en main → crear branch + PR
📄 CLAUDE.md — Módulo de billing
Copiar en src/billing/CLAUDE.md
src/billing/CLAUDE.md
# Módulo Billing — Stripe
Stripe es el proveedor de pagos. Todas las llamadas
a la API de Stripe pasan por src/lib/stripe/client.ts
que envuelve el SDK con reintentos y manejo de errores.
## Webhooks — Idempotencia obligatoria
Cada handler de webhook DEBE verificar la clave de
idempotencia antes de procesar. Stripe puede reenviar
el mismo evento múltiples veces.
Los IDs de eventos procesados se guardan en la tabla
stripe_events (Prisma model StripeEvent).
## Tarjetas de prueba
- 4242 4242 4242 4242 — pago exitoso
- 4000 0000 0000 0002 — tarjeta rechazada
- 4000 0000 0000 9995 — fondos insuficientes
## Tests de billing
Siempre usar pnpm test:unit src/billing
y verificar que el test de idempotencia pase.
03 — Comandos de terminal de referencia
⌨️ Referencia de comandos Claude Code
Los más utilizados en el flujo diario de GrowBot
| Comando |
Descripción |
Contexto |
| claude |
Sesión interactiva completa. Claude lee CLAUDE.md, escanea el repo y queda a la espera. |
dev |
| claude -p "descripción" |
Modo one-shot: ejecuta una tarea y cierra la sesión. Ideal para pipelines automatizados. |
CI/CD |
| claude --allowedTools "Edit,Read,Bash(pnpm test*)" |
Restringe Claude a herramientas específicas. Seguro para revisiones de código automáticas. |
seguro |
| claude --dangerouslySkipPermissions |
Salta todos los checks de permiso. Solo en entornos CI aislados. |
CI/CD |
| cat error.log | claude -p "analiza este log" |
Pipe de entrada. Úsalo con logs de Sentry o salidas de build para diagnóstico rápido. |
dev |
| claude --mcp-config .mcp.json |
Carga servidores MCP de un archivo específico de proyecto. |
MCP |
04 — Servidores MCP para GrowBot
🔌 Global: ~/.claude/mcp.json
Servidores disponibles en todos los proyectos del equipo
~/.claude/mcp.json
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": { "GITHUB_TOKEN": "ghp_xxxx" }
},
"sentry": {
"command": "npx",
"args": ["-y", "@sentry/mcp-server"],
"env": {
"SENTRY_AUTH_TOKEN": "sntryu_xxxx",
"SENTRY_ORG": "growbot-sas"
}
}
}
}
🗄️ Proyecto: .mcp.json (repo GrowBot)
Servidor de BD local — no commitear con credenciales reales
.mcp.json
{
"mcpServers": {
"database": {
"command": "npx",
"args": [
"tsx",
"mcp-servers/database/index.ts"
],
"env": {
"DATABASE_URL":
"postgresql://localhost:5432/growbot_dev"
}
}
}
}
GitHub MCP
Claude puede leer PRs, issues, comentarios y crear branches directamente desde la conversación.
@modelcontextprotocol/server-github
Sentry MCP
Accede a errores en producción en tiempo real. Claude los analiza y propone fixes con contexto completo.
@sentry/mcp-server
Database MCP
Consultas a PostgreSQL dev para validar esquemas, datos de prueba o debuggear migraciones de Prisma.
custom: mcp-servers/database
05 — Flujo Feature → PR → CI
🔄 Pipeline de desarrollo con Claude Code
Desde la petición hasta el merge — GrowBot SaaS
💬
Descripción
Describe la feature o bug en la sesión de claude
📖
Lectura del código
Claude lee archivos relevantes y tests existentes
✏️
Implementación
Claude edita, crea archivos y mantiene convenciones
🧪
Verificación
typecheck + tests — Claude itera hasta pasar
🌿
Branch + PR
Claude crea rama feature/ y abre PR con descripción
🤖
CI Automático
GitHub Actions ejecuta suite completa en paralelo
✅
Review humano
Un dev revisa el diff y aprueba el merge
$ claude
> Implementa la feature de "límite de campañas por plan".
> Cada plan de Stripe tiene metadata con campo max_campaigns.
> Añade validación en src/campaigns/actions.ts antes de crear
> una campaña nueva. Si supera el límite, devolver un Result.err
> con código PLAN_LIMIT_EXCEEDED. Añade test unitario para
> cada caso (dentro del límite, exactamente en el límite, superado).
> Crea una branch feature/campaign-plan-limit y abre PR.
06 — Política de permisos del equipo
🛡️ Configuración de permisos — GrowBot
Equilibrio entre autonomía del agente y control del equipo
Herramientas permitidas sin confirmación
Read — leer cualquier archivo del repo
Edit — modificar archivos src/
Bash(pnpm test*) — ejecutar tests
Bash(pnpm typecheck) — verificar tipos
Bash(pnpm lint) — linting
Bash(git diff, git log, git status)
MCP:github — leer PRs e issues
MCP:sentry — consultar errores
Requieren aprobación explícita
Bash(git push, git commit) — commits
Bash(pnpm db:migrate) — migraciones
Bash(rm, rmdir) — eliminar archivos
Edit src/auth/ — módulo de autenticación
Edit .env* — variables de entorno
MCP:database escritura — solo lectura
npm install — añadir dependencias
Webhooks externos — nunca en dev
{
"allowedTools": [
"Read",
"Edit",
"Bash(pnpm test*)",
"Bash(pnpm typecheck)",
"Bash(pnpm lint)",
"Bash(git diff)",
"Bash(git log)",
"Bash(git status)",
"mcp__github__*",
"mcp__sentry__*"
],
"disallowedTools": [
"Bash(rm*)",
"Bash(git push*)",
"Bash(git commit*)",
"Bash(npm install*)"
]
}
07 — Integración CI/CD (GitHub Actions)
⚙️ Revisión automática de PRs con Claude Code
Ejecuta en cada Pull Request para revisión de código, tipos y tests
.github/workflows/claude-review.yml
name: Claude Code Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with: { fetch-depth: 0 }
- name: Setup Node
uses: actions/setup-node@v4
with: { node-version: "20" }
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Claude Code — Revisión automática de PR
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
npx @anthropic-ai/claude-code \
--dangerouslySkipPermissions \
-p "Revisa los cambios del PR (git diff origin/main...HEAD).
Verifica: tipos (pnpm typecheck), tests (pnpm test:unit),
convenciones de CLAUDE.md (Result pattern, Zod, sin console.log).
Comenta en el PR si hay issues. Si todo está bien, aprueba."