create-gef 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/.gef/ENGINEERING_PLAYBOOK.md +141 -0
  2. package/.gef/prompts/adr_writing.md +50 -0
  3. package/.gef/prompts/bugfix.md +31 -0
  4. package/.gef/prompts/code_review.md +40 -0
  5. package/.gef/prompts/feature_development.md +37 -0
  6. package/.gef/prompts/new_project_kickoff.md +41 -0
  7. package/.gef/prompts/system_prompt.md +41 -0
  8. package/.github/workflows/release-please.yml +19 -0
  9. package/CHANGELOG.md +63 -0
  10. package/ENGINEERING_PLAYBOOK.md +88 -341
  11. package/PROJECT_CONFIG.template.md +15 -28
  12. package/README.md +87 -20
  13. package/generator/cli/help.js +65 -0
  14. package/generator/cli/questions.js +98 -0
  15. package/generator/features/scaffold-ci.js +441 -0
  16. package/generator/features/scaffold-docker.js +159 -0
  17. package/generator/features/scaffold-gef.js +158 -0
  18. package/generator/features/scaffold-git.js +138 -0
  19. package/generator/features/scaffold-linter.js +91 -0
  20. package/generator/features/scaffold-stack.js +101 -0
  21. package/generator/features/update.js +61 -0
  22. package/generator/index.js +37 -668
  23. package/generator/templates/adr-template.md +22 -0
  24. package/hooks/commit-msg +4 -3
  25. package/hooks/pre-commit +2 -2
  26. package/package.json +1 -1
  27. package/prompts/adr_writing.md +45 -9
  28. package/prompts/bugfix.md +24 -8
  29. package/prompts/code_review.md +34 -8
  30. package/prompts/feature_development.md +10 -1
  31. package/prompts/new_project_kickoff.md +33 -6
  32. package/prompts/system_prompt.md +30 -13
  33. package/website/.oxlintrc.json +8 -0
  34. package/website/README.md +16 -0
  35. package/website/index.html +13 -0
  36. package/website/package-lock.json +1372 -0
  37. package/website/package.json +25 -0
  38. package/website/public/favicon.svg +1 -0
  39. package/website/public/icons.svg +24 -0
  40. package/website/src/App.css +1 -0
  41. package/website/src/App.tsx +167 -0
  42. package/website/src/assets/hero.png +0 -0
  43. package/website/src/assets/react.svg +1 -0
  44. package/website/src/assets/vite.svg +1 -0
  45. package/website/src/components/FeatureCard.tsx +28 -0
  46. package/website/src/components/TerminalDemo.tsx +84 -0
  47. package/website/src/index.css +152 -0
  48. package/website/src/main.tsx +10 -0
  49. package/website/tsconfig.app.json +26 -0
  50. package/website/tsconfig.json +7 -0
  51. package/website/tsconfig.node.json +23 -0
  52. package/website/vite.config.ts +7 -0
  53. package/hooks/pre-push +0 -25
@@ -1,395 +1,142 @@
1
- # Engineering Playbook — Règles de Travail et de Traçabilité pour l'IA
1
+ # Engineering Playbook — Standards "Elite" pour le Gildas Engineering Framework (GEF)
2
2
 
3
3
  > **IMPORTANT :** En tant qu'IA, je m'engage à lire, comprendre et respecter scrupuleusement ces règles tout au long du développement du projet. Ce document est la référence absolue de notre façon de travailler ensemble, sur **tous les projets**, quels que soient le langage, la stack ou le domaine (SaaS, IA, jeu vidéo, mobile, backend...).
4
4
  >
5
- > Les spécificités techniques d'un projet donné (services cloud utilisés, base de données, conventions propres au client) ne figurent **jamais** ici : elles vivent dans un fichier `PROJECT_CONFIG.md` à la racine de chaque dépôt. Ce Playbook reste universel.
5
+ > Les spécificités techniques d'un projet donné (services cloud utilisés, base de données, etc.) ne figurent **jamais** ici : elles vivent dans un fichier `PROJECT_CONFIG.md` à la racine de chaque dépôt. Ce Playbook reste universel.
6
6
 
7
7
  ---
8
8
 
