josemoreupeso.es
ar7-team-builder.md β€” TLOTP
# πŸ‘‘ AR7 - Los EjΓ©rcitos de Gondor: Team Builder

## Intro de ejecuciΓ³n

```
πŸ‘‘ Aragorn convoca a los ejΓ©rcitos de Gondor...
   Cada team es un batallΓ³n que marcha unido hacia la victoria.
```

---

## Paso 1 β€” MenΓΊ principal del Team Builder

Mostrar el menΓΊ:

```
βš”οΈ  TEAM BUILDER - Configurar Agent Teams
══════════════════════════════════════════

Los Agent Teams permiten que mΓΊltiples agentes trabajen
en paralelo, cada uno con su propio contexto independiente.

ΒΏQuΓ© quieres hacer?
```

**Usar AskUserQuestion** con estas opciones:
- πŸ†• Crear nuevo team
- πŸ“‹ Ver teams configurados
- πŸ”§ Editar team existente
- πŸ—‘οΈ  Eliminar team
- ❓ ΒΏQuΓ© son los Agent Teams?
- πŸ”™ Volver al menΓΊ de Aragorn

---

## OpciΓ³n A β€” Crear nuevo team

### Paso A1 β€” Recopilar agentes disponibles

Ejecutar AR1 en modo silencioso para obtener la lista de agentes instalados:

```bash
ls ~/.claude/agents/ 2>/dev/null
ls .claude/agents/ 2>/dev/null
```

Si no hay ningΓΊn agente instalado:

```
⚠️  No hay agentes instalados todavía.
    Para crear un team necesitas tener al menos 2 agentes instalados.

    β†’ OpciΓ³n: Instalar agentes primero (ir a AR5)
    β†’ OpciΓ³n: Volver al menΓΊ
```

### Paso A2 β€” Nombre del team

**Usar AskUserQuestion** para pedir el nombre:

```
πŸ†• NUEVO TEAM β€” Paso 1/4
══════════════════════════════════════════

ΒΏCΓ³mo se llamarΓ‘ este team?
(ej: full-stack-review, deploy-guard, security-audit)
```

Validar el nombre:
- Solo letras minΓΊsculas, nΓΊmeros y guiones
- Sin espacios ni caracteres especiales
- Si invΓ‘lido, pedir de nuevo con indicaciΓ³n del formato correcto

### Paso A3 β€” Seleccionar agentes

Mostrar todos los agentes disponibles (global + proyecto) y pedir selecciΓ³n:

```
πŸ†• NUEVO TEAM β€” Paso 2/4
══════════════════════════════════════════

Agentes disponibles para incluir en el team:

🌍 Global (~/.claude/agents/):
  β€’ code-reviewer    β€” Revisa cΓ³digo buscando bugs y mejoras
  β€’ test-writer      β€” Genera tests unitarios y E2E
  β€’ symfony-expert   β€” Experto en Symfony/PHP
  β€’ security-auditor β€” AuditorΓ­a de seguridad

πŸ“ Proyecto (.claude/agents/):
  β€’ deploy-guardian  β€” Supervisa deploys

Selecciona los agentes para "[nombre-del-team]"
(necesitas al menos 2 para que tenga sentido un team)
```

**Usar AskUserQuestion** con multiSelect: true listando todos los agentes disponibles.

Si el usuario selecciona menos de 2: advertir y volver a preguntar.

### Paso A4 β€” DescripciΓ³n del team

**Usar AskUserQuestion**:

```
πŸ†• NUEVO TEAM β€” Paso 3/4
══════════════════════════════════════════

Team: [nombre]
Agentes: [agente1], [agente2], ...

ΒΏPara quΓ© se usarΓ‘ este team?
(ej: RevisiΓ³n completa de cΓ³digo Symfony: calidad + seguridad)
```

### Paso A5 β€” ActivaciΓ³n de Agent Teams

Comprobar si la variable de entorno ya estΓ‘ activa:

```bash
echo $CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS
```

Si NO estΓ‘ activa, mostrar:

