4a23468c14
Documentar sistema de skills en .claude/: CLAUDE.md: - Agregar pkg/skills/, shell/skills/, tools/skilltools/ y skills/ a estructura - skills/ como contenido declarativo (SKILL.md + recursos) .claude/rules/create_skill.md: - Guia completa para crear nuevas skills - Template de SKILL.md con frontmatter - Proceso paso a paso (categoria → estructura → SKILL.md → recursos → tests) - Reglas criticas: skills != tools, < 500 lineas, idempotencia - Ejemplos y anti-patrones .claude/rules/index.md: - Agregar regla "Crear skill" al indice - Explicar cuando usar skills vs tools La regla create_skill.md es la guia oficial para añadir skills.
200 lines
4.4 KiB
Markdown
200 lines
4.4 KiB
Markdown
# Regla: Crear nueva skill
|
|
|
|
Guia para crear una nueva skill en `skills/`.
|
|
|
|
## Prerequisitos
|
|
|
|
- Entender la diferencia entre **tools** (funciones atomicas) y **skills** (flujos multi-paso)
|
|
- Las skills son contenido declarativo (markdown + recursos), no codigo Go
|
|
- Una skill combina tools existentes, logica condicional y conocimiento de dominio
|
|
|
|
## Proceso
|
|
|
|
### 1. Determinar categoria
|
|
|
|
Elegir la categoria adecuada:
|
|
- `devops/` — operaciones y deploy
|
|
- `analysis/` — analisis de datos/logs
|
|
- `communication/` — comunicacion y notificaciones
|
|
- `coding/` — desarrollo y code review
|
|
- `system/` — administracion del sistema
|
|
|
|
Si ninguna aplica, crear nueva categoria.
|
|
|
|
### 2. Crear estructura de directorios
|
|
|
|
```bash
|
|
mkdir -p skills/<categoria>/<skill-name>/{scripts,references,templates,assets}
|
|
```
|
|
|
|
Solo crear las subcarpetas que vayas a usar.
|
|
|
|
### 3. Escribir SKILL.md
|
|
|
|
Template:
|
|
|
|
```markdown
|
|
---
|
|
name: skill-name
|
|
description: >
|
|
Descripcion clara de que hace la skill y cuando debe activarse.
|
|
Esta descripcion es el mecanismo principal de triggering.
|
|
Idealmente < 100 palabras.
|
|
---
|
|
|
|
# <Nombre Descriptivo>
|
|
|
|
Breve introduccion de la skill (1-2 parrafos).
|
|
|
|
## Casos de uso
|
|
|
|
- Caso 1
|
|
- Caso 2
|
|
- Caso 3
|
|
|
|
## Proceso de ejecucion
|
|
|
|
### 1. Paso inicial
|
|
|
|
Descripcion del paso, que tools usar, ejemplos de codigo.
|
|
|
|
```bash
|
|
# ejemplo de comando
|
|
ssh_command host="prod-01" command="systemctl status myapp"
|
|
```
|
|
|
|
### 2. Paso siguiente
|
|
|
|
Continuar con los pasos...
|
|
|
|
## Parametros requeridos
|
|
|
|
Lista de parametros que el usuario debe proporcionar:
|
|
- `param1`: descripcion
|
|
- `param2`: descripcion
|
|
|
|
Parametros opcionales:
|
|
- `opt1`: descripcion (default: valor)
|
|
|
|
## Ejemplo de uso
|
|
|
|
Usuario: "Haz X"
|
|
|
|
Agente:
|
|
1. skill_search("X")
|
|
2. skill_load("<skill-name>")
|
|
3. Ejecutar pasos...
|
|
4. Reportar resultado
|
|
|
|
## Seguridad
|
|
|
|
Consideraciones de seguridad especificas para esta skill.
|
|
```
|
|
|
|
### 4. Anadir recursos (opcional)
|
|
|
|
#### Scripts (`scripts/`)
|
|
|
|
Scripts ejecutables que la skill puede invocar:
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
# scripts/deploy.sh
|
|
# Descripcion del script
|
|
|
|
set -euo pipefail
|
|
|
|
# Validar argumentos
|
|
if [ $# -lt 1 ]; then
|
|
echo "Usage: $0 <service-name>"
|
|
exit 1
|
|
fi
|
|
|
|
# Implementacion...
|
|
```
|
|
|
|
**Importante**:
|
|
- Usar shebang correcto (`#!/bin/bash`, `#!/usr/bin/env python3`, etc.)
|
|
- Validar argumentos
|
|
- Usar `set -euo pipefail` en bash
|
|
- Exit codes claros (0 = exito, != 0 = error)
|
|
|
|
#### Referencias (`references/`)
|
|
|
|
Documentacion extensa que el agente puede consultar bajo demanda:
|
|
|
|
```markdown
|
|
# API Reference
|
|
|
|
Documentacion detallada...
|
|
|
|
Si > 300 lineas, agregar TOC al inicio.
|
|
```
|
|
|
|
#### Templates (`templates/`)
|
|
|
|
Plantillas que la skill usa como base:
|
|
|
|
```yaml
|
|
# template-report.md
|
|
# Report: {{title}}
|
|
|
|
Generated: {{timestamp}}
|
|
|
|
## Summary
|
|
{{summary}}
|
|
|
|
...
|
|
```
|
|
|
|
### 5. Probar la skill
|
|
|
|
1. Habilitar skills en el config de un agente de prueba:
|
|
|
|
```yaml
|
|
skills:
|
|
enabled: true
|
|
path: "skills/"
|
|
categories: ["<categoria>"]
|
|
|
|
tools:
|
|
skills:
|
|
allowed_interpreters: ["bash", "sh"]
|
|
```
|
|
|
|
2. Reiniciar el agente
|
|
3. Probar buscando la skill: `skill_search("<query>")`
|
|
4. Cargar la skill: `skill_load("<skill-name>")`
|
|
5. Ejecutar el flujo completo siguiendo las instrucciones
|
|
|
|
### 6. Documentar
|
|
|
|
Actualizar `skills/README.md` si:
|
|
- Creas una nueva categoria
|
|
- La skill introduce un patron nuevo
|
|
- Hay consideraciones de seguridad especiales
|
|
|
|
## Reglas criticas
|
|
|
|
- **Skills != Tools**: Las skills usan tools, no son tools
|
|
- **SKILL.md < 500 lineas**: Si es mas largo, dividir en multiple skills o mover contenido a `references/`
|
|
- **Description precisa**: La description en el frontmatter es critica para el matching
|
|
- **Idempotencia**: Las skills deben ser seguras de ejecutar multiples veces si es posible
|
|
- **Error handling**: Las instrucciones deben incluir que hacer en caso de error
|
|
- **Rollback**: Si la skill hace cambios destructivos, incluir instrucciones de rollback
|
|
|
|
## Ejemplos de skills validas
|
|
|
|
Ver las skills existentes en `skills/`:
|
|
- `skills/devops/deploy-service/` — deploy completo con rollback
|
|
- `skills/analysis/log-analyzer/` — analisis de logs con metricas
|
|
- `skills/system/health-check/` — verificacion de salud multi-servicio
|
|
- `skills/communication/daily-report/` — generacion de reportes
|
|
|
|
## Anti-patrones
|
|
|
|
- Skill que solo ejecuta un comando SSH → usar tool `ssh_command` directamente
|
|
- Skill con logica de negocio compleja → crear tool Go con tests
|
|
- Skill que repite instrucciones del system prompt → innecesario
|
|
- Scripts que requieren interaccion humana → las skills son automaticas
|