Como migrar squads legados para o formato AIOX 2.1.
AIOX 2.1 introduziu um novo formato de squad com:
- Arquitetura task-first
- Validação JSON Schema
- Distribuição em três níveis
- Manifesto padronizado (
squad.yaml)
Squads legados usando config.yaml ou formatos mais antigos precisam de migração.
| Indicador | Legado | Atual (2.1+) |
|---|---|---|
| Arquivo de manifesto | config.yaml |
squad.yaml |
| Campo AIOX type | Ausente | aiox.type: squad |
| Versão mínima | Ausente | aiox.minVersion: "2.1.0" |
| Estrutura | Agent-first | Task-first |
@squad-creator
*validate-squad ./squads/legacy-squadA saída indicará se migração é necessária:
⚠️ Formato legado detectado (config.yaml)
Execute: *migrate-squad ./squads/legacy-squad
@squad-creator
*migrate-squad ./squads/legacy-squad --dry-runMostra o que mudará sem modificar arquivos.
*migrate-squad ./squads/legacy-squad*migrate-squad ./squads/legacy-squad --verboseMostra progresso detalhado passo a passo.
config.yaml → squad.yaml
# Estes campos são adicionados se ausentes
aiox:
minVersion: '2.1.0'
type: squadComponentes são reorganizados na estrutura padrão:
Antes:
├── config.yaml
├── my-agent.yaml
└── my-task.yaml
Depois:
├── squad.yaml
├── agents/
│ └── my-agent.md
└── tasks/
└── my-task.md
Arquivos YAML de agent são convertidos para formato Markdown:
# Antes: my-agent.yaml
name: my-agent
role: Helper# Depois: agents/my-agent.md
# my-agent
ACTIVATION-NOTICE: ...
\`\`\`yaml
agent:
name: my-agent
...
\`\`\`Antes:
my-squad/
├── config.yaml
└── README.md
Comando:
*migrate-squad ./squads/my-squadDepois:
my-squad/
├── squad.yaml # Renomeado + atualizado
├── README.md
└── .backup/ # Backup criado
└── pre-migration-2025-12-26/
Antes:
my-squad/
├── config.yaml
├── agent.yaml
└── task.yaml
Comando:
*migrate-squad ./squads/my-squadDepois:
my-squad/
├── squad.yaml
├── agents/
│ └── agent.md # Convertido para MD
├── tasks/
│ └── task.md # Convertido para MD
└── .backup/
Antes:
my-squad/
├── squad.yaml # Já renomeado
├── agent.yaml # Ainda formato YAML
└── tasks/
└── task.md # Já formato MD
Comando:
*migrate-squad ./squads/my-squadResultado:
- Adiciona campos
aioxausentes ao manifesto - Converte arquivos YAML restantes
- Pula arquivos já migrados
Toda migração cria um backup:
.backup/
└── pre-migration-{timestamp}/
├── config.yaml # Manifesto original
├── agent.yaml # Arquivos originais
└── ...
# Listar backups
ls ./squads/my-squad/.backup/
# Restaurar backup específico
cp -r ./squads/my-squad/.backup/pre-migration-2025-12-26/. ./squads/my-squad/const { SquadMigrator } = require('./.aiox-core/development/scripts/squad');
const migrator = new SquadMigrator();
await migrator.rollback('./squads/my-squad');Error: No manifest found (config.yaml or squad.yaml)
Solução: Crie um manifesto básico:
# squad.yaml
name: my-squad
version: 1.0.0
description: Meu squad
aiox:
minVersion: '2.1.0'
type: squad
components:
agents: []
tasks: []Error: YAML parse error at line 15
Solução:
- Verifique sintaxe YAML com um linter
- Problemas comuns: tabs (use espaços), aspas faltando
- Corrija erros, depois tente a migração novamente
Error: Could not create backup directory
Solução:
- Verifique permissões de escrita:
chmod 755 ./squads/my-squad - Verifique espaço em disco
- Tente com sudo (se apropriado)
Warning: Some files could not be migrated
Solução:
- Execute com
--verbosepara ver quais arquivos falharam - Corrija arquivos problemáticos manualmente
- Re-execute a migração
Após migração, verifique:
-
squad.yamlexiste e é válido -
aiox.typeé"squad" -
aiox.minVersioné"2.1.0"ou superior - Todos os agents estão na pasta
agents/ - Todas as tasks estão na pasta
tasks/ - Arquivos de agent estão em formato Markdown
- Arquivos de task seguem TASK-FORMAT-SPEC-V1
- Validação passa:
*validate-squad --strict
const { SquadMigrator } = require('./.aiox-core/development/scripts/squad');
const migrator = new SquadMigrator({
verbose: true,
dryRun: false,
backupDir: '.backup',
});
// Verificar se migração é necessária
const needsMigration = await migrator.needsMigration('./squads/my-squad');
// Executar migração
const result = await migrator.migrate('./squads/my-squad');
console.log(result);
// {
// success: true,
// changes: ['config.yaml → squad.yaml', ...],
// backupPath: '.backup/pre-migration-...'
// }Versão: 1.0.0 | Atualizado: 2025-12-26 | Story: SQS-8