@atlashub/smartstack-cli 1.6.0 → 1.7.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.6.0",
3
+ "version": "1.7.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,112 +8,25 @@ tools: Bash, Read, Glob
8
8
 
9
9
  # GitFlow Status Agent
10
10
 
11
- Expert GitFlow. Affiche l'etat COMPLET du repository avec vocabulaire accessible.
11
+ Expert GitFlow. Analyse rapide de l'etat du repository .NET.
12
12
 
13
13
  ## Workflow
14
14
 
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"
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
58
19
 
59
20
  ## Output Format
60
21
 
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
-
100
22
  ```
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
- ══════════════════════════════════════════════════════════════════════════════
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}
115
28
  ```
116
29
 
117
30
  ## Priority
118
31
 
119
- Completude + Clarte > Vitesse. L'utilisateur doit comprendre TOUT l'etat du repo ET savoir exactement quoi faire ensuite.
32
+ Speed > Detail. Etat essentiel seulement.
@@ -6,65 +6,18 @@ model: haiku
6
6
 
7
7
  # Phase 2: STATUS - Overview
8
8
 
9
- Tu es expert GitFlow et EF Core. Affiche l'etat COMPLET du projet.
9
+ Tu es expert GitFlow et EF Core. Affiche l'etat complet du projet.
10
10
 
11
11
  ---
12
12
 
13
13
  ## Informations a collecter
14
14
 
15
- ### 1. BRANCHES - Vue complete
16
-
17
- #### Toutes les branches (locales et remote)
18
- ```bash
19
- # Fetch pour avoir les infos a jour
20
- git fetch --all --quiet 2>/dev/null
21
-
22
- # Branches locales avec dernier commit
23
- echo "=== BRANCHES LOCALES ==="
24
- git for-each-ref --sort=-committerdate --format='%(refname:short)|%(objectname:short)|%(committerdate:short)|%(subject)' refs/heads
25
-
26
- # Branches remote avec dernier commit
27
- echo "=== BRANCHES REMOTE ==="
28
- git for-each-ref --sort=-committerdate --format='%(refname:short)|%(objectname:short)|%(committerdate:short)|%(subject)' refs/remotes/origin
29
-
30
- # Worktrees actifs
31
- echo "=== WORKTREES ==="
32
- git worktree list
33
-
34
- # Tracking relationships
35
- echo "=== TRACKING ==="
36
- git branch -vv
37
- ```
38
-
39
- ### 2. TAGS - Tous les tags avec details
40
- ```bash
41
- # Tous les tags tries par version (newest first)
42
- echo "=== TAGS ==="
43
- git for-each-ref --sort=-v:refname --format='%(refname:short)|%(creatordate:short)|%(subject)' refs/tags
44
-
45
- # Dernier tag sur chaque branche principale
46
- echo "=== LATEST TAG PER BRANCH ==="
47
- for branch in main develop; do
48
- if git rev-parse --verify $branch >/dev/null 2>&1; then
49
- TAG=$(git describe --tags --abbrev=0 $branch 2>/dev/null || echo "none")
50
- AHEAD=$(git rev-list --count $TAG..$branch 2>/dev/null || echo "0")
51
- echo "$branch: $TAG (+$AHEAD commits)"
52
- fi
53
- done
54
-
55
- # Quelles branches contiennent quels tags (3 derniers tags)
56
- echo "=== TAG CONTAINMENT ==="
57
- for tag in $(git tag -l --sort=-v:refname | head -3); do
58
- BRANCHES=$(git branch -a --contains $tag 2>/dev/null | tr '\n' ',' | sed 's/,$//')
59
- echo "$tag: $BRANCHES"
60
- done
61
- ```
62
-
63
- ### 3. Git Status courant
15
+ ### Git
64
16
  - Branche courante et type (feature/release/hotfix/develop/main)
65
17
  - Etat working directory (clean/dirty)
66
18
  - Synchronisation locale vs remote (push/pull needed)
67
19
  - Synchronisation vs develop et main (commits ahead/behind)
20
+ - Dernier tag
68
21
 
69
22
  ### Sync Local vs Remote
70
23
  ```bash
@@ -98,82 +51,29 @@ else
98
51
  fi
99
52
  ```
100
53
 