9
- ## 0. Cycle de Vie du Projet
10
-
11
- Avant toute règle technique, l'IA doit savoir situer où en est le projet. Chaque phase a ses propres règles de traçabilité (voir §10 — Séparation R&D / Production).
12
-
13
- ```
14
- 0. Idée
15
-
16
- 1. Étude / cadrage
17
-
18
- 2. Cahier des charges (validé avec le client)
19
-
20
- 3. Architecture
21
-
22
- 4. Prototype (R&D — non contractuel)
23
-
24
- 5. Développement (contractuel)
25
-
26
- 6. Tests
27
-
28
- 7. Release
29
-
30
- 8. Déploiement
31
-
32
- 9. Maintenance
33
- ```
34
-
35
- L'IA doit systématiquement identifier dans quelle phase se situe la demande en cours avant d'agir, et appliquer les règles correspondantes.
9
+ ## 0. Cycle de Vie du Projet & Clause d'Antériorité
36
10
 
37
- ---
38
-
39
- ## 0.5. Mises à jour du Playbook & Clause d'Antériorité
40
-
41
- Ce Playbook évolue dans le temps. Pour éviter que l'IA ne détruise un projet stable en essayant d'appliquer agressivement de nouvelles règles sur du code ancien, la règle suivante s'applique de manière stricte :
42
-
43
- > **Clause d'Antériorité (Fix Forward) :** L'IA doit appliquer les règles du Playbook sur tout le **nouveau** code produit. Elle ne doit **jamais** refactoriser proactivement du code existant uniquement pour le rendre conforme à une nouvelle règle du Playbook, sauf demande explicite de l'utilisateur. Si l'IA modifie un ancien fichier pour une autre raison (bugfix, feature), elle peut le mettre aux normes au passage (règle du Boy Scout) et toujours documenter cela.
44
-
45
- ---
46
-
47
- ## 1. Traçabilité Git Extrême (Hyper-Granularité)
48
-
49
- - **Une action = Un commit.** Chaque modification, ajout de fonction, correction de bug, ou même ajout de documentation doit faire l'objet d'un commit distinct.
50
- - **Jamais de commits groupés.** Ne jamais mélanger la création d'un fichier et sa modification ultérieure dans le même commit.
51
- - **Convention de nommage stricte :** Utiliser les *Conventional Commits* pour chaque message :
52
-
53
- | Préfixe | Usage |
54
- |---------|-------|
55
- | `feat:` | Nouvelle fonctionnalité |
56
- | `fix:` | Correction de bug |
57
- | `docs:` | Documentation uniquement |
58
- | `chore:` | Maintenance (nettoyage, dépendances) |
59
- | `refactor:` | Réécriture de code sans changement de comportement |
60
- | `style:` | Mise en forme UI/CSS, pas de logique |
61
- | `perf:` | Amélioration de performance |
62
- | `test:` | Ajout ou modification de tests |
63
- | `release:` | Création d'un tag de version stable |
11
+ L'IA doit toujours identifier la phase du projet avant d'agir (Idée → R&D → Dev Contractuel → Release → Maintenance).
64
12
 
65
- - **Messages détaillés :** Pour les commits complexes, inclure un "body" expliquant *pourquoi*, pas seulement *quoi*.
66
- - **Aucune falsification d'historique.** Les dates de commit reflètent toujours la réalité. La chronologie officielle d'un projet contractuel ne commence qu'au dépôt "officiel" (voir §10) — jamais en réécrivant les dates d'un dépôt existant.
13
+ > **Clause d'Antériorité (Fix Forward) :** L'IA applique les règles du Playbook sur tout le **nouveau** code produit. Elle ne doit **jamais** refactoriser proactivement du code existant uniquement pour le rendre conforme à une nouvelle règle, sauf demande explicite. Si un fichier est modifié pour un bugfix/feature, l'IA applique la **Boy Scout Rule** : nettoyer le code environnant sans casser les tests.
67
14
 
68
15
  ---
69
16
 
