@atlashub/smartstack-cli 1.7.0 → 1.9.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlashub/smartstack-cli",
3
- "version": "1.7.0",
3
+ "version": "1.9.0",
4
4
  "description": "SmartStack Claude Code automation toolkit - GitFlow, APEX, EF Core migrations, prompts and more",
5
5
  "author": {
6
6
  "name": "SmartStack",
@@ -8,25 +8,112 @@ tools: Bash, Read, Glob
8
8
 
9
9
  # GitFlow Status Agent
10
10
 
11
- Expert GitFlow. Analyse rapide de l'etat du repository .NET.
11
+ Expert GitFlow. Affiche l'etat COMPLET du repository avec vocabulaire accessible.
12
12
 
13
13
  ## Workflow
14
14
 
15
- 1. **Git**: Branche, commits ahead/behind, fichiers modifies
16
- 2. **Version**: Lire depuis source configuree (csproj, VERSION, git-tag)
17
- 3. **EF Core**: Detecter migrations pending
18
- 4. **Output**: Resume compact
15
+ 1. **Branches**: Lister TOUTES les branches (locales + remote) avec dernier commit
16
+ 2. **Tags**: Lister TOUS les tags avec dates et branches associees
17
+ 3. **Comparaisons**: Analyser les differences entre develop, main et releases
18
+ 4. **EF Core**: Detecter migrations pending
19
+ 5. **Output**: Affichage complet et comprehensible
20
+
21
+ ## Commandes a executer
22
+
23
+ ```bash
24
+ # 1. BRANCHES
25
+ git fetch --all --quiet 2>/dev/null
26
+ git for-each-ref --sort=-committerdate --format='%(refname:short)|%(objectname:short)|%(committerdate:short)|%(subject)' refs/heads refs/remotes/origin
27
+ git worktree list
28
+ git branch -vv
29
+
30
+ # 2. TAGS
31
+ git for-each-ref --sort=-v:refname --format='%(refname:short)|%(creatordate:short)|%(subject)' refs/tags
32
+ git describe --tags --abbrev=0 main 2>/dev/null
33
+ git describe --tags --abbrev=0 develop 2>/dev/null
34
+
35
+ # 3. COMPARAISONS
36
+ git rev-list --count main..develop 2>/dev/null # commits sur develop a publier
37
+ git rev-list --count develop..main 2>/dev/null # commits sur main a recuperer
38
+ git log develop..main --oneline 2>/dev/null # si main > 0
39
+
40
+ # Pour chaque release/*
41
+ git branch -a | grep release/
42
+ # Pour chaque: ahead/behind vs develop et main
43
+
44
+ # 4. STATUS
45
+ git status --porcelain
46
+ ```
47
+
48
+ ## Vocabulaire simplifie (IMPORTANT)
49
+
50
+ Utiliser ces termes au lieu du jargon Git:
51
+ - "ahead" → "a publier" ou "prets pour production"
52
+ - "behind" → "a recuperer" ou "manquants"
53
+ - "diverged" → "desynchronise"
54
+ - "merge" → "fusionner" ou "integrer"
55
+ - "branch" → "branche" (garder)
56
+ - "commit" → "changement" ou "modification"
57
+ - "tag" → "version" ou "etiquette de version"
19
58
 
20
59
  ## Output Format
21
60
 
61
+ Suivre le format defini dans la commande 2-status.md avec:
62
+ - Tableaux clairs avec bordures
63
+ - Legendes explicatives
64
+ - Actions concretes a faire
65
+ - Pas de jargon technique sans explication
66
+
67
+ ## Generation des ACTIONS A FAIRE (CRITIQUE)
68
+
69
+ A la fin de l'affichage, TOUJOURS generer une section "ACTIONS A FAIRE" avec des commandes PRETES A COPIER-COLLER.
70
+
71
+ ### Regles de generation:
72
+
73
+ 1. **Analyser l'etat** et generer UNIQUEMENT les actions pertinentes
74
+ 2. **Inclure le nom exact** de la branche/feature/release dans la commande
75
+ 3. **Format obligatoire** - UNE commande par ligne, facilement copiable:
76
+
77
+ ```
78
+ {emoji} {Description claire avec contexte}
79
+ {commande complete prete a copier}
80
+ ```
81
+
82
+ **IMPORTANT**: La commande doit etre sur SA PROPRE LIGNE, sans prefixe, pour etre copiable en un clic.
83
+
84
+ ### Logique de detection:
85
+
86
+ | Condition detectee | Action a proposer |
87
+ |--------------------|-------------------|
88
+ | `main → develop > 0` | `git merge main` |
89
+ | `develop → main > 0` | `/gitflow:start release v{next_version}` |
90
+ | `feature/* ahead > 0 && behind == 0` | `/gitflow:finish feature/{name}` |
91
+ | `feature/* behind > 5` | `/gitflow:rebase feature/{name}` |
92
+ | `release/* ahead == 0` | `/gitflow:cleanup release/{name}` |
93
+ | `git status dirty` | `/gitflow:commit "{contexte}"` |
94
+ | `local ahead of remote` | `/gitflow:sync {branch}` |
95
+ | `local behind remote` | `/gitflow:sync {branch}` |
96
+ | `migrations pending` | `/efcore:db-deploy` |
97
+
98
+ ### Exemple de sortie:
99
+
22
100
  ```
23
- BRANCH: {branch} ({type})
24
- STATUS: {clean|dirty} | {n} ahead | {n} behind
25
- VERSION: {version} (source: {file})
26
- MIGRATIONS: {n} pending | {n} total
27
- NEXT: {action recommandee}
101
+ ══════════════════════════════════════════════════════════════════════════════
102
+ ACTIONS A FAIRE
103
+ ══════════════════════════════════════════════════════════════════════════════
104
+
105
+ ⚠️ Recuperer 3 commits de main dans develop
106
+ git merge main
107
+
108
+ 🗑️ Nettoyer release/v1.5.1 (terminee, 0 commits uniques)
109
+ /gitflow:cleanup release/v1.5.1
110
+
111
+ 🗑️ Nettoyer release/v1.4.2 (terminee, 0 commits uniques)
112
+ /gitflow:cleanup release/v1.4.2
113
+
114
+ ══════════════════════════════════════════════════════════════════════════════
28
115
  ```
29
116
 
30
117
  ## Priority
31
118
 
32
- Speed > Detail. Etat essentiel seulement.
119
+ Completude + Clarte > Vitesse. L'utilisateur doit comprendre TOUT l'etat du repo ET savoir exactement quoi faire ensuite.
@@ -73,59 +73,125 @@ Based on MCP response:
73
73
 
74
74
  ---
75
75
 
76
- ## STEP 4: Display Results
76
+ ## STEP 4: Resume
77
77
 
78
- **If `hasConflicts: false`:**
78
+ **Si aucun conflit (`hasConflicts: false`):**
79
79
 
80
80
  ```
81
- ================================================================================
82
- EF CORE CONFLICT ANALYSIS (via MCP)
83
- ================================================================================
81
+ ===============================================================================
82
+ ANALYSE DES CONFLITS
83
+ ===============================================================================
84
84
 
85
- BRANCH: {current_branch}
86
- TARGET: develop
85
+ CONTEXTE
86
+ -------------------------------------------------------------------------------
87
+ • Branche: {current_branch}
88
+ • Cible: develop
89
+ • Migrations: {count}
87
90
 
88
- STATUS: OK - No conflicts detected
91
+ RÉSULTAT
92
+ -------------------------------------------------------------------------------
93
+ ✓ Aucun conflit détecté
94
+ ✓ ModelSnapshot synchronisé avec develop
89
95
 
90
- Migrations: {count}
91
- ModelSnapshot: Synchronized
96
+ ===============================================================================
97
+ PROCHAINES ÉTAPES
98
+ ===============================================================================
92
99
 
93
- ================================================================================
94
- ```
100
+ 1. Continuer le développement:
101
+ /gitflow:3-commit
95
102
 
96
- **If `hasConflicts: true`:**
103
+ 2. Quand prêt, créer une Pull Request:
104
+ /gitflow:7-pull-request
97
105
 
106
+ ===============================================================================
98
107
  ```
99
- ================================================================================
100
- EF CORE CONFLICT ANALYSIS (via MCP)
101
- ================================================================================
102
108
 
103
- BRANCH: {current_branch}
104
- TARGET: develop
109
+ **Si conflits détectés (`hasConflicts: true`):**
110
+
111
+ ```
112
+ ===============================================================================
113
+ CONFLITS DÉTECTÉS - MERGE BLOQUÉ
114
+ ===============================================================================
105
115
 
106
- STATUS: CONFLICT DETECTED
116
+ CONTEXTE
117
+ -------------------------------------------------------------------------------
118
+ • Branche: {current_branch}
119
+ • Cible: develop
107
120
 
108
- CONFLICTS FOUND:
121
+ CONFLITS TROUVÉS
122
+ -------------------------------------------------------------------------------
109
123
  {for each conflict in conflicts}
110
- [{conflict.type}] {conflict.description}
111
- Files: {conflict.files.join(', ')}
112
- Resolution: {conflict.resolution}
124
+ [{conflict.type.toUpperCase()}] {conflict.description}
125
+ Fichiers: {conflict.files.join(', ')}
126
+ Résolution: {conflict.resolution}
113
127
  {end for}
114
128
 
115
- SUGGESTIONS:
129
+ SUGGESTIONS MCP
130
+ -------------------------------------------------------------------------------
116
131
  {for each suggestion in suggestions}
117
- - {suggestion}
132
+ {suggestion}
118
133
  {end for}
119
134
 
120
- ================================================================================
121
- BLOCKING: Merge not allowed until conflicts are resolved.
122
- ================================================================================
135
+ ===============================================================================
136
+ ACTIONS REQUISES
137
+ ===============================================================================
138
+
139
+ ⛔ Le merge est bloqué jusqu'à résolution des conflits.
140
+
141
+ 1. RECOMMANDÉ - Rebaser le ModelSnapshot:
142
+ /efcore:rebase-snapshot
143
+
144
+ 2. NON RECOMMANDÉ - Ignorer les conflits:
145
+ /efcore:conflicts --force
146
+
147
+ 3. Besoin d'aide?
148
+ support@atlshub.ch
149
+
150
+ ===============================================================================
151
+ ```
152
+
153
+ **Si conflit critique (snapshot divergent):**
154
+
155
+ ```
156
+ ===============================================================================
157
+ CONFLIT CRITIQUE - SNAPSHOT DIVERGENT
158
+ ===============================================================================
159
+
160
+ CONTEXTE
161
+ -------------------------------------------------------------------------------
162
+ • Branche: {current_branch}
163
+ • Cible: develop
164
+
165
+ PROBLÈME
166
+ -------------------------------------------------------------------------------
167
+ ⛔ Le ModelSnapshot de votre branche a divergé significativement
168
+ de develop ({DIFF_LINES} lignes de différence).
169
+
170
+ Cela indique que des migrations ont été ajoutées sur develop
171
+ depuis la création de votre branche.
172
+
173
+ IMPACT
174
+ -------------------------------------------------------------------------------
175
+ • Le merge créera des conflits impossibles à résoudre automatiquement
176
+ • Les migrations pourraient s'exécuter dans le mauvais ordre
177
+ • La base de données pourrait être corrompue
178
+
179
+ ===============================================================================
180
+ ACTIONS REQUISES
181
+ ===============================================================================
182
+
183
+ ⛔ MERGE BLOQUÉ - Résolution obligatoire avant de continuer.
184
+
185
+ 1. Rebaser le snapshot sur develop (OBLIGATOIRE):
186
+ /efcore:rebase-snapshot
187
+
188
+ 2. Recréer votre migration après le rebase:
189
+ /efcore:migration
123
190
 
124
- RESOLUTION OPTIONS:
125
- /efcore:rebase-snapshot Rebase ModelSnapshot on develop (recommended)
126
- /efcore:conflicts --force Ignore and proceed (not recommended)
191
+ 3. Vérifier que tout fonctionne:
192
+ /efcore:db-deploy
127
193
 
128
- ================================================================================
194
+ ===============================================================================
129
195
  ```
130
196
 
131
197
  ---
@@ -151,21 +151,118 @@ USEFUL COMMANDS:
151
151
 
152
152
  ---
153
153
 
154
- ## STEP 4: Confirmation
154
+ ## STEP 4: Resume
155
+
156
+ **Afficher un resume apres le deploiement:**
155
157
 
156
158
  ```
157
- ================================================================================
158
- DEPLOYMENT COMPLETE
159
- ================================================================================
159
+ ===============================================================================
160
+ MIGRATIONS APPLIQUÉES
161
+ ===============================================================================
162
+
163
+ DÉTAILS DÉPLOIEMENT
164
+ -------------------------------------------------------------------------------
165
+ • Projet: {PROJECT_NAME}
166
+ • Environnement: {SELECTED_ENV}
167
+ • Serveur: {SERVER_NAME}
168
+ • Base: {DATABASE_NAME}
169
+
170
+ MIGRATIONS APPLIQUÉES
171
+ -------------------------------------------------------------------------------
172
+ ✓ {migration_1_name}
173
+ ✓ {migration_2_name}
174
+ ... ({N} migrations au total)
175
+
176
+ WORKFLOW STATUT
177
+ -------------------------------------------------------------------------------
178
+ ✓ Connexion établie
179
+ ✓ {N} migration(s) appliquée(s)
180
+ ✓ Base de données à jour
181
+
182
+ ===============================================================================
183
+ PROCHAINES ÉTAPES
184
+ ===============================================================================
185
+
186
+ 1. Vérifier le statut de la base:
187
+ /efcore:db-status
188
+
189
+ 2. Peupler avec des données de test (si nécessaire):
190
+ /efcore:db-seed
191
+
192
+ 3. Lancer l'application:
193
+ dotnet run --project {STARTUP_PROJECT}
194
+
195
+ ===============================================================================
196
+ ```
160
197
 
161
- {N} migration(s) applied
162
- ✓ Database is up to date
198
+ **Si aucune migration pending:**
163
199
 
164
- NEXT COMMANDS:
165
- /efcore:db-status → Check status
166
- /efcore:db-seed → Populate test data
200
+ ```
201
+ ===============================================================================
202
+ BASE DE DONNÉES À JOUR
203
+ ===============================================================================
167
204
 
168
- ================================================================================
205
+ DÉTAILS
206
+ -------------------------------------------------------------------------------
207
+ • Projet: {PROJECT_NAME}
208
+ • Environnement: {SELECTED_ENV}
209
+ • Base: {DATABASE_NAME}
210
+
211
+ STATUT
212
+ -------------------------------------------------------------------------------
213
+ ✓ Aucune migration en attente
214
+ ✓ Base de données synchronisée avec le code
215
+
216
+ ===============================================================================
217
+ PROCHAINES ÉTAPES
218
+ ===============================================================================
219
+
220
+ 1. Créer une nouvelle migration si besoin:
221
+ /efcore:migration
222
+
223
+ 2. Vérifier le statut complet:
224
+ /efcore:db-status
225
+
226
+ ===============================================================================
227
+ ```
228
+
229
+ **Si erreur de connexion:**
230
+
231
+ ```
232
+ ===============================================================================
233
+ ÉCHEC DE DÉPLOIEMENT
234
+ ===============================================================================
235
+
236
+ ERREUR
237
+ -------------------------------------------------------------------------------
238
+ ✗ Impossible de se connecter à la base de données
239
+
240
+ DÉTAILS CONNEXION
241
+ -------------------------------------------------------------------------------
242
+ • Serveur: {SERVER_NAME}
243
+ • Base: {DATABASE_NAME}
244
+ • Config: {SELECTED_ENV}
245
+
246
+ VÉRIFICATIONS À EFFECTUER
247
+ -------------------------------------------------------------------------------
248
+ 1. SQL Server est-il démarré?
249
+ 2. La base de données existe-t-elle?
250
+ 3. Les credentials sont-ils corrects?
251
+
252
+ ===============================================================================
253
+ ACTIONS SUGGÉRÉES
254
+ ===============================================================================
255
+
256
+ 1. Vérifier la connexion:
257
+ sqlcmd -S {SERVER_NAME} -E
258
+
259
+ 2. Créer/recréer la base:
260
+ /efcore:db-reset
261
+
262
+ 3. Vérifier la configuration:
263
+ Ouvrir {API_DIR}/{SELECTED_ENV}
264
+
265
+ ===============================================================================
169
266
  ```
170
267
 
171
268
  ---
@@ -376,26 +376,81 @@ echo " Use /efcore:db-status for detailed status"
376
376
 
377
377
  ---
378
378
 
379
- ## STEP 10: Summary
379
+ ## STEP 10: Resume
380
+
381
+ **Afficher un resume apres le reset:**
380
382
 
381
383
  ```
382
- ================================================================================
383
- DATABASE RESET COMPLETE
384
- ================================================================================
384
+ ===============================================================================
385
+ BASE DE DONNÉES RÉINITIALISÉE
386
+ ===============================================================================
387
+
388
+ DÉTAILS RESET
389
+ -------------------------------------------------------------------------------
390
+ • Environnement: {SELECTED_ENV}
391
+ • Serveur: {SERVER_NAME}
392
+ • Base: {DATABASE_NAME}
393
+
394
+ OPÉRATIONS EFFECTUÉES
395
+ -------------------------------------------------------------------------------
396
+ ✓ Ancienne base supprimée (dotnet ef database drop)
397
+ ✓ Nouvelle base créée (dotnet ef database update)
398
+ ✓ {N} migration(s) appliquée(s)
399
+ {seed_applied ? "✓ Données initiales insérées (HasData)" : "○ Base vide (pas de seed)"}
400
+
401
+ CONFORMITÉ
402
+ -------------------------------------------------------------------------------
403
+ ✓ EF Core CLI uniquement (pas de SQL brut)
404
+ ✓ Conforme aux règles CLAUDE.md
405
+
406
+ ===============================================================================
407
+ PROCHAINES ÉTAPES
408
+ ===============================================================================
409
+
410
+ 1. Vérifier le statut de la base:
411
+ /efcore:db-status
412
+
413
+ 2. Ajouter des données de test (si nécessaire):
414
+ /efcore:db-seed
415
+
416
+ 3. Lancer l'application:
417
+ dotnet run --project {STARTUP_PROJECT}
418
+
419
+ ===============================================================================
420
+ ```
385
421
 
386
- Old database deleted (via dotnet ef database drop)
387
- ✓ New database created (via dotnet ef database update)
388
- ✓ All migrations applied
389
- {✓ HasData seed applied | ○ Empty database}
422
+ **Si le reset a échoué:**
390
423
 
391
- COMPLIANT: ✓ EF Core CLI only (no raw SQL)
424
+ ```
425
+ ===============================================================================
426
+ ÉCHEC DU RESET
427
+ ===============================================================================
392
428
 
393
- NEXT COMMANDS:
394
- /efcore:db-status → Check status
395
- /efcore:db-seed → Additional seeding (if needed)
396
- dotnet run → Launch application
429
+ ERREUR
430
+ -------------------------------------------------------------------------------
431
+ {error_message}
397
432
 
398
- ================================================================================
433
+ DÉTAILS
434
+ -------------------------------------------------------------------------------
435
+ • Environnement: {SELECTED_ENV}
436
+ • Serveur: {SERVER_NAME}
437
+ • Base: {DATABASE_NAME}
438
+
439
+ ===============================================================================
440
+ ACTIONS SUGGÉRÉES
441
+ ===============================================================================
442
+
443
+ 1. Vérifier que SQL Server est démarré
444
+
445
+ 2. Vérifier les permissions sur la base
446
+
447
+ 3. Consulter les logs détaillés:
448
+ dotnet ef database update --verbose
449
+
450
+ 4. Contacter le support si le problème persiste:
451
+ support@atlshub.ch
452
+
453
+ ===============================================================================
399
454
  ```
400
455
 
401
456
  ---
@@ -271,23 +271,79 @@ echo " dotnet ef dbcontext info"
271
271
 
272
272
  ---
273
273
 
274
- ## STEP 5: Summary
274
+ ## STEP 5: Resume
275
+
276
+ **Afficher un resume apres le seeding:**
275
277
 
276
278
  ```
277
- ================================================================================
278
- SEEDING COMPLETE
279
- ================================================================================
279
+ ===============================================================================
280
+ DONNÉES INSÉRÉES
281
+ ===============================================================================
280
282
 
281
- METHOD: {method used}
282
- COMPLIANT: ✓ EF Core native (no raw SQL)
283
+ DÉTAILS SEED
284
+ -------------------------------------------------------------------------------
285
+ • Environnement: {SELECTED_ENV}
286
+ • Base: {DATABASE_NAME}
287
+ • Méthode: {method_used}
283
288
 
284
- Database populated successfully
289
+ OPÉRATIONS EFFECTUÉES
290
+ -------------------------------------------------------------------------------
291
+ ✓ Données initiales insérées avec succès
292
+ ✓ Méthode conforme: {method_used}
285
293
 
286
- NEXT COMMANDS:
287
- /efcore:db-status → Check status
288
- dotnet run → Launch application
294
+ CONFORMITÉ
295
+ -------------------------------------------------------------------------------
296
+ EF Core natif (HasData ou Seeder)
297
+ ✓ Pas de SQL brut
298
+ ✓ Conforme aux règles CLAUDE.md
289
299
 
290
- ================================================================================
300
+ ===============================================================================
301
+ PROCHAINES ÉTAPES
302
+ ===============================================================================
303
+
304
+ 1. Vérifier le statut de la base:
305
+ /efcore:db-status
306
+
307
+ 2. Lancer l'application:
308
+ dotnet run --project {STARTUP_PROJECT}
309
+
310
+ 3. Vérifier les données via l'API:
311
+ GET /api/{entities}
312
+
313
+ ===============================================================================
314
+ ```
315
+
316
+ **Si aucune méthode de seeding détectée:**
317
+
318
+ ```
319
+ ===============================================================================
320
+ AUCUNE MÉTHODE DE SEED DÉTECTÉE
321
+ ===============================================================================
322
+
323
+ PROBLÈME
324
+ -------------------------------------------------------------------------------
325
+ ✗ Aucune méthode de seeding trouvée dans le projet
326
+
327
+ MÉTHODES RECHERCHÉES
328
+ -------------------------------------------------------------------------------
329
+ ○ HasData() dans les configurations EF Core
330
+ ○ Classes IDataSeeder / DbSeeder
331
+ ○ Argument --seed dans Program.cs
332
+
333
+ ===============================================================================
334
+ ACTIONS SUGGÉRÉES
335
+ ===============================================================================
336
+
337
+ 1. RECOMMANDÉ - Ajouter HasData() dans vos configurations:
338
+ Voir documentation ci-dessus
339
+
340
+ 2. ALTERNATIVE - Créer une classe Seeder:
341
+ Implémenter IDataSeeder
342
+
343
+ 3. Besoin d'aide?
344
+ support@atlshub.ch
345
+
346
+ ===============================================================================
291
347
  ```
292
348
 
293
349
  ---