---
id: extend-squad
agent: squad-creator
title: Estender um squad existente sem quebrar o que já roda
inputs: ['id do squad', 'necessidade nova (membro, task ou knowledge)']
outputs: ['blueprint incremental <squad>{json}</squad> validado', 'squads/{id}/ estendido pelo motor']
elicit: true
modes: [interactive, yolo]
---

# Estender um squad existente sem quebrar o que já roda

**Objetivo:** adicionar membros, tasks ou knowledge a um squad já materializado — mudança ADITIVA,
validada pelo motor, que preserva os membros e contratos existentes.

**Pré-condições:**
- `squads/{id}/` existe e passa em `validate-squad`. Estender squad quebrado é empilhar dívida:
  primeiro o FAIL é sanado, depois se estende.
- A necessidade nova rastreia à missão do squad (ou a uma extensão explícita dela, com novo
  `traceRef`). Sem rastro, não entra.

## Passos

1. **Leia o squad REAL** (`squad.yaml` + `agents/` + `tasks/` do squad) antes de propor qualquer
   adição (Lei 2). Rode `validate-squad {id}` — FAIL bloqueia a extensão até ser sanado.
2. **Elicite a necessidade** (ponto de elicitação em modo interativo): que gap apareceu? É lente
   nova (membro), procedimento novo (task) ou craft novo (knowledge)? Em yolo, derive dos inputs e
   declare as suposições.
3. **Cheque REUSE antes de CREATE — duas vezes:** o gap é coberto (a) por um membro atual do squad?
   (b) pelo time core? Se sim em qualquer um, a extensão é **delegação/referência**, não membro
   novo. Só o gap real vira adição.
4. **Verifique os limites da composição:** a adição mantém o time em chief+2..chief+7, lentes
   distintas, chief único e `Orchestrator`, zero colisão de autoridade com o core. Estourou a
   faixa → renegocie (fatiar a missão) em vez de inchar o time.
5. **Preencha os templates** (`agent-dna-tmpl` / `squad-task-tmpl`) para as adições e **emita UM
   bloco `<squad>{json}</squad>` incremental**: mesmo shape do `create-squad`, com o `manifest`
   atualizado (version bump) e SOMENTE os agents/tasks/knowledge novos ou alterados. Membro
   existente não é reescrito de carona (Lei 5 — diff mínimo).
6. **Dispare o motor** (`nexus squad extend`): ele valida o blueprint incremental contra o squad
   existente e materializa. Conflito (id duplicado, autoridade colidente) → o motor recusa; corrija
   e re-emita.
7. **Prove:** rode `validate-squad {id}` no squad estendido e reporte o resultado real.

## Critério de pronto (DoD)

- [ ] Squad de partida validado (PASS) antes da extensão
- [ ] Necessidade rastreada à missão (ou extensão dela com `traceRef` novo)
- [ ] REUSE checado contra o squad E contra o core antes de criar qualquer coisa
- [ ] Blueprint incremental emitido num único bloco `<squad>{json}</squad>`, com version bump e sem reescrever membros intactos
- [ ] Motor validou e materializou; conflito zero
- [ ] `validate-squad` pós-extensão PASS, reportado

## Falha / recuperação

- **O squad de partida está FAIL** → HALT da extensão; reporte os issues e conserte-os primeiro
  (issue aditivo → esta task; estrutural → `create-squad` re-emite).
- **A adição colide com membro/task existente** → o motor recusa; renomeie ou funda com o
  existente — nunca sobrescreva por cima.
- **A necessidade não rastreia à missão** → não é extensão, é squad novo ou escopo do core:
  devolva a decisão ao usuário com as duas opções.
