# Agents pour le système JDR Ecryme (FoundryVTT) Ce fichier documente les commandes et workflows pour les agents (automatisations, scripts, outils externes) utilisés dans le développement et la maintenance du système Ecryme pour FoundryVTT. ## Commandes de développement ### Linting et validation ```bash # Vérification du code TypeScript npm run lint # Vérification des types npm run typecheck # Construction du projet npm run build ``` ### Tests ```bash # Exécution des tests unitaires npm test # Exécution des tests avec couverture npm run test:coverage ``` ### Déploiement ```bash # Construction pour la production npm run build:prod # Génération du package pour FoundryVTT npm run package ``` ## Workflows recommandés ### Avant de soumettre une PR 1. Exécuter les tests unitaires 2. Vérifier le linting (`npm run lint`) 3. Vérifier les types (`npm run typecheck`) 4. Construire le projet (`npm run build`) 5. Tester manuellement dans FoundryVTT avec les scénarios de test fournis dans `/test-scenarios/` ### Pour ajouter une nouvelle fonctionnalité 1. Créer une branche `feature/` 2. Ajouter les tests dans `/tests/` 3. Implémenter la fonctionnalité 4. Mettre à jour la documentation dans `/docs/` si nécessaire 5. Soumettre une PR avec une description claire des changements ## Structure du projet ``` / ├── src/ # Code source principal │ ├── module/ # Définition du module FoundryVTT │ ├── systems/ # Systèmes de règles spécifiques à Ecryme │ ├── actors/ # Logique des acteurs (PJs, PNJs, créatures) │ ├── items/ # Logique des objets (armes, sorts, équipements) │ └── utils/ # Utilitaires partagés ├── tests/ # Tests unitaires et d'intégration ├── docs/ # Documentation technique et utilisateur ├── templates/ # Templates Handlebar pour les feuilles de personnage └── test-scenarios/ # Scénarios de test pour FoundryVTT ``` ## Conventions de codage - **TypeScript strict** : Toujours utiliser les types les plus précis possibles - **Noms de fichiers** : - PascalCase pour les classes (`CharacterSheet.ts`) - kebab-case pour les templates (`character-sheet.hbs`) - camelCase pour les utilitaires (`diceRoller.ts`) - **Tests** : - Un fichier de test par fichier source (`characterSheet.test.ts`) - Couverture minimale de 80% requise pour les PR ## Outils spécifiques à FoundryVTT ### Génération des templates ```bash # Recompiler les templates Handlebar après modification npm run build:templates ``` ### Validation des données ```bash # Valider la structure des données contre le schéma npm run validate:schema ``` ### Déploiement pour test local ```bash # Lier le module en développement à FoundryVTT (nécessite le module "Module Developer") npx foundryvtt-link ``` ## Dépannage ### Problèmes courants 1. **Les changements ne s'affichent pas dans Foundry** : - Vérifier que le module est bien lié (`npm run link`) - Redémarrer FoundryVTT - Vider le cache du navigateur (Ctrl+F5) 2. **Erreurs de type dans les templates** : - Exécuter `npm run validate:templates` - Vérifier les annotations JSDoc dans les fichiers `.ts` 3. **Problèmes de performance** : - Utiliser le profiler de Foundry (F12 > Performance) - Vérifier les boucles dans les templates Handlebar ## Ressources utiles - [Documentation FoundryVTT](https://foundryvtt.com/article/api/) - [Guide des systèmes personnalisés](https://foundryvtt.com/article/system-development/) - [Référence Handlebar](https://handlebarsjs.com/guide/) - [TypeScript pour Foundry](https://github.com/League-of-Foundry-Developers/foundry-vtt-types) ## Contribution Les contributions sont les bienvenues ! Veuillez : 1. Ouvrir une issue pour discuter des changements majeurs 2. Suivre les conventions de codage ci-dessus 3. Inclure des tests pour les nouvelles fonctionnalités 4. Mettre à jour la documentation si nécessaire