merge: quick/create-agent-skill — skill para crear agentes especializados

This commit is contained in:
2026-03-24 22:59:40 +01:00
+439
View File
@@ -0,0 +1,439 @@
---
name: create-agent
description: Crea un nuevo agente especializado en .claude/agents/ con su SKILL.md y estructura completa
argument-hint: [nombre]
disable-model-invocation: true
user-invocable: true
allowed-tools: Bash, Read, Write, Edit, AskUserQuestion
---
# create-agent
Crea un nuevo agente especializado en `.claude/agents/` con archivo `SKILL.md` obligatorio siguiendo la estructura oficial de Claude Code.
## Sintaxis
```bash
/create-agent [nombre]
/create-agent api-client
/create-agent cloud-deploy
```
## Precondiciones
- [ ] Carpeta `.claude/agents/` existe
- [ ] No existe agente con el mismo nombre
- [ ] Nombre cumple convenciones (minúsculas, guiones)
## Flujo
### 1. Validar nombre
- Solo minúsculas, números y guiones
- No nombres reservados (help, clear, exit)
- Máximo 64 caracteres
```bash
ls -d .claude/agents/*/ 2>/dev/null | xargs -n1 basename | grep -E "^${nombre}$"
```
Si existe, STOP.
### 2. Solicitar inputs usando AskUserQuestion
Usar `AskUserQuestion` para obtener:
#### Input 1: Información básica
- **nombre**: minúsculas y guiones (ej: `api-client`)
- **descripcion**: qué hace el agente y cuándo invocarlo (1-2 frases claras)
#### Input 2: Configuración técnica
- **model**: Modelo Claude a usar
- `sonnet` (default): Balance costo/capacidad
- `opus`: Tareas complejas que requieren máximo razonamiento
- `haiku`: Tareas simples y rápidas
- **tools**: Herramientas necesarias (separadas por coma)
- Default: `Read, Write, Bash, Glob, Grep, Edit`
- Opcionales: `WebFetch, WebSearch, NotebookEdit`
#### Input 3: Configuración de proyecto
- **gestiona_repo**: ¿Gestiona un repositorio local?
- `si`: Crear carpeta en `~/.local_agentes/`
- `no`: Solo definición de agente
- **usa_mcp**: ¿Usa MCP servers? (gitea, sqlite, etc)
- `si`: Solicitar configuración de MCP
- `no`: Omitir mcpServers
#### Input 4: MCP Servers (si usa_mcp = si)
Preguntar qué MCP servers necesita:
- `gitea`: Gestión de repositorios Gitea
- `sqlite`: Bases de datos SQLite
- `filesystem`: Sistema de archivos
- `otro`: Configuración personalizada
#### Input 5: Documentación
- **rol**: Rol del agente (ej: "Eres un experto en...")
- **capacidades**: Lista de capacidades principales
- **flujo_trabajo**: Descripción del flujo de trabajo típico
- **ejemplos_uso**: Ejemplos de cuándo invocar al agente
### 3. Crear carpeta del agente
```bash
mkdir -p .claude/agents/${nombre}
```
### 4. Crear carpeta local (si gestiona_repo = si)
```bash
mkdir -p ~/.local_agentes/${nombre}
```
### 5. Generar frontmatter YAML
Estructura base:
```yaml
---
name: ${nombre}
description: ${descripcion}
model: ${model}
tools: ${tools}
mcpServers: # Solo si usa_mcp = si
- ${mcp_config}
---
```
### 6. Generar SKILL.md completo
Template oficial de agente:
```markdown
---
name: ${nombre}
description: ${descripcion}
model: ${model}
tools: ${tools}
${mcp_servers_section}
---
# Agente ${nombre}
${rol}
## Tu entorno
${descripcion_entorno}
## Capacidades principales
${capacidades}
## Flujo de trabajo
${flujo_trabajo}
## Templates disponibles
${templates_codigo}
## Integración con otros agentes
${integracion}
## Ejemplos de uso
${ejemplos_uso}
## Comandos útiles
${comandos}
## Notas y convenciones
${notas}
```
### 7. Templates de MCP Servers
#### Gitea MCP
```yaml
mcpServers:
- gitea:
type: stdio
command: gitea-mcp
args:
- -t
- stdio
- --host
- "${GITEA_URL}"
- --token
- "${GITEA_TOKEN}"
```
#### SQLite MCP
```yaml
mcpServers:
- sqlite:
type: stdio
command: sqlite-mcp
args:
- --db
- "${DB_PATH}"
```
#### Filesystem MCP
```yaml
mcpServers:
- filesystem:
type: stdio
command: mcp-server-filesystem
args:
- --allowed-directories
- "${ALLOWED_DIR}"
```
### 8. Mostrar y confirmar
```
Agente creado: ${nombre}
Ubicación: .claude/agents/${nombre}/SKILL.md
${carpeta_local ? "Carpeta local: ~/.local_agentes/" + nombre : ""}
Configuración:
- Model: ${model}
- Tools: ${tools}
- MCP: ${usa_mcp ? "Sí" : "No"}
- Repositorio local: ${gestiona_repo ? "Sí" : "No"}
¿Te parece bien?
- Si correcto: commit e integrar automáticamente
- Si ajustes: edita manualmente antes de integrar
```
### 9. Crear README.md en carpeta local (si gestiona_repo = si)
```bash
cat > ~/.local_agentes/${nombre}/README.md <<EOF
# ${nombre}
${descripcion}
## Estructura del proyecto
\`\`\`
~/.local_agentes/${nombre}/
├── README.md
├── CLAUDE.md # Instrucciones para Claude
└── ... # Archivos del proyecto
\`\`\`
## Sincronización con Gitea
\`\`\`bash
cd ~/.local_agentes/${nombre}
git remote add origin \${GITEA_URL}/\${user}/${nombre}.git
git push -u origin main
\`\`\`
## Uso
Invocar con:
\`\`\`
Hablar con el agente ${nombre} para [tarea]
\`\`\`
EOF
```
### 10. Ejecutar /git-push
Si confirma, crear rama `quick/create-agent-${nombre}` e integrar.
### 11. Verificar disponibilidad
```
Agente "${nombre}" creado e integrado
El agente está disponible en:
.claude/agents/${nombre}/SKILL.md
${gestiona_repo ? "Carpeta de trabajo:\n ~/.local_agentes/" + nombre : ""}
Para usar, solicita al usuario:
"Trabajar con el agente ${nombre} para [tarea]"
Configuración:
- Model: ${model}
- Tools: ${tools}
- MCP Servers: ${usa_mcp ? "Sí" : "No"}
```
## Campos del frontmatter de agentes
| Campo | Descripción | Requerido |
|-------|-------------|-----------|
| name | Nombre del agente | Sí |
| description | Qué hace y cuándo invocarlo | Sí |
| model | Model Claude (sonnet, opus, haiku) | Sí |
| tools | Herramientas disponibles | Sí |
| mcpServers | Servidores MCP (opcional) | No |
## Estructura de documentación de agentes
Seguir este orden en el contenido Markdown:
1. **Título y rol**: Descripción del rol del agente
2. **Tu entorno**: Dónde trabaja, qué repositorios gestiona
3. **Capacidades principales**: Lista de lo que puede hacer
4. **Flujo de trabajo**: Cómo abordar tareas típicas
5. **Templates disponibles**: Código de ejemplo
6. **Integración con otros agentes**: Cómo colabora con otros
7. **Ejemplos de uso**: Cuándo invocar al agente
8. **Comandos útiles**: Comandos CLI relevantes
9. **Notas y convenciones**: Reglas y mejores prácticas
## Convenciones
- Nombres descriptivos con guiones (ej: `api-client`, `cloud-deploy`)
- Descripciones claras para invocación automática por Claude
- Un agente por dominio/especialización
- Documentación completa con ejemplos prácticos
- Templates de código cuando sea aplicable
## Diferencia entre Agentes y Skills
| Característica | Agente | Skill |
|----------------|--------|-------|
| Ubicación | `.claude/agents/` | `.claude/skills/` |
| Propósito | Experto especializado | Automatización/herramienta |
| Invocación | Claude decide cuándo | Usuario con `/nombre` |
| Contenido | Conocimiento de dominio | Flujo de trabajo |
| Ejemplo | `backend-lib`, `docker` | `git-push`, `create-issue` |
## Ejemplos de agentes
### Agente simple (sin repo ni MCP)
```yaml
---
name: code-review
description: Agente para revisar código y sugerir mejoras
model: sonnet
tools: Read, Grep, Glob
---
# Agente Code Review
Eres un experto en revisión de código...
```
### Agente complejo (con repo y MCP)
```yaml
---
name: api-client
description: Agente para generar clientes API desde especificaciones OpenAPI
model: sonnet
tools: Read, Write, Bash, Glob, Grep, Edit
mcpServers:
- gitea:
type: stdio
command: gitea-mcp
args:
- -t
- stdio
- --host
- "${GITEA_URL}"
- --token
- "${GITEA_TOKEN}"
---
# Agente API Client
Eres un experto en generación de clientes API...
## Tu entorno
- **Repositorio**: `Bl4cksmith/api-clients` (Gitea)
- **Carpeta local**: `~/.local_agentes/api-client`
- **Stack**: TypeScript, Go, Python
...
```
## Reglas
- Validar nombre antes de crear
- SKILL.md es obligatorio
- Confirmación antes de integrar
- Crear carpeta local solo si gestiona_repo = si
- MCP servers solo si usa_mcp = si
- Documentación completa y con ejemplos
## Integración con otros agentes
### Con gitea
```bash
# Crear repositorio para el agente (si gestiona_repo = si)
cd ~/.local_agentes/${nombre}
git init
git add .
git commit -m "Initial commit"
# Usar agente gitea para crear repo y push
```
### Con backend-lib / frontend-lib
```markdown
# En SKILL.md del nuevo agente, documentar integración:
## Integración con otros agentes
### Con backend-lib (DevFactory)
- Usar DevFactory para estructuras funcionales Go
- Integrar via go.work
### Con frontend-lib
- Usar Frontend_Library para componentes React
- Integrar via pnpm link
```
## Variables dinámicas
| Variable | Descripción |
|----------|-------------|
| ${nombre} | Nombre del agente |
| ${descripcion} | Descripción del agente |
| ${model} | Model Claude |
| ${tools} | Herramientas disponibles |
| ${CLAUDE_SKILL_DIR} | Ruta del skill |
## Flujo completo de ejemplo
```bash
# Usuario invoca
/create-agent api-client
# Skill valida nombre
✓ Nombre válido
# Skill pregunta configuración con AskUserQuestion
? Descripción: Agente para generar clientes API desde OpenAPI
? Model: sonnet
? Tools: Read, Write, Bash, Glob, Grep, Edit
? ¿Gestiona repositorio?: Sí
? ¿Usa MCP?: Sí
? MCP servers: gitea
# Skill crea estructura
✓ Carpeta creada: .claude/agents/api-client/
✓ Carpeta local creada: ~/.local_agentes/api-client/
✓ SKILL.md generado
✓ README.md generado
# Skill confirma
Agente "api-client" creado
# Skill integra con git
✓ Rama: quick/create-agent-api-client
✓ Commit: "feat: crear agente api-client"
✓ Push exitoso
```