2f83d0b746
Mueve templates a las carpetas de skills que los usan: - templates/issue.md → skills/create-issue/issue.md - templates/skill.md → skills/create-skill/skill.md Actualiza install.sh: solo enlaza skills y agents. Estructura final de .claude/: - CLAUDE.md - settings.local.json - agents/ - skills/
144 lines
3.2 KiB
Markdown
144 lines
3.2 KiB
Markdown
---
|
|
name: create-skill
|
|
description: Crea un nuevo skill en .claude/skills/ siguiendo la estructura oficial de Claude Code
|
|
argument-hint: [nombre]
|
|
disable-model-invocation: true
|
|
user-invocable: true
|
|
allowed-tools: Bash, Read, Write, Edit
|
|
---
|
|
|
|
# create-skill
|
|
|
|
Crea un nuevo skill en `.claude/skills/` con archivo `SKILL.md` obligatorio.
|
|
|
|
## Sintaxis
|
|
|
|
```bash
|
|
/create-skill [nombre]
|
|
/create-skill code-review
|
|
/create-skill deploy
|
|
```
|
|
|
|
## Precondiciones
|
|
|
|
- [ ] Carpeta `.claude/skills/` existe
|
|
- [ ] No existe skill 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/skills/*/ 2>/dev/null | xargs -n1 basename | grep -E "^${nombre}$"
|
|
```
|
|
|
|
Si existe, STOP.
|
|
|
|
### 2. Solicitar inputs
|
|
|
|
- `nombre`: minúsculas y guiones
|
|
- `descripcion`: qué hace y cuándo usarlo (1-2 frases)
|
|
- `tipo_invocacion`:
|
|
- `ambos` (default): usuario y Claude pueden invocar
|
|
- `solo_usuario`: solo `/nombre` (`disable-model-invocation: true`)
|
|
- `solo_claude`: solo Claude (`user-invocable: false`)
|
|
- `argument_hint` (opcional): ej: `[archivo] [formato]`
|
|
- `allowed_tools` (opcional): herramientas sin confirmación
|
|
- `instrucciones`: contenido del skill
|
|
|
|
### 3. Crear carpeta
|
|
|
|
```bash
|
|
mkdir -p .claude/skills/${nombre}
|
|
```
|
|
|
|
### 4. Determinar frontmatter
|
|
|
|
| Tipo | disable-model-invocation | user-invocable |
|
|
|------|--------------------------|----------------|
|
|
| ambos | (omitir) | (omitir) |
|
|
| solo_usuario | true | (omitir) |
|
|
| solo_claude | (omitir) | false |
|
|
|
|
### 5. Generar SKILL.md
|
|
|
|
Usar template en `${CLAUDE_SKILL_DIR}/skill.md` como referencia:
|
|
|
|
```markdown
|
|
---
|
|
name: ${nombre}
|
|
description: ${descripcion}
|
|
argument-hint: ${argument_hint}
|
|
disable-model-invocation: true # solo si tipo = solo_usuario
|
|
allowed-tools: ${allowed_tools}
|
|
---
|
|
|
|
# ${nombre}
|
|
|
|
${instrucciones}
|
|
```
|
|
|
|
### 6. Mostrar y confirmar
|
|
|
|
```
|
|
Skill creado: ${nombre}
|
|
Ubicación: .claude/skills/${nombre}/SKILL.md
|
|
|
|
¿Te parece bien?
|
|
- Si correcto: commit y push automáticamente
|
|
- Si ajustes: edita manualmente antes
|
|
```
|
|
|
|
### 7. Ejecutar /git-push
|
|
|
|
Si confirma, crear rama `quick/create-skill-${nombre}` e integrar.
|
|
|
|
### 8. Verificar disponibilidad
|
|
|
|
```
|
|
Skill /${nombre} creado e integrado
|
|
|
|
Para usar:
|
|
/${nombre} [argumentos]
|
|
|
|
Tipo: ${tipo_invocacion}
|
|
```
|
|
|
|
## Campos del frontmatter
|
|
|
|
| Campo | Descripción |
|
|
|-------|-------------|
|
|
| name | Nombre del skill |
|
|
| description | Qué hace y cuándo usarlo |
|
|
| argument-hint | Pista de argumentos |
|
|
| disable-model-invocation | true = solo usuario invoca |
|
|
| user-invocable | false = solo Claude invoca |
|
|
| allowed-tools | Tools sin pedir permiso |
|
|
| context | fork = ejecutar en subagente |
|
|
| agent | Tipo subagente: Explore, Plan |
|
|
|
|
## Variables dinámicas
|
|
|
|
| Variable | Descripción |
|
|
|----------|-------------|
|
|
| $ARGUMENTS | Todos los argumentos |
|
|
| $0, $1, $2 | Argumentos posicionales |
|
|
| ${CLAUDE_SKILL_DIR} | Ruta del skill |
|
|
|
|
## Convenciones
|
|
|
|
- Nombres descriptivos con guiones
|
|
- Descripciones claras para invocación automática
|
|
- Un skill por tarea
|
|
|
|
## Reglas
|
|
|
|
- Validar nombre antes de crear
|
|
- SKILL.md es obligatorio
|
|
- Confirmación antes de integrar
|