Cómo combinar GSD (meta-prompting y spec-driven development) con Agent Teams nativo de Claude Code para resolver el context rot y conseguir ejecución paralela real en proyectos complejos.

// 01 — Qué es GSD

Get Shit Done es un sistema de meta-prompting, context engineering y spec-driven development para Claude Code. Su función principal es resolver el context rot — la degradación de calidad que ocurre cuando Claude acumula demasiado contexto en una sola sesión.

Repositorio: https://github.com/gsd-build/get-shit-done

// 02 — Qué son los Agent Teams

Funcionalidad nativa de Claude Code para orquestar múltiples instancias trabajando en paralelo. Una sesión actúa como team lead y coordina a los teammates, que trabajan de forma independiente con su propio context window y se comunican via un sistema de inboxes.

A diferencia de los subagents, los teammates pueden mensajearse entre ellos, compartir una task list con dependencias y reclamar tareas automáticamente del pool.

⚠ WARN

Feature experimental. Activar con CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 en settings.json.

// 03 — Por qué combinarlos

Cada uno cubre lo que el otro no tiene. El CLAUDE.md es el pegamento — todos los teammates lo leen automáticamente al arrancar.

CapaGSDAgent Teams
Spec y contexto estructurado
Ejecución paralela real
Comunicación peer-to-peer entre agentes
Persistencia de estado entre sesiones✓ STATE.md
Commits atómicos por tareamanual
Context fresco por tarea

// 04 — Setup

1 — Instalar GSD

npx get-shit-done-cc@latest
# Elegir: Claude Code + global

Verificar dentro de Claude Code: /gsd:help

2 — Activar Agent Teams

// .claude/settings.json
{
  "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
}

3 — Instalar el skill de integración

mkdir -p ~/.claude/skills/execute-phase-teams/
# Guardar SKILL.md en ese directorio (ver sección 07)

4 — Terminal recomendada

# Con tmux (ver teammates en paneles separados)
tmux new-session -s dev
claude

# O forzar backend
export CLAUDE_CODE_SPAWN_BACKEND=tmux

5 — Permisos

claude --dangerously-skip-permissions

O permisos granulares en .claude/settings.json:

{
  "permissions": {
    "allow": [
      "Bash(git add:*)", "Bash(git commit:*)",
      "Bash(git status:*)", "Bash(mkdir:*)",
      "Bash(cat:*)", "Bash(ls:*)"
    ]
  }
}

// 05 — Flujo completo

01
/gsd:new-project
Inicialización: preguntas → research → requirements → roadmap
02
/gsd:discuss-phase N
Captura tus decisiones de implementación antes de planificar
03
/gsd:plan-phase N
Research + planes XML atómicos + verificación automática
04
/execute-phase-teams N  ← nuestro skill
Reemplaza /gsd:execute-phase — usa Agent Teams nativo para ejecución paralela real
05
/gsd:verify-work N
UAT manual — confirmas que funciona de verdad
06
/gsd:complete-milestone
Archiva el milestone y tagea el release
07
/gsd:new-milestone [name]
Empieza la siguiente versión con el mismo flujo

// 06 — Comandos GSD

Flujo principal

ComandoQué hace
/gsd:new-projectInicialización: preguntas → research → requirements → roadmap
/gsd:discuss-phase [N]Captura decisiones de implementación antes de planificar
/gsd:plan-phase [N]Research + planes XML atómicos + verificación
/gsd:execute-phase <N>Ejecución con subagents (versión original de GSD)
/gsd:verify-work [N]UAT manual
/gsd:audit-milestoneVerifica definition of done del milestone
/gsd:complete-milestoneArchiva milestone y tagea release
/gsd:new-milestone [name]Empieza la siguiente versión

Navegación

ComandoQué hace
/gsd:progressDónde estoy, qué viene después
/gsd:helpTodos los comandos
/gsd:updateActualizar GSD

Gestión de fases

ComandoQué hace
/gsd:add-phaseAñadir fase al roadmap
/gsd:insert-phase [N]Insertar fase urgente entre fases
/gsd:remove-phase [N]Eliminar fase futura
/gsd:pause-workCrear handoff al parar a mitad de fase
/gsd:resume-workRestaurar desde última sesión

