De ferramenta interna a starter kit público: o nosso harness de agentes no GitHub
Num post anterior desta categoria partilhámos, em termos gerais, como estávamos a aplicar a este mesmo site os mesmos princípios de arquitetura de conteúdos e fluxos editoriais que propomos aos nossos clientes. Desde então demos mais um passo: o conjunto de agentes de IA que coordena esse trabalho — a que chamamos internamente "o harness" — existe agora também como um starter kit público, publicado no GitHub como agent-harness-drupal, com tudo o que era específico deste projeto (nome do cliente, domínio, quadro de acompanhamento, entradas de memória) removido ou reduzido a modelos vazios para preencher.
O que é exatamente? Uma arquitetura multi-agente para o Claude Code: um orquestrador que fala com a pessoa e decide o que fazer, um planeador que transforma um objetivo em tarefas, um documentador que regista o que funcionou e o que não funcionou numa memória de curto e longo prazo, doze agentes de execução especializados (conteúdo, estilo, SEO, desenvolvimento Drupal, frontend, testes, revisão de pull requests, entre outros), dois fluxos que os encadeiam pela ordem certa — um para conteúdo, outro para desenvolvimento e testes — e skills de domínio Drupal reutilizáveis. Deixámo-lo marcado como "alpha" de propósito: o mecanismo está testado num caso de uso real, este mesmo site (trilingue ES/EN/PT, sobre Drupal 11, com fluxo editorial completo), mas ainda não num segundo projeto distinto.
Na prática, duas regras sustentam todo o sistema e não são negociáveis. Nenhum agente publica conteúdo diretamente: qualquer rascunho fica num estado de revisão até que uma pessoa o aprove explicitamente. E nenhum agente faz merge de código para o ramo principal: o fluxo de desenvolvimento termina sempre num ramo com testes verificados, um pull request aberto e revisto, e o merge final nas mãos de uma pessoa. São os mesmos dois gates que já aplicávamos neste site antes sequer de pensar em publicar o harness como algo reutilizável.
O facto de o mecanismo estar "testado" não significa que tenha corrido bem à primeira. Dois exemplos reais, sem maquilhagem. Durante uma sessão focada em delegar mais trabalho a outra ferramenta de IA (Kimi Code CLI) para poupar o nosso próprio contexto, percebemos que estávamos a escrever à mão, em cada pedido, regras operativas — o ramo correto, correr os linters antes de entregar — que já existiam pré-carregadas na configuração de cada agente. O problema não era a ferramenta delegada trabalhar mal; era não estarmos a usar o que já tínhamos montado. Corrigir isso foi a mudança de maior impacto de toda a sessão, e ficou registada uma linha de base com números concretos (quantas invocações, quanta fricção) para poder comparar a sério da próxima vez, em vez de assumir que melhorou.
O segundo exemplo é diferente: ao tentar publicar uma alteração de texto nos três idiomas do site, o rascunho de um idioma perdia-se em silêncio sempre que guardávamos outro idioma com um rascunho próprio pendente. Reproduzimo-lo duas vezes, com dois métodos distintos, antes sequer de suspeitar que não era um erro nosso. Acabou por ser um bug ativo e por resolver do próprio Drupal 11, com outros relatos a descrever o mesmo padrão. Havia um atalho mais rápido disponível — forçá-lo com um script a tocar diretamente na base de dados — mas era exatamente o tipo de intervenção que já nos tinha custado um incidente antes, por isso deixámo-lo documentado e pendente de decisão em vez de o forçar.
O que é que se pode fazer hoje com o starter kit? Usá-lo como ponto de partida para outro projeto Drupal com necessidades parecidas — fluxo editorial, vários idiomas, uma equipa pequena que precisa de se mover depressa sem perder controlo de qualidade — e adaptar as partes que no repositório ficam marcadas como exemplo do projeto original (o modelo de conteúdo com Paragraphs aninhados, os templates Twig, certas convenções de tema) à estrutura real de cada site. Continua a ser um alpha: testado a fundo num caso, ainda não em vários. Se alguém o experimentar no seu próprio projeto, é informação real que nos interessa conhecer.