--- description: Spec-Kit et workflow Spec-Driven Development pour UnionFlow alwaysApply: true --- # UnionFlow – Spec-Kit & Spec-Driven Development ## Contexte projet UnionFlow est un monorepo (Java/Quarkus backend + Flutter mobile). La constitution est dans `CONSTITUTION.md` et `.specify/memory/constitution.md`. La référence anti-hallucination est `.specify/memory/inventaire-code.md`. **En cas de divergence entre documentation et code, le code fait foi** ; mettre à jour l’inventaire en conséquence. ## Respect des acquis - **Toujours respecter** la constitution (`CONSTITUTION.md`), le baseline (`specs/000-unionflow-baseline/spec.md`) et les conventions existantes (DDD, API/Impl, Keycloak, tests, etc.). - Toute nouvelle feature doit **s’intégrer** à l’existant sans le contredire ; en cas de conflit, la constitution et le baseline priment. - **Langue** : tout contenu rédigé pour le projet (specs, plans, tâches, commentaires utilisateur visibles) doit être **en français**. Le code (noms de variables, classes, messages techniques) peut rester en anglais si c’est la convention du module. ## WOU / DRY (We Only Use – Don’t Repeat Yourself) - **Avant de créer** tout nouvel élément (fichier, classe, méthode, widget, service, repository, etc.) : **vérifier qu’il n’existe pas déjà** (recherche par nom, motif ou responsabilité dans le codebase). - Si un équivalent existe : **réutiliser** ou **étendre** l’existant ; ne pas dupliquer la logique. - Si création après vérification : s’assurer de ne pas recoder une responsabilité déjà couverte ailleurs (ex. création de `MembreOrganisation` + quota déjà dans un service → réutiliser ce service plutôt qu’ajouter une méthode similaire). - En résumé : **toujours vérifier l’inexistence avant de procéder à une création**. ## Commandes Spec-Kit disponibles | Commande | Usage | |----------|--------| | `/speckit.constitution` | Créer ou mettre à jour les principes du projet | | `/speckit.specify` | Décrire une nouvelle feature (crée branche + spec) | | `/speckit.plan` | Générer le plan technique d'implémentation | | `/speckit.tasks` | Décomposer en tâches exécutables | | `/speckit.implement` | Exécuter l'implémentation | | `/speckit.clarify` | Clarifier les exigences avant le plan | | `/speckit.checklist` | Listes de vérification (qualité spec / pré-impl) | | `/speckit.analyze` | Analyse de cohérence projet | | `/speckit.taskstoissues` | Exporter les tâches en issues | **Scripts** : Toutes les commandes qui s’appuient sur un script utilisent **uniquement** les scripts PowerShell dans `.specify/scripts/powershell/` (depuis la racine du dépôt `unionflow/`). Aucun script Bash n’est fourni dans ce dépôt. ## Workflow feature 1. `/speckit.specify` + description → crée `specs/00X-nom/spec.md` (et branche). 2. `/speckit.clarify` (optionnel) → précise les exigences. 3. `/speckit.plan` + stack technique → génère `plan.md`, `data-model.md`, etc. 4. `/speckit.tasks` → génère `tasks.md`. 5. `/speckit.implement` → implémente selon `tasks.md`. ## Branches Format : `001-nom-court`, `002-autre-feature`. Les specs vivent dans `specs/001-nom-court/`. ## Références obligatoires - Avant toute implémentation backend ou mobile : lire `CONSTITUTION.md` pour les conventions DDD, API, tests, sécurité. - **Anti-hallucination** : pour toute affirmation sur l’existant (packages, classes, endpoints, routes, migrations), s’appuyer sur `.specify/memory/inventaire-code.md`. Ne jamais inventer de fichier, package ou endpoint non listé ; en cas de doute, vérifier dans le code. - Vue d’ensemble Spec-Kit : `SPEC-KIT.md` à la racine de `unionflow/`.