josemoreupeso.es
ar10-superpowers.md — TLOTP
# 👑 AR10 - Los Poderes Ancestrales: Instalar Superpowers

## Intro de ejecución

```
👑 Aragorn invoca los poderes ancestrales de la Tierra Media...
   Commands que obedecen con un slash. Hooks que vigilan en las sombras.
   El Palantír del Rey activará los más poderosos.
```

---

## Contexto: ¿Qué son los Superpowers?

Los **Superpowers** son componentes de aitmpl.com que potencian al agente principal
(no son instancias independientes como los agentes). Hay dos tipos:

| Tipo | Qué es | Dónde se instala |
|------|--------|-----------------|
| **Command** | Slash command personalizado (`/nombre`) | `.claude/commands/nombre.md` |
| **Hook** | Script que se ejecuta en eventos del lifecycle | Via **Palantír** (gestión de hooks) |

---

## Paso 1 — Preguntar qué tipo de Superpower

**Usar AskUserQuestion**:

```
✨ INSTALAR SUPERPOWER
══════════════════════════════════════════

¿Qué tipo de Superpower quieres instalar?
```

Opciones:
- ⚡ Command — slash command personalizado (`/nombre`)
- 🪝 Hook — script en eventos del lifecycle (PreToolUse, PostCommit...)
- 🔙 Volver al menú de Aragorn

---

## Opción A — Instalar Command

### Paso A1 — Buscar commands en aitmpl.com

```
WebFetch: https://www.aitmpl.com/commands
```

Si el WebFetch falla o devuelve contenido dinámico (aitmpl carga con JS),
mostrar los commands más populares conocidos y ofrecer búsqueda manual:

```
⚠️  aitmpl.com carga dinámicamente — mostrando catálogo conocido.
    Para el catálogo completo: https://www.aitmpl.com/commands
```

**Catálogo base de commands** (actualizar con WebFetch si disponible):

| Command | Descripción | Stack ideal |
|---------|-------------|-------------|
| `run-tests` | Ejecuta la suite de tests con filtro opcional | Cualquiera |
| `e2e-run` | Lanza Playwright con tag o título | Playwright |
| `ci-status` | Consulta estado del CI/CD | GitHub Actions |
| `symfony-lint` | PHPStan + CS-Fixer en un comando | Symfony |
| `docker-clean` | Limpia imágenes y containers huérfanos | Docker |
| `db-migrate` | Ejecuta migraciones pendientes | Doctrine/ORM |
| `coverage-report` | Genera y abre reporte de cobertura | PHPUnit/Jest |
| `pr-review` | Resumen de cambios del PR actual | Git |
| `changelog` | Genera changelog desde commits convencionales | Git |
| `deploy-check` | Verifica estado pre-deploy | CI/CD |

### Paso A2 — Seleccionar command

**Usar AskUserQuestion** mostrando hasta 3 commands relevantes según el stack detectado + "Ver más / escribir nombre".

Si el usuario escribe un nombre manualmente, intentar descargarlo de aitmpl.com:

```
WebFetch: https://www.aitmpl.com/commands/[nombre]
```

### Paso A3 — Preguntar scope

**Usar AskUserQuestion**:

```
⚡ Instalando command: /[nombre]

¿Dónde quieres instalarlo?
```

- **📁 Proyecto** (`.claude/commands/`) — solo en este proyecto (recomendado)
- **🌍 Global** (`~/.claude/commands/`) — disponible en todos tus proyectos

### Paso A4 — Mostrar preview y confirmar

Mostrar el contenido del command antes de instalar:

```
📄 PREVIEW DEL COMMAND
══════════════════════════════════════════════════════

Nombre:    /run-tests
Destino:   .claude/commands/run-tests.md
Fuente:    aitmpl.com / commands

--- Contenido ---
Ejecuta la suite de tests del proyecto...
══════════════════════════════════════════════════════
```

**Usar AskUserQuestion**:
- ✅ Instalar — escribir el fichero en el destino
- ❌ Cancelar

### Paso A5 — Instalar el command

Crear el directorio si no existe:

```bash
mkdir -p .claude/commands/
# o
mkdir -p ~/.claude/commands/
```

Escribir el fichero `.md` con el contenido descargado usando Write.

### Paso A6 — Confirmar instalación

```
✅ SUPERPOWER INSTALADO
══════════════════════════════════════════════════════

  ⚡ Command: /run-tests
  📍 Ubicación: .claude/commands/run-tests.md
  📁 Scope: Proyecto

  💡 Cómo usarlo:
     Escribe /run-tests en Claude Code para ejecutarlo.
     Ejemplo: /run-tests OrderServiceTest

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

**Usar AskUserQuestion**:
- Instalar otro command
- Instalar un hook
- Volver al menú de Aragorn

---

## Opción B — Instalar Hook

Los hooks se gestionan a través de **Palantír** (el guardián de las configuraciones).

Mostrar al usuario:

```
🪝 HOOKS — Gestionados por el Palantír del Rey
══════════════════════════════════════════════════════

Los hooks son scripts que se ejecutan automáticamente
en eventos del lifecycle de Claude Code:

  • PreToolUse   — antes de usar una herramienta
  • PostToolUse  — después de usar una herramienta
  • PreCommit    — antes de hacer commit
  • PostCommit   — después de hacer commit
  • SessionStart — al iniciar una sesión

Los hooks se configuran en settings.json y son
gestionados por Palantír para garantizar backups
y consistencia.

Hooks populares en aitmpl.com:

  🪝 pre-commit-lint     — linter automático antes de commit
  🪝 post-commit-notify  — notificación tras commit exitoso
  🪝 review-on-edit      — ejecuta code-reviewer al guardar ficheros
  🪝 test-on-save        — lanza tests al modificar ficheros de test
  🪝 security-scan       — escaneo de seguridad en PreToolUse Bash
```

**Usar AskUserQuestion**:
- 🔮 Abrir Palantír para gestionar hooks (cargar @prompts/palantir/palantir-main.md)
- 📋 Ver documentación de hooks de Claude Code
- 🔙 Volver al menú de Aragorn

Si el usuario elige **ver documentación**:

```
📖 HOOKS EN CLAUDE CODE
══════════════════════════════════════════════════════

Configuración en settings.json:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          { "type": "command", "command": "./scripts/lint.sh" }
        ]
      }
    ]
  }
}

Eventos disponibles:
  • PreToolUse / PostToolUse  — por herramienta (matcher)
  • SubagentStart / SubagentStop — lifecycle de agentes
  • SessionStart / SessionEnd — inicio y fin de sesión

Documentación oficial: https://code.claude.com/docs/en/hooks
══════════════════════════════════════════════════════
```

---

## Notas de implementación

- Los commands son ficheros `.md` simples — se instalan igual que los agentes
- Los hooks requieren editar `settings.json` — delegar siempre a Palantír para evitar errores y garantizar backup
- Si aitmpl.com no es accesible (contenido dinámico), usar el catálogo base hardcodeado como fallback
- Siempre verificar si ya existe un command con el mismo nombre antes de sobreescribir