josemoreupeso.es
04-backend-cli.md — TLOTP
# ⚡ Backend CLI - Celebrimbor

## Misión

Implementar el backend que usa `npx skills` (Node.js) para gestionar skills.

> **Referencia CLI completa**: Ver `sections/14-skills-cli-reference.md` (obtiene docs live via WebFetch)
> **Fuente oficial**: [github.com/vercel-labs/skills](https://github.com/vercel-labs/skills)

## 📖 Documentación Oficial (Live)

**ANTES de ejecutar operaciones**, el módulo 14 obtiene la referencia CLI actualizada via WebFetch.
Este módulo define la **lógica operacional** de cómo Celebrimbor usa el CLI.
Para sintaxis y flags exactos, consultar siempre el módulo 14.

---

## 🎯 Requisitos

**Obligatorios**:
- Node.js >= 18.0.0
- npm >= 9.0.0
- npx (incluido con npm)

**Validación** (usa módulo 01-detector-entorno.md):
```bash
node --version  # >= v18.0.0
npm --version   # >= 9.0.0
npx skills --version  # Debe funcionar
```

---

## 🔧 Implementación de Operaciones

### 1. **Buscar Skills**

**Comando CLI**:
```bash
npx skills find [query]
```

> **IMPORTANTE**: El comando es `find`, NO `search`.

**Ejemplos**:
```bash
npx skills find playwright   # Buscar por keyword
npx skills find              # Modo interactivo
```

**Parseo**:
- Capturar nombre, autor, descripción, instalaciones
- Formatear como lista estructurada
- Mostrar al usuario de forma clara

**Alternativa** — listar skills de un repo sin instalar:
```bash
npx skills add vercel-labs/agent-skills --list
```

---

### 2. **Instalar Skill**

**Comando CLI**:
```bash
npx skills add <source> [options]
```

**Flags clave**:
- `-a claude-code` → agente destino
- `-s <skill-name>` → skill específica
- `-g` → instalar en global
- `-y` → no interactivo
- `--copy` → copiar en vez de symlink

**Ejemplos**:
```bash
# Instalar skill específica para Claude Code (no interactivo)
npx skills add vercel-labs/agent-skills -s playwright-pom -a claude-code -y

# Instalar en global
npx skills add vercel-labs/agent-skills -s playwright-pom -g -a claude-code -y

# Ver skills disponibles antes de instalar
npx skills add vercel-labs/agent-skills --list
```

**Proceso**:
1. Ejecutar `npx skills add` con flags `-a claude-code -s <skill> -y`
2. Si es global: añadir `-g`
3. Verificar instalación exitosa
4. Confirmar path final del archivo

---

### 3. **Listar Skills Instaladas**

**Comando CLI**:
```bash
npx skills list [options]
npx skills ls [options]
```

**Flags**:
- `-g` → solo globales
- `-a claude-code` → filtrar por agente

**Ejemplos**:
```bash
npx skills list                  # Todas las instaladas
npx skills ls -g                 # Solo globales
npx skills ls -a claude-code     # Solo de Claude Code
```

**Fallback** (lectura manual de directorios):
```bash
# Global
ls -1 ~/.claude/skills/*.md
ls -1 ~/.claude/rules/*.md

# Local
ls -1 ./.claude/skills/*.md
ls -1 ./.claude/rules/*.md
```

---

### 4. **Verificar Actualizaciones**

**Comando CLI**:
```bash
npx skills check
```

**Comportamiento**: Compara skills instaladas con sus fuentes remotas.

---

### 5. **Actualizar Skills**

**Comando CLI**:
```bash
npx skills update
```

> **NOTA**: Actualiza TODAS las skills de golpe. No acepta nombre individual.

**Fallback** (reinstalar skill específica):
```bash
npx skills add <source> -s <skill-name> -a claude-code -y
```

---

### 6. **Eliminar Skill**

**Comando CLI**:
```bash
npx skills remove [skill] [options]
npx skills rm [skill] [options]
```

**Flags**:
- `-g` → scope global
- `-a claude-code` → agente específico
- `-y` → sin confirmación
- `--all` → eliminar todo

**Ejemplos**:
```bash
npx skills remove playwright-pom -a claude-code -y   # Específica
npx skills remove -g my-skill                         # Desde global
npx skills remove --all                               # Todo
```

**Fallback** (eliminar archivo manualmente):
```bash
rm ~/.claude/skills/playwright-pom.md
rm ./.claude/rules/playwright-pom.md
```

---

### 7. **Crear Plantilla de Skill**

**Comando CLI**:
```bash
npx skills init [name]
```

**Comportamiento**:
- Sin nombre: crea `SKILL.md` en directorio actual
- Con nombre: crea subdirectorio con `SKILL.md`

---

## 📍 Scopes de Instalación

| Scope | Flag | Ubicación | Uso |
|-------|------|-----------|-----|
| **Project** | (default) | `.claude/skills/` | Compartido via repo |
| **Global** | `-g` | `~/.claude/skills/` | Personal, todos los proyectos |

## 🔗 Métodos de Instalación

| Método | Flag | Descripción |
|--------|------|-------------|
| **Symlink** | (default) | Referencia a copia canónica. Recomendado. |
| **Copy** | `--copy` | Copia independiente. Usar si symlinks fallan. |

---

## 🎨 Manejo de Errores

### Error: Node.js < 18

**Detectado por**: módulo 01-detector-entorno.md

**Acción**:
```
❌ Node.js desactualizado

Tu versión: v12.22.9
Requerido:   v18.0.0+

Opciones:
1. Actualizar Node.js → Usar Backend CLI
2. Esperar v4.0.0 → Usar Backend Git (sin Node.js)
```

### Error: Skill no encontrada

**Acción**:
```
❌ Skill no encontrada

La skill "non-existent-skill" no existe en skills.sh

Sugerencias:
- Verificar nombre (sensible a mayúsculas)
- Buscar alternativas: npx skills find <query>
- Ver catálogo: https://skills.sh
```

### Error: npx no disponible

**Acción**:
```
❌ npx no está disponible

Instala npm:
  Ubuntu: sudo apt install npm
  macOS:  brew install node
  Windows: choco install nodejs
```

---

## 🔗 Integración con Abstracción

**Implementa** la interfaz definida en `03-abstraction-layer.md`:

```yaml
backend_cli:
  name: "cli"
  available: true (si Node.js >=18)
  version: "2.0.0"

  operations:
    search:   "npx skills find {query}"
    install:  "npx skills add {source} -s {skill} -a claude-code -y"
    list:     "npx skills list" / "npx skills ls -a claude-code"
    check:    "npx skills check"
    update:   "npx skills update"
    remove:   "npx skills remove {skill} -a claude-code -y"
    init:     "npx skills init {name}"
```

---

## 🎯 Reglas de Ejecución

1. **SIEMPRE validar Node.js** antes de ejecutar comandos
2. **Usar `find`** para buscar, NUNCA `search`
3. **Usar flags `-a claude-code -y`** para operaciones no interactivas
4. **Capturar y parsear** output de npx skills
5. **Manejo robusto de errores** (skill no existe, network fail, etc.)
6. **Confirmación al usuario** antes de instalar/eliminar
7. **Verificar instalación** después de cada operación
8. **Consultar** `14-skills-cli-reference.md` ante cualquier duda de sintaxis

---

**Módulo anterior**: 03-abstraction-layer.md
**Módulo siguiente**: 05-backend-git.md (v4.0.0)
**Módulo relacionado**: 06-backend-selector.md
**Referencia CLI**: 14-skills-cli-reference.md