Utilidades

ComandoQué hace
/gsd:quickTarea ad-hoc con commits atómicos
/gsd:map-codebaseAnalizar proyecto existente antes de new-project
/gsd:debug [desc]Debug sistemático con estado persistente
/gsd:settingsConfigurar modelo y agentes

Nuestro skill

ComandoQué hace
/execute-phase-teams <N>Reemplaza /gsd:execute-phase usando Agent Teams nativo

// 07 — El Skill

Guardar en ~/.claude/skills/execute-phase-teams/SKILL.md

---
name: execute-phase-teams
description: Executes a GSD phase using Claude Code native Agent Teams
  (TeammateTool). Use when the user runs /execute-phase-teams or asks
  to execute a GSD phase with agent teams.
disable-model-invocation: false
---

## Step 1 — Read context
.planning/PROJECT.md · REQUIREMENTS.md · STATE.md
.planning/phase-$ARGUMENTS/ (todos los archivos)

## Step 2 — Parse PLAN files
Extraer <task> blocks: <n> <files> <action> <verify> <done>
Identificar dependencias → agrupar en waves paralelas

## Step 3 — Create team
Teammate({ operation: "spawnTeam",
  team_name: "gsd-phase-$ARGUMENTS" })

## Step 4 — Create tasks
TaskCreate({ subject, description, activeForm })
TaskUpdate({ taskId: "B", addBlockedBy: ["A"] })

## Step 5 — Spawn teammates
Task({
  team_name: "gsd-phase-$ARGUMENTS",
  name: "<descriptive-name>",
  subagent_type: "general-purpose",
  prompt: "Claim #id → execute → verify → complete → notify lead",
  run_in_background: true
})
// Wave 1: lanzar todos simultáneamente
// Wave 2+: prompt con instrucción de esperar desbloqueo

## Step 6 — Monitor
TaskList() · leer inboxes/team-lead.json

## Step 7 — Commit por tarea
git add -A && git commit -m 'feat(phase-N): <task>'

## Step 8 — Shutdown + cleanup
requestShutdown → esperar approvals → cleanup
⚡ KEY

La garantía de que usa Agent Teams está en los tool calls explícitos (Teammate, Task con team_name), no en instrucciones de lenguaje natural.

// 08 — Arquitectura Agent Teams

File structure

~/.claude/teams/{team}/ ├── config.json # miembros └── inboxes/ ├── team-lead.json ├── worker-1.json └── worker-2.json ~/.claude/tasks/{team}/ ├── 1.json # tarea #1 ├── 2.json └── 3.json

Backends

BackendVisibilidad
in-processHidden (default)
tmuxPaneles visibles
iterm2Split panes

Operaciones TeammateTool

OperaciónQuiénQué hace
spawnTeamLeadCrea el equipo
writeAnyMensaje a un teammate específico
broadcastAnyMensaje a todos (caro, usar poco)
requestShutdownLeadPide a un teammate que salga
approveShutdownTeammateConfirma y termina el proceso
cleanupLeadElimina todos los recursos del equipo

// 09 — Archivos que genera GSD

ArchivoQué contiene
PROJECT.mdVisión del proyecto, siempre cargado
REQUIREMENTS.mdRequisitos v1/v2 con trazabilidad de fases
ROADMAP.mdFases y estado
STATE.mdDecisiones, blockers, posición actual
{phase}-CONTEXT.mdDecisiones capturadas en discuss-phase
{phase}-RESEARCH.mdInvestigación del dominio
{phase}-{N}-PLAN.mdPlan atómico con estructura XML
{phase}-{N}-SUMMARY.mdQué ocurrió, qué cambió
{phase}-VERIFICATION.mdResultado de verificación automática
{phase}-UAT.mdResultado del verify-work manual

// 10 — Cuándo usar qué

SituaciónUsar
Tareas independientes en paraleloAgent Teams
Research + implementación + tests simultáneosAgent Teams
Bug fix, cambio pequeño, config/gsd:quick
Tarea con muchas dependencias secuencialesSesión única
Proyecto nuevo, primera faseGSD solo

// Fuentes