# πͺ 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*