---
id: squad-yaml-tmpl
kind: template
agent: squad-creator
produces: squads/{squad-id}/squad.yaml
---

# squad.yaml — o manifest do squad

> Esqueleto do manifest que o motor materializa em `squads/{squad-id}/squad.yaml`. O Forge preenche
> via blueprint (`create-squad`); o motor valida antes de escrever. Placeholders `{entre-chaves}`
> dentro de flow sequences YAML vão SEMPRE entre aspas.

```yaml
id: "{squad-id}"                      # kebab-case, único; casa com o nome do diretório
name: "{nome legível do squad}"
mission: "{a missão em uma frase — o que este squad existe para entregar}"
version: "0.1.0"                      # semver; extend-squad faz o bump
chief: "{id do agente chief}"         # tem que existir em agents/ do squad, archetype Orchestrator
origin: generated                     # squads forjados pelo Forge nascem 'generated'
traceRef: "{rastro da missão — story/spec/pedido que a originou}"   # sem rastro, não nasce (Art. IV)

# Freios do squad — nunca ACIMA dos tetos do core (o motor recusa estouro)
guards:
  maxFanout: "{teto de frentes paralelas}"
  maxDepth: "{teto de re-delegação}"
  maxTotalRuns: "{teto de runs da missão}"

# Autoridades próprias do squad — SEM colidir com as exclusivas do core
# (git push / PR / release / MCP → @devops, SEMPRE; não redeclare aqui)
authorities:
  - operation: "{operação que o squad governa}"
    owner: "{id do membro dono}"
    exclusive: "{true|false}"

# Mapa de cobertura — o rastro do REUSE > CREATE (por que cada membro existe)
coverage:
  - role: "{papel exigido pela missão}"
    coveredBy: "{agente core referenciado OU membro novo do squad}"
    rationale: "{por que o core não cobre (se membro novo)}"

# Roster do squad — cada id tem um agents/{id}.md correspondente
roster:
  - "{id-do-chief}"
  - "{id-do-membro-1}"
  - "{id-do-membro-2}"
```
