josemoreupeso.es
07-thorin-company.md β€” TLOTP
# πŸͺ“ Thorin y su CompaΓ±Γ­a β€” Agent Team CI/CD

**MΓ³dulo**: `07-thorin-company.md`
**Invocado desde**: `00-menu-principal.md` (opciΓ³n "βš”οΈ Thorin y su CompaΓ±Γ­a")
**MisiΓ³n**: Detectar, crear y convocar un Agent Team especializado en CI/CD para analizar e implementar mejoras en los workflows del proyecto.

---

## Bloque Γ©pico de bienvenida (mostrar al entrar)

```
πŸͺ“ "Thorin hijo de ThrΓ‘in ha oΓ­do el llamado de los Ents.
   Los Enanos de Erebor, maestros del fuego y el metal,
   traen su sabidurΓ­a de forja a los pipelines del reino.

   Pero quien organice esta compaΓ±Γ­a serΓ‘ Aragorn,
   Rey de Gondor. Γ‰l forjarΓ‘ el ejΓ©rcito que conquiste
   los workflows de GitHub Actions."

                              β€” BΓ‘rbol, convocando a Thorin
```

---

## Fase 1 β€” DetecciΓ³n de teams CI/CD existentes

### Paso F1.1 β€” Escanear teams en ambos scopes

```bash
echo "=== GLOBAL (~/.claude/teams/) ==="
ls ~/.claude/teams/ 2>/dev/null || echo "(vacΓ­o)"
echo "=== PROYECTO (.claude/teams/) ==="
ls .claude/teams/ 2>/dev/null || echo "(vacΓ­o)"
```

Para cada fichero encontrado, leer su contenido con Read y extraer:
- Nombre del team
- DescripciΓ³n (si existe)
- Agentes miembros

### Paso F1.2 β€” HeurΓ­stica CI/CD

Un team se considera "CI/CD" si su nombre o descripciΓ³n contiene alguno de estos tΓ©rminos (case-insensitive):
`cicd`, `ci-cd`, `ci_cd`, `deploy`, `pipeline`, `devops`, `github-actions`, `workflow`, `thorin`

### Paso F1.3 β€” Resultado de la detecciΓ³n

**Caso A β€” Se detecta al menos un team CI/CD**: ir a Fase 2b.

**Caso B β€” Hay teams pero ninguno es CI/CD**: mostrar los teams existentes y preguntar con AskUserQuestion:

```json
{
  "questions": [{
    "header": "La CompaΓ±Γ­a de Thorin",
    "question": "πŸͺ“ No se detectΓ³ un team CI/CD. ΒΏAlguno de estos ejΓ©rcitos sirve para CI/CD?",
    "multiSelect": false,
    "options": [
      {
        "label": "βš”οΈ [nombre-team-1] β€” usarlo para CI/CD",
        "description": "[descripciΓ³n del team]"
      },
      {
        "label": "πŸ†• Crear un nuevo team CI/CD",
        "description": "Aragorn forjarΓ‘ un equipo especializado desde cero"
      },
      {
        "label": "πŸ”™ Volver al menΓΊ de Ents",
        "description": ""
      }
    ]
  }]
}
```

*(Generar opciones dinΓ‘micamente con los teams detectados)*

**Caso C β€” No hay ningΓΊn team**: ir directamente a Fase 2a.

---

## Fase 2a β€” Crear team CI/CD (no existe)

Mostrar:

```
══════════════════════════════════════════════════════════════
πŸͺ“ LA COMPAÑÍA AÚN NO HA SIDO FORMADA
══════════════════════════════════════════════════════════════

  "Los Enanos de Erebor estΓ‘n listos para marchar,
   pero su ejΓ©rcito aΓΊn no tiene forma.
   Aragorn, forja la compaΓ±Γ­a."

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

Delegar a Aragorn para crear el team:

```
@prompts/aragorn/sections/03-module-team-builder.md
```

**Contexto para Aragorn**: Sugerir un team con perfil CI/CD:
- Nombre sugerido: `cicd-guard` o `deploy-guard`
- DescripciΓ³n sugerida: "Agent Team especializado en CI/CD y GitHub Actions"
- Agentes candidatos (segΓΊn los disponibles): `devops-engineer`, `deployment-engineer`, `security-auditor`

Tras que Aragorn complete la creaciΓ³n, retomar control aquΓ­ en la **Fase 3**.

---

## Fase 2b β€” Confirmar team existente

Mostrar el team detectado:

```
══════════════════════════════════════════════════════════════
πŸͺ“ COMPAÑÍA DETECTADA
══════════════════════════════════════════════════════════════

  βš”οΈ  [nombre-team]
  πŸ“  [descripciΓ³n si existe]
  πŸ§‘β€πŸ€β€πŸ§‘ Guerreros: [N]  Β·  [lista de agentes]
  πŸ“  [scope: global / proyecto]

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

