Reglas de conformidad (Guardrails)

Conformance rules — deterministic guardrails for AI agents

Las reglas de conformidad son verificaciones deterministas que validan los cambios de código contra tus decisiones de arquitectura. Imponen convenciones de nombres, restricciones tecnológicas, límites entre capas y patrones de seguridad, sin ninguna IA de por medio.

Ve a Hub de Agentes en la barra lateral para gestionar tus reglas de conformidad.

¿Por qué reglas de conformidad?

Cuando los agentes de codificación de IA (Claude Code, Cursor, Copilot) generan código, no conocen tus decisiones de arquitectura. Las reglas de conformidad codifican esas decisiones como restricciones ejecutables:

  • El agente no puede usar MongoDB si tu radar tecnológico dice PostgreSQL
  • El agente no puede poner llamadas a la base de datos en los handlers HTTP si tu arquitectura exige una capa de servicio
  • El agente no puede añadir fmt.Println si tu equipo usa logging estructurado

Las reglas se evalúan de forma determinista: sin LLM, sin resultados probabilísticos. El mismo código produce siempre el mismo resultado.

Tipos de reglas

Archyl admite siete tipos de reglas de conformidad:

Patrón obligatorio

Comprueba patrones que deben existir o que no deben existir en tu código.

Caso de uso Ejemplo
Prohibir el logging de depuración Prohibir fmt.Println, console.log, print()
Prohibir riesgos de seguridad Prohibir eval(), innerHTML, contraseñas escritas en el código
Exigir la gestión de errores Exigir set -euo pipefail en los scripts de shell
Imponer estándares Prohibir SELECT * en las consultas SQL

Configuración:

  • File glob — Comprueba solo los archivos que coinciden con un patrón (p. ej., *.go, *.{ts,tsx})
  • Forbidden patterns — Patrones regex que generan una infracción cuando aparecen
  • Required patterns — Patrones regex que generan una infracción cuando faltan

Los globs de archivos admiten expansión de llaves: *.{js,jsx,ts,tsx} coincide con todos los archivos JavaScript y TypeScript.

Convención de nombres

Valida los patrones de nombres de archivos, tipos y funciones.

Ámbito Ejemplo
Archivo Los archivos Go deben ser snake_case.go
Tipo Los tipos exportados deben ser PascalCase
Función Las funciones deberían empezar por un verbo (Get, Create, Delete)

Configuración:

  • Patterns — Lista de ámbito (archivo/tipo/función) + regex + descripción

Restricción tecnológica

Restringe qué lenguajes y bibliotecas se permiten en un contenedor.

Caso de uso Ejemplo
Bloqueo de lenguaje El backend debe ser solo Go
Prohibición de dependencias Sin lodash (usa JS nativo)
Aplicación de migraciones Sin moment.js (usa date-fns)

Configuración:

  • Allowed languages — Lista separada por comas (p. ej., go, typescript)
  • Forbidden imports — Un import por línea

Límite de capa

Aplica las reglas de imports entre capas de Clean Architecture, arquitectura hexagonal o DDD.

Capa Puede importar de
Domain Nada (lógica de negocio pura)
Service Solo Domain
Adapter Domain, Service
Infrastructure Solo Domain

Configuración:

  • Layers — Define cada capa con un nombre, un patrón de ruta (glob) y los orígenes de import permitidos
  • Haz clic en los nombres de las capas para activar o desactivar los permisos de import

Cumplimiento de contratos

Valida que los archivos de handlers de endpoints contengan la documentación de contrato de API adecuada.

Configuración:

  • Contract type — HTTP (OpenAPI), gRPC, GraphQL o AsyncAPI
  • Endpoint file patterns — Globs para los archivos que contienen definiciones de endpoints
  • Strict mode — Si está activado, cualquier archivo coincidente sin documentación de contrato genera una infracción

Regla de dependencias

Impone rutas de import prohibidas entre límites de arquitectura.

