josemoreupeso.es
10-module-remove.md β€” TLOTP
# πŸ—‘οΈ MΓ³dulo Eliminar Skills - Celebrimbor

## MisiΓ³n

Eliminar skills instaladas de forma segura con confirmaciΓ³n del usuario.

---

## 🎯 Flujo de Eliminación

### Paso 1: Listar Skills Instaladas

**Usar mΓ³dulo 09-module-list.md** para mostrar skills disponibles:

```
═══════════════════════════════════════════════════════════════
πŸ—‘οΈ Eliminar Skill
═══════════════════════════════════════════════════════════════

Skills instaladas actualmente:

🌍 Global (2 skills):
  1. php-pro
  2. typescript-utils

πŸ“‚ Local (1 skill):
  3. php-symfony

═══════════════════════════════════════════════════════════════
```

---

### Paso 2: Seleccionar Skill a Eliminar

**Solicitar al usuario**:
```
ΒΏQuΓ© skill deseas eliminar?

Introduce el nΓΊmero [1-3] o el nombre: _
```

**Validar**:
- Si nΓΊmero: verificar rango
- Si nombre: verificar que existe

**Capturar**:
```yaml
skill_to_remove:
  name: "php-pro"
  location: "global"  # o "local"
  path: "~/.claude/skills/php-pro"
```

---

### Paso 3: ConfirmaciΓ³n CrΓ­tica

**⚠️ IMPORTANTE**: Siempre pedir confirmación antes de eliminar.

**Mostrar detalles**:
```
═══════════════════════════════════════════════════════════════
⚠️ Confirmar Eliminación
═══════════════════════════════════════════════════════════════

Skill a eliminar: php-pro
UbicaciΓ³n: Global (~/.claude/skills/)
Archivo: ~/.claude/skills/php-pro
Link real: ~/.agents/skills/php-pro/SKILL.md

⚠️ Esta acción NO se puede deshacer.

La skill dejarΓ‘ de estar disponible en TODOS tus proyectos
(es global).

═══════════════════════════════════════════════════════════════

```

Mostrar con `AskUserQuestion`:

```json
{
  "questions": [{
    "header": "Confirmar EliminaciΓ³n",
    "question": "ΒΏEstΓ‘s seguro de eliminar \"[nombre]\"? Esta acciΓ³n NO se puede deshacer.",
    "multiSelect": false,
    "options": [
      {
        "label": "πŸ—‘οΈ SΓ­, eliminar",
        "description": "La skill dejarΓ‘ de estar disponible en Claude Code"
      },
      {
        "label": "🚫 Cancelar",
        "description": "Volver sin hacer cambios"
      }
    ]
  }]
}
```

**Si elige Cancelar**: volver al menΓΊ sin ejecutar nada.

---

### Paso 4: Ejecutar EliminaciΓ³n

**OpciΓ³n A: Usar npx skills remove** (Recomendado)

```bash
# Con Node.js >=18 y skills CLI
npx skills remove <skill-name>
```

**Ejemplo**:
```bash
source ~/.nvm/nvm.sh && nvm use 20 > /dev/null 2>&1
npx skills remove php-pro
```

**Output esperado**:
```
βœ“ Removed skill: php-pro
βœ“ Symlink removed: ~/.claude/skills/php-pro
βœ“ Source removed: ~/.agents/skills/php-pro/
```

---

**OpciΓ³n B: EliminaciΓ³n Manual** (Fallback)

Si `npx skills remove` no existe o falla:

```bash
# Eliminar symlink
rm ~/.claude/skills/php-pro

# Eliminar directorio real (si existe)
rm -rf ~/.agents/skills/php-pro/
```

**Para skills locales**:
```bash
# Local
rm ./.claude/rules/php-symfony.md
```

---

### Paso 5: Verificar EliminaciΓ³n

**Verificar que el archivo ya NO existe**:
```bash
if [ ! -f ~/.claude/skills/php-pro ]; then
  echo "βœ… Skill eliminada correctamente"
else
  echo "❌ Error: Archivo aún existe"
fi
```

---

### Paso 6: ConfirmaciΓ³n al Usuario

**Mostrar resultado**:
```
═══════════════════════════════════════════════════════════════
βœ… Skill Eliminada Exitosamente
═══════════════════════════════════════════════════════════════

Skill: php-pro
UbicaciΓ³n: Global
Archivo eliminado: ~/.claude/skills/php-pro

La skill ya NO estarΓ‘ disponible en Claude Code.
Recarga la ventana o inicia nueva sesiΓ³n para aplicar cambios.

═══════════════════════════════════════════════════════════════
```

---

### Paso 7: Acciones Posteriores

Mostrar con `AskUserQuestion`:

```json
{
  "questions": [{
    "header": "Tras la eliminaciΓ³n",
    "question": "ΒΏQuΓ© deseas hacer ahora?",
    "multiSelect": false,
    "options": [
      {
        "label": "πŸ—‘οΈ Eliminar otra skill",
        "description": ""
      },
      {
        "label": "πŸ“‹ Ver skills instaladas",
        "description": ""
      },
      {
        "label": "πŸ”™ Volver al menΓΊ principal",
        "description": ""
      }
    ]
  }]
}
```

---

## 🎨 Manejo de Errores

### Error 1: Skill No Encontrada

