name: ado-sync description: "Sincronização contínua de estado entre dev-squad runs e Azure DevOps. Atualiza Tasks/Stories ADO conforme tasks completam. Não bloqueia execução." license: Apache-2.0 metadata: owner: platform-governance version: "1.0.0" tier: full load_strategy: trigger portable: true feature_flag: ado.enabled triggers: - "ado-sync" - "sync ADO" - "sincronizar ADO" - "atlas sync" - "/atlas sync" - "task completa ADO" - "dev-squad finished" - "update ADO state"
ADO-Sync — Estado Contínuo
Propósito
Sincroniza o estado de execução do dev-squad com o board ADO em tempo real.
Chamada: após cada task completar E sob demanda via /atlas sync.
Nunca bloqueia execução — falhas são silenciosas (best-effort).
Pré-requisitos
ado.enabled: trueem.hseos/config/hseos.config.yaml- Arquivo
ado-mapping.jsonem.hseos/runs/ado-ops/{timestamp}/ - MCP server
azure-devopsativo
Fluxo de sincronização
1. Carregar estado atual
Ler .hseos/runs/dev-squad/{run-id}/STATUS.md para estado de cada task.
Ler .hseos/runs/ado-ops/{timestamp}/ado-mapping.json para IDs ADO.
2. Para cada task com status success
wit_update_work_item(
id=task_ado_id,
operations=[
{"op": "add", "path": "/fields/System.State", "value": "Closed"},
{"op": "add", "path": "/fields/System.History",
"value": "Completed by squad agent. Commit: {sha}. Wave: {wave_id}."}
]
)
3. Para cada task com status in_progress
wit_update_work_item(
id=task_ado_id,
operations=[
{"op": "add", "path": "/fields/System.State", "value": "Active"},
{"op": "add", "path": "/fields/System.History",
"value": "Em execução — wave {wave_id}, worktree {worktree_id}."}
]
)
4. Para cada task com status failed
Adicionar comment com erro. Estado permanece Active (não fechar — aguarda retry ou investigação).
5. Story auto-close
Se TODOS os Tasks de uma Story estão Closed (verificar via WIQL):
SELECT [System.Id] FROM WorkItems
WHERE [System.Parent] = {story_id}
AND [System.State] <> 'Closed'
Se count = 0: fechar a Story.
6. Batch
Max 10 chamadas MCP por turno. Para runs com >10 tasks, processar em lotes.
7. Salvar resultado
Atualizar .hseos/runs/ado-ops/{timestamp}/sync-result.json:
{
"synced_at": "ISO8601",
"tasks_closed": [1238, 1239],
"tasks_active": [1240],
"tasks_failed": [],
"stories_auto_closed": [1236]
}
Modo skip
Se ado.enabled: false: exit silencioso.
Se ado-mapping.json não existe: logar advisory e exit 0.
Invocação pelo hook ado-task-progress.sh
O hook chama ADO REST API diretamente (não MCP) para adicionar comment em commit. Esta skill faz a sincronização completa de estado via MCP.