Configuración:

  • Scope — Nivel de contenedor o de componente
  • Forbidden pairs — Patrones de ruta de origen y destino que nunca deben depender entre sí (p. ej., **/service/** -> **/handler/**)

Cumplimiento de canales de eventos

Valida que los patrones de productores y consumidores de eventos sigan las convenciones de nombres.

Configuración:

  • Producer patterns — Patrones regex que identifican el código que produce eventos (p. ej., kafka\.Send)
  • Consumer patterns — Patrones regex que identifican el código que consume eventos
  • Topic regex — Patrón con el que deben coincidir los nombres de topics válidos (p. ej., ^[a-z]+\.[a-z]+\.[a-z]+$)

Packs de reglas

Los packs son colecciones curadas de reglas que puedes instalar con un clic. En lugar de añadir reglas una a una, instala un pack y obtén un conjunto completo de reglas para tu stack.

Haz clic en Packs en la barra de herramientas para explorar los packs disponibles.

Packs de arquitectura

Pack Reglas Qué impone
Clean Architecture 5 Límites entre las capas domain/service/adapter/infra, aislamiento de módulos
Hexagonal Architecture 4 Patrón ports & adapters, aislamiento del núcleo
Domain-Driven Design 3 Capas DDD, separación de comandos y consultas CQRS

Packs de lenguaje

Pack Reglas Qué cubre
Go Backend 26 Wrapping de errores, seguridad de goroutines, propagación de contexto, nombres, sin panic, sin init()
React Frontend 23 Rigor de TypeScript, patrones de componentes, obtención de datos, sin manipulación del DOM
Next.js Full-Stack 20 Reglas de React + seguridad en SSR, guardas de window, hooks de localStorage
Python Backend 16 Gestión de excepciones, patrones async, type hints, sin estado global
Java Backend 11 Patrones de DI de Spring, gestión de excepciones, sin System.exit
Rust Backend 8 Sin unwrap/unsafe, tipos de error adecuados, sin todo!()
Kotlin / Android 5 Null safety, inmutabilidad, sin println
Vue Frontend 10 Sin v-html, rigor de TypeScript, sin innerHTML
.NET / C# Backend 5 Patrones async, gestión de excepciones, ILogger
Swift / iOS 3 Uso seguro de optionals, sin force unwrap

Packs de dominio

Pack Reglas Qué cubre
Security Essentials 17 Secretos en el código, inyección, criptografía rota, TLS, CORS
DevOps & Infrastructure 24 Docker, Kubernetes, Terraform, GitHub Actions, scripts de shell
API Best Practices 9 Códigos de estado, seguridad SQL, documentación de contratos, sin URLs escritas en el código
Testing & Reliability 5 Sin tests omitidos, sin .only(), sin sleep, sin TODO
Event-Driven Architecture 3 Nombres de topics de Kafka/RabbitMQ, sin topics escritos en el código

Catálogo de reglas

Archyl incluye un catálogo de 169 reglas predefinidas para 23 tecnologías. Explora el catálogo haciendo clic en Explorar catálogo en el Hub de Agentes.

Tecnologías cubiertas

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

Categorías

Categoría Ejemplos
Architecture & Design Clean Architecture, hexagonal, DDD, MVC, CQRS, handler-service-repository
Security Sin secretos en el código, sin eval(), sin inyección SQL, sin TLS desactivado, sin comodín en CORS, sin inyección de comandos
Code Quality Sin logging de depuración, wrapping de errores, sin catch vacíos, sin except genéricos, sin tipo any, sin unwrap()
Infrastructure & DevOps Fijar versiones de Docker, límites de recursos en K8s, sin contenedores privilegiados, tags de Terraform, builds multietapa
Naming Conventions snake_case, PascalCase, camelCase según el lenguaje
Testing & Reliability Sin tests omitidos, sin .only(), sin TODO/FIXME, sin sleep en los tests
Performance Sin sleep síncrono, seguridad de goroutines, sin await dentro de bucles, sin E/S síncrona en Node.js
API & Data Sin SQL en crudo, códigos de estado HTTP adecuados, documentación de contratos, sin URLs escritas en el código
Event-Driven Convenciones de nombres de topics de Kafka/RabbitMQ, sin nombres de topics escritos en el código

Haz clic en cualquier regla del catálogo para añadirla: el formulario de configuración se rellena automáticamente.

Niveles de severidad

Cada regla tiene una severidad que determina su impacto:

Severidad Significado Ejemplo
Crítica Hay que corregirla antes del merge Sin secretos en el código, sin eval(), infracciones de límites de capa
Alta Conviene corregirla antes del merge Sin logging de depuración, fijar versiones de Docker, sin panic en Go
Media Corrígela cuando te venga bien Convenciones de nombres, sin tipo any, sin var en JS
Baja Informativa Sin TODO/FIXME, sin estilos inline en React

Una verificación de conformidad falla si encuentra alguna infracción crítica o alta. Las infracciones medias y bajas se reportan, pero no hacen fallar la verificación.

Panel de conformidad

La pestaña Panel del Hub de Agentes ofrece una vista en tiempo real de todas las verificaciones de conformidad de tus proyectos.

Qué muestra

  • Tarjetas de estadísticas — Total de verificaciones, tasa de aprobación (con código de colores), número de aprobadas y de fallidas
  • Ratio aprobado / fallido — Barra visual que muestra la proporción de un vistazo
  • Banner de la última verificación — Estado de la verificación más reciente con un enlace al reporte completo
  • Lista de verificaciones recientes — Todas las verificaciones con su estado, tipo de disparador, nombre del proyecto, número de archivos, número de infracciones y hace cuánto se ejecutaron

Filtrado

Usa el selector de proyecto de la parte superior para filtrar las verificaciones por proyecto, o elige "Todos los proyectos" para verlo todo.

Reportes de verificación

Haz clic en cualquier verificación para abrir su reporte completo:

  • Barra de desglose por severidad — Visualización proporcional de las infracciones críticas, altas, medias y bajas
  • Infracciones agrupadas por archivo — Secciones plegables con la severidad, el título, la descripción y la sugerencia de cada infracción
  • Metadatos de la verificación — Tipo de disparador, SHA del commit, hora de inicio, duración

Cada reporte de verificación tiene su propia URL para compartir (p. ej., /agent/dashboard/:checkId).

Eliminar verificaciones

Usa la selección múltiple para eliminar verificaciones en bloque:

  1. Marca las casillas junto a las verificaciones que quieras, o usa "Seleccionar todo"
  2. Haz clic en el botón rojo Delete que aparece
  3. Las verificaciones y sus infracciones se eliminan de forma permanente

Integración con CI/CD

Las reglas de conformidad pueden ejecutarse automáticamente en cada pull request. Consulta Integración con GitHub Actions para ver cómo configurarlo.

Cómo funciona

  1. Se abre o se actualiza una PR en GitHub
  2. La GitHub Action de Archyl obtiene los archivos modificados
  3. Los archivos se envían a la API de Archyl para su evaluación
  4. Los resultados aparecen como comentario en la PR y como status check del commit
  5. El workflow falla si se encuentran infracciones críticas o altas

Comentario en la PR

Cuando encuentra infracciones, Archyl publica un comentario detallado en la PR:

  • Tabla resumen con el número de infracciones por severidad
  • Infracciones por archivo con descripciones y sugerencias
  • El comentario se actualiza (no se duplica) en los pushes posteriores

Gestión de reglas

Crear reglas

  1. Haz clic en Packs para instalar un conjunto de reglas curado para tu stack, o
  2. Haz clic en Explorar catálogo para explorar y añadir reglas de entre las 169 predefinidas, o
  3. Haz clic en Regla personalizada para crear una regla nueva a mano

Activar/desactivar reglas

Usa el interruptor junto a cualquier regla para activarla o desactivarla. Las reglas desactivadas no se evalúan.

Editar reglas

Haz clic en el icono de edición (lápiz) de cualquier regla para modificar su nombre, descripción, severidad o configuración.

Eliminar reglas

Haz clic en el icono de eliminar (papelera) y confirma. Esta acción no se puede deshacer.

Filtrar reglas

  • Búsqueda — Filtra por nombre o descripción de la regla
  • Filtro por tipo — Haz clic en las etiquetas de tipo para mostrar solo las reglas de un tipo concreto

Integración con MCP

Las reglas de conformidad están disponibles para los agentes de IA a través del servidor MCP:

Herramientas MCP disponibles

Herramienta Descripción
run_conformance_check Ejecuta todas las reglas activas contra los archivos proporcionados y devuelve las infracciones
list_conformance_rules Lista todas las reglas, con filtro opcional por proyecto
create_conformance_rule Crea una regla nueva
update_conformance_rule Actualiza la configuración, la severidad o el estado de activación de una regla
delete_conformance_rule Elimina una regla
get_agent_context Obtiene el contexto de arquitectura completo, incluidos los guardrails activos

Ejecutar verificaciones desde un agente

La herramienta run_conformance_check permite a los agentes de IA validar el código antes de hacer commit. El agente envía los archivos en los que está trabajando:

{
  "projectId": "your-project-uuid",
  "changedFiles": [
    { "path": "internal/handler/user.go", "status": "modified" }
  ],
  "fileContents": {
    "internal/handler/user.go": "package handler\nimport..."
  }
}

La respuesta incluye:

  • passed — Si la verificación se ha superado (sin infracciones críticas ni altas)
  • violations — Lista de infracciones con severidad, ruta del archivo, título y sugerencia
  • rulesEvaluated — Qué reglas se han evaluado
  • filesAnalyzed — Cuántos archivos se han analizado
  • checkId — El ID de la verificación (visible en el panel)

El agente puede usar esta información para corregir las infracciones antes de hacer commit del código.

Contexto del agente

La herramienta MCP get_agent_context devuelve todas las reglas de conformidad activas como parte del briefing de arquitectura. Los agentes de IA que llaman a esta herramienta antes de empezar a trabajar sabrán qué guardrails deben respetar.

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 los endpoints requieren autenticación (JWT o una clave de API con scope de escritura para las mutaciones).