create-gef 1.0.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.
@@ -0,0 +1,27 @@
1
+ #!/bin/bash
2
+ # Hook: commit-msg
3
+ # Réf: ENGINEERING_PLAYBOOK.md §1
4
+
5
+ COMMIT_MSG_FILE=$1
6
+ COMMIT_MSG=$(cat $1)
7
+
8
+ # Regex pour Conventional Commits + Issue Number (Kanban)
9
+ PATTERN="^(feat|fix|docs|chore|refactor|style|perf|test|release)(\([a-zA-Z0-9_.-]+\))?: (.*) \(#[0-9]+\)$"
10
+
11
+ if [[ ! $COMMIT_MSG =~ $PATTERN ]]; then
12
+ echo -e "\033[31mErreur: Message de commit non conforme au Playbook §1.\033[0m"
13
+ echo "Le message doit suivre le format Conventional Commits ET inclure le numéro de ticket Kanban à la fin."
14
+ echo "Exemple: 'feat: ajout du bouton login (#42)'"
15
+ exit 1
16
+ fi
17
+
18
+ # Récupération de la description (après le préfixe)
19
+ DESCRIPTION="${BASH_REMATCH[3]}"
20
+
21
+ if [ ${#DESCRIPTION} -lt 10 ]; then
22
+ echo -e "\033[33mAvertissement: La description du commit est très courte (moins de 10 caractères).\033[0m"
23
+ echo "Playbook §1 recommande des messages détaillés pour faciliter la traçabilité."
24
+ # Non bloquant
25
+ fi
26
+
27
+ exit 0
@@ -0,0 +1,46 @@
1
+ #!/bin/bash
2
+ # Hook: pre-commit
3
+ # Réf: ENGINEERING_PLAYBOOK.md §1, §6, §12
4
+
5
+ # 1. Vérification des secrets en clair
6
+ # Recherche naïve de patterns de type api_key="qqchose" ou secret = "qqchose" dans le code mis en stage
7
+ SECRETS=$(git diff --cached -G"(api_key|secret|token|password)[ ]*=[ ]*['\"][a-zA-Z0-9_\-]+['\"]" --name-only)
8
+ if [ -n "$SECRETS" ]; then
9
+ echo -e "\033[31mErreur: Potentiel secret en clair détecté dans les fichiers suivants :\033[0m"
10
+ echo "$SECRETS"
11
+ echo "Bloqué selon le Playbook. Utilisez des variables d'environnement."
12
+ exit 1
13
+ fi
14
+
15
+ # 2. Vérification des fichiers de debug non voulus
16
+ DEBUG_FILES=$(git diff --cached --name-only | grep -E "(^|/)(debug_|test_)" | grep -v "^tests/")
17
+ if [ -n "$DEBUG_FILES" ]; then
18
+ echo -e "\033[31mErreur: Fichier de debug ou de test hors du dossier officiel 'tests/' détecté :\033[0m"
19
+ echo "$DEBUG_FILES"
20
+ echo "Bloqué selon le Playbook §12."
21
+ exit 1
22
+ fi
23
+
24
+ # 3. Lint / Format (Dégradation progressive acceptable)
25
+ # On tente de trouver une commande de lint dans les scripts standards, sinon on avertit.
26
+ if [ -f "package.json" ] && grep -q '"lint"' package.json; then
27
+ echo "Exécution du linter npm..."
28
+ npm run lint || { echo -e "\033[31mErreur Lint\033[0m"; exit 1; }
29
+ elif [ -f "Makefile" ] && grep -q "^lint:" Makefile; then
30
+ echo "Exécution du linter Make..."
31
+ make lint || { echo -e "\033[31mErreur Lint\033[0m"; exit 1; }
32
+ else
33
+ echo -e "\033[33mAvertissement: Aucun linter standard détecté (npm run lint, make lint). Configurez-en un dans PROJECT_CONFIG.md.\033[0m"
34
+ fi
35
+
36
+ # 4. Taille des fichiers modifiés
37
+ for file in $(git diff --cached --name-only); do
38
+ if [ -f "$file" ]; then
39
+ LINES=$(wc -l < "$file")
40
+ if [ "$LINES" -gt 500 ]; then
41
+ echo -e "\033[33mAvertissement: Le fichier $file dépasse 500 lignes ($LINES lignes). Envisagez de le découper (Playbook §4).\033[0m"
42
+ fi
43
+ fi
44
+ done
45
+
46
+ exit 0
package/hooks/pre-push ADDED
@@ -0,0 +1,25 @@
1
+ #!/bin/bash
2
+ # Hook: pre-push
3
+ # Réf: ENGINEERING_PLAYBOOK.md §13
4
+
5
+ CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
6
+
7
+ # 1. Rejet si la branche cible est main (push direct)
8
+ if [ "$CURRENT_BRANCH" = "main" ] || [ "$CURRENT_BRANCH" = "master" ]; then
9
+ echo -e "\033[31mErreur: Push direct sur '$CURRENT_BRANCH' interdit.\033[0m"
10
+ echo "Le Playbook §13 impose de passer par des branches de feature (ex: feat/...) et des Pull Requests."
11
+ exit 1
12
+ fi
13
+
14
+ # 2. Exécution optionnelle des tests locaux
15
+ if [ -f "package.json" ] && grep -q '"test"' package.json; then
16
+ echo "Exécution des tests locaux (npm test)..."
17
+ npm test || { echo -e "\033[31mErreur: Tests en échec. Push annulé.\033[0m"; exit 1; }
18
+ elif [ -f "Makefile" ] && grep -q "^test:" Makefile; then
19
+ echo "Exécution des tests locaux (make test)..."
20
+ make test || { echo -e "\033[31mErreur: Tests en échec. Push annulé.\033[0m"; exit 1; }
21
+ else
22
+ echo -e "\033[34mInfo: Aucun runner de tests standard détecté. Push autorisé.\033[0m"
23
+ fi
24
+
25
+ exit 0
package/package.json ADDED
@@ -0,0 +1,18 @@
1
+ {
2
+ "name": "create-gef",
3
+ "version": "1.0.0",
4
+ "description": "Générateur interactif de projets respectant le framework GEF",
5
+ "type": "module",
6
+ "bin": {
7
+ "create-gef": "./generator/index.js"
8
+ },
9
+ "scripts": {
10
+ "start": "node generator/index.js"
11
+ },
12
+ "dependencies": {
13
+ "chalk": "^5.3.0",
14
+ "inquirer": "^9.2.12"
15
+ },
16
+ "author": "Gildas",
17
+ "license": "ISC"
18
+ }
@@ -0,0 +1,14 @@
1
+ # Prompt Rédaction ADR — GEF
2
+
3
+ > Ce prompt est à utiliser lorsqu'une décision architecturale majeure doit être prise (changement de base de données, framework, cloud, etc.).
4
+
5
+ Tu dois rédiger un document d'Architecture Decision Record (ADR) en respectant le `ENGINEERING_PLAYBOOK.md` (§6) :
6
+
7
+ 1. Crée un nouveau fichier dans `docs/adr/` nommé `ADR-XXX-titre_descriptif.md`.
8
+ 2. Utilise le format strict suivant :
9
+ - **Contexte** : Quel est le problème ou la situation actuelle ?
10
+ - **Options considérées** : Quelles sont les alternatives techniques évaluées ?
11
+ - **Décision** : Quelle option est retenue et pourquoi ?
12
+ - **Conséquences** : Quels sont les impacts positifs, négatifs et les compromis acceptés suite à cette décision ?
13
+
14
+ Ne consigne pas ces décisions architecturales dans le RESEARCH_LOG. Fais-en un commit dédié (`docs: création ADR pour ...`).
@@ -0,0 +1,15 @@
1
+ # Prompt Résolution de Bug — GEF
2
+
3
+ > Ce prompt est à utiliser pour diagnostiquer et corriger un bug.
4
+
5
+ Tu as pour mission de corriger un bug en respectant strictement le `ENGINEERING_PLAYBOOK.md` :
6
+
7
+ 1. **Diagnostic et Fix**
8
+ - Identifie la cause racine, propose une correction et effectue un commit `fix:` approprié (Réf. Playbook §1).
9
+
10
+ 2. **Règle Fondamentale : RESEARCH_LOG (Réf. Playbook §6)**
11
+ - Ne considère **jamais** un bug critique ou une erreur bloquante comme résolue sans ajouter une nouvelle entrée numérotée dans `docs/research/RESEARCH_LOG.md`.
12
+ - Explique brièvement la cause de l'erreur et la façon dont elle a été résolue pour garder une trace scientifique.
13
+
14
+ 3. **Validation**
15
+ - Assure-toi d'ajouter ou de mettre à jour un test pour éviter la régression avant de clore la tâche.
@@ -0,0 +1,14 @@
1
+ # Prompt Revue de Code — GEF
2
+
3
+ > Ce prompt est à utiliser pour simuler ou assister une revue de code avant un merge.
4
+
5
+ Tu agis en tant que relecteur technique strict, garant de l'application du `ENGINEERING_PLAYBOOK.md` (§7).
6
+ Analyse les modifications proposées selon cette checklist obligatoire :
7
+
8
+ 1. **Lint et Build** : Le code passe-t-il les règles de formatage et compile-t-il sans erreur apparente ?
9
+ 2. **Tests** : La logique nouvelle ou modifiée est-elle couverte par des tests adaptés ?
10
+ 3. **Revue** : L'architecture est-elle propre, modulaire et auditable scientifiquement ? N'y a-t-il aucune donnée hardcodée ?
11
+ 4. **Documentation** : Les docstrings sont-elles présentes et à jour ? L'intention du code est-elle claire ?
12
+ 5. **Changelog / README** : Si des changements majeurs sont introduits, le README ou le CHANGELOG ont-ils été mis à jour ?
13
+
14
+ Si l'un des points échoue, demande les corrections associées et suggère le code pour les appliquer.
@@ -0,0 +1,29 @@
1
+ # Prompt Développement de Fonctionnalité — GEF
2
+
3
+ > Ce prompt est à utiliser lors de la demande de développement d'une nouvelle fonctionnalité.
4
+
5
+ Tu dois implémenter la fonctionnalité demandée en respectant le `ENGINEERING_PLAYBOOK.md` :
6
+
7
+ 1. **Branche et workflow (Réf. Playbook §13)**
8
+ - Ne travaille jamais directement sur `main`. Nous devons être sur une branche `feat/<nom-fonctionnalite>`.
9
+
10
+ 2. **Traçabilité (Réf. Playbook §1)**
11
+ - Implémente la fonctionnalité par petits incréments logiques.
12
+ - Effectue des micro-commits fréquents avec des messages au format *Conventional Commits* (ex: `feat: ajout du bouton`, `test: tests unitaires bouton`).
13
+ - Aucune modification massive non-commitée.
14
+
15
+ 3. **Documentation continue (Réf. Playbook §2)**
16
+ - Mets à jour le `README.md` **uniquement** si cette fonctionnalité change l'installation, les API publiques, les prérequis, l'architecture ou les fonctionnalités visibles.
17
+
18
+ 4. **Pilotage Kanban et TDD (Réf. Playbook §14 et §16)**
19
+ - Utilise `gh issue create` pour créer un ticket correspondant à la fonctionnalité.
20
+ - Tous tes commits doivent inclure la référence du ticket (ex: `feat: ... (#12)`).
21
+ - Avant d'écrire le code, écris le test E2E/Playwright décrivant le comportement (TDD).
22
+
23
+ 5. **Auto-Documentation (Réf. Playbook §15)**
24
+ - Si tu introduis une nouveauté architecturale, écris un ADR dans `docs/adr/`.
25
+
26
+ 6. **Validation et Pull Request (Réf. Playbook §14)**
27
+ - Une fois terminé et testé, n'essaie jamais de merger sur `main`.
28
+ - Utilise `gh pr create` pour ouvrir la Pull Request (avec "Closes #XYZ").
29
+ - Demande explicitement à l'utilisateur : "J'ai créé la PR, peux-tu la vérifier et la merger ?"
@@ -0,0 +1,14 @@
1
+ # Prompt Kickoff Projet — GEF
2
+
3
+ > Ce prompt est à utiliser tout au début d'un nouveau projet, avant même d'écrire la première ligne de code métier.
4
+
5
+ Tu aides à démarrer un nouveau projet de manière robuste. Suis les instructions du `ENGINEERING_PLAYBOOK.md` (§10) :
6
+
7
+ Pose-moi explicitement la question suivante :
8
+ **"Ce projet est-il une expérimentation R&D (jetable) ou un projet contractuel/production destiné à être maintenu ?"**
9
+
10
+ En fonction de ma réponse :
11
+ - Si R&D : rappelle-moi que nous pouvons être souples sur la CI/CD et que le code pourra rester dans le dépôt `prototype`.
12
+ - Si Contractuel/Production : rappelle-moi qu'il faut séparer strictement ce code de tout dépôt exploratoire existant, et que les règles de tests, d'auditabilité et de CI/CD sont non-négociables dès le premier jour.
13
+
14
+ Aide-moi ensuite à remplir le `PROJECT_CONFIG.md` initial en posant des questions sur les technologies, le cloud provider et les jalons.
@@ -0,0 +1,24 @@
1
+ # System Prompt — GEF
2
+
3
+ > Ce prompt est à fournir à l'IA en début de toute session de travail sur ce projet.
4
+
5
+ Tu es une IA d'assistance au développement travaillant sur ce projet. Tu dois impérativement respecter le `ENGINEERING_PLAYBOOK.md` du projet.
6
+
7
+ ## 1. Cycle de Vie du Projet & Clause d'Antériorité
8
+ - Avant de commencer toute tâche, identifie dans quelle phase du projet nous nous trouvons (Idée, Cadrage, Architecture, R&D, Développement contractuel, Tests, Release, Maintenance) et adapte ton approche en conséquence.
9
+ - **Clause d'Antériorité :** Applique les règles de ce framework sur le **nouveau** code. Ne refactore jamais proactivement l'ancien code existant pour le rendre conforme aux nouvelles règles, sauf si je te le demande explicitement (règle du *Fix Forward*).
10
+
11
+ ## 2. Traçabilité Git Extrême
12
+ - **Une action = Un commit.** Ne groupe jamais la création d'un fichier et sa modification.
13
+ - Utilise la convention **Conventional Commits** (`feat:`, `fix:`, `docs:`, `chore:`, `refactor:`, `style:`, `perf:`, `test:`, `release:`).
14
+ - Aucun changement sans l'associer immédiatement à un commit précis.
15
+
16
+ ## 3. Documentation
17
+ - Assure-toi de commenter ton code pour expliquer l'*intention* et ajoute des docstrings.
18
+ - **RESEARCH_LOG.md** : Si tu résous un bug ou une erreur bloquante, documente-le immédiatement dans ce fichier avant de poursuivre.
19
+ - Ne mets pas à jour le README pour de simples refactorisations internes.
20
+
21
+ ## 4. Méthodologie Pas-à-Pas
22
+ - Ne code jamais de larges blocs d'un seul coup.
23
+ - Propose, explique, implémente, et valide (via un commit) étape par étape.
24
+ - Si une erreur survient, diagnostique et documente-la avant de continuer.