101
- ### 4. COMPARAISONS - develop vs main vs releases (CRITIQUE)
54
+ ### Sync develop vs main (CRITIQUE)
102
55
 
103
56
  ```bash
104
- # === DEVELOP vs MAIN ===
105
- echo "=== DEVELOP vs MAIN ==="
106
-
107
57
  # Commits sur develop absents de main (normal - a releaser)
108
- DEVELOP_AHEAD=$(git rev-list --count main..develop 2>/dev/null || echo "0")
58
+ DEVELOP_AHEAD=$(git rev-list --count origin/main..origin/develop 2>/dev/null || echo "0")
109
59
 
110
60
  # Commits sur main absents de develop (ANORMAL - hotfix non merge back?)
111
- MAIN_AHEAD=$(git rev-list --count develop..main 2>/dev/null || echo "0")
112
-
113
- echo "develop → main: +$DEVELOP_AHEAD commits"
114
- echo "main → develop: +$MAIN_AHEAD commits"
61
+ MAIN_AHEAD=$(git rev-list --count origin/develop..origin/main 2>/dev/null || echo "0")
115
62
 
116
63
  # Determiner l'etat de synchronisation
117
64
  if [ "$DEVELOP_AHEAD" -eq 0 ] && [ "$MAIN_AHEAD" -eq 0 ]; then
118
- echo "STATUS: SYNCHRONIZED"
65
+ BASE_SYNC="SYNCHRONIZED"
119
66
  elif [ "$MAIN_AHEAD" -gt 0 ]; then
120
- echo "STATUS: DIVERGED ⚠️ (main a des commits non merges dans develop)"
67
+ BASE_SYNC="DIVERGED" # PROBLEME!
121
68
  elif [ "$DEVELOP_AHEAD" -gt 0 ]; then
122
- echo "STATUS: RELEASE_NEEDED (normal)"
69
+ BASE_SYNC="RELEASE_NEEDED" # Normal
123
70
  fi
124
-
125
- # === RELEASES EN COURS ===
126
- echo ""
127
- echo "=== RELEASES EN COURS ==="
128
-
129
- # Pour chaque branche release (locale et remote)
130
- for RELEASE in $(git branch -a | grep -E 'release/' | sed 's/.*release\//release\//' | sort -u); do
131
- BRANCH_NAME=$(echo $RELEASE | sed 's/remotes\/origin\///')
132
-
133
- # Verifier si la branche existe
134
- if git rev-parse --verify $BRANCH_NAME >/dev/null 2>&1; then
135
- REL_VS_DEV_AHEAD=$(git rev-list --count develop..$BRANCH_NAME 2>/dev/null || echo "0")
136
- REL_VS_DEV_BEHIND=$(git rev-list --count $BRANCH_NAME..develop 2>/dev/null || echo "0")
137
- REL_VS_MAIN_AHEAD=$(git rev-list --count main..$BRANCH_NAME 2>/dev/null || echo "0")
138
- REL_VS_MAIN_BEHIND=$(git rev-list --count $BRANCH_NAME..main 2>/dev/null || echo "0")
139
- LAST_COMMIT=$(git log -1 --format='%h %s' $BRANCH_NAME 2>/dev/null)
140
-
141
- echo ""
142
- echo "$BRANCH_NAME:"
143
- echo " vs develop: +$REL_VS_DEV_AHEAD/-$REL_VS_DEV_BEHIND"
144
- echo " vs main: +$REL_VS_MAIN_AHEAD/-$REL_VS_MAIN_BEHIND"
145
- echo " last: $LAST_COMMIT"
146
-
147
- # Status
148
- if [ "$REL_VS_DEV_AHEAD" -eq 0 ] && [ "$REL_VS_MAIN_AHEAD" -eq 0 ]; then
149
- echo " status: MERGED ✓ (peut etre supprimee)"
150
- elif [ "$REL_VS_DEV_AHEAD" -gt 0 ] || [ "$REL_VS_MAIN_AHEAD" -gt 0 ]; then
151
- echo " status: ACTIVE (commits non merges)"
152
- fi
153
- fi
154
- done
155
-
156
- # === FEATURES EN COURS ===
157
- echo ""
158
- echo "=== FEATURES EN COURS ==="
159
-
160
- for FEATURE in $(git branch -a | grep -E 'feature/' | sed 's/.*feature\//feature\//' | sort -u | head -10); do
161
- BRANCH_NAME=$(echo $FEATURE | sed 's/remotes\/origin\///')
162
-
163
- if git rev-parse --verify $BRANCH_NAME >/dev/null 2>&1; then
164
- FEAT_VS_DEV_AHEAD=$(git rev-list --count develop..$BRANCH_NAME 2>/dev/null || echo "0")
165
- FEAT_VS_DEV_BEHIND=$(git rev-list --count $BRANCH_NAME..develop 2>/dev/null || echo "0")
166
- LAST_COMMIT=$(git log -1 --format='%h %s' $BRANCH_NAME 2>/dev/null)
167
-
168
- echo "$BRANCH_NAME: +$FEAT_VS_DEV_AHEAD/-$FEAT_VS_DEV_BEHIND | $LAST_COMMIT"
169
- fi
170
- done
171
71
  ```