70
- ## 2. Documentation Exhaustive & Continue
71
-
72
- - **Commentaires en ligne :** Chaque bloc de code non-trivial doit expliquer l'*intention*, pas la mécanique.
73
- - **Docstrings obligatoires :** Toute fonction, classe ou module doit inclure une documentation (paramètres, retour, rôle dans le pipeline), dans le format idiomatique du langage utilisé.
74
- - **RESEARCH_LOG.md — Règle Fondamentale :** Tout bug critique et toute erreur bloquante **doit** être documentée dans `RESEARCH_LOG.md`. L'IA doit systématiquement ajouter une nouvelle entrée numérotée après chaque résolution. Ne jamais "corriger en silence".
75
- - **Décisions architecturales → ADR séparés.** Les choix technologiques structurants (changement de base de données, de framework, de service cloud, etc.) ne vont **pas** dans le RESEARCH_LOG mais dans un ADR dédié (voir §6).
76
- - **Mise à jour du README — Règle Précise (pas systématique) :**
77
- Le `README.md` est la vitrine publique du projet. Il est mis à jour **uniquement lorsqu'une modification change** :
78
- - l'installation ;
79
- - les fonctionnalités visibles ;
80
- - l'architecture ;
81
- - les API publiques ;
82
- - les prérequis ;
83
- - les commandes d'utilisation.
84
-
85
- Une modification interne sans impact utilisateur/développeur (ex : renommage de variable interne) ne déclenche pas de mise à jour du README.
86
- **Ne jamais laisser le README en retard de plus d'une session de travail** lorsqu'une mise à jour est due.
87
-
88
- ---
89
-
90
- ## 3. Méthodologie Pas-à-Pas
91
-
92
- - Ne jamais coder de larges blocs en une seule fois sans validation intermédiaire.
93
- - Proposer la modification, l'expliquer, l'implémenter, puis la commiter immédiatement.
94
- - Si une modification entraîne une régression ou un bug, la diagnostiquer et documenter la résolution avant de poursuivre.
95
-
96
- ---
17
+ ## 1. Clean Code : Métriques, Tailles et Refactoring
97
18
 
98
- ## 4. Architecture & Code
19
+ L'écriture du code doit suivre les **Google Engineering Practices** : la clarté prime sur la complexité (KISS).
99
20
 