```
πŸ†• NUEVO TEAM β€” Paso 4/4
══════════════════════════════════════════

Para usar Agent Teams necesitas activar la feature experimental:

  export CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1

ΒΏQuΓ© quieres hacer con esta variable?
```

**Usar AskUserQuestion**:
- βœ… AΓ±adir permanentemente a `.bashrc`/`.zshrc`
- πŸ“‹ Copiar el comando (lo harΓ© yo manualmente)
- ⏭️  Saltar por ahora (lo añadiré después)

Si elige **aΓ±adir permanentemente**, detectar el shell del usuario:

```bash
echo $SHELL
```

- Si es `zsh`: aΓ±adir a `~/.zshrc`
- Si es `bash`: aΓ±adir a `~/.bashrc`

AΓ±adir la lΓ­nea al final del fichero:

```bash
echo '' >> ~/.zshrc
echo '# Agent Teams (Claude Code experimental)' >> ~/.zshrc
echo 'export CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1' >> ~/.zshrc
```

Confirmar con:
```
βœ… Variable aΓ±adida a ~/.zshrc
   Recarga tu terminal o ejecuta: source ~/.zshrc
```

Si ya estaba activa, mostrar:
```
βœ… Agent Teams ya estΓ‘ activado en tu entorno.
```

### Paso A6 β€” Generar fichero de configuraciΓ³n

Crear el directorio si no existe:

```bash
mkdir -p .claude/teams/
```

Comprobar si ya existe un team con ese nombre:

```bash
ls .claude/teams/[nombre].yml 2>/dev/null
```

Si ya existe, preguntar (AskUserQuestion):
- πŸ”„ Sobreescribir β€” reemplazar la configuraciΓ³n existente
- πŸ“‹ Ver configuraciΓ³n actual β€” mostrar el contenido antes de decidir
- ❌ Cancelar

Generar el fichero `.claude/teams/[nombre].yml`:

```yaml
# .claude/teams/[nombre].yml
# Generado por Aragorn Team Builder
name: [nombre]
description: [descripciΓ³n introducida por el usuario]
agents:
  - [agente1]
  - [agente2]
experimental: true
```

Usar la herramienta Write para crear el fichero.

### Paso A7 β€” Confirmar creaciΓ³n

```
βœ… TEAM CREADO CORRECTAMENTE
══════════════════════════════════════════

  πŸ›οΈ  Team: [nombre]
  πŸ“  [descripciΓ³n]
  βš”οΈ  Agentes: [agente1], [agente2], ...
  πŸ“  Fichero: .claude/teams/[nombre].yml
  βš—οΈ  Feature: CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1

  πŸ’‘ CΓ³mo usar este team:
     Invoca a los agentes normalmente y Claude Code
     los ejecutarΓ‘ en paralelo con contextos independientes.

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

**Usar AskUserQuestion**:
- Crear otro team
- Ver todos los teams configurados
- Volver al menΓΊ de Aragorn
- Salir

---

## OpciΓ³n B β€” Ver teams configurados

### Paso B1 β€” Escanear teams existentes

```bash
ls .claude/teams/ 2>/dev/null
```

Si no hay ninguno:

```
πŸ“‹ No hay teams configurados todavΓ­a.
   β†’ OpciΓ³n: Crear nuevo team
   β†’ OpciΓ³n: Volver al menΓΊ
```

### Paso B2 β€” Mostrar inventario de teams

Para cada fichero `.yml` encontrado, leer su contenido y mostrar:

```
πŸ“‹ TEAMS CONFIGURADOS
══════════════════════════════════════════

  1. full-stack-review
     πŸ“ RevisiΓ³n completa de cΓ³digo Symfony: calidad + seguridad
     βš”οΈ  Agentes: code-reviewer, symfony-expert
     πŸ“ .claude/teams/full-stack-review.yml

  2. security-audit
     πŸ“ AuditorΓ­a de seguridad antes de releases
     βš”οΈ  Agentes: security-auditor, code-reviewer
     πŸ“ .claude/teams/security-audit.yml

