1
resposta

SDD em projetos multi repo

Olá! Em um cenário onde meu projeto possui mais de um repositório (backend e frontend separados, por exemplo) qual a melhor estratégia para montar a infraestrutura de artefatos? uma infraestrutura para cada repo? tratar como um monorepo com esses projetos dentro de um diretório e desenvolver a infra na raiz desse diretório?

1 resposta

Olá, Multintegrada. Como vai?

Essa é uma excelente dúvida de arquitetura, principalmente quando estamos trabalhando com a abordagem de Spec Driven Development (SDD) e inteligência artificial. Quando o desenvolvimento é assistido por agentes, a estrutura dos seus artefatos (as especificações, os prompts e os esquemas que guiam a IA) impacta diretamente o contexto que os agentes conseguem enxergar.

Para cenários de repositórios separados (multi-repo), existem duas estratégias principais, cada uma com seus prós e contras. A escolha ideal vai depender de como os seus agentes de IA trabalham no dia a dia da empresa.


Estratégia 1: Centralizar as Specs em um Repositório Raiz ou "Monorepo de Design"

Mesmo que o código final (o runtime) seja buildado em repositórios separados, no SDD é altamente recomendado criar um repositório centralizador apenas para a infraestrutura de artefatos, especificações e documentação de design. Se você optar por unificar os diretórios localmente em um formato de monorepo para desenvolvimento, a infraestrutura de artefatos deve ficar na raiz.

  • Como funciona: Você cria uma pasta central (ex: /sdd-specs) na raiz desse ecossistema. Dentro dela, ficam os arquivos OpenAPI (Swagger) do backend, os diagramas de arquitetura, as regras de negócio gerais e os testes baseados em especificação.
  • Por que é boa no SDD: Os agentes de IA precisam de contexto holístico. Se um agente precisa criar uma nova funcionalidade no frontend, ele se beneficia imensamente de ler diretamente a especificação da API que está na mesma árvore de diretórios na raiz do projeto. Isso evita o chamado efeito "telefone sem fio" entre o que o backend expõe e o que o frontend consome.
  • Boa prática: Use ferramentas como Git Submodules ou centralize os artefatos em uma ferramenta de design-first (como Stoplight ou SwaggerHub) que os agentes consigam acessar via API.

Estratégia 2: Uma Infraestrutura de Artefatos Isolada para cada Repositório

Nessa abordagem, a especificação daquela camada do software vive colada ao código dela. O backend tem sua própria pasta de specs e agentes, e o frontend também.

  • Como funciona: O repositório do backend possui o contrato da API (openapi.yaml) e os prompts do agente de backend. O repositório do frontend possui os arquivos de especificação de interface (component-specs.md) e os prompts do agente de frontend.
  • Por que escolher: Se os seus times são completamente independentes e os agentes de IA atuam de forma muito especializada (por exemplo, um agente que só sabe gerar componentes React e outro que só sabe gerar endpoints em Node/Java).
  • O desafio no SDD: O agente de frontend perde a visibilidade automática das mudanças de contrato do backend se eles não estiverem no mesmo contexto de diretório. Para contornar isso, você precisará criar um pipeline de CI/CD que exporte automaticamente a especificação do backend para o repositório do frontend sempre que houver alterações.

Qual a melhor estratégia para o SDD?

Considerando que o SDD foca no desenvolvimento guiado por agentes que tomam decisões baseadas em arquivos de especificação, tratar a arquitetura de especificação de forma unificada (estilo Monorepo para os artefatos na raiz) costuma trazer melhores resultados.

Manter as especificações na raiz de um diretório unificado simplifica drasticamente o mapeamento de contexto (context pinning) dos seus agentes. Em vez de configurar a IA para buscar referências em múltiplos repositórios distintos do GitHub, você pode simplesmente apontar o agente para a raiz do workspace local, garantindo que ele compreenda o contrato do backend e os requisitos do frontend simultaneamente.

Espero que possa ter lhe ajudado!