**Usuario intenta eliminar skill que no existe**:
```
❌ Skill No Encontrada

La skill "non-existent" no estΓ‘ instalada.

Skills disponibles para eliminar:
  β€’ php-pro (global)
  β€’ typescript-utils (global)

```

Mostrar con `AskUserQuestion`: ΒΏDeseas elegir otra skill? (SΓ­ / Volver al menΓΊ)

### Error 2: Sin Permisos

**Falla al eliminar archivo**:
```bash
rm ~/.claude/skills/php-pro
# Error: Permission denied
```

**Mostrar**:
```
❌ Error de Permisos

No se pudo eliminar el archivo ~/.claude/skills/php-pro

SoluciΓ³n:
  sudo rm ~/.claude/skills/php-pro

O verificar permisos:
  ls -la ~/.claude/skills/

ΒΏDeseas reintentar con sudo? [s/N]: _
```

### Error 3: npx skills remove No Disponible

**Comando no existe**:
```bash
npx skills remove php-pro
# Error: Unknown command 'remove'
```

**AcciΓ³n automΓ‘tica**:
```
⚠️ npx skills remove no disponible

Usando eliminaciΓ³n manual...

βœ“ Eliminando symlink ~/.claude/skills/php-pro
βœ“ Eliminando directorio ~/.agents/skills/php-pro/

βœ… Skill eliminada manualmente
```

---

## πŸ”§ CaracterΓ­sticas Adicionales

### EliminaciΓ³n en Batch (Futuro)

**Eliminar mΓΊltiples skills**:
```
πŸ—‘οΈ Eliminar MΓΊltiples Skills

Selecciona skills a eliminar (separa con comas):

1. php-pro
2. typescript-utils
3. php-symfony

Skills a eliminar: 1,3

Confirmar eliminaciΓ³n de:
  β€’ php-pro (global)
  β€’ php-symfony (local)

ΒΏContinuar? [s/N]: _
```

### Backup Antes de Eliminar (Futuro)

**Opcional: Crear backup antes de eliminar**:
```
πŸ’Ύ Backup de Seguridad

ΒΏCrear backup de "php-pro" antes de eliminar?

UbicaciΓ³n del backup: ~/.celebrimbor/backups/
Archivo: php-pro_2026-02-16.md

Backup te permite restaurar la skill mΓ‘s tarde.

ΒΏCrear backup? [S/n]: _
```

---

## πŸ”— IntegraciΓ³n con Otros MΓ³dulos

### Con MΓ³dulo de Listar (09)

```python
# Obtener skills instaladas
installed_skills = list_module.get_installed_skills()

# Mostrar opciones para eliminar
display_skills_to_remove(installed_skills)
```

### Con Backend CLI (04)

```python
# Usar backend para eliminaciΓ³n
backend = selector.get_backend()
result = backend.remove(skill_name, location)
```

### Con MΓ³dulo de BΓΊsqueda (07)

```python
# DespuΓ©s de eliminar
if user_chooses("Buscar nuevas skills"):
    search_module.run()
```

---

## 🎯 Reglas de Ejecución

1. **SIEMPRE pedir confirmaciΓ³n** antes de eliminar
2. **Mostrar detalles** de lo que se va a eliminar
3. **Verificar eliminaciΓ³n** despuΓ©s de ejecutar
4. **Informar claramente** el resultado (Γ©xito o error)
5. **Ofrecer acciones posteriores** (eliminar otra, buscar, listar)
6. **Manejo robusto de errores** (permisos, comando no existe)
7. **Preferir npx skills remove** cuando estΓ© disponible
8. **Fallback a eliminaciΓ³n manual** si npx falla

---

## πŸ“Š Ejemplo Completo de EjecuciΓ³n

```
Usuario: "5. Eliminar Skill"

═══════════════════════════════════════════════════════════════
    πŸ—‘οΈ Eliminar Skill
═══════════════════════════════════════════════════════════════

Skills instaladas:

🌍 Global (1 skill):
  1. php-pro

ΒΏQuΓ© skill eliminar?: 1

───────────────────────────────────────────────────────────────

⚠️ Confirmar Eliminación

Skill: php-pro
UbicaciΓ³n: Global (~/.claude/skills/php-pro)
Real: ~/.agents/skills/php-pro/

⚠️ NO se puede deshacer

ΒΏEliminar "php-pro"? [s/N]: s

───────────────────────────────────────────────────────────────

πŸ—‘οΈ Eliminando "php-pro"...

βœ“ Ejecutando: npx skills remove php-pro
βœ“ Symlink eliminado: ~/.claude/skills/php-pro
βœ“ Directorio eliminado: ~/.agents/skills/php-pro/
βœ“ Verificando eliminaciΓ³n

═══════════════════════════════════════════════════════════════
βœ… Skill Eliminada Exitosamente
═══════════════════════════════════════════════════════════════

Skill: php-pro
UbicaciΓ³n: Global

La skill ya NO estΓ‘ disponible.
Recarga Claude Code para aplicar cambios.

═══════════════════════════════════════════════════════════════

ΒΏQuΓ© hacer ahora?
1. Eliminar otra skill
2. Ver skills instaladas
3. Volver al menΓΊ

Elige [1-3]: _
```

---

**MΓ³dulo anterior**: 09-module-list.md
**Integra con**: 09-module-list.md, 04-backend-cli.md
**Usa**: npx skills remove (preferido) o rm manual (fallback)
**Tarea**: #5 - MΓ³dulo Eliminar