---
name: architecture-guard
description: Use when about to modify, add or move code in this project. Locates the change in the right layer and refuses any import that breaks the dependency direction (presentation -> domain -> data).
---

# architecture-guard

Lis d'abord `AGENTS.md` à la racine : il dit où vivent les couches dans ce projet.

## Avant d'écrire une ligne

1. **Situe la modification.** Pour chaque fichier que tu vas toucher, écris sa couche :
   présentation, métier ou données. Si tu ne sais pas, lis ses imports.
2. **Vérifie la direction.** Autorisé : présentation → métier, données → métier.
   Interdit : métier → données, métier → présentation, présentation → données.
3. **Cherche l'existant.** Avant de créer une entité, un repository ou un cas d'usage, cherche
   s'il existe déjà. Un doublon est le début d'une incohérence.

## Pendant

- Le métier définit des **interfaces** (ex. `UserRepository`) ; les données les **implémentent**.
- Une erreur technique ne remonte jamais telle quelle : la couche données la traduit en erreur
  métier typée.
- Une entité n'appelle ni la base, ni le réseau, ni l'horloge système.

## Si la règle bloque

Ne contourne pas (pas d'import direct « juste pour cette fois », pas de cast, pas de type
« any »). Arrête-toi et explique : quelle couche a besoin de quoi, et quelle interface il
faudrait ajouter côté métier. C'est l'humain qui tranche.

## Fini quand

- Aucun import interdit ajouté (relis le diff, import par import).
- Le lint / la règle d'imports passe.
- Tu peux dire en une phrase dans quelle couche vit chaque fichier modifié.
