🎯 Rol Definido
El agente tiene un propósito claro y delimitado.
Crea tus propios agentes especializados para tareas específicas
Aprende a crear agentes personalizados especializados en tareas específicas de tu dominio.
Requisito: Debes entender la arquitectura de agentes antes de crear los tuyos.
Un agente personalizado es una IA especializada con:
🎯 Rol Definido
El agente tiene un propósito claro y delimitado.
📝 Prompt Personalizado
Comportamiento y estilo adaptado a la tarea.
🔧 Tools Especializadas
Herramientas específicas para su función.
📚 Skills Integradas
Conocimiento de dominio incorporado.
.claude/agents/└── my-custom-agent/ ├── config.json # Configuración del agente ├── prompt.md # System prompt ├── tools/ # Herramientas disponibles │ ├── tool1.js │ └── tool2.py └── skills/ # Skills que puede usar └── skill-list.txtEl archivo de configuración define el comportamiento del agente:
{ "name": "my-custom-agent", "displayName": "My Custom Agent", "description": "Descripción de qué hace este agente", "version": "1.0.0", "role": "Descripción del rol del agente", "capabilities": [ "capability1", "capability2", "capability3" ], "tools": [ "tool1", "tool2" ], "skills": [ "skill1", "skill2" ], "settings": { "model": "anthropic/claude-sonnet-4-20250514", "temperature": 0.1, "maxTokens": 200000, "contextLimit": 100000 }, "triggers": [ "pattern1", "pattern2" ]}| Campo | Tipo | Descripción |
|---|---|---|
name | string | ID único del agente (kebab-case) |
displayName | string | Nombre para mostrar |
description | string | Descripción breve |
version | string | Versión del agente |
role | string | Rol principal del agente |
capabilities | array[] | Capacidades del agente |
tools | array[] | Tools que puede usar |
skills | array[] | Skills que puede usar |
settings | object | Configuración del modelo |
triggers | array[] | Patrones que activan el agente |
El system prompt define el comportamiento del agente:
# My Custom Agent
Eres un agente especializado en [dominio].
## Tu Rol
[Descripción detallada del rol]
## Tus Capacidades
- [Capacidad 1]- [Capacidad 2]- [Capacidad 3]
## Principios
1. **Principio 1** - Descripción2. **Principio 2** - Descripción3. **Principio 3** - Descripción
## Workflow
1. [Paso 1]2. [Paso 2]3. [Paso 3]
## Output Esperado
[Descripción del formato de output]
## Limitaciones
- [Limitación 1]- [Limitación 2]
## Examples
### Example 1: [Título]
**Input:**[Input de ejemplo]
**Output:**[Output de ejemplo]
Propósito: Diseñar schemas de bases de datos optimizados
Rol:
Capacidades:
Skills:
Propósito: Revisar interfaces desde perspectiva UX
Rol:
Capacidades:
Skills:
# Crear directorio del agentemkdir -p .claude/agents/my-agent/{tools,skills}
# Crear archivos de configuracióntouch .claude/agents/my-agent/config.jsontouch .claude/agents/my-agent/prompt.md{ "name": "database-architect", "displayName": "Database Architect", "description": "Experto en diseño de schemas y optimización de bases de datos", "version": "1.0.0", "role": "Diseña schemas de bases de datos optimizados y seguros", "capabilities": [ "schema-design", "query-optimization", "index-strategy", "migration-planning" ], "tools": [ "sql-executor", "schema-validator", "query-analyzer" ], "skills": [ "databases", "postgresql-expert", "sql-optimizer" ], "settings": { "model": "anthropic/claude-sonnet-4-20250514", "temperature": 0.1, "maxTokens": 200000, "contextLimit": 100000 }, "triggers": [ "database", "schema", "query optimization", "sql", "postgresql", "mysql" ]}# Database Architect Agent
Eres un experto en bases de datos con 15 años de experiencia en diseño y optimización de schemas.
## Tu Rol
Diseñas bases de datos optimizadas, seguras y escalables. Tu enfoque prioritario es:
1. **Normalización** - 3NF por defecto, denormalizar solo con razón justificada2. **Performance** - Índices solo cuando benefician queries reales3. **Migraciones** - Siempre backwards compatible4. **Seguridad** - Nunca exponer datos sensibles
## Tus Capacidades
- **Schema Design** - Diseñar ERDs normalizados- **Query Optimization** - Analizar y mejorar queries lentas- **Index Strategy** - Planear índices efectivos- **Migration Planning** - Crear migraciones seguras
## Principios
### 1. Normalización con Propósito
```sql-- ✅ BIEN - 3NF con foreign keysCREATE TABLE orders ( id SERIAL PRIMARY KEY, user_id INTEGER REFERENCES users(id), total DECIMAL(10,2), created_at TIMESTAMP DEFAULT NOW());
-- ❌ MAL - Datos duplicadosCREATE TABLE orders ( id SERIAL PRIMARY KEY, user_name VARCHAR(100), -- Duplicado de users table user_email VARCHAR(100), -- Duplicado de users table total DECIMAL(10,2));-- ✅ BIEN - Índice en columnas frecuentemente consultadasCREATE INDEX idx_orders_user_id ON orders(user_id);CREATE INDEX idx_orders_created_at ON orders(created_at);
-- ❌ MAL - Índice en columna de baja cardinalidadCREATE INDEX idx_orders_status ON orders(status); -- Solo 3 valores-- ✅ BIEN - Backwards compatibleALTER TABLE users ADD COLUMN email_verified BOOLEAN DEFAULT true;
-- ❌ MAL - Breaking changeALTER TABLE users ALTER COLUMN email SET NOT NULL; -- Falla si hay NULLs existentesTus respuestas deben incluir:
Input:
Necesito una base de datos para un e-commerce con usuarios, productos, y órdenes.Output:
-- Users tableCREATE TABLE users ( id SERIAL PRIMARY KEY, email VARCHAR(255) UNIQUE NOT NULL, password_hash VARCHAR(255) NOT NULL, created_at TIMESTAMP DEFAULT NOW(), updated_at TIMESTAMP DEFAULT NOW());
-- Products tableCREATE TABLE products ( id SERIAL PRIMARY KEY, name VARCHAR(255) NOT NULL, price DECIMAL(10,2) NOT NULL, stock INTEGER DEFAULT 0, created_at TIMESTAMP DEFAULT NOW());
-- Orders tableCREATE TABLE orders ( id SERIAL PRIMARY KEY, user_id INTEGER REFERENCES users(id), total DECIMAL(10,2) NOT NULL, status VARCHAR(50) DEFAULT 'pending', created_at TIMESTAMP DEFAULT NOW());
-- Order items (junction table)CREATE TABLE order_items ( id SERIAL PRIMARY KEY, order_id INTEGER REFERENCES orders(id), product_id INTEGER REFERENCES products(id), quantity INTEGER NOT NULL, price DECIMAL(10,2) NOT NULL);
-- ÍndicesCREATE INDEX idx_orders_user_id ON orders(user_id);CREATE INDEX idx_orders_status ON orders(status);CREATE INDEX idx_order_items_order_id ON order_items(order_id);CREATE INDEX idx_order_items_product_id ON order_items(product_id);Documentación:
### Example 2: Query Optimization
**Input:**Esta query es lenta: SELECT * FROM orders o JOIN users u ON o.user_id = u.id WHERE o.created_at > ‘2024-01-01’
**Output:**```sql-- Query optimizada:SELECT o.id, o.total, o.status, u.emailFROM orders oJOIN users u ON o.user_id = u.idWHERE o.created_at > '2024-01-01';
-- Índice recomendado:CREATE INDEX idx_orders_created_at ON orders(created_at);
-- Explicación:1. Eliminar SELECT * - Solo seleccionar columnas necesarias2. Agregar índice en created_at - Filtra por fecha3. Índice ya existe en user_id (FK) - JOIN optimizado### Paso 5: Crear Tools (Opcional)
Las tools extienden las capacidades del agente:
**`tools/sql-executor.js`**```javascript#!/usr/bin/env node
/** * SQL Executor Tool * Ejecuta queries SQL y retorna resultados */
const { Pool } = require('pg');
async function executeSQL(query, connectionString) { const pool = new Pool({ connectionString });
try { const result = await pool.query(query); return { success: true, rows: result.rows, rowCount: result.rowCount }; } catch (error) { return { success: false, error: error.message }; } finally { await pool.end(); }}
// CLI interfaceif (require.main === module) { const query = process.argv[2]; const connString = process.env.DATABASE_URL;
if (!query) { console.error('Usage: node sql-executor.js "<query>"'); process.exit(1); }
executeSQL(query, connString) .then(result => console.log(JSON.stringify(result, null, 2))) .catch(err => { console.error('Error:', err); process.exit(1); });}
module.exports = { executeSQL };skills/skill-list.txt
databasespostgresql-expertsql-optimizerschema-validator# Verificar que el agente está disponibleclaude ask "¿Qué agentes están disponibles?"
# Usar el agenteclaude cook "Diseñar schema para e-commerce usando database-architect"{ "name": "api-documenter", "displayName": "API Documentation Agent", "description": "Genera y mantiene documentación de APIs", "role": "Crear documentación clara y precisa de endpoints REST", "capabilities": [ "endpoint-documentation", "schema-generation", "example-creation", "openapi-spec" ], "skills": [ "openapi-generator", "api-docs-formatter" ]}{ "name": "security-auditor", "displayName": "Security Auditor Agent", "description": "Revisa código en busca de vulnerabilidades", "role": "Identificar y recomendar fixes para vulnerabilidades de seguridad", "capabilities": [ "vulnerability-scan", "dependency-check", "code-review-security", "owasp-top-10" ], "skills": [ "security-scanner", "owasp-checker", "dependency-auditor" ]}{ "name": "performance-optimizer", "displayName": "Performance Optimizer Agent", "description": "Optimiza código para mejorar rendimiento", "role": "Analizar y mejorar performance de aplicaciones", "capabilities": [ "code-profiling", "bottleneck-identification", "optimization-recommendations", "benchmarking" ], "skills": [ "profiler", "performance-analyzer", "benchmark-tool" ]}// ✅ BIEN - Rol específico{ "role": "Diseñar schemas de bases de datos PostgreSQL"}
// ❌ MAL - Rol muy general{ "role": "Ayudar con bases de datos"}// ✅ BIEN - Capacidades específicas{ "capabilities": [ "design-postgresql-schema", "optimize-slow-queries", "create-safe-migrations" ]}
// ❌ MAL - Capacidades vagas{ "capabilities": [ "database-stuff", "help-with-queries", "make-things-faster" ]}## Examples
### Example 1: User Authentication Schema
**Input:**Schema para autenticación de usuarios
**Output:**```sqlCREATE TABLE users (...);-- Con justificación de cada decisión### 4. Documentar Decisiones
El agente debe explicar por qué toma ciertas decisiones:
```markdown## Por qué este enfoque
1. **Índice en user_id**: Esta columna se usa en JOINs frecuentes2. **VARCHAR(255)**: Longitud suficiente para emails RFC-compliant3. **DEFAULT NOW()**: Automatiza timestamp de creación## Cuando No Puedo Ayudar
Si requieres información que no tengo:- Te preguntaré específicamente qué necesito- No inventaré datos o asunciones- Sugeriré cómo obtener la información# Verificar config.jsoncat .claude/agents/my-agent/config.json | jq .
# Verificar prompt.mdhead -n 50 .claude/agents/my-agent/prompt.md
# Probar manualmenteclaude ask "Test prompt usando my-agent"// Ajustar triggers en config.json{ "triggers": [ "exact phrase to match", "another specific pattern" ]}# Agregar a gitgit add .claude/agents/my-agent/git commit -m "Add my-agent"
# Documentar en README.mdecho "## my-agent" >> .claude/README.mdecho "Descripción del agente" >> .claude/README.md# Crear repogh repo create my-claudekit-agent --public
# Documentar instalacióncat > README.md << EOF# My ClaudeKit Agent
## Installation
\`\`\`bashmkdir -p .claude/agents/my-agentcp -r * .claude/agents/my-agent/\`\`\`
## Usage
\`\`\`bashclaude cook "Task using my-agent"\`\`\`EOFAprende patrones avanzados de orquestación y ejecución paralela.
¿Preguntas? Usa claude ask "tu pregunta sobre agentes" en cualquier momento.