Claude Code Playbook: La guía completa para sacarle el jugo a diario
Guía práctica con todo lo que necesitas para usar Claude Code como tu copiloto de desarrollo: CLAUDE.md, MCP servers, hooks, GitHub Actions y flujos diarios. Actualizado 2026.
Claude Code Playbook: La guía completa para usarlo a diario
Claude Code es el agente de desarrollo de Anthropic que corre directamente en tu terminal. A diferencia de los copilots tradicionales que solo autocompletan, Claude Code puede leer tu repositorio completo, ejecutar comandos, escribir y refactorizar archivos, tuar como un agente autónomo en tu codebase.
Esta guía es un playbook práctico basado en uso real — no documentación oficial. Todo lo que está aquí lo uso en un stack de NestJS + AWS + TypeScript en producción.
TL;DR para los impacientes: El 80% del valor de Claude Code viene de tres
cosas: un buen CLAUDE.md, hooks que validan tu código automáticamente, y MCP
servers que le dan contexto real de tu infraestructura.
Tabla de contenidos
- Sistema de memoria — CLAUDE.md
- MCP Servers — expandiendo las capacidades
- Hooks — automatización y calidad de código
- GitHub Workflow — Claude como agente en tu repo
- Daily Driver Flow — cómo usarlo todos los días
Sistema de memoria — CLAUDE.md
El mayor error al empezar con Claude Code es tratarlo como un chatbot sin memoria. Claude Code tiene un sistema de memoria per Markdown que define cómo se comporta en cada contexto.
Los tres niveles de CLAUDE.md
| Archivo | Scope | Se commitea |
|---|---|---|
CLAUDE.md | Proyecto — compartido con el equipo | ✅ Sí |
CLAUDE.local.md | Proyecto — solo tuyo | ❌ No |
~/.claude/CLAUDE.md | Global — todos tus proyectos | ❌ No |
¿Cuándo usar cada uno?
CLAUDE.md: Convenciones del equipo, arquitectura del proyecto, módulos existentes, patrones obligatorios. Todo lo que un dev nuevo necesitaría saber.CLAUDE.local.md: Tus preferencias personales, rutas locales, instrucciones que no quieres que vean tus compañeros.~/.claude/CLAUDE.md: Reglas que aplican a todos tus proyectos — por ejemplo, nunca usaranyen TypeScript, siempre conventional commits, siempre DDD.
Generar el CLAUDE.md inicial
# Dentro de tu repo
claude /init/init analiza tu repositorio y genera un CLAUDE.md de base. Siempre revisarlo y personalizarlo antes de cplo real para un proyecto NestJS + DDD
## Stack
- NestJS + TypeScript (strict, no `any`)
- DDD + Clean Architecture — domain / application / infrastructure
- AWS ECS Fargate + Terraform
- PostgreSQL + TypeORM
## Convenciones
- Conventional commits: feat/fix/chore/refactor/docs
- No business logic en controllers ni repositories
- Cada módulo tiene su propio bounded context
- Event-driven: usar outbox pattern para eventos cross-módulo
## Módulos activos
- `ledger` — contabilidad doble entrada
- `user` - registro de clientes
- `notification` - envio de mensajes, correos o eventos
## Antes de escribir código
1. Buscar si ya existe implementación similar en el repo
2. Respetar la estructura de módulos de arriba
3. Correr `tsc --noEmit` antes de terminar
4. Tests son obligatorios para lógica de dominioInstrucciones inline con #
Dentro de una sesión podés darle contexto específico usando #. Clrucción, no como comentario de código:
# Estamos refactorizando el módulo ledger
# Mantener compatibilidad con la API existente
# No tocar los archivos de migración ya commiteados
Comandos de sesión esenciales
/init # Genera CLAUDE.md analizando el repo
/compact # Resume la conversación para liberar contexto (crucial en sesiones largas)
/commands # Lista tus slash commands personalizadosPro tip: Cuando una sesión se vuelve lenta o Claude empieza a "olvidar"
contexto previo, /compact es tu mejor amigo. Resume todo sin perder el hilo
de la tarea actual.
MCP Servers — expandiendo las capacidades
Claude Code por defecto solo tiene acceso a filesystem, bash y git. Con MCP (Model Context Protocol) servers podés conectarle herramientas externas y transformarlo en un agente mucho más poderoso.
Agregar un MCP server
# Sintaxis básica
claude mcp add <nombre> <comando>
# Ejemplos prácticoadd playwright npx @playwright/mcp@latest
claude mcp add postgres npx @modelcontextprotocol/server-postgres postgresql://...
claude mcp add github npx @modelcontextprotocol/server-github
# Gestión
claude mcp list
claude mcp get <nombre>
claude mcp remove <nombre>Tres scopes de configuración
claude mcp add --scope local # Solo este proyecto (no commiteado)
claude mcp add --scope user # Todos tus proyectos
claude mcp add --scope project # Commiteado en .mcp.json — todo el equipo lo tieneEl --scope project es el equivalente al CLAUDE.md pero para tools. Commiteas .mcp.json y todos en el equipo tienen los mismos MCP servers disponibles automáticamente.
MCP servers más útiles para developers
| Server | Instalación | Caso de uso |
|---|---|---|
| Playwright | npx @playwright/mcp@latest | E2E testing, validar flows, scraping |
| PostgreSQL | npx @modelcontextprotocol/server-postgres | Query directo a DB, inspeccionar schema |
| GitHub | npx @modelcontextprotocol/server-github | PRs, issues, repos desde Claude |
| Fetch | npx @modelcontextprotocol/server-fetch | HTTP requests, llamar APIs externas |
| Filesystem | npx @modelcontextprotocol/server-filesystem | Acceso a directorios fuera del proyecto |
| AWS | npx @modelcontextprotocol/server-aws | ECS, S3, CloudWatch desde la sesión |
Caso concreto: DB de staging conectada
El MCP de PostgreSQL es particularmente poderoso. Con la DB de staging conectada, Claude tiene contexto real del schema al momento de codear:
claude mcp add postgres \
npx @modelcontextprotocol/server-postgres \
postgresql://user:pass@staging-db:5432/myapp \
--scope localCon esto Claude puede:
- Inspeccionar tablas y relaciones sin que vos copie/pegues el schema
- Validar queries antes de escribirlos
- Sugerir índices basado en la estructura real
- Detectar N+1 con datos reales de staging
Usar --scope local para servidores con credenciale— así no se commitean
accidentalmente al repo.
Hooks — automatización y calidad de código
Los hooks son el feature más subestimado de Claude Code. Te permiten ejecutar comandos automáticamente antes o después de que Claude realice acciones, creando un loop de autocorrección sin intervención manual.
Estructura básica
// .claude/settings.json
{
"hooks": {
"pre_tool_use": [
{
"matcher": "read_file",
"command": "...",
"on_failure": "block"
}
],
"post_tool_use": [
{
"matcher": "write_file|edit_file",
"command": "...",
"on_failure": "warn"
}
]
}
}Matchers disponibles: write_file, edit_file, read_file, str_replace, bash
on_failure modes:
warn— Claude ve el output y decide si continúa. Para sugerencias.block— Claude no puede continuar hasta resolver. Para hard rules.
Hook 1: TypeScript validation post-write
El más iás con TypeScript. Claude escribe un archivo → valida tipos → si hay errores los corrige en el mismo loop, sin que vos intervengas:
{
"matcher": "write_file|edit_file|str_replace",
"command": "npx tsc --noEmit",
"on_failure": "warn"
}Hook 2: Bloquear archivos sensibles
Hard block para que Claude no pueda leer .env, claves privadas ni archivos con secrets en el path:
{
"matcher": "read_file",
"command": "bash -c 'echo \"$TOOL_INPUT\" | grep -qE \"\\.env|\\.pem|\\.key|secrets\" && exit 1 || exit 0'",
"on_failure": "block"
}Hook 3: Anti-duplicidad
El hook más poderoso para mantener código limpio. Antes de crear un archivo nuevo, busca si ya existe algo con ese nombre en el proyecto. Claude investiga y decide si reutiliza en vez de duplicar:
{
"matcher": "write_file",
"command": "bash scripts/check-duplicates.sh $TOOL_INPUT_PATH",
"on_failure": "warn"
}Stack completo de hooks recomendado
{
"hooks": {
"pre_tool_use": [
{
"matcher": "read_file",
"command": "bash -c 'echo \"$TOOL_INPUT\" | grep -qE \"\\.env|\\.pem|\\.key|secrets\" && exit 1 || exit 0'",
"on_failure": "block"
},
{
"matcher": "write_file",
"command": "bash scripts/check-duplicates.sh $TOOL_INPUT_PATH",
"on_failure": "warn"
},
{
"matcher": "edit_file",
"com": "bash -c 'echo \"$TOOL_INPUT_PATH\" | grep -q \"generated\\|dist\\|\\.d\\.ts\" && exit 1 || exit 0'",
"on_failure": "block"
}
],
"post_tool_use": [
{
"matcher": "write_file|edit_file|str_replace",
"command": "npx tsc --noEmit",
"on_failure": "warn"
},
{
"matcher": "edit_file",
"command": "npx eslint $TOOL_INPUT_PATH --fix",
"on_failure": "warn"
},
{
"matcher": "write_file",
"command": "npx jest --findRelatedTests $TOOL_INPUT_PATH --passWithNoTests",
"on_failure": "warn"
}
]
}
}La triada ganadora: tsc --noEmit + check-duplicates + jest --findRelatedTests. Con estos tres hooks Claude no puede dejar el proyecto en
estado roto — se autocorrige en el mismo loop.
GitHub Workflow — Claude como agente en tu repo
Con claude-code-action podés convertir a Claude en un agente que vive dentro de tu reorio de GitHub, activándose por eventos de PRs y issues.
Setup básico
# .github/workflows/claude.yml
name: Claude Code Agent
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
permissions:
contents: write
pull-requests: write
issues: write
jobs:
claude:
if: contains(github.event.comment.body, '@claude')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Claude
uses: anthropics/claude-code-action@beta
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}Con esto, cualquier comentario que mencione @claude en un PR o issue activa el agente.
El caso de uso con Playwright: QA automatizado en PRs
El flujo más poderoso que mostraron es combinar el GitHub Action con el MCP server de Playwright para tener un QA agent que corre automáticamente en cada PR:
- Dev hace PR con cambios en un flow de pago
- Reviewer comenta:
@claude verify the checkout flow on stg - Claude lee el diff del PR
- Levanta Playwright y navega el staging environment
- Valida el flow end-to-end
- Responde en el PR con resultado + screenshots si algo falla
Trigger patterns más útiles
| Comando | Qué hace Claude |
|---|---|
@claude review this PR | Code review contra convenciones del CLAUDE.md |
@claude fix failing tests | Analiza tests rotos y genera el fix |
@claude verify checkout flow | Playwright valida el flow en staging |
@claude update the docs | Genera/actualiza docs basada en el diff |
@claude check for duplicates | Busca código similar al introducido en el PR |
@claude generate changelog | Genera changelog entre el PR base y head |
El CLAUDE.md del repositorio aplica también cuando Claude corre en GitHub
Actions. Si tenés las convenciones bien definidas ahí, el code review
automático va a ser mucho más preciso.
Daily Driver Flow — cómo usarlo todos los días
El flujo diario
Inicio → /init si es proyecto nuevo → revisar CLAUDE.md
Coding → Usar # para dar contexto de la tarea actual en la sesión
Review → "Review this for DDD violations and suggest improvements"
Commit → claude commit → Claude genera conventional commit del diff
Cierre → /compact para dejar contexto resumido
Prompts de alto valor
Arquitectura y diseño:
Think step by step before writing any code.
Design this module using DDD. Consider the tradeoffs before deciding.
Debug:
Explain why this test fails, then fix it without changing the test logic.
Refactor:
Refactor this without changing behavior. Check for duplicates first.
Code review:
Review this diff for N+1 queries, missing error handling, and DDD violations.
Documentación:
Generate JSDoc for all public methods in this file. Include @throws and @example.
Migraciones:
Write the migration. Verify it's reversible, then run tsc --noEmit.
Extended Thinking — cuándo usarlo
Para tareas complejas (diseño de arquitectura, debugging difícil, decisiones de tradeoffs), forzar razonamiento profundo mejora drásticamente la calidad:
"Think before responding: what are the risks of this implementation?"
"Consider multiple approaches before writing any code."
"What could go wrong with this design? Then proceed with the best option."
No es necesario para tareas mecánicas (generar un DTO, escribir un test simple). Usalo cuando el problema genuinamente requiere análisis.
Headless / CI mode
claude -p corre Claude sin interfaz interactiva — perfecto para pipelines, scripts de automatización y n8n workflows:
# Pipe directo desde stdin
claude -p "review this diff for security issues" < git.diff
# Generar changelog automáticamente
claude -p "summarize changes in CHANGELOG format" < release.diff >> CHANGELOG.md
# Como subprocess en n8n o scripts
claude -p "$(cat prompt.txt)" --output-format jsonResumen — el setle
Si empezás desde cero, este es el orden de prioridad:
~/.claude/CLAUDE.md— tus reglas globales (noany, conventional commits, tu stack favorito)CLAUDE.mden cada repo — arquitectura, módulos, convenciones del equipo- Hooks: tsc + duplicates — los dos que más impactan la calidad
- MCP: postgres de staging — contexto real sin copy/paste
- GitHub Action — cuando quieras automatizar reviews y QA
El setup completo toma menos de una hora y la diferencia en productividad es inmediata.