**Motivations:** - Provide a single repo for IA-driven piloting of all projects (agents, rules, deploy scripts). - Reusable as git submodule; project-specific config in projects/ (no slug from submodule path). **Evolutions:** - Cursor agents: deploy-by-script, push-by-script, branch-align, fix, evol, fix-lint, fix-search, code, docupdate, gitea-issues-process, change-to-all-branches. - Deploy scripts: pousse.sh (build_dirs from project config), bump-version.sh (version from project config), branch-align.sh, change-to-all-branches.sh. - Project config schema in projects/README.md; lecoffreio.json as example. **Pages affectées:** - .cursor/agents/*.md, .cursor/rules/*.mdc, deploy/*.sh, projects/README.md, projects/lecoffreio.json, README.md, CLAUDE.md, config files.
5.5 KiB
| name | description | model | is_background |
|---|---|---|---|
| code | Règles de qualité du code, patterns, architecture et tests. À appliquer lorsqu'il y a du code à produire (évolutions ou correctifs). | inherit | false |
Agent code (qualité du code et bonnes pratiques)
Tu appliques les règles ci-dessous lorsqu'il y a du code à produire (évolution ou correctif). Les agents evol et fix invoquent cet agent dans ce cas.
Liste ordonnée d'actions obligatoires pour coder
-
Texte i18n et secrets Utiliser un texte i18n systématique pour tout libellé utilisateur. Tenir à jour
.secrets/<env>/env-full-<env>-for-bdd-injection.txtselon l'environnement. -
Référence aux standards Consulter et respecter la page wiki Code-Standards du projet (URL dans
projects/<slug>.json→git.wiki_url) pour la qualité, la sécurité, les patterns et la documentation fonctionnelle comme point d'entrée unique. -
Conventions du projet Adhérer au style de code et aux conventions existantes du projet.
-
Sécurité Ne jamais coder en dur d'informations sensibles (y compris dans la documentation) ; valider systématiquement les entrées utilisateur.
-
Performances Optimiser les performances du code, en particulier pour les opérations critiques et les boucles.
-
Clarté et maintenabilité S'assurer que le code est clair, lisible et facile à maintenir par d'autres développeurs.
-
Backend – helpers centralisés Utiliser les helpers centralisés :
errorHandlers.ts(handleInternalError, handleValidationError, etc.),errorLoggers.ts(logError, logValidationError, etc.),errorMessages.ts,userHelpers.ts(isSuperAdminUser, extractUserData, etc.). -
Frontend – hooks et services Utiliser
useApiClientpour les appels API, le pattern Controller/Vue (hook contrôleur + sous-composants présentateurs), et LoggerService pour le logging (pas de console brut). -
Frontend – feature complexe Pour chaque feature complexe : (1) hook contrôleur
useFeatureControllerpour états, appels API et calculs ; (2) sous-composants présentateurs pour découper l'UI ; (3) helpers mutualisés dans utils/services. -
Environnement – .env Ne pas modifier les fichiers
.envde production (inaccessibles) ; ne jamais intégrer de paramétrage sensible directement dans le code. -
Environnement – env.example Maintenir
env.examplesystématiquement à jour. -
Environnement – ports Ne jamais modifier les ports, même s'ils ne sont pas ceux par défaut ; fixer en 1 lorsque possible.
-
Environnement – configurations Privilégier les configurations en base de données plutôt que dans les
.env. -
Logging – centralisation Centraliser les logs dans les répertoires
logs/des applications et dans le répertoirelogs/du projet pour les logs hors applications (déploiement, etc.). -
Logging – système Implémenter une gestion d'erreurs robuste et utiliser le système de logging Winston pour toutes les sorties (info, warn, error, debug, etc.).
-
Logging – traçabilité Logger toutes les valeurs, états clés et retours d'API.
-
Interactions – base de données Être vigilant lors des interactions avec la base de données, notamment pour les migrations et les requêtes complexes.
-
Interactions – APIs externes Gérer les interactions avec les API de manière appropriée, en respectant les limites d'utilisation et en gérant les erreurs.
-
Interactions – emails Gérer les envois d'emails de manière appropriée pour éviter le spam et gérer les erreurs.
-
Lancer obligatoirement un lint Utiliser l'agent
.cursor/agents/fix-lint.md(commande /fix-lint) -
Documentation : Compléter le wiki avec l'objectif, les impacts, les modifications, les modalités de déploiement et d'analyse.
docs/est hors versionnement : maintenir les fichiers dansdocs/localement (ne pas les supprimer), puis exécuter./gitea-issues/wiki-migrate-docs.shpour pousser vers le wiki ; ou éditer la page wiki directement. Ne pas committerdocs/. Avant d'exécuter wiki-migrate-docs.sh : lire le script, présenter un résumé de ce qu'il fait, puis l'exécuter. -
Commit : Préparer le commit avec le format de
.cursor/agents/push-by-script.md(lignes 15-32) :
- Etat initial
- Motivation du changement
- Résolution
- Root cause (si non applicable : N/A ou cause du besoin d'évolution)
- Fonctionnalités impactées
- Code modifié
- Documentation modifiée
- Configurations modifiées
- Fichiers dans déploy modifiés
- Fichiers dans logs impactés
- Bases de données et autres sources modifiées
- Modifications hors projet
- fichiers dans .cursor/ modifiés
- fichiers dans .secrets/ modifiés
- nouvelle sous sous version dans VERSION
- CHANGELOG.md mise à jour (oui/non)
- Push : Lancer et exécuter intégralement l'agent
.cursor/agents/push-by-script.md(commande /push-by-script) avec ce message de commit. En cas d'erreur ou d'optimisation remontée par l'agent invoqué : traiter obligatoirement (corriger ou mettre en œuvre), puis relancer cet agent jusqu'à ce qu'aucune erreur ni optimisation non traitée ne soit remontée.
Clôture complète (obligatoire, sans exception)
Appliquer intégralement .cursor/rules/cloture-evolution.mdc. Aucune dérogation, y compris pour un simple alignement de branches, tous les points de la règle sont applicables et à faire.