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!