══════════════════════════════════════════
πŸ“Š Total: 2 teams configurados
```

**Usar AskUserQuestion**:
- Crear nuevo team
- Editar un team (ir a OpciΓ³n C)
- Eliminar un team (ir a OpciΓ³n D)
- Volver al menΓΊ de Aragorn

---

## OpciΓ³n C β€” Editar team existente

### Paso C1 β€” Seleccionar team

Listar teams disponibles y preguntar (AskUserQuestion) cuΓ‘l editar.

### Paso C2 β€” Mostrar configuraciΓ³n actual

```
πŸ”§ EDITAR TEAM: [nombre]
══════════════════════════════════════════

ConfiguraciΓ³n actual:
  πŸ“ DescripciΓ³n: [descripciΓ³n actual]
  βš”οΈ  Agentes: [lista actual]

ΒΏQuΓ© quieres modificar?
```

**Usar AskUserQuestion**:
- Cambiar agentes del team
- Cambiar descripciΓ³n
- Volver sin cambios

### Paso C3 β€” Aplicar cambios

Reutilizar los pasos A3/A4 segΓΊn lo que el usuario quiera editar.

Reescribir el fichero `.yml` con la nueva configuraciΓ³n usando Write.

Confirmar los cambios al usuario.

---

## OpciΓ³n D β€” Eliminar team

### Paso D1 β€” Seleccionar team

Listar teams disponibles y preguntar (AskUserQuestion) cuΓ‘l eliminar.

### Paso D2 β€” Confirmar eliminaciΓ³n

```
πŸ—‘οΈ  ELIMINAR TEAM: [nombre]
══════════════════════════════════════════

  πŸ“ [descripciΓ³n]
  βš”οΈ  Agentes: [lista]

  ⚠️  Esta acción no se puede deshacer.
  ΒΏConfirmas la eliminaciΓ³n?
```

**Usar AskUserQuestion**:
- βœ… SΓ­, eliminar
- ❌ Cancelar

### Paso D3 β€” Ejecutar eliminaciΓ³n

```bash
rm .claude/teams/[nombre].yml
```

Confirmar al usuario:

```
βœ… Team "[nombre]" eliminado correctamente.
```

---

## OpciΓ³n E β€” ΒΏQuΓ© son los Agent Teams?

Mostrar la secciΓ³n educativa:

```
❓ AGENT TEAMS vs SUBAGENTS
══════════════════════════════════════════

Agent Teams es una feature EXPERIMENTAL de Claude Code
que permite ejecutar mΓΊltiples agentes EN PARALELO.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  SUBAGENTS                  AGENT TEAMS             β”‚
β”‚  ─────────────────          ──────────────────────  β”‚
β”‚  Secuencial                 Paralelo                β”‚
β”‚  Un agente orquesta         Todos arrancan a la vez β”‚
β”‚  al resto                   con contextos propios   β”‚
β”‚  Coordinados                Independientes          β”‚
β”‚  Contexto compartido        Contexto aislado        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“‹ Requisitos:
  β€’ Variable de entorno: CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1
  β€’ Agentes definidos en ~/.claude/agents/ o .claude/agents/
  β€’ Cada agente = instancia de Claude Code independiente

πŸ’‘ CuΓ‘ndo usar cada uno:
  β€’ Subagents: tareas que requieren coordinaciΓ³n o resultados
    de un agente para alimentar al siguiente
  β€’ Agent Teams: anΓ‘lisis paralelos independientes donde
    quieres mΓΊltiples perspectivas simultΓ‘neas

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

**Usar AskUserQuestion**:
- Crear un team ahora
- Volver al menΓΊ de Aragorn

---

## Notas de implementaciΓ³n

- Los ficheros de teams se guardan en **scope proyecto** (`.claude/teams/`) porque son especΓ­ficos del contexto de trabajo
- Si el directorio `.claude/teams/` no existe, crearlo automΓ‘ticamente antes de guardar
- Los agentes referenciados en un team deben existir en `~/.claude/agents/` o `.claude/agents/`; si alguno no se encuentra al cargar la configuraciΓ³n, advertir al usuario
- La variable `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` es a nivel de entorno y afecta a toda la sesiΓ³n de terminal, no solo a Claude Code