AskUserQuestion:

```json
{
  "questions": [{
    "header": "La CompaΓ±Γ­a de Thorin",
    "question": "πŸͺ“ ΒΏQuΓ© hacemos con este ejΓ©rcito?",
    "multiSelect": false,
    "options": [
      {
        "label": "βš”οΈ Convocar este team para CI/CD",
        "description": "Proceder con [nombre-team] para analizar e implementar mejoras"
      },
      {
        "label": "πŸ†• Crear un team nuevo",
        "description": "Aragorn forjarΓ‘ un equipo especializado desde cero"
      },
      {
        "label": "πŸ”™ Volver al menΓΊ de Ents",
        "description": ""
      }
    ]
  }]
}
```

- Si elige "Convocar": ir a Fase 3 con el team seleccionado.
- Si elige "Crear nuevo": ir a Fase 2a.
- Si elige volver: cargar @prompts/ents/sections/00-menu-principal.md.

---

## Fase 3 β€” Convocatoria

### Paso F3.1 β€” Detectar workflows del proyecto

```bash
ls .github/workflows/ 2>/dev/null || echo "(no hay workflows)"
```

### Paso F3.2 β€” Mostrar convocatoria Γ©pica

```
══════════════════════════════════════════════════════════════
βš”οΈ  LA COMPAÑÍA DE THORIN ESTÁ LISTA
══════════════════════════════════════════════════════════════

  πŸͺ“ "[Frase Γ©pica de Thorin β€” elegir una, no repetir]"

  Guerreros convocados:
  [Para cada agente del team]:
    βš”οΈ  [nombre-agente] β€” "[rol breve]"

  🎯 Misión: Analizar e implementar mejoras en los workflows
             de CI/CD del proyecto.

  πŸ“ Workflows detectados:
  [Lista de archivos en .github/workflows/ o "(ninguno detectado)"]

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

**Frases Γ©picas de Thorin** (rotar, no repetir):
- *"Β‘Erebor no cayΓ³ ante un dragΓ³n! Los pipelines rotos tampoco nos detendrΓ‘n."*
- *"El oro de la MontaΓ±a Solitaria fue recuperado. Los workflows tambiΓ©n lo serΓ‘n."*
- *"Β‘A la carga, CompaΓ±Γ­a! El CI/CD nos necesita."*
- *"Dwalin, Balin, FΓ­li, KΓ­li β€” todos al frente. Los tests no se corren solos."*

### Paso F3.3 β€” Instrucciones de invocaciΓ³n

Mostrar cΓ³mo usar el team segΓΊn el formato de Agent Teams de Claude Code:

```
══════════════════════════════════════════════════════════════
πŸͺ„ CΓ“MO CONVOCAR A LA COMPAÑÍA
══════════════════════════════════════════════════════════════

  En una nueva sesiΓ³n de Claude Code, usa:

    @[nombre-team] Analiza los workflows en .github/workflows/
    y propΓ³n mejoras de seguridad, rendimiento y fiabilidad.

  O para una misiΓ³n especΓ­fica:

    @[nombre-team] Revisa [nombre-workflow.yml] y corrige
    los jobs que fallen en rama develop.

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

### Paso F3.4 β€” Opciones finales

AskUserQuestion:

```json
{
  "questions": [{
    "header": "CompaΓ±Γ­a convocada",
    "question": "βš”οΈ ΒΏQuΓ© quieres hacer ahora?",
    "multiSelect": false,
    "options": [
      {
        "label": "🌳 Volver al menú de los Ents",
        "description": "Continuar con las misiones habituales de Ents"
      },
      {
        "label": "πŸšͺ Retirarse al Fangorn",
        "description": "Salir de los Ents y volver al menΓΊ de TLOTP"
      }
    ]
  }]
}
```

- Si elige volver al menΓΊ: cargar @prompts/ents/sections/00-menu-principal.md (desde PASO 2).
- Si elige Fangorn: cargar @prompts/tlotp-main.md.

---

## ⚠️ Reglas de Ejecución

1. **NO reimplementar** la lΓ³gica de creaciΓ³n de teams β€” delegar siempre a Aragorn.
2. **Siempre usar AskUserQuestion** para interacciΓ³n con el usuario.
3. **Siempre detectar** workflows en `.github/workflows/` antes de la convocatoria.
4. **Retornar control** a Ents tras completar (no dejar al usuario colgado en Aragorn).

---

*MΓ³dulo 07 β€” Thorin y su CompaΓ±Γ­a*
*DiseΓ±ado para: tlotp-sdd-team Β· tarea #301*
*Aragorn Team Builder: @prompts/aragorn/sections/03-module-team-builder.md*