Regras de Conformidade (Guardrails)

As regras de conformidade são verificações determinísticas que validam alterações de código contra suas decisões arquiteturais. Elas impõem convenções de nomenclatura, restrições tecnológicas, fronteiras de camadas e padrões de segurança — sem nenhuma IA envolvida.
Acesse o Hub de Agentes na barra lateral para gerenciar suas regras de conformidade.
Por que Regras de Conformidade?
Quando agentes de código com IA (Claude Code, Cursor, Copilot) geram código, eles não conhecem suas decisões arquiteturais. As regras de conformidade codificam essas decisões como restrições executáveis:
- O agente não pode usar MongoDB se o seu radar de tecnologias indica PostgreSQL
- O agente não pode colocar chamadas ao banco de dados em handlers HTTP se a sua arquitetura exige uma camada de serviço
- O agente não pode adicionar
fmt.Printlnse a sua equipe usa logging estruturado
As regras são avaliadas de forma determinística — sem LLM, sem saída probabilística. O mesmo código sempre produz o mesmo resultado.
Tipos de Regras
O Archyl oferece suporte a sete tipos de regras de conformidade:
Padrão Obrigatório
Verifique padrões que devem ou não devem existir no seu código.
| Caso de uso | Exemplo |
|---|---|
| Proibir logging de debug | Proibir fmt.Println, console.log, print() |
| Proibir riscos de segurança | Proibir eval(), innerHTML, senhas hardcoded |
| Exigir tratamento de erros | Exigir set -euo pipefail em scripts shell |
| Impor padrões | Proibir SELECT * em consultas SQL |
Configuração:
- File glob — Verifica apenas os arquivos que correspondem a um padrão (ex.:
*.go,*.{ts,tsx}) - Forbidden patterns — Padrões regex que geram uma violação quando encontrados
- Required patterns — Padrões regex que geram uma violação quando ausentes
Os globs de arquivos suportam expansão de chaves: *.{js,jsx,ts,tsx} corresponde a todos os arquivos JavaScript e TypeScript.
Convenção de Nomenclatura
Valide os padrões de nomenclatura de arquivos, tipos e funções.
| Escopo | Exemplo |
|---|---|
| Arquivo | Arquivos Go devem seguir snake_case.go |
| Tipo | Tipos exportados devem seguir PascalCase |
| Função | Funções devem começar com um verbo (Get, Create, Delete) |
Configuração:
- Patterns — Lista de escopo (arquivo/tipo/função) + regex + descrição
Restrição Tecnológica
Restrinja quais linguagens e bibliotecas são permitidas em um container.
| Caso de uso | Exemplo |
|---|---|
| Bloqueio de linguagem | O backend deve ser somente em Go |
| Proibição de dependência | Sem lodash (use JS nativo) |
| Imposição de migração | Sem moment.js (use date-fns) |
Configuração:
- Allowed languages — Lista separada por vírgulas (ex.:
go, typescript) - Forbidden imports — Um import por linha
Fronteira de Camadas
Imponha as regras de import entre camadas da Clean Architecture, da Arquitetura Hexagonal ou do DDD.
| Camada | Pode importar de |
|---|---|
| Domain | Nada (lógica de negócio pura) |
| Service | Somente Domain |
| Adapter | Domain, Service |
| Infrastructure | Somente Domain |
Configuração:
- Layers — Defina cada camada com um nome, um padrão de caminho (glob) e as origens de import permitidas
- Clique nos nomes das camadas para alternar as permissões de import
Conformidade de Contratos
Valide se os arquivos de handlers de endpoints contêm a documentação adequada do contrato de API.
Configuração:
- Contract type — HTTP (OpenAPI), gRPC, GraphQL ou AsyncAPI
- Endpoint file patterns — Globs para os arquivos que contêm definições de endpoints
- Strict mode — Quando ativado, qualquer arquivo correspondente sem documentação de contrato gera uma violação
Regra de Dependência
Imponha caminhos de import proibidos entre fronteiras arquiteturais.
Configuração:
- Scope — Nível de container ou de componente
- Forbidden pairs — Padrões de caminho de origem e de destino que nunca devem depender um do outro (ex.:
**/service/** -> **/handler/**)
Conformidade de Canais de Eventos
Valide se os padrões de produtores/consumidores de eventos seguem as convenções de nomenclatura.
Configuração:
- Producer patterns — Padrões regex que identificam código de produção de eventos (ex.:
kafka\.Send) - Consumer patterns — Padrões regex que identificam código de consumo de eventos
- Topic regex — Padrão ao qual os nomes de tópicos válidos devem corresponder (ex.:
^[a-z]+\.[a-z]+\.[a-z]+$)
Pacotes de Regras
Pacotes são coleções curadas de regras que você pode instalar com um clique. Em vez de adicionar regras uma a uma, instale um pacote e tenha um conjunto completo de regras para a sua stack.
Clique em Packs na barra de ferramentas para explorar os pacotes disponíveis.
Pacotes de Arquitetura
| Pacote | Regras | O que impõe |
|---|---|---|
| Clean Architecture | 5 | Fronteiras das camadas domain/service/adapter/infra, isolamento de módulos |
| Hexagonal Architecture | 4 | Padrão ports & adapters, isolamento do núcleo |
| Domain-Driven Design | 3 | Camadas DDD, separação CQRS entre comandos e consultas |
Pacotes de Linguagem
| Pacote | Regras | O que cobre |
|---|---|---|
| Go Backend | 26 | Wrapping de erros, segurança de goroutines, propagação de contexto, nomenclatura, sem panic, sem init() |
| React Frontend | 23 | Rigor no TypeScript, padrões de componentes, busca de dados, sem manipulação do DOM |
| Next.js Full-Stack | 20 | Regras React + segurança no SSR, guards de window, hooks de localStorage |
| Python Backend | 16 | Tratamento de exceções, padrões async, type hints, sem estado global |
| Java Backend | 11 | Padrões de DI do Spring, tratamento de exceções, sem System.exit |
| Rust Backend | 8 | Sem unwrap/unsafe, tipos de erro adequados, sem todo!() |
| Kotlin / Android | 5 | Null safety, imutabilidade, sem println |
| Vue Frontend | 10 | Sem v-html, rigor no TypeScript, sem innerHTML |
| .NET / C# Backend | 5 | Padrões async, tratamento de exceções, ILogger |
| Swift / iOS | 3 | Segurança de optionals, sem force unwrap |
Pacotes de Domínio
| Pacote | Regras | O que cobre |
|---|---|---|
| Security Essentials | 17 | Segredos hardcoded, injeção, criptografia quebrada, TLS, CORS |
| DevOps & Infrastructure | 24 | Docker, Kubernetes, Terraform, GitHub Actions, scripts shell |
| API Best Practices | 9 | Códigos de status, segurança no SQL, documentação de contratos, sem URLs hardcoded |
| Testing & Reliability | 5 | Sem testes ignorados, sem .only(), sem sleep, sem TODO |
| Event-Driven Architecture | 3 | Nomenclatura de tópicos Kafka/RabbitMQ, sem tópicos hardcoded |
Catálogo de Regras
O Archyl vem com um catálogo de 169 regras prontas abrangendo 23 tecnologias. Explore o catálogo clicando em Explorar catálogo no Hub de Agentes.
Tecnologias Cobertas
Go, TypeScript, JavaScript, Python, Java, Kotlin, Rust, C#, C/C++, Ruby, PHP, Swift, React, Vue, Angular, Next.js, Docker, Kubernetes, Terraform, SQL, Shell, YAML, GitHub Actions
Categorias
| Categoria | Exemplos |
|---|---|
| Architecture & Design | Clean Architecture, Hexagonal, DDD, MVC, CQRS, handler-service-repository |
| Security | Sem segredos hardcoded, sem eval(), sem injeção de SQL, sem TLS desativado, sem wildcard no CORS, sem injeção de comandos |
| Code Quality | Sem logging de debug, wrapping de erros, sem catch vazio, sem bare except, sem tipo any, sem unwrap() |
| Infrastructure & DevOps | Fixar versões do Docker, limites de recursos no K8s, sem containers privilegiados, tags no Terraform, builds multi-stage |
| Naming Conventions | snake_case, PascalCase, camelCase conforme a linguagem |
| Testing & Reliability | Sem testes ignorados, sem .only(), sem TODO/FIXME, sem sleep em testes |
| Performance | Sem sleep síncrono, segurança de goroutines, sem await em loops, sem I/O síncrono no Node.js |
| API & Data | Sem SQL bruto, códigos de status HTTP adequados, documentação de contratos, sem URLs hardcoded |
| Event-Driven | Convenções de nomenclatura de tópicos Kafka/RabbitMQ, sem nomes de tópicos hardcoded |
Clique em qualquer regra do catálogo para adicioná-la — o formulário de configuração é preenchido automaticamente.
Níveis de Severidade
Cada regra tem uma severidade que determina o seu impacto:
| Severidade | Significado | Exemplo |
|---|---|---|
| Crítica | Deve ser corrigida antes do merge | Sem segredos hardcoded, sem eval(), violações de fronteiras de camadas |
| Alta | Convém corrigir antes do merge | Sem logging de debug, fixar versões do Docker, sem panic em Go |
| Média | Corrija quando for conveniente | Convenções de nomenclatura, sem tipo any, sem var em JS |
| Baixa | Informativa | Sem TODO/FIXME, sem estilos inline no React |
Uma verificação de conformidade falha se forem encontradas violações críticas ou altas. Violações médias e baixas são reportadas, mas não fazem a verificação falhar.
Painel de Conformidade
A aba Painel no Hub de Agentes oferece uma visão geral em tempo real de todas as verificações de conformidade dos seus projetos.
O que Ele Mostra
- Cartões de estatísticas — Total de verificações, taxa de aprovação (com código de cores), número de aprovadas, número de reprovadas
- Proporção aprovado / reprovado — Barra visual que mostra a proporção num relance
- Banner da última verificação — Status da verificação mais recente, com um link para o relatório completo
- Lista de verificações recentes — Todas as verificações com status, tipo de gatilho, nome do projeto, número de arquivos, número de violações e há quanto tempo ocorreram
Filtragem
Use o menu suspenso de projetos no topo para filtrar as verificações por projeto, ou selecione "Todos os projetos" para ver tudo.
Relatórios de Verificação
Clique em qualquer verificação para abrir o relatório completo:
- Barra de distribuição por severidade — Visualização proporcional das violações críticas/altas/médias/baixas
- Violações agrupadas por arquivo — Seções recolhíveis com severidade, título, descrição e sugestão para cada violação
- Metadados da verificação — Tipo de gatilho, SHA do commit, horário de início, duração
Cada relatório de verificação tem sua própria URL compartilhável (ex.: /agent/dashboard/:checkId).
Excluindo Verificações
Use a seleção múltipla para excluir verificações em lote:
- Marque as caixas de seleção ao lado de verificações individuais, ou use "Selecionar tudo"
- Clique no botão vermelho Delete que aparece
- As verificações e suas violações são removidas permanentemente
Integração com CI/CD
As regras de conformidade podem ser executadas automaticamente em cada pull request. Consulte Integração com GitHub Actions para as instruções de configuração.
Como Funciona
- Um PR é aberto ou atualizado no GitHub
- A GitHub Action do Archyl busca os arquivos alterados
- Os arquivos são enviados para a API do Archyl para avaliação
- Os resultados aparecem como um comentário no PR e uma verificação de status do commit
- O workflow falha se forem encontradas violações críticas ou altas
Comentário no PR
Quando violações são encontradas, o Archyl publica um comentário detalhado no PR:
- Tabela-resumo com a contagem de violações por severidade
- Violações por arquivo, com descrições e sugestões
- O comentário é atualizado (e não duplicado) nos pushes seguintes
Gerenciando Regras
Criando Regras
- Clique em Packs para instalar um conjunto curado de regras para a sua stack, ou
- Clique em Explorar catálogo para navegar pelas 169 regras prontas e adicioná-las, ou
- Clique em Regra personalizada para criar uma nova regra manualmente
Ativando/Desativando Regras
Use o interruptor ao lado de qualquer regra para ativá-la ou desativá-la. Regras desativadas não são avaliadas.
Editando Regras
Clique no ícone de edição (lápis) em qualquer regra para modificar seu nome, descrição, severidade ou configuração.
Excluindo Regras
Clique no ícone de exclusão (lixeira) e confirme. Esta ação não pode ser desfeita.
Filtrando Regras
- Busca — Filtre por nome ou descrição da regra
- Filtro por tipo — Clique nas pílulas de tipo para mostrar apenas as regras de um tipo específico
Integração MCP
As regras de conformidade ficam acessíveis aos agentes de IA pelo servidor MCP:
Ferramentas MCP Disponíveis
| Ferramenta | Descrição |
|---|---|
run_conformance_check |
Executa todas as regras ativadas nos arquivos fornecidos e retorna as violações |
list_conformance_rules |
Lista todas as regras, com filtro opcional por projeto |
create_conformance_rule |
Cria uma nova regra |
update_conformance_rule |
Atualiza a configuração, a severidade ou o estado de ativação de uma regra |
delete_conformance_rule |
Exclui uma regra |
get_agent_context |
Obtém o contexto arquitetural completo, incluindo os guardrails ativos |
Executando Verificações a partir de um Agente
A ferramenta run_conformance_check permite que agentes de IA validem o código antes de fazer commit. O agente envia os arquivos em que está trabalhando:
{
"projectId": "your-project-uuid",
"changedFiles": [
{ "path": "internal/handler/user.go", "status": "modified" }
],
"fileContents": {
"internal/handler/user.go": "package handler\nimport..."
}
}
A resposta inclui:
passed— Se a verificação foi aprovada (sem violações críticas/altas)violations— Lista de violações com severidade, caminho do arquivo, título e sugestãorulesEvaluated— Quais regras foram avaliadasfilesAnalyzed— Quantos arquivos foram analisadoscheckId— O ID da verificação (visível no painel)
O agente pode usar esse retorno para corrigir as violações antes de o código ser commitado.
Contexto do Agente
A ferramenta MCP get_agent_context retorna todas as regras de conformidade ativas como parte do briefing arquitetural. Agentes de IA que chamam essa ferramenta antes de começar a trabalhar saberão quais guardrails respeitar.
REST API
# Rules
GET /api/v1/conformance/rules # List rules
POST /api/v1/conformance/rules # Create rule
POST /api/v1/conformance/rules/bulk # Create multiple rules (used by packs)
GET /api/v1/conformance/rules/:id # Get rule
PUT /api/v1/conformance/rules/:id # Update rule
DELETE /api/v1/conformance/rules/:id # Delete rule
POST /api/v1/conformance/rules/:id/toggle # Enable/disable
# Checks
POST /api/v1/projects/:id/conformance/check # Trigger check with changed files
GET /api/v1/conformance/checks # List all checks (org-wide, ?projectId= filter)
GET /api/v1/conformance/checks/:id/report # Get check report with violations
POST /api/v1/conformance/checks/delete # Bulk delete checks { ids: [...] }
# Stats
GET /api/v1/conformance/stats # Org-wide statistics
GET /api/v1/projects/:id/conformance/stats # Project statistics
Todos os endpoints exigem autenticação (JWT ou chave de API com escopo de escrita para mutações).