Patrones de Diseño
Patrones de Composición
Las cuatro piezas no existen en aislamiento. Los patrones más poderosos surgen de combinarlas inteligentemente.
Patrón 1: Skill + MCP (Automatización con Conectividad)
Caso de uso: Extraer datos de documentos en Google Drive y generar reportes
# .claude/skills/drive-report-extractor/SKILL.md
---
description: Extrae datos de hojas de cálculo en Drive y genera reportes en markdown
---
Cuando el usuario pida "generar reporte de ventas" o similar:
1. Usa el MCP de Google Drive para listar archivos en la carpeta "Ventas"
2. Lee las hojas de cálculo del mes actual
3. Extrae métricas clave (total, promedio, top 5 productos)
4. Genera un reporte en markdown con gráficos en ASCII
5. Guarda el reporte en `reports/ventas-YYYY-MM.md`
Por qué funciona: El skill proporciona el procedimiento automático, el MCP proporciona la conectividad. Claude activa el skill cuando detecta la intención y usa el MCP como herramienta.
★ Insight ───────────────────────────────────── Composición Skill + MCP = Automatización potente. El skill define el "qué y cuándo", el MCP define el "cómo conectar". Docusaurus renderizará este diagrama automáticamente - la sintaxis Mermaid es nativa en Docusaurus 3. ─────────────────────────────────────────────────
Patrón 2: Prompt → Slash Command → Skill (Escalada Gradual)
Evolución de una funcionalidad de testing:
Fase 1: Prompt conversacional
Usuario: "Genera tests para este componente React"
Claude: [Analiza componente, escribe tests]
Fase 2: Se repite frecuentemente → Slash Command
{
"name": "gen-tests",
"description": "Genera tests unitarios para componente React",
"prompt": "Lee el componente en {path}, analiza props y state, genera tests con React Testing Library cubriendo rendering, eventos, y edge cases"
}
Fase 3: Es parte del workflow estándar → Skill
---
description: Genera automáticamente tests cuando se crea un componente React nuevo
---
Cuando detectes que se ha creado un archivo .jsx o .tsx nuevo:
1. Analiza el componente
2. Genera archivo de tests correspondiente en __tests__/
3. Cubre rendering básico, props, y eventos
Lección: No saltar directamente a skills. Dejar que el patrón de uso emerja naturalmente.
★ Insight ───────────────────────────────────── Esta escalada no es aleatoria. Cada etapa proporciona retroalimentación sobre si el siguiente nivel de abstracción está justificado. Si un prompt conversacional se usa una sola vez, no necesita slash command. Si un slash command se invoca manualmente cada día, merece automatización como skill. ─────────────────────────────────────────────────
Patrón 3: Sub-agents para Procesamiento Paralelo con Agregación
Caso de uso: Analizar codebase grande para identificar vulnerabilidades de seguridad
// Llamada desde agente principal
const files = await glob("**/*.js");
const batches = chunk(files, 10); // 10 archivos por sub-agent
const results = await Promise.all(
batches.map(batch =>
invokeSubAgent("security-analyzer", { files: batch })
)
);
Nota técnica:
invokeSubAgentes una función conceptual que representa la capacidad de Claude Code para delegar tareas. La implementación real puede variar según la versión de las herramientas o si estás usando la API de agentes directamente.
// Agregar resultados const vulnerabilities = results.flat(); generateReport(vulnerabilities);
---
**Siguiente paso:** [Casos Prácticos: Implementaciones reales](./04-casos-practicos.md)
**Sub-agent `security-analyzer`**:
```yaml
---
name: security-analyzer
description: Analiza archivos JavaScript buscando vulnerabilidades de seguridad
---
# System Prompt
Analiza los archivos proporcionados buscando:
- SQL injection
- XSS vulnerabilities
- Insecure dependencies
- Hardcoded secrets
Para cada issue encontrado, reporta:
- Archivo y línea
- Tipo de vulnerabilidad
- Severidad (baja/media/alta/crítica)
- Recomendación de fix
Por qué funciona: Los sub-agents procesan batches en paralelo, el agente principal agrega resultados. Sin paralelización, analizar 1000 archivos sería lentísimo.
★ Insight ───────────────────────────────────── Paralelización = Aceleración exponencial. Si analizas 100 archivos secuencialmente a 2 minutos por agente = 200 minutos. Con 10 sub-agents en paralelo = 20 minutos. Pero cada sub-agent es una instancia completamente aislada, lo que mantiene el contexto manejable y evita contaminación entre batches. ─────────────────────────────────────────────────
Patrón 4: CLAUDE.md como Contexto Base + Skills como Especialización
CLAUDE.md (contexto global del proyecto):
# Proyecto: E-commerce Platform
## Stack
- Frontend: Next.js 14, TypeScript, Tailwind
- Backend: Node.js, Express, PostgreSQL
- Testing: Jest, React Testing Library
## Convenciones
- Todos los componentes en TypeScript
- Tests en `__tests__/` directories
- API routes en `pages/api/`
Skill específico:
---
description: Genera componentes React siguiendo convenciones del proyecto
---
Al crear componentes React nuevos:
1. Usa TypeScript (según CLAUDE.md)
2. Aplica Tailwind para estilos
3. Incluye PropTypes con JSDoc
4. Genera test correspondiente en __tests__/
5. Exporta como named export
Por qué funciona: CLAUDE.md establece contexto base que todos (skills, sub-agents, conversación principal) comparten. Skills añaden especialización sin repetir contexto global.
Evitar la Sobre-ingeniería
Regla del 80/20: El 80% de tus necesidades se resuelven con prompts conversacionales bien redactados. Solo el 20% requiere skills, sub-agents, o MCPs personalizados.
Checklist antes de crear abstracciones:
- ✅ ¿He refinado el prompt conversacionalmente al menos 3 veces?
- ✅ ¿Este patrón se repite al menos 5 veces por semana?
- ✅ ¿La automatización realmente ahorra tiempo vs. invocación manual?
- ✅ ¿La descripción del skill es lo suficientemente específica para activarse correctamente?
- ✅ ¿El sub-agent realmente necesita contexto aislado o paralelización?
Si respondes "no" a alguna, probablemente no necesitas la abstracción todavía.