Règles de conformité (garde-fous)

Les règles de conformité sont des vérifications déterministes qui valident les modifications de code par rapport à vos décisions d'architecture. Elles imposent des conventions de nommage, des contraintes technologiques, des frontières entre couches et des patterns de sécurité — sans aucune IA.
Rendez-vous dans Hub Agent dans la barre latérale pour gérer vos règles de conformité.
Pourquoi des règles de conformité ?
Lorsque des agents de code IA (Claude Code, Cursor, Copilot) génèrent du code, ils ne connaissent pas vos décisions d'architecture. Les règles de conformité traduisent ces décisions en contraintes exécutables :
- L'agent ne peut pas utiliser MongoDB si votre radar technologique indique PostgreSQL
- L'agent ne peut pas placer d'appels à la base de données dans les handlers HTTP si votre architecture impose une couche service
- L'agent ne peut pas ajouter
fmt.Printlnsi votre équipe utilise la journalisation structurée
Les règles sont évaluées de manière déterministe — pas de LLM, pas de résultat probabiliste. Le même code produit toujours le même résultat.
Types de règles
Archyl prend en charge sept types de règles de conformité :
Pattern requis
Vérifie les patterns qui doivent être présents dans votre code, ou qui ne doivent pas y figurer.
| Cas d'usage | Exemple |
|---|---|
| Interdire les logs de debug | Interdire fmt.Println, console.log, print() |
| Interdire les risques de sécurité | 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 requêtes SQL |
Configuration :
- File glob — Ne vérifier que les fichiers correspondant à un pattern (par exemple
*.go,*.{ts,tsx}) - Forbidden patterns — Expressions régulières qui déclenchent une violation lorsqu'elles sont trouvées
- Required patterns — Expressions régulières qui déclenchent une violation lorsqu'elles sont absentes
Les globs de fichiers prennent en charge l'expansion des accolades : *.{js,jsx,ts,tsx} correspond à tous les fichiers JavaScript et TypeScript.
Convention de nommage
Valide les patterns de nommage des fichiers, des types et des fonctions.
| Portée | Exemple |
|---|---|
| Fichier | Les fichiers Go doivent être en snake_case.go |
| Type | Les types exportés doivent être en PascalCase |
| Fonction | Les fonctions devraient commencer par un verbe (Get, Create, Delete) |
Configuration :
- Patterns — Liste d'entrées associant une portée (fichier/type/fonction), une regex et une description
Contrainte technologique
Restreint les langages et les bibliothèques autorisés dans un conteneur.
| Cas d'usage | Exemple |
|---|---|
| Verrouillage du langage | Le backend doit être uniquement en Go |
| Interdiction de dépendance | Pas de lodash (utilisez le JS natif) |
| Migration imposée | Pas de moment.js (utilisez date-fns) |
Configuration :
- Allowed languages — Liste séparée par des virgules (par exemple
go, typescript) - Forbidden imports — Un import par ligne
Frontière de couche
Impose les règles d'import entre couches de la Clean Architecture, de l'architecture hexagonale ou du DDD.
| Couche | Peut importer depuis |
|---|---|
| Domain | Rien (logique métier pure) |
| Service | Domain uniquement |
| Adapter | Domain, Service |
| Infrastructure | Domain uniquement |
Configuration :
- Layers — Définissez chaque couche avec un nom, un pattern de chemin (glob) et les sources d'import autorisées
- Cliquez sur les noms de couches pour autoriser ou retirer les permissions d'import
Conformité de contrat
Vérifie que les fichiers de handlers d'endpoints contiennent une documentation de contrat d'API appropriée.
Configuration :
- Contract type — HTTP (OpenAPI), gRPC, GraphQL ou AsyncAPI
- Endpoint file patterns — Globs des fichiers contenant des définitions d'endpoints
- Strict mode — Lorsqu'il est activé, tout fichier correspondant dépourvu de documentation de contrat déclenche une violation
Règle de dépendance
Interdit certains chemins d'import entre les frontières d'architecture.
Configuration :
- Scope — Niveau conteneur ou composant
- Forbidden pairs — Patterns de chemins source et cible qui ne doivent jamais dépendre l'un de l'autre (par exemple
**/service/** -> **/handler/**)
Conformité des canaux d'événements
Vérifie que les patterns de production et de consommation d'événements respectent les conventions de nommage.
Configuration :
- Producer patterns — Expressions régulières identifiant le code qui produit des événements (par exemple
kafka\.Send) - Consumer patterns — Expressions régulières identifiant le code qui consomme des événements
- Topic regex — Pattern auquel les noms de topics valides doivent correspondre (par exemple
^[a-z]+\.[a-z]+\.[a-z]+$)
Packs de règles
Les packs sont des collections de règles sélectionnées avec soin, que vous pouvez installer en un clic. Au lieu d'ajouter les règles une par une, installez un pack et obtenez un ensemble de règles complet pour votre stack.
Cliquez sur Packs dans la barre d'outils pour parcourir les packs disponibles.
Packs d'architecture
| Pack | Règles | Ce qu'il impose |
|---|---|---|
| Clean Architecture | 5 | Frontières entre les couches domain/service/adapter/infra, isolation des modules |
| Hexagonal Architecture | 4 | Pattern ports & adaptateurs, isolation du cœur |
| Domain-Driven Design | 3 | Couches DDD, séparation commande/requête CQRS |
Packs de langage
| Pack | Règles | Ce qu'il couvre |
|---|---|---|
| Go Backend | 26 | Wrapping des erreurs, sûreté des goroutines, propagation du contexte, nommage, pas de panic, pas de init() |
| React Frontend | 23 | Rigueur TypeScript, patterns de composants, récupération de données, pas de manipulation du DOM |
| Next.js Full-Stack | 20 | Règles React + sûreté SSR, gardes sur window, hooks localStorage |
| Python Backend | 16 | Gestion des exceptions, patterns async, annotations de type, pas d'état global |
| Java Backend | 11 | Patterns d'injection de dépendances Spring, gestion des exceptions, pas de System.exit |
| Rust Backend | 8 | Pas de unwrap/unsafe, types d'erreur appropriés, pas de todo!() |
| Kotlin / Android | 5 | Null safety, immuabilité, 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 | Sûreté des optionnels, pas de force unwrap |
Packs de domaine
| Pack | Règles | Ce qu'il couvre |
|---|---|---|
| Security Essentials | 17 | Secrets en dur, injections, cryptographie défaillante, TLS, CORS |
| DevOps & Infrastructure | 24 | Docker, Kubernetes, Terraform, GitHub Actions, scripts shell |
| API Best Practices | 9 | Codes de statut, sécurité SQL, documentation des contrats, pas d'URL en dur |
| Testing & Reliability | 5 | Pas de tests ignorés, 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 règles
Archyl est livré avec un catalogue de 169 règles prêtes à l'emploi couvrant 23 technologies. Parcourez le catalogue en cliquant sur Parcourir le catalogue dans le Hub Agent.
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
Catégories
| Catégorie | Exemples |
|---|---|
| Architecture & Design | Clean Architecture, Hexagonal, DDD, MVC, CQRS, handler-service-repository |
| Security | Pas de secrets en dur, pas de eval(), pas d'injection SQL, pas de TLS désactivé, pas de wildcard CORS, pas d'injection de commandes |
| Code Quality | Pas de logs de debug, wrapping des erreurs, pas de catch vide, pas de bare except, pas de type any, pas de unwrap() |
| Infrastructure & DevOps | Versions Docker épinglées, limites de ressources K8s, pas de conteneurs privilégiés, tags Terraform, builds multi-étapes |
| Naming Conventions | snake_case, PascalCase, camelCase selon le langage |
| Testing & Reliability | Pas de tests ignorés, pas de .only(), pas de TODO/FIXME, pas de sleep dans les tests |
| Performance | Pas de sleep synchrone, sûreté des goroutines, pas de await dans les boucles, pas d'I/O synchrones en Node.js |
| API & Data | Pas de SQL brut, codes de statut HTTP appropriés, documentation des contrats, pas d'URL en dur |
| Event-Driven | Conventions de nommage des topics Kafka/RabbitMQ, pas de noms de topics en dur |
Cliquez sur n'importe quelle règle du catalogue pour l'ajouter — le formulaire de configuration se préremplit automatiquement.
Niveaux de sévérité
Chaque règle possède une sévérité qui détermine son impact :
| Sévérité | Signification | Exemple |
|---|---|---|
| Critique | À corriger avant le merge | Pas de secrets en dur, pas de eval(), violations de frontières de couches |
| Élevée | À corriger de préférence avant le merge | Pas de logs de debug, versions Docker épinglées, pas de panic en Go |
| Moyenne | À corriger quand c'est possible | Conventions de nommage, pas de type any, pas de var en JS |
| Faible | Informatif | Pas de TODO/FIXME, pas de styles inline en React |
Une vérification de conformité échoue si des violations critiques ou élevées sont détectées. Les violations moyennes et faibles sont signalées, mais ne font pas échouer la vérification.
Tableau de bord de conformité
L'onglet Tableau de bord du Hub Agent offre une vue d'ensemble en temps réel de toutes les vérifications de conformité de vos projets.
Ce qu'il affiche
- Cartes de statistiques — Nombre total de vérifications, taux de réussite (avec code couleur), nombre de vérifications réussies et échouées
- Ratio réussite / échec — Barre visuelle qui montre la proportion en un coup d'œil
- Bannière de la dernière vérification — Statut de la vérification la plus récente, avec un lien vers le rapport complet
- Liste des vérifications récentes — Toutes les vérifications avec leur statut, le type de déclencheur, le nom du projet, le nombre de fichiers, le nombre de violations et leur ancienneté
Filtrer
Utilisez le menu déroulant des projets en haut de la page pour filtrer les vérifications par projet, ou sélectionnez "Tous les projets" pour tout afficher.
Rapports de vérification
Cliquez sur une vérification pour afficher son rapport complet :
- Barre de répartition par sévérité — Visualisation proportionnelle des violations critiques, élevées, moyennes et faibles
- Violations regroupées par fichier — Sections repliables indiquant la sévérité, le titre, la description et une suggestion pour chaque violation
- Métadonnées de la vérification — Type de déclencheur, SHA du commit, heure de début, durée
Chaque rapport de vérification possède sa propre URL partageable (par exemple /agent/dashboard/:checkId).
Supprimer des vérifications
Utilisez la sélection multiple pour supprimer des vérifications en masse :
- Cochez les cases à côté des vérifications concernées, ou utilisez "Tout sélectionner"
- Cliquez sur le bouton rouge Delete qui apparaît
- Les vérifications et leurs violations sont définitivement supprimées
Intégration CI/CD
Les règles de conformité peuvent s'exécuter automatiquement sur chaque pull request. Consultez Intégration GitHub Actions pour les instructions de configuration.
Fonctionnement
- Une PR est ouverte ou mise à jour sur GitHub
- L'action GitHub d'Archyl récupère les fichiers modifiés
- Les fichiers sont envoyés à l'API d'Archyl pour évaluation
- Les résultats apparaissent sous la forme d'un commentaire sur la PR et d'un statut de commit
- Le workflow échoue si des violations critiques ou élevées sont détectées
Commentaire sur la PR
Lorsque des violations sont détectées, Archyl publie un commentaire détaillé sur la PR :
- Tableau récapitulatif du nombre de violations par sévérité
- Violations par fichier, avec descriptions et suggestions
- Le commentaire est mis à jour (et non dupliqué) lors des pushs suivants
Gérer les règles
Créer des règles
- Cliquez sur Packs pour installer un ensemble de règles sélectionnées pour votre stack, ou
- Cliquez sur Parcourir le catalogue pour explorer les 169 règles prêtes à l'emploi et en ajouter, ou
- Cliquez sur Règle personnalisée pour créer une nouvelle règle manuellement
Activer/désactiver des règles
Basculez l'interrupteur à côté d'une règle pour l'activer ou la désactiver. Les règles désactivées ne sont pas évaluées.
Modifier des règles
Cliquez sur l'icône de modification (crayon) d'une règle pour changer son nom, sa description, sa sévérité ou sa configuration.
Supprimer des règles
Cliquez sur l'icône de suppression (corbeille), puis confirmez. Cette action est irréversible.
Filtrer les règles
- Recherche — Filtrez par nom ou description de règle
- Filtre par type — Cliquez sur les pastilles de type pour n'afficher que les règles d'un type donné
Intégration MCP
Les règles de conformité sont accessibles aux agents IA via le serveur MCP :
Outils MCP disponibles
| Outil | Description |
|---|---|
run_conformance_check |
Exécute toutes les règles activées sur les fichiers fournis et renvoie les violations |
list_conformance_rules |
Liste toutes les règles, avec un filtre optionnel par projet |
create_conformance_rule |
Crée une nouvelle règle |
update_conformance_rule |
Met à jour la configuration, la sévérité ou l'état d'activation d'une règle |
delete_conformance_rule |
Supprime une règle |
get_agent_context |
Récupère le contexte architectural complet, y compris les garde-fous actifs |
Exécuter des vérifications depuis un agent
L'outil run_conformance_check permet aux agents IA de valider le code avant de le committer. L'agent envoie les fichiers sur lesquels il travaille :
{
"projectId": "your-project-uuid",
"changedFiles": [
{ "path": "internal/handler/user.go", "status": "modified" }
],
"fileContents": {
"internal/handler/user.go": "package handler\nimport..."
}
}
La réponse contient :
passed— Indique si la vérification a réussi (aucune violation critique ou élevée)violations— Liste des violations avec la sévérité, le chemin du fichier, le titre et la suggestionrulesEvaluated— Les règles qui ont été évaluéesfilesAnalyzed— Le nombre de fichiers analyséscheckId— L'identifiant de la vérification (visible dans le tableau de bord)
L'agent peut s'appuyer sur ce retour pour corriger les violations avant que le code ne soit commité.
Contexte de l'agent
L'outil MCP get_agent_context renvoie toutes les règles de conformité actives dans le cadre du briefing architectural. Les agents IA qui appellent cet outil avant de commencer à travailler savent ainsi quels garde-fous respecter.
API REST
# 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
Tous les endpoints nécessitent une authentification (JWT, ou clé API avec le scope d'écriture pour les mutations).