Regles de conformite (Guardrails)
Les regles de conformite sont des verifications deterministes qui valident les modifications de code par rapport a vos decisions architecturales. Elles imposent des conventions de nommage, des contraintes technologiques, des frontieres entre couches et des patterns de securite — sans aucune IA.
Rendez-vous dans Agent Hub dans la barre laterale pour gerer vos regles de conformite.
Pourquoi des regles de conformite ?
Lorsque les agents de codage IA (Claude Code, Cursor, Copilot) generent du code, ils ne connaissent pas vos decisions architecturales. Les regles de conformite encodent ces decisions sous forme de contraintes executables :
- L'agent ne peut pas utiliser MongoDB si votre radar technologique indique PostgreSQL
- L'agent ne peut pas placer des appels a la base de donnees dans les handlers HTTP si votre architecture exige une couche service
- L'agent ne peut pas ajouter
fmt.Printlnsi votre equipe utilise la journalisation structuree
Les regles sont evaluees de maniere deterministe — pas de LLM, pas de sortie probabiliste. Le meme code produit toujours le meme resultat.
Types de regles
Archyl prend en charge sept types de regles de conformite :
Pattern requis
Verifier la presence ou l'absence de patterns dans votre code.
| Cas d'utilisation | Exemple |
|---|---|
| Interdire le logging de debug | Interdire fmt.Println, console.log, print() |
| Interdire les risques de securite | Interdire eval(), innerHTML, les mots de passe en dur |
| Exiger la gestion des erreurs | Exiger set -euo pipefail dans les scripts shell |
| Imposer des standards | Interdire SELECT * dans les requetes SQL |
Configuration :
- File glob — Verifier uniquement les fichiers correspondant a un pattern (ex.
*.go,*.ts) - Patterns interdits — Patterns regex qui declenchent une violation lorsqu'ils sont trouves
- Patterns requis — Patterns regex qui declenchent une violation lorsqu'ils sont absents
Convention de nommage
Valider les patterns de nommage des fichiers, types et fonctions.
| Portee | Exemple |
|---|---|
| Fichier | Les fichiers Go doivent etre en snake_case.go |
| Type | Les types exportes doivent etre en PascalCase |
| Fonction | Les fonctions doivent commencer par un verbe (Get, Create, Delete) |
Configuration :
- Patterns — Liste de portee (fichier/type/fonction) + regex + description
Contrainte technologique
Restreindre les langages et bibliotheques autorises dans un conteneur.
| Cas d'utilisation | Exemple |
|---|---|
| Verrouillage de langage | Le backend doit etre uniquement en Go |
| Interdiction de dependance | Pas de lodash (utiliser le JS natif) |
| Imposition de migration | Pas de moment.js (utiliser date-fns) |
Configuration :
- Langages autorises — Liste separee par des virgules (ex.
go, typescript) - Imports interdits — Un import par ligne
Frontiere de couche
Imposer les regles d'import de Clean Architecture, Architecture Hexagonale ou DDD.
| Couche | Peut importer depuis |
|---|---|
| Domain | Rien (logique metier pure) |
| Service | Domain uniquement |
| Adapter | Domain, Service |
| Infrastructure | Domain uniquement |
Configuration :
- Couches — Definir chaque couche avec un nom, un pattern de chemin (glob) et les sources d'import autorisees
- Cliquer sur les noms de couches pour basculer les permissions d'import
Conformite de contrat
Valider que les endpoints du code correspondent a vos contrats d'API stockes dans Archyl.
Configuration :
- Type de contrat — HTTP (OpenAPI), gRPC, GraphQL ou AsyncAPI
- Patterns de fichiers d'endpoints — Globs pour les fichiers contenant des definitions d'endpoints
- Mode strict — Lorsqu'il est active, tout endpoint absent du contrat declenche une violation
Regle de dependance
S'assurer que les dependances inter-composants correspondent au modele de relations C4.
Configuration :
- Portee — Niveau conteneur ou composant
- Exiger l'existence de la relation — Chaque import dans le code doit avoir une relation C4 correspondante
- Paires interdites — Paires d'elements specifiques qui ne doivent jamais dependre l'une de l'autre
Conformite des canaux d'evenements
Valider que les producteurs/consommateurs d'evenements dans le code correspondent aux EventChannels declares.
Configuration :
- Patterns de producteurs — Patterns regex identifiant le code de production d'evenements
- Patterns de consommateurs — Patterns regex identifiant le code de consommation d'evenements
- Regex de topic — Pattern pour extraire les noms de topics depuis le code
Packs de regles
Les packs sont des collections de regles que vous pouvez installer en un clic. Au lieu d'ajouter des regles une par une, installez un pack et obtenez un ensemble complet de regles pour votre stack.
Cliquez sur Packs dans la barre d'outils pour parcourir les packs disponibles.
Packs d'architecture
| Pack | Regles | Ce qu'il impose |
|---|---|---|
| Clean Architecture | 5 | Frontieres domain/service/adapter/infra, isolation des modules |
| Hexagonal Architecture | 4 | Pattern ports & adapters, isolation du coeur |
| Domain-Driven Design | 3 | Couches DDD, separation CQRS commande/requete |
Packs de langage
| Pack | Regles | Ce qu'il couvre |
|---|---|---|
| Go Backend | 26 | Wrapping d'erreurs, securite goroutine, propagation de contexte, nommage, pas de panic, pas de init() |
| React Frontend | 23 | Rigueur TypeScript, patterns de composants, fetching de donnees, pas de manipulation DOM |
| Next.js Full-Stack | 20 | Regles React + securite SSR, guards window, hooks localStorage |
| Python Backend | 16 | Gestion des exceptions, patterns async, type hints, pas d'etat global |
| Java Backend | 11 | Patterns DI Spring, gestion des exceptions, pas de System.exit |
| Rust Backend | 8 | Pas de unwrap/unsafe, types d'erreur corrects, pas de todo!() |
| Kotlin / Android | 5 | Securite null, immutabilite, pas de println |
| Vue Frontend | 10 | Pas de v-html, rigueur TypeScript, pas de innerHTML |
| .NET / C# Backend | 5 | Patterns async, gestion des exceptions, ILogger |
| Swift / iOS | 3 | Securite des optionnels, pas de force unwrap |
Packs de domaine
| Pack | Regles | Ce qu'il couvre |
|---|---|---|
| Security Essentials | 17 | Secrets en dur, injection, crypto cassee, TLS, CORS |
| DevOps & Infrastructure | 24 | Docker, Kubernetes, Terraform, GitHub Actions, scripts shell |
| API Best Practices | 9 | Codes de statut, securite SQL, docs de contrat, pas d'URLs en dur |
| Testing & Reliability | 5 | Pas de tests ignores, pas de .only(), pas de sleep, pas de TODO |
| Event-Driven Architecture | 3 | Nommage des topics Kafka/RabbitMQ, pas de topics en dur |
Catalogue de regles
Archyl est livre avec un catalogue de 170+ regles preconstruites couvrant 24 technologies. Parcourez le catalogue en cliquant sur Catalog dans l'Agent Hub.
Technologies couvertes
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
Categories
| Categorie | Exemples |
|---|---|
| Architecture & Design | Clean Architecture, Hexagonal, DDD, MVC, handler-service-repository |
| Securite | Pas de secrets en dur, pas de eval(), pas d'injection SQL, pas de TLS desactive, pas de CORS wildcard |
| Qualite du code | Pas de logging de debug, pas de catch vides, pas de bare except, pas de type any, pas de unwrap() |
| Infrastructure & DevOps | Versionner les images Docker, limites de ressources K8s, pas de conteneurs privilegies, tags Terraform |
| Conventions de nommage | snake_case, PascalCase, camelCase selon le langage |
| Tests & Fiabilite | Pas de tests ignores, pas de .only(), pas de TODO/FIXME |
| Performance | Pas de sleep synchrone, pas de requetes N+1, pas de await dans les boucles |
| API & Donnees | Pas de SQL brut, codes de statut HTTP corrects, valider les corps de requete |
Cliquez sur n'importe quelle regle du catalogue pour l'ajouter — le formulaire de configuration se pre-remplit automatiquement.
Niveaux de severite
Chaque regle a une severite qui determine son impact :
| Severite | Signification | Exemple |
|---|---|---|
| Critical | A corriger avant le merge | Pas de secrets en dur, pas de eval(), violations de frontieres de couches |
| High | A corriger de preference avant le merge | Pas de logging de debug, versionner les images Docker, pas de panic en Go |
| Medium | A corriger quand c'est opportun | Conventions de nommage, pas de type any, pas de var en JS |
| Low | Informatif | Pas de TODO/FIXME, pas de styles inline en React |
Gestion des regles
Creer des regles
- Cliquez sur Packs pour installer un ensemble de regles pour votre stack, ou
- Cliquez sur Catalog pour parcourir et ajouter parmi les 170+ regles preconstruites, ou
- Cliquez sur Custom pour en creer une manuellement
Activer/Desactiver des regles
Basculez l'interrupteur a cote de n'importe quelle regle pour l'activer ou la desactiver. Les regles desactivees ne sont pas evaluees.
Modifier des regles
Cliquez sur l'icone de modification (crayon) sur n'importe quelle regle pour modifier son nom, sa description, sa severite ou sa configuration.
Supprimer des regles
Cliquez sur l'icone de suppression (corbeille), puis confirmez. Cette action est irreversible.
Filtrer les regles
- Recherche — Filtrer par nom ou description de la regle
- Filtre par type — Cliquez sur les pastilles de type pour n'afficher que les regles d'un type specifique
Integration CI/CD
Les regles de conformite peuvent etre executees automatiquement a chaque pull request. Consultez Integration GitHub Actions pour les instructions de configuration.
Fonctionnement
- Une PR est ouverte ou mise a jour sur GitHub
- L'Action GitHub Archyl recupere les fichiers modifies
- Les fichiers sont envoyes a l'API Archyl pour evaluation
- Les resultats apparaissent comme commentaire de PR et statut de commit
- Le workflow echoue si des violations critiques ou hautes sont trouvees
Commentaire de PR
Lorsque des violations sont trouvees, Archyl publie un commentaire detaille sur la PR :
- Tableau resumant le nombre de violations par severite
- Violations par fichier avec descriptions et suggestions
- Le commentaire est mis a jour (pas duplique) lors des pushes suivants
Integration MCP
Les regles de conformite sont accessibles aux agents IA via le serveur MCP :
Outils MCP disponibles
| Outil | Description |
|---|---|
list_conformance_rules |
Lister toutes les regles avec filtre optionnel par projet |
create_conformance_rule |
Creer une nouvelle regle |
update_conformance_rule |
Mettre a jour la configuration, la severite ou l'etat d'activation d'une regle |
delete_conformance_rule |
Supprimer une regle |
get_agent_context |
Obtenir le contexte architectural complet incluant les guardrails actifs |
Contexte de l'agent
L'outil MCP get_agent_context retourne toutes les regles de conformite actives dans le cadre du briefing architectural. Les agents IA qui appellent cet outil avant de commencer a travailler sauront quels guardrails respecter.
Le contexte inclut egalement :
- Le modele C4 (systemes, conteneurs, composants, relations)
- Les ADR actifs avec leur justification
- La stack technologique
- Les contrats d'API
- Les canaux d'evenements
REST API
Les regles de conformite sont egalement disponibles via la REST API :
GET /api/v1/conformance/rules # Lister les regles
POST /api/v1/conformance/rules # Creer une regle
POST /api/v1/conformance/rules/bulk # Creer plusieurs regles (utilise par les packs)
GET /api/v1/conformance/rules/:id # Obtenir une regle
PUT /api/v1/conformance/rules/:id # Mettre a jour une regle
DELETE /api/v1/conformance/rules/:id # Supprimer une regle
POST /api/v1/conformance/rules/:id/toggle # Activer/desactiver
POST /api/v1/projects/:id/conformance/check # Declencher une verification avec les fichiers modifies
GET /api/v1/projects/:id/conformance/checks # Lister l'historique des verifications
GET /api/v1/conformance/checks/:id/report # Obtenir le rapport de verification
GET /api/v1/projects/:id/conformance/stats # Obtenir les statistiques du projet
Tous les endpoints necessitent une authentification (JWT ou cle API avec scope d'ecriture pour les mutations).