Ce fichier s'adresse aux agents IA (GitHub Copilot, Claude, Cursor, etc.) qui interviennent sur ce repo. Lire ce fichier en entier avant toute modification.
Un agent qui corrige un bug ne doit pas :
- Essayer de corriger le bug en ajoutant du code inutile
- Ajouter de la gestion d'erreur qui n'a aucun rapport
- Ajouter des commentaires sur du code qu'il n'a pas modifié
- Introduire une nouvelle abstraction pour un cas d'usage unique
Pour tout changement non trivial, produire mentalement (ou dans un commentaire temporaire) :
- Quel est le problème exact ? (pas une paraphrase de la demande, mais la cause racine)
- Quelle est la solution minimale ? (nombre de lignes modifiées le plus petit possible)
- Quels fichiers sont concernés ? (lister avant de toucher quoi que ce soit)
- Y a-t-il un effet de bord ? (changement de type, de contrat d'interface, de comportement)
Si la réponse à (4) est "oui", signaler avant d'implémenter.
- Modifier uniquement les fichiers nécessaires à la tâche
- Conserver le style existant (indentation, quotes, conventions de nommage)
- Ne pas ajouter de
console.log/printde debug dans un commit final - Ne pas ajouter de dépendances sans justification explicite, et ajouter les imports en haut du fichier, sauf cas exceptionnel documenté
- Les types vivent dans
frontend/src/types/api.ts— les modifier en même temps que les modèles Pydantic - Ne pas utiliser
anysauf cas exceptionnel documenté - Préférer les composants fonctionnels, pas de classes React
- Les hooks React Query sont dans
frontend/src/hooks/— ne pas faire defetchdirectement dans les composants
- Les modèles Pydantic sont dans
backend/models.py— source de vérité pour les types - Les requêtes SQL passent par
backend/repository.py, jamais directement dans les routers - Les scanners sont dans
agent/scanners/— chaque fichier = un type d'asset - Pas de logique métier dans
main.pyou les routers — déléguer à repository/scanner
- Ne jamais commiter de secret, clé, token ou mot de passe
- Ne jamais désactiver une validation Pydantic
- Ne pas exposer de stack trace dans les réponses API (utiliser les handlers d'erreur FastAPI)
- Le champ
DATABASE_URLvient toujours deos.getenv, jamais hardcodé
- Après avoir fait un grand changement de code qui a été validé par l'utilisateur, il faut faire les changements à la documentation du projet
- Reproduire le bug avant de le corriger (comprendre, pas deviner)
- Isoler la cause minimale
- Corriger au niveau le plus bas possible (ne pas contourner avec un workaround haut niveau)
- Vérifier que
tsc --noEmitet les tests passent après la correction - Ne pas profiter du bug fix pour faire du refactoring non demandé
- Supprimer ou renommer un fichier existant
- Changer un schéma de base de données (migrations Alembic = changement critique)
- Modifier
docker-compose.ymlou.env.example - Changer une URL d'endpoint API (contrat entre frontend et backend)
- Faire un commit ou un push des modifications, cela doit toujours être fait par l'utilisateur après une review du code généré
- Installer une nouvelle dépendance npm ou pip
Voir PROJET.md pour l'architecture technique complète. Voir docs/roadmap.md pour la liste des tâches et leurs dépendances. Voir SETUP.md pour lancer le projet localement.