100
- - Maintenir le code propre, modulaire et auditable scientifiquement.
101
- - **Aucune donnée hardcodée.** Les listes extensibles (configuration métier, valeurs susceptibles d'évoluer) doivent être stockées en base de données ou en configuration, jamais en constante codée en dur.
102
- - Les choix d'infrastructure spécifiques (cloud provider, base de données, services tiers) sont documentés dans `PROJECT_CONFIG.md`, pas ici.
21
+ ### 1.1. Tailles Maximales (Hard Limits)
22
+ - **Fonctions / Méthodes :** `{{MAX_LINES}} lignes max`.
23
+ - **Paramètres :** `{{MAX_PARAMS}} arguments max` (au-delà, utiliser un objet de configuration).
24
+ - **Composants UI :** `150 à 200 lignes max`. (La logique > 50 lignes doit être extraite en *Custom Hook*).
25
+ - **Fichiers :** `300 à 400 lignes max`.
103
26
 
104
- ### Standards de code
27
+ ### 1.2. Complexité et Nesting
28
+ - **Profondeur (Nesting) :** `3 niveaux max`.
29
+ - **Guard Clauses (Early Return) :** Obligatoire. Éviter les `if/else` imbriqués.
30
+ - **Complexité Cyclomatique :** Maximum `{{MAX_COMPLEXITY}}` chemins logiques par fonction.
105
31
 
106
- | Élément | Limite indicative |
107
- |---|---|
108
- | Fonction | Max ~40 lignes |
109
- | Composant UI | Max ~250 lignes |
110
- | Fichier | Max ~500 lignes |
32
+ ### 1.3. Règles de Refactoring (The Rule of Three)
33
+ - **1ère fois :** Écrire pour résoudre.
34
+ - **2ème fois :** Tolérer la duplication.
35
+ - **3ème fois :** Refactorisation obligatoire en abstraction réutilisable.
111
36
 
112
- - Lint obligatoire avant tout commit.
113
- - Formatteur automatique obligatoire (config partagée dans le dépôt).
114
- - Zéro erreur de typage (TypeScript, mypy, etc. selon le langage).
115
- - Zéro warning ignoré sans justification écrite.
116
- - Couverture de tests minimale à définir par projet dans `PROJECT_CONFIG.md`.
37
+ ### 1.4. Conventions de Nommage
38
+ - **Fichiers / Dossiers :** `kebab-case` (ex: `user-profile.tsx`).
39
+ - **Classes / Composants :** `PascalCase` (ex: `UserProfile`).
40
+ - **Variables / Fonctions :** `camelCase` (ex: `getUserData`).
41
+ - **Constantes Globales :** `UPPER_SNAKE_CASE` (ex: `MAX_RETRY_COUNT`).
42
+ - **Rigueur :** Lint obligatoire, typage strict (TypeScript/mypy), zéro warning ignoré sans commentaire explicite.
117
43
 
118
44
  ---
119
45
 
120
- ## 5. Sécurité Maximale (Best Practices)
46
+ ## 2. Architecture & Design (Clean Architecture & SOLID)
121
47
 
122
- - **Gestion des Secrets :** Ne jamais coder en dur de clés API, mots de passe, ou tokens. Toujours utiliser les variables d'environnement via `.env` (voir `.env.example`).
123
- - **Sanitisation :** Valider et nettoyer toutes les entrées utilisateur.
124
- - **Principe du Moindre Privilège :** Toute route ou fonctionnalité sensible doit vérifier explicitement les droits d'accès requis.
125
- - **Tokens/Sessions :** Durée de vie limitée, jamais stockés en clair côté serveur.
126
-
127
- ### Sécurité GitHub
128
-
129
- - Secret scanning activé.
130
- - Dependabot activé.
131
- - CodeQL (ou équivalent d'analyse statique) activé.
132
- - Branch protection sur `main`.
133
- - Commits signés recommandés.
134
- - 2FA obligatoire sur le compte.
48
+ Le code doit séparer le "métier" (règles de l'application) de "l'infrastructure" (frameworks, DB, UI).
49
+ - **Principe de Responsabilité Unique (SRP) :** Une classe/fonction ne fait qu'une seule chose.
50
+ - **Dependency Inversion (DIP) :** Le domaine dépend d'interfaces, pas d'implémentations.
51
+ - **Architecture par Fonctionnalité (Feature-Sliced Design) :** L'organisation des dossiers reflète le métier, pas la technique.
52
+ - *Mauvais :* `/controllers`, `/models`, `/views`
53
+ - *Bon :* `/features/auth/api.ts`, `/features/auth/components/`, `/features/billing/model.ts`
135
54
 
136
55
  ---
137
56
 
138
- ## 6. Historique des Décisions (ADR) et Gestion des Erreurs
139
-
140
- - **ADR (Architecture Decision Records) :** Tout changement d'architecture significatif doit faire l'objet d'un fichier dédié dans `docs/adr/`, au format :
141
-
142
- ```
143
- docs/adr/
144
- ADR-001-titre-de-la-decision.md
145
- ADR-002-...
146
- ```
147
-
148
- Chaque ADR contient : contexte, options envisagées, décision retenue, conséquences.
57
+ ## 3. Gestion Avancée des Erreurs (Resilience)
149
58
 
150
- - **Bugs :** Chaque bug résolu = une nouvelle entrée dans `RESEARCH_LOG.md` avec : le problème rencontré, l'hypothèse, l'expérimentation, et la résolution.
151
- - **Zéro fichier de test en production :** Les scripts de débogage temporaires (`debug_*`, `test_*` hors suite de tests officielle) doivent être supprimés dès que leur usage est terminé. Ils ne doivent jamais être commités sur la branche principale.
59
+ - **Information Hiding :** Ne **JAMAIS** exposer de stack traces ou de détails techniques au client final. Renvoyer une erreur générique ("Erreur interne") avec un ID de log.
60
+ - **Typage des Erreurs :** Créer des classes d'exceptions (ex: `DomainError`, `InfraError`, `ValidationError`).
61
+ - **Result Pattern :** Remplacer les blocs `try/catch` massifs par des retours prévisibles de type `Result<Success, Failure>` pour obliger la gestion explicite de l'échec.
152
62
 
153
63
  ---
154
64
 
155
- ## 7. Revue de Code
156
-
157
- Avant chaque merge vers `main` :
158
-
159
- - ✅ Lint
160
- - ✅ Build
161
- - ✅ Tests
162
- - ✅ Revue (auto-revue minimum si travail solo)
163
- - ✅ Documentation à jour
164
- - ✅ Changelog mis à jour si applicable
165
-
166
- ---
65
+ ## 4. Sécurité : OWASP Secure-by-Design & Hard Limits
167
66
 
168
- ## 8. Gestion des Dépendances
67
+ *"La complexité est l'ennemie de la sécurité."* La stricte limite de Complexité Cyclomatique (`{{MAX_COMPLEXITY}}` max) vue au §1 est la première défense contre les angles morts de sécurité.
169
68
 
170
- Toute dépendance ajoutée doit être justifiée :
69
+ - **Defense in Depth & Sanitisation :** Ne jamais faire confiance aux entrées. Validation stricte (ex: `Zod`, `Joi`). Requêtes paramétrées obligatoires contre SQLi et encodage contre XSS.
70
+ - **Fail-Safe Defaults :** Tout accès est refusé par défaut.
171
71
 
172
- ```
173
- Dépendance ajoutée
174
-
175
- Justification (pourquoi celle-ci)
176
-
177
- Licence vérifiée (compatible avec le projet)
178
-
179
- Maintenance (projet actif ? dernière mise à jour récente ?)
180
-
181
- Alternatives étudiées (au moins une)
182
- ```
72
+ ### 4.1. Hard Limits de Sécurité (Standard OWASP)
73
+ - **Authentification & Sessions :**
74
+ - Durée de vie d'un **Access Token (JWT) : 15 minutes max**.
75
+ - Durée de vie d'un **Refresh Token : 7 jours max** (en `HttpOnly`).
76
+ - **Limites de Charge (Payload Limits) :**
77
+ - Corps de requête API (JSON) : **{{MAX_PAYLOAD}} max** (Protection DoS).
78
+ - Upload d'image : **5 Mo max**.
79
+ - **Anti-Brute Force (Rate Limiting) :**
80
+ - Bloquer un compte/IP pendant 15 minutes après **5 tentatives de connexion échouées**.
81
+ - Limite globale par IP : **100 requêtes API / minute**.
82
+ - **Gestion des secrets :** Toujours via variables d'environnement (`.env`). Jamais hardcodés.
183
83
 
184
84
  ---
185
85
 
186
- ## 9. CI/CD
86
+ ## 5. Stratégie Git : GitHub Flow (Pull Requests)
187
87
 
188
- À chaque push sur une branche de fonctionnalité, puis à chaque merge sur `main` :
189
-
190
- ```
191
- Push
192
-
193
- Build
194
-
195
- Lint
196
-
197
- Tests
198
-
199
- Analyse de sécurité
200
-
201
- Coverage
202
-
203
- Release automatique (si applicable, sur main uniquement)
204
- ```
205
-
206
- Les workflows précis (GitHub Actions, etc.) sont définis par projet, mais la séquence de contrôle ci-dessus est non-négociable.
88
+ La stabilité de la branche principale est primordiale. Nous utilisons le **GitHub Flow** :
89
+ - **Branche `main` verrouillée :** Les pushes directs sur `main` sont **strictement interdits**.
90
+ - **Branches Courtes :** Créez des branches par fonctionnalité (`feat/xxx`, `fix/xxx`). Les branches ne doivent pas durer plus de quelques jours.
91
+ - **Pull Requests (PR) Obligatoires :** Tout code doit passer par une PR. L'intégration Continue (CI) s'exécute sur la PR pour valider les tests et le linting.
92
+ - **Revue de Code (Code Review) :** Une approbation est requise avant le merge. Le respect du Playbook y est vérifié.
93
+ - **Conventional Commits :** `feat:`, `fix:`, `chore:`, `refactor:`, `docs:`, `test:`. Tout commit doit inclure l'ID du ticket Kanban (`#XYZ`).
207
94
 
208
95
  ---
209
96
 
210
- ## 10. Séparation R&D / Production
211
-
212
- Ceci répond à un problème récurrent : commencer à développer avant la validation officielle du cahier des charges avec le client, ce qui peut donner l'impression trompeuse d'un historique Git antérieur à l'accord.
213
-
214
- **Principe : ne jamais falsifier l'historique Git. Séparer les dépôts ou les branches à la place.**
215
-
216
- ### Option recommandée — deux dépôts
217
-
218
- ```
219
- Prototype interne (privé, R&D)
220
-
221
-
222
- Validation du cahier des charges
223
-
224
-
225
- Nouveau dépôt officiel (contractuel)
226
- ```
227
-
228
- Pendant les discussions et l'exploration technique, tout se passe dans le dépôt R&D : autant de commits que nécessaire, aucune contrainte de présentation. Une fois le projet validé, un nouveau dépôt officiel est créé et l'état du code y est importé (copie, squash, ou réinitialisation d'historique). Le premier commit de ce dépôt correspond au lancement officiel du projet. Le client n'a accès qu'à ce dépôt.
229
-
230
- ### Alternative — branches dans le même dépôt
231
-
232
- ```
233
- research / prototype → squash merge → main
234
- ```
235
-
236
- Le client ne regarde que `main`.
237
-
238
- ### Le dépôt R&D n'est pas un fourre-tout
239
-
240
- Même en phase de recherche, le même niveau d'exigence s'applique. Le dépôt R&D est un **journal de recherche**, pas un bac à sable :
241
-
242
- ```
243
- feat(auth): evaluate provider X with custom claims
244
- experiment(realtime): benchmark WebSocket vs managed realtime
245
- perf(database): compare ORM A and ORM B latency
246
- research(ai): evaluate pipeline for use case Y
247
- prototype(ui): implement adaptive navigation
248
- refactor(core): isolate domain layer for future modularization
249
- ```
250
-
251
- **Règle :** aucun commit ne doit nécessiter d'explication orale. En lisant uniquement le titre, la description et les fichiers modifiés, on doit comprendre le problème traité, la solution retenue, et la raison du changement.
252
-
253
- ### Alternative — assumer une phase de prototype dans le planning
254
-
255
- ```
256
- Phase 0 — Prototype interne (non facturée)
257
- Phase 1 — Conception
258
- Phase 2 — Développement
259
- ```
260
-
261
- Cette option peut être communiquée directement au client si la transparence totale est préférable à la séparation des dépôts.
262
-
263
- ---
264
-
265
- ## 11. Gestion des Versions (Releases GitHub)
266
-
267
- - **Principe :** Une Release GitHub est une "photo officielle et immuable" du projet à une étape clé. Elle permet de revenir à un état stable à tout moment, et aux parties prenantes de suivre l'avancement formel du projet.
268
- - **Quand créer une Release ?** À chaque jalon majeur défini dans `PROJECT_CONFIG.md` (ex : MVP, première fonctionnalité majeure, version publique).
269
- - **Comment créer une Release ?**
270
-
271
- ```bash
272
- # 1. Créer un tag Git annoté
273
- git tag -a v0.1.0 -m "Description du jalon"
274
-
275
- # 2. Pousser le tag
276
- git push origin v0.1.0
277
-
278
- # 3. Créer la Release sur GitHub avec des notes de version claires
279
- ```
280
-
281
- - **Notes de version (Changelog) :** Chaque Release doit inclure :
282
- - ✅ Ce qui a été ajouté
283
- - 🐛 Ce qui a été corrigé
284
- - ⚠️ Les changements potentiellement cassants (breaking changes)
285
-
286
- ---
287
-
288
- ## 12. Hygiène du Dépôt
289
-
290
- - **`.gitignore` strict :** Les fichiers d'environnement virtuel, données brutes locales, caches de build, secrets, et dépendances installées ne doivent jamais être commités.
291
- - **Nettoyage régulier :** Les fichiers de test, de debug, ou les scripts temporaires doivent être supprimés dès qu'ils ne sont plus utiles. Un dépôt propre = un projet professionnel.
292
-
293
- ### Structure standard d'un projet
294
-
295
- ```
296
- docs/
297
- adr/
298
- research/
299
- src/
300
- tests/
301
- scripts/
302
- .github/
303
- assets/
304
- infra/
305
- docker/
306
- database/
307
- README.md
308
- CHANGELOG.md
309
- PROJECT_CONFIG.md
310
- LICENSE
311
- ```
312
-
313
- ---
314
-
315
- ## 13. Stratégie de Branches Git (Feature Branch Workflow)
316
-
317
- > **Règle fondamentale :** Chaque fonctionnalité, correction, ou amélioration = une branche dédiée. On ne travaille jamais directement sur `main`.
318
-
319
- ### Convention de nommage des branches
320
-
321
- | Préfixe | Usage | Exemple |
322
- |---------|-------|---------|
323
- | `feat/` | Nouvelle fonctionnalité | `feat/export-csv` |
324
- | `fix/` | Correction de bug | `fix/parsing-error` |
325
- | `refactor/` | Réécriture sans changement fonctionnel | `refactor/service-layer` |
326
- | `docs/` | Documentation uniquement | `docs/api-reference` |
327
- | `chore/` | Maintenance, dépendances | `chore/update-deps` |
328
- | `release/` | Préparation d'une release | `release/v0.2.0` |
329
-
330
- ### Cycle de vie d'une branche
331
-
332
- ```
333
- main
334
- └── feat/ma-fonctionnalite ← créer la branche
335
- │── commit 1 (feat: ...) ← travailler en micro-commits
336
- │── commit 2 (fix: ...)
337
- └── PR / merge → main ← fusionner quand terminé et testé
338
- └── supprimer la branche après merge
339
- ```
340
-
341
- ### Commandes de référence
342
-
343
- ```bash
344
- # Créer et basculer sur une nouvelle branche
345
- git checkout -b feat/nom-de-la-fonctionnalite
346
-
347
- # Pousser la branche sur GitHub
348
- git push origin feat/nom-de-la-fonctionnalite
349
-
350
- # Fusionner dans main (après validation)
351
- git checkout main
352
- git merge --no-ff feat/nom-de-la-fonctionnalite
353
- git push origin main
354
-
355
- # Supprimer la branche locale et distante après merge
356
- git branch -d feat/nom-de-la-fonctionnalite
357
- git push origin --delete feat/nom-de-la-fonctionnalite
358
- ```
97
+ ## 6. Documentation : Diátaxis & Docs-as-Code
359
98
 
360
- ### Règles de protection de `main`
99
+ La documentation technique (dossier `docs/`) doit suivre le framework cognitif **Diátaxis** :
100
+ 1. **Tutoriels** (Prise en main)
101
+ 2. **How-to Guides** (Tâches spécifiques)
102
+ 3. **Référence** (API, DB)
103
+ 4. **Explication** (Architecture, ADR)
361
104
 
362
- - `main` = code stable, **toujours déployable**.
363
- - Jamais de `git push --force` sur `main`.
364
- - Tout merge sur `main` doit passer par un commit de merge explicite (`--no-ff`).
365
- - Si une modification urgente est nécessaire directement : créer une branche `fix/nom-du-bug` et merger rapidement.
105
+ - **Docs-as-Code & Modèle C4 :** L'architecture doit être visuelle et versionnée. Utiliser le format **Modèle C4** (Contexte, Conteneurs, Composants) généré via code (ex: `Mermaid.js`) pour garantir que les schémas ne deviennent jamais obsolètes.
106
+ - **ADR & RESEARCH_LOG :**
107
+ - **ADR :** Tout changement structurel majeur nécessite un rapport d'Architecture (ADR).
108
+ - **RESEARCH_LOG.md :** Tout bug critique bloquant doit être détaillé (Symptôme, Expériences, Résolution) pour la mémoire du projet.
366
109
 
367
110
  ---
368
111
 
369
- ## 14. Pilotage Kanban et Pull Requests Autonomes
112
+ ## 7. Assurance Qualité (QA) : Shift-Left & Test Pyramid
370
113
 
371
- L'IA agit comme un Tech Lead complet. Elle gère son propre tableau de bord.
372
- - **Création d'Issues :** Avant de démarrer un grand chantier, l'IA utilise la CLI GitHub (`gh issue create`) pour créer les tickets correspondant aux sous-tâches.
373
- - **Règle de Commit Strict :** TOUS les commits sans exception doivent inclure la référence du ticket à la fin de la première ligne (ex: `feat: ajout du bouton de login (#42)`). Le hook Git `commit-msg` bloquera les commits non conformes.
374
- - **Création de Pull Request :** Une fois une branche terminée, l'IA utilise `gh pr create` pour ouvrir la Pull Request (avec un résumé des changements et la mention "Closes #XYZ").
375
- - **Validation Humaine Obligatoire :** L'IA s'arrête ici. Elle **demande explicitement à l'utilisateur de valider** et de merger la PR lui-même. L'IA ne merge JAMAIS d'elle-même.
114
+ La qualité s'injecte avant le code, pas après.
115
+ - **Shift-Left Testing :** La réflexion sur les tests et la sécurité commence dès l'écriture des spécifications.
116
+ - **Behavior-Driven Development (BDD) :** Aligner la technique et le métier. Les tests (surtout E2E) doivent suivre la syntaxe `Given / When / Then`.
117
+ - **La Pyramide des Tests :**
118
+ - **Base :** 80% de Tests Unitaires (très rapides, ciblent la logique métier sans DB).
119
+ - **Milieu :** 15% de Tests d'Intégration (valident la communication DB / API).
120
+ - **Sommet :** 5% de Tests End-to-End (E2E type Playwright). Ils sont lents et fragiles, l'IA ne doit pas s'appuyer uniquement sur eux.
376
121
 
377
122
  ---
378
123
 
379
- ## 15. Auto-Documentation et ADRs (Architecture Decision Records)
124
+ ## 8. Pilotage Kanban et Autonomie de l'IA
380
125
 
381
- La mémoire technique du projet est sacrée.
382
- - **Règle ADR :** Chaque fois que l'IA choisit d'intégrer une nouvelle dépendance majeure, de changer un modèle de base de données, ou de structurer un nouveau micro-service, elle **DOIT** rédiger un rapport dans `docs/adr/` (en copiant le `0000-template.md`).
383
- - Ce rapport doit être écrit et commité **avant** que la première ligne de code de cette architecture ne soit écrite.
126
+ L'IA agit comme un Tech Lead autonome.
127
+ - **Découpage en Issues :** Utiliser la CLI GitHub (`gh issue create`) pour découper un grand chantier en sous-tâches.
128
+ - **Création de Pull Requests (PR) :** Si des branches temporaires sont requises pour une revue par l'utilisateur, utiliser `gh pr create`.
129
+ - **Validation Humaine Obligatoire :** L'IA ne merge **JAMAIS** de Pull Request elle-même. Elle prépare tout et demande à l'utilisateur de cliquer sur le bouton de Merge.
384
130
 
385
131
  ---
386
132
 
387
- ## 16. TDD (Test-Driven Development) Piloté par l'IA
133
+ ## 9. Hygiène, CI/CD et Séparation R&D
388
134
 
389
- La qualité logicielle s'assure avant le code de production, pas après.
390
- - **Règle Playwright / Tests E2E :** Avant d'implémenter la logique visuelle ou backend d'une fonctionnalité complexe, l'IA doit rédiger le test de bout-en-bout (E2E) correspondant (généralement via Playwright, s'il est installé).
391
- - Le test doit modéliser le comportement attendu. Le code applicatif est ensuite écrit pour faire passer ce test au vert.
135
+ - **Zéro Scories :** Scripts temporaires, fichiers de debug ou commentaires commentés doivent être supprimés avant tout push.
136
+ - **CI/CD :** À chaque push, les workflows GitHub Actions doivent vérifier : Lint, Build, Tests Unitaires, Analyse de sécurité.
137
+ - **Release Please :** La gestion des versions (Semantic Versioning) est pilotée automatiquement via les Conventional Commits et l'outil Release Please.
138
+ - **Séparation R&D :** Les expérimentations sans cahier des charges validé se font sur un dépôt privé séparé. L'historique Git officiel du produit final doit rester propre et professionnel.
392
139
 
393
140
  ---
394
141
 
395
- *Ce Playbook est un standard personnel, applicable à tous les projets. Les spécificités de chaque projet vivent dans son propre `PROJECT_CONFIG.md`.*
142
+ *Ce document évolutif garantit un niveau d'ingénierie d'excellence (Standard DORA "Elite") sur l'ensemble de nos projets.*
@@ -1,34 +1,21 @@
1
- # PROJECT_CONFIG.md
1
+ # Configuration Projet — GEF
2
2
 
3
- > Ce fichier contient tout ce qui est **spécifique à ce projet**. Il complète le `ENGINEERING_PLAYBOOK.md` universel, qui ne doit lui jamais contenir ces informations.
3
+ Ce fichier sert de point de vérité technique pour le projet, ainsi que de contexte pour l'IA.
4
4
 
5
- ---
6
-
7
- ## Identification
5
+ - **Nom du projet :** {{PROJECT_NAME}}
6
+ - **Date de création :** {{DATE}}
7
+ - **Phase :** {{PHASE}}
8
8
 
9
- - **Projet :** {{PROJECT_NAME}}
10
- - **Porteurs :** Gildas (Pôle Technique & Innovation)
11
- - **Phase du projet :** {{PHASE}}
12
- - **Dernière mise à jour :** {{DATE}}
13
-
14
- ---
15
-
16
- ## Architecture Cloud-Native
17
-
18
- - **Stack Technologique :** {{STACK}}
19
- - **Cloud Provider :** {{CLOUD}}
9
+ ## Choix Techniques (Générés par GEF)
10
+ - **Stack / Langage :** {{STACK}}
20
11
  - **Base de données :** {{DATABASE}}
12
+ - **Cloud Provider :** {{CLOUD}}
21
13
 
22
- ## Rôles et Permissions
23
-
24
- COMPLÉTER avec vos règles d'accès et sécurité>
25
-
26
- ## Jalons de Release
27
-
28
- | Version | Jalon correspondant |
29
- |---------|---------------------|
30
- | `v0.1.0-mvp` | MVP fonctionnel |
31
-
32
- ## Couverture de tests minimale
14
+ ## Workflows & Qualité
15
+ - **Workflow Git :** {{GIT_WORKFLOW}}
16
+ - **Sévérité (Hard Limits) :** {{STRICTNESS}}
17
+ - **Linter / Formatter :** {{LINTER}}
18
+ - **Langue par défaut :** {{LANGUAGE}}
33
19
 
34
- <À COMPLÉTER>
20
+ ---
21
+ *Fichier généré automatiquement. Ne supprimez pas les clés principales, l'IA s'en sert pour adapter ses réponses.*