172
72
 
173
73
  **Si MAIN_AHEAD > 0 (main a des commits absents de develop):**
174
74
  ```bash
175
- echo "=== COMMITS MANQUANTS DANS DEVELOP ==="
176
- git log develop..main --oneline
75
+ # Lister les commits divergents
76
+ git log origin/develop..origin/main --oneline
177
77
  ```
178
78
 
179
79
  ### Version
@@ -232,150 +132,70 @@ done
232
132
  ## Affichage
233
133
 
234
134
  ```
235
- ╔══════════════════════════════════════════════════════════════════════════════╗
236
- GITFLOW STATUS
237
- ╚══════════════════════════════════════════════════════════════════════════════╝
135
+ ================================================================================
136
+ GITFLOW STATUS
137
+ ================================================================================
238
138
 
239
139
  BRANCHE: {branch} ({type}) | {clean|dirty}
240
140
  VERSION: {version} ({source})
241
- REMOTE: {UP-TO-DATE|AHEAD N|BEHIND N|DIVERGED|NO REMOTE}
242
-
243
- ┌──────────────────────────────────────────────────────────────────────────────┐
244
- │ BRANCHES │
245
- ├──────────────────────────────────────────────────────────────────────────────┤
246
- │ LOCALES ({n}) │
247
- │ ──────────────────────────────────────────────────────────────────────────── │
248
- │ Branch │ Commit │ Date │ Message │
249
- │ ─────────────────────────────────────────────────────────────────────────────│
250
- │ * develop │ 8e8069d │ 2026-01-17 │ fix(ci): use NPM_TOKEN... │
251
- │ main │ dd0cb2a │ 2026-01-17 │ chore(ci): update pipeline... │
252
- │ release/v1.5.1 │ 10d2c58 │ 2026-01-17 │ chore: bump version to 1.5.1 │
253
- │ │
254
- │ REMOTE origin ({n}) │
255
- │ ──────────────────────────────────────────────────────────────────────────── │
256
- │ origin/develop │ 8e8069d │ 2026-01-17 │ fix(ci): use NPM_TOKEN... │
257
- │ origin/main │ 91d0986 │ 2026-01-16 │ feat(license): add license... │
258
- │ │
259
- │ WORKTREES ({n}) │
260
- │ ──────────────────────────────────────────────────────────────────────────── │
261
- │ 01-Main │ main │ dd0cb2a │
262
- │ 02-Develop │ develop │ 8e8069d (current) │
263
- │ releases/v1.4.2 │ release/v1.4.2 │ a45f239 │
264
- └──────────────────────────────────────────────────────────────────────────────┘
265
-
266
- ┌──────────────────────────────────────────────────────────────────────────────┐
267
- │ TAGS ({n} total) │
268
- ├──────────────────────────────────────────────────────────────────────────────┤
269
- │ Tag │ Date │ Message │ Branches │
270
- │ ─────────────────────────────────────────────────────────────────────────────│
271
- │ v1.5.2 │ 2026-01-17 │ Release v1.5.2 - Azure DevOps... │ main │
272
- │ v1.5.1 │ 2026-01-17 │ Release v1.5.1 - Fix init... │ main │
273
- │ v1.5.0 │ 2026-01-17 │ Release v1.5.0 - Project scaf... │ develop, main │
274
- │ v1.4.1 │ 2026-01-17 │ Release v1.4.1 - Patch release │ develop, main │
275
- │ v1.4.0 │ 2026-01-16 │ Release v1.4.0 │ develop, main │
276
- │ │
277
- │ DERNIERE VERSION PAR BRANCHE │
278
- │ main: v1.5.2 (+2 commits depuis ce tag) │
279
- │ develop: v1.5.0 (+10 commits depuis ce tag) │
280
- │ │
281
- │ Legende: "+N commits" = nombre de changements faits apres ce tag │
282
- └──────────────────────────────────────────────────────────────────────────────┘
283
141
 
284
- ┌──────────────────────────────────────────────────────────────────────────────┐
285
- COMPARAISONS ENTRE BRANCHES │
286
- ├──────────────────────────────────────────────────────────────────────────────┤
287
- │ DEVELOP vs MAIN (Production) │
288
- │ ──────────────────────────────────────────────────────────────────────────── │
289
- │ │
290
- │ develop: {N} commits prets a publier en production │
291
- │ (changements sur develop non encore sur main) │
292
- │ │
293
- │ main: {N} commits a recuperer dans develop │
294
- │ (changements sur main non encore sur develop) │
295
- │ │
296
- │ ETAT: {message selon situation} │
297
- │ ✓ SYNCHRONISE = develop et main sont identiques │
298
- │ ℹ️ A PUBLIER = develop a des changements prets pour une release │
299
- │ ⚠️ DESYNCHRONISE = main a des commits non recuperes (action requise) │
300
- │ │
301
- │ {Si main a des commits non recuperes:} │
302
- │ ⚠️ ATTENTION: {N} changements sur main non recuperes dans develop! │
303
- │ ───────────────────────────────────────────────────────────────────────── │
304
- │ Ces commits sont sur main mais absents de develop: │
305
- │ dd0cb2a chore(ci): update pipeline to use NPM_TOKEN variable │
306
- │ 3db14b6 Merge pull request 31 from release/v1.5.2 into main │
307
- │ │
308
- │ → ACTION: Recuperer ces changements avec: git merge main │
309
- │ │
310
- │ RELEASES EN COURS │
311
- │ ──────────────────────────────────────────────────────────────────────────── │
312
- │ Branch │ vs develop │ vs main │ Status │
313
- │ ─────────────────────────────────────────────────────────────────────────────│
314
- │ release/v1.5.1 │ 0 a publier/25 a │ 0 a publier/28 a │ TERMINEE ✓ │
315
- │ │ recuperer │ recuperer │ (supprimable) │
316
- │ release/v1.4.2 │ 0 a publier/26 a │ 0 a publier/29 a │ TERMINEE ✓ │
317
- │ │ recuperer │ recuperer │ (supprimable) │
318
- │ │
319
- │ FEATURES (branches de fonctionnalites) │
320
- │ ──────────────────────────────────────────────────────────────────────────── │
321
- │ feature/xxx: {N} commits a publier / {N} a recuperer de develop │
322
- │ Dernier: {message du dernier commit} │
323
- └──────────────────────────────────────────────────────────────────────────────┘
142
+ REMOTE SYNC
143
+ vs origin/{branch}: {UP-TO-DATE|AHEAD N|BEHIND N|DIVERGED|NO REMOTE}
324
144
 
325
- ┌──────────────────────────────────────────────────────────────────────────────┐
326
- EF CORE │
327
- ├──────────────────────────────────────────────────────────────────────────────┤
328
- Migrations: {total} total, {pending} pending │
329
- [Pending] {liste}
330
- │ │
331
- │ BRANCHES AVEC MIGRATIONS │
332
- │ ──────────────────────────────────────────────────────────────────────────── │
333
- │ feature/add-users +1 migration (AddUsersTable) Conflit: NON │
334
- │ feature/add-orders +1 migration (AddOrdersTable) Conflit: NON │
335
- │ feature/add-products +2 migrations Conflit: OUI ⚠️ │
336
- │ │
337
- │ ORDRE DE MERGE RECOMMANDE: │
338
- │ 1. feature/add-users (independant) │
339
- │ 2. feature/add-orders (independant) │
340
- │ 3. feature/add-products (rebase requis apres #1 et #2) │
341
- └──────────────────────────────────────────────────────────────────────────────┘
145
+ --------------------------------------------------------------------------------
146
+ SYNC DEVELOP <-> MAIN
147
+ --------------------------------------------------------------------------------
148
+ develop → main: +{DEVELOP_AHEAD} commits {message}
149
+ main develop: +{MAIN_AHEAD} commits {message}
342
150
 
343
- PLANS: {n} active | OPERATIONS: {none|rebase|merge} | RISKS: {liste}
151
+ {Si DEVELOP_AHEAD > 0 et MAIN_AHEAD == 0:}
152
+ ✓ Normal: develop a {N} commits prets a releaser
153
+ → Action: /gitflow:10-start release
344
154
 
345
- ══════════════════════════════════════════════════════════════════════════════
346
- ACTIONS A FAIRE
347
- ══════════════════════════════════════════════════════════════════════════════
155
+ {Si MAIN_AHEAD > 0:}
156
+ ⚠️ ATTENTION: main contient {N} commits absents de develop!
348
157
 
349
- {Generer cette section dynamiquement selon l'etat detecte}
350
- {Chaque action = 1 ligne description + 1 bloc code copiable}
158
+ Commits sur main non merges dans develop:
159
+ {git log origin/develop..origin/main --oneline}
351
160
 
352
- EXEMPLES DE FORMAT:
161
+ Causes possibles:
162
+ - Hotfix non merge back dans develop
163
+ - Commit direct sur main (non recommande)
164
+ - Release mal finalisee
353
165
 
354
- ⚠️ Recuperer 3 commits de main dans develop
355
- git merge main
166
+ Actions:
167
+ 1. Merger main dans develop: git merge origin/main
168
+ 2. Ou via release: /gitflow:10-start release (reset main)
356
169
 
357
- ℹ️ Creer une release (10 commits prets pour production)
358
- /gitflow:start release v1.6.0
170
+ {Si DEVELOP_AHEAD == 0 et MAIN_AHEAD == 0:}
171
+ ✓ Synchronise: develop et main sont identiques
172
+ --------------------------------------------------------------------------------
359
173
 
360
- Merger feature/add-users dans develop (prete, 0 conflit)
361
- /gitflow:finish feature/add-users
174
+ DERNIER TAG: {tag}
362
175
 
363
- Mettre a jour feature/add-orders (15 commits a recuperer de develop)
364
- /gitflow:rebase feature/add-orders
176
+ EF CORE (branche courante)
177
+ Migrations: {total} total, {pending} pending
178
+ [Pending] {liste}
365
179
 
366
- 🗑️ Nettoyer release/v1.5.1 (terminee, supprimable)
367
- /gitflow:cleanup release/v1.5.1
180
+ --------------------------------------------------------------------------------
181
+ BRANCHES ACTIVES ({features} features, {releases} releases, {hotfixes} hotfixes)
182
+ --------------------------------------------------------------------------------
183
+ {Si branches actives avec migrations:}
184
+ feature/add-users +1 migration (AddUsersTable) Conflit: NON
185
+ feature/add-orders +1 migration (AddOrdersTable) Conflit: NON
186
+ feature/add-products +2 migrations (AddProducts, AddFK) Conflit: OUI
368
187
 
369
- 🗑️ Nettoyer release/v1.4.2 (terminee, supprimable)
370
- /gitflow:cleanup release/v1.4.2
188
+ ORDRE DE MERGE RECOMMANDE:
189
+ 1. feature/add-users (independant)
190
+ 2. feature/add-orders (independant)
191
+ 3. feature/add-products (conflit ModelSnapshot - rebase requis)
192
+ --------------------------------------------------------------------------------
371
193
 
372
- 💾 Sauvegarder les modifications en cours (3 fichiers modifies)
373
- /gitflow:commit "description des changements"
374
-
375
- ↑ Envoyer develop vers le serveur (5 commits non publies)
376
- /gitflow:sync develop
194
+ PLANS: {n} active | OPERATIONS: {none|rebase|merge} | RISKS: {liste}
377
195
 
378
- ══════════════════════════════════════════════════════════════════════════════
196
+ ================================================================================
197
+ Actions: /gitflow:13-sync | /gitflow:14-rebase | /gitflow:3-commit | /gitflow:4-plan
198
+ ================================================================================
379
199
  ```
380
200
 
381
201
  ---