O desafio
Em um monorepo, pacotes diferentes têm padrões diferentes. Seu frontend em React se preocupa com padrões de componentes, seu backend em NestJS se preocupa com injeção de dependência, e suas libs compartilhadas se preocupam com estabilidade de API. Uma revisão única para todos não funciona.Visão geral da estratégia
O Kodus suporta três níveis de configuração que se mapeiam naturalmente para um monorepo:| Nível | Aplica-se a | Exemplo |
|---|---|---|
| Organização | Todos os repositórios | ”Nunca commitar arquivos .env” |
| Repositório | O monorepo | ”Usar conventional commits” |
| Diretório | Um pacote específico | ”Componentes React devem usar PascalCase” |
Passo 1 — Mapeie seus pacotes
Identifique as áreas distintas no seu monorepo e suas necessidades de revisão:Passo 2 — Crie configs em nível de diretório
Vá para Configurações de Code Review → Repositório → clique em um diretório para configurá-lo. Cada diretório pode ter seus próprios:- Kody Rules (em nível de arquivo e de PR)
- Opções de revisão (quais tipos de análise habilitar)
- Controle de sugestões (filtros de severidade, máximo de sugestões)
- Caminhos ignorados
Passo 3 — Escreva regras direcionadas
Regras de frontend (escopo: apps/web/)
Regras de backend (escopo: apps/api/)
Regras de biblioteca compartilhada (escopo: libs/shared/)
Passo 4 — Use Memories para convenções transversais
Algumas convenções se aplicam em todo lugar. Ensine-as como Memories:Passo 5 — Configure o controle de sugestões por diretório
Pacotes de alto tráfego podem precisar de limites mais rígidos:- apps/web/ — máximo 5 sugestões, filtro de severidade média (frontend evolui rápido)
- libs/shared/ — máximo 15 sugestões, filtro de severidade baixa (estabilidade importa)
- infra/ — máximo 3 sugestões, filtro de severidade alta (menos, mas críticas)
Passo 6 — Ignore caminhos gerados
Adicione ignores específicos do monorepo para evitar ruído:Dicas
- Comece com 2-3 regras por diretório e expanda com base no que seu time realmente sinaliza nas revisões
- Use herança de regras — regras em nível de organização cobrem segurança, nível de repositório cobre convenções, nível de diretório cobre arquitetura
- Se uma regra disparar com muita frequência em um pacote, mas for válida nos demais, exclua esse diretório da regra em vez de enfraquecê-la