@atlashub/smartstack-cli 1.5.1 → 1.5.3
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/.documentation/css/styles.css +2168 -2168
- package/.documentation/js/app.js +794 -794
- package/config/default-config.json +86 -86
- package/config/settings.json +53 -53
- package/config/settings.local.example.json +16 -16
- package/dist/index.js +0 -0
- package/dist/index.js.map +1 -1
- package/package.json +88 -88
- package/templates/agents/action.md +36 -36
- package/templates/agents/efcore/conflicts.md +84 -84
- package/templates/agents/efcore/db-deploy.md +51 -51
- package/templates/agents/efcore/db-reset.md +59 -59
- package/templates/agents/efcore/db-seed.md +56 -56
- package/templates/agents/efcore/db-status.md +64 -64
- package/templates/agents/efcore/migration.md +85 -85
- package/templates/agents/efcore/rebase-snapshot.md +62 -62
- package/templates/agents/efcore/scan.md +90 -90
- package/templates/agents/efcore/squash.md +67 -67
- package/templates/agents/explore-codebase.md +65 -65
- package/templates/agents/explore-docs.md +97 -97
- package/templates/agents/fix-grammar.md +49 -49
- package/templates/agents/gitflow/abort.md +45 -45
- package/templates/agents/gitflow/cleanup.md +85 -85
- package/templates/agents/gitflow/commit.md +40 -40
- package/templates/agents/gitflow/exec.md +48 -48
- package/templates/agents/gitflow/finish.md +92 -92
- package/templates/agents/gitflow/init.md +139 -139
- package/templates/agents/gitflow/merge.md +62 -62
- package/templates/agents/gitflow/plan.md +42 -42
- package/templates/agents/gitflow/pr.md +78 -78
- package/templates/agents/gitflow/review.md +49 -49
- package/templates/agents/gitflow/start.md +61 -61
- package/templates/agents/gitflow/status.md +32 -32
- package/templates/agents/snipper.md +36 -36
- package/templates/agents/websearch.md +46 -46
- package/templates/commands/_resources/formatting-guide.md +124 -124
- package/templates/commands/ai-prompt.md +315 -315
- package/templates/commands/apex/1-analyze.md +100 -100
- package/templates/commands/apex/2-plan.md +145 -145
- package/templates/commands/apex/3-execute.md +171 -171
- package/templates/commands/apex/4-examine.md +116 -116
- package/templates/commands/apex/5-tasks.md +209 -209
- package/templates/commands/apex.md +76 -76
- package/templates/commands/application/create.md +362 -362
- package/templates/commands/application/templates-backend.md +463 -463
- package/templates/commands/application/templates-frontend.md +517 -517
- package/templates/commands/application/templates-i18n.md +478 -478
- package/templates/commands/application/templates-seed.md +362 -362
- package/templates/commands/application.md +303 -303
- package/templates/commands/business-analyse/0-orchestrate.md +640 -640
- package/templates/commands/business-analyse/1-init.md +269 -269
- package/templates/commands/business-analyse/2-discover.md +520 -520
- package/templates/commands/business-analyse/3-analyse.md +408 -408
- package/templates/commands/business-analyse/4-specify.md +598 -598
- package/templates/commands/business-analyse/5-validate.md +326 -326
- package/templates/commands/business-analyse/6-handoff.md +746 -746
- package/templates/commands/business-analyse/7-doc-html.md +602 -602
- package/templates/commands/business-analyse/bug.md +325 -325
- package/templates/commands/business-analyse/change-request.md +368 -368
- package/templates/commands/business-analyse/hotfix.md +200 -200
- package/templates/commands/business-analyse.md +640 -640
- package/templates/commands/controller/create.md +216 -216
- package/templates/commands/controller/postman-templates.md +528 -528
- package/templates/commands/controller/templates.md +600 -600
- package/templates/commands/controller.md +337 -337
- package/templates/commands/create/agent.md +138 -138
- package/templates/commands/create/command.md +166 -166
- package/templates/commands/create/hook.md +234 -234
- package/templates/commands/create/plugin.md +329 -329
- package/templates/commands/create/project.md +507 -507
- package/templates/commands/create/skill.md +199 -199
- package/templates/commands/create.md +220 -220
- package/templates/commands/debug.md +95 -95
- package/templates/commands/documentation/module.md +202 -202
- package/templates/commands/documentation/templates.md +432 -432
- package/templates/commands/documentation.md +190 -190
- package/templates/commands/efcore/_env-check.md +153 -153
- package/templates/commands/efcore/conflicts.md +186 -186
- package/templates/commands/efcore/db-deploy.md +193 -193
- package/templates/commands/efcore/db-reset.md +426 -426
- package/templates/commands/efcore/db-seed.md +326 -326
- package/templates/commands/efcore/db-status.md +226 -226
- package/templates/commands/efcore/migration.md +400 -400
- package/templates/commands/efcore/rebase-snapshot.md +264 -264
- package/templates/commands/efcore/scan.md +198 -198
- package/templates/commands/efcore/squash.md +298 -298
- package/templates/commands/efcore.md +224 -224
- package/templates/commands/epct.md +69 -69
- package/templates/commands/explain.md +186 -186
- package/templates/commands/explore.md +45 -45
- package/templates/commands/feature-full.md +267 -267
- package/templates/commands/gitflow/1-init.md +1038 -1038
- package/templates/commands/gitflow/10-start.md +768 -768
- package/templates/commands/gitflow/11-finish.md +457 -457
- package/templates/commands/gitflow/12-cleanup.md +276 -276
- package/templates/commands/gitflow/13-sync.md +216 -216
- package/templates/commands/gitflow/14-rebase.md +251 -251
- package/templates/commands/gitflow/2-status.md +277 -277
- package/templates/commands/gitflow/3-commit.md +344 -344
- package/templates/commands/gitflow/4-plan.md +145 -145
- package/templates/commands/gitflow/5-exec.md +147 -147
- package/templates/commands/gitflow/6-abort.md +344 -344
- package/templates/commands/gitflow/7-pull-request.md +453 -355
- package/templates/commands/gitflow/8-review.md +240 -176
- package/templates/commands/gitflow/9-merge.md +451 -365
- package/templates/commands/gitflow.md +128 -128
- package/templates/commands/implement.md +663 -663
- package/templates/commands/init.md +567 -567
- package/templates/commands/mcp-integration.md +330 -330
- package/templates/commands/notification.md +129 -129
- package/templates/commands/oneshot.md +57 -57
- package/templates/commands/quick-search.md +72 -72
- package/templates/commands/ralph-loop/cancel-ralph.md +18 -18
- package/templates/commands/ralph-loop/help.md +126 -126
- package/templates/commands/ralph-loop/ralph-loop.md +18 -18
- package/templates/commands/review.md +106 -106
- package/templates/commands/utils/test-web-config.md +160 -160
- package/templates/commands/utils/test-web.md +151 -151
- package/templates/commands/validate.md +233 -233
- package/templates/commands/workflow.md +193 -193
- package/templates/gitflow/config.json +138 -138
- package/templates/hooks/ef-migration-check.md +139 -139
- package/templates/hooks/hooks.json +25 -25
- package/templates/hooks/stop-hook.sh +177 -177
- package/templates/skills/ai-prompt/SKILL.md +778 -778
- package/templates/skills/application/SKILL.md +563 -563
- package/templates/skills/application/templates-backend.md +450 -450
- package/templates/skills/application/templates-frontend.md +531 -531
- package/templates/skills/application/templates-i18n.md +520 -520
- package/templates/skills/application/templates-seed.md +647 -647
- package/templates/skills/business-analyse/SKILL.md +191 -191
- package/templates/skills/business-analyse/questionnaire.md +283 -283
- package/templates/skills/business-analyse/templates-frd.md +477 -477
- package/templates/skills/business-analyse/templates-react.md +580 -580
- package/templates/skills/controller/SKILL.md +240 -240
- package/templates/skills/controller/postman-templates.md +614 -614
- package/templates/skills/controller/templates.md +1468 -1468
- package/templates/skills/documentation/SKILL.md +133 -133
- package/templates/skills/documentation/templates.md +476 -476
- package/templates/skills/feature-full/SKILL.md +838 -838
- package/templates/skills/notification/SKILL.md +555 -555
- package/templates/skills/ui-components/SKILL.md +870 -870
- package/templates/skills/workflow/SKILL.md +582 -582
- package/templates/test-web/api-health.json +38 -38
- package/templates/test-web/minimal.json +19 -19
- package/templates/test-web/npm-package.json +46 -46
- package/templates/test-web/seo-check.json +54 -54
|
@@ -1,277 +1,277 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Phase 2 - Display GitFlow state with versioning and EF Core details
|
|
3
|
-
agent: gitflow-status
|
|
4
|
-
model: haiku
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Phase 2: STATUS - Overview
|
|
8
|
-
|
|
9
|
-
Tu es expert GitFlow et EF Core. Affiche l'etat complet du projet.
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
## Informations a collecter
|
|
14
|
-
|
|
15
|
-
### Git
|
|
16
|
-
- Branche courante et type (feature/release/hotfix/develop/main)
|
|
17
|
-
- Etat working directory (clean/dirty)
|
|
18
|
-
- Synchronisation locale vs remote (push/pull needed)
|
|
19
|
-
- Synchronisation vs develop et main (commits ahead/behind)
|
|
20
|
-
- Dernier tag
|
|
21
|
-
|
|
22
|
-
### Sync Local vs Remote
|
|
23
|
-
```bash
|
|
24
|
-
# Fetch pour avoir les infos a jour (sans modifier le working directory)
|
|
25
|
-
git fetch --quiet 2>/dev/null
|
|
26
|
-
|
|
27
|
-
# Verifier si la branche a un remote tracking
|
|
28
|
-
UPSTREAM=$(git rev-parse --abbrev-ref @{upstream} 2>/dev/null)
|
|
29
|
-
|
|
30
|
-
if [ -n "$UPSTREAM" ]; then
|
|
31
|
-
# Comparer local vs remote
|
|
32
|
-
LOCAL=$(git rev-parse @)
|
|
33
|
-
REMOTE=$(git rev-parse @{upstream})
|
|
34
|
-
BASE=$(git merge-base @ @{upstream})
|
|
35
|
-
|
|
36
|
-
if [ "$LOCAL" = "$REMOTE" ]; then
|
|
37
|
-
SYNC_STATUS="UP-TO-DATE"
|
|
38
|
-
elif [ "$LOCAL" = "$BASE" ]; then
|
|
39
|
-
BEHIND=$(git rev-list --count @..@{upstream})
|
|
40
|
-
SYNC_STATUS="BEHIND $BEHIND (pull needed)"
|
|
41
|
-
elif [ "$REMOTE" = "$BASE" ]; then
|
|
42
|
-
AHEAD=$(git rev-list --count @{upstream}..@)
|
|
43
|
-
SYNC_STATUS="AHEAD $AHEAD (push needed)"
|
|
44
|
-
else
|
|
45
|
-
AHEAD=$(git rev-list --count @{upstream}..@)
|
|
46
|
-
BEHIND=$(git rev-list --count @..@{upstream})
|
|
47
|
-
SYNC_STATUS="DIVERGED +$AHEAD/-$BEHIND (pull --rebase needed)"
|
|
48
|
-
fi
|
|
49
|
-
else
|
|
50
|
-
SYNC_STATUS="NO REMOTE (not pushed yet)"
|
|
51
|
-
fi
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### Sync develop vs main (CRITIQUE)
|
|
55
|
-
|
|
56
|
-
```bash
|
|
57
|
-
# Commits sur develop absents de main (normal - a releaser)
|
|
58
|
-
DEVELOP_AHEAD=$(git rev-list --count origin/main..origin/develop 2>/dev/null || echo "0")
|
|
59
|
-
|
|
60
|
-
# Commits sur main absents de develop (ANORMAL - hotfix non merge back?)
|
|
61
|
-
MAIN_AHEAD=$(git rev-list --count origin/develop..origin/main 2>/dev/null || echo "0")
|
|
62
|
-
|
|
63
|
-
# Determiner l'etat de synchronisation
|
|
64
|
-
if [ "$DEVELOP_AHEAD" -eq 0 ] && [ "$MAIN_AHEAD" -eq 0 ]; then
|
|
65
|
-
BASE_SYNC="SYNCHRONIZED"
|
|
66
|
-
elif [ "$MAIN_AHEAD" -gt 0 ]; then
|
|
67
|
-
BASE_SYNC="DIVERGED" # PROBLEME!
|
|
68
|
-
elif [ "$DEVELOP_AHEAD" -gt 0 ]; then
|
|
69
|
-
BASE_SYNC="RELEASE_NEEDED" # Normal
|
|
70
|
-
fi
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
**Si MAIN_AHEAD > 0 (main a des commits absents de develop):**
|
|
74
|
-
```bash
|
|
75
|
-
# Lister les commits divergents
|
|
76
|
-
git log origin/develop..origin/main --oneline
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
### Version
|
|
80
|
-
Read from configured source in [.claude/gitflow/config.json](.claude/gitflow/config.json):
|
|
81
|
-
- `versioning.source` → type (csproj, Directory.Build.props, AssemblyInfo, VERSION, git-tag, package.json)
|
|
82
|
-
- `versioning.sourceFile` → file path
|
|
83
|
-
- Read current version from THAT file (not from config.json)
|
|
84
|
-
|
|
85
|
-
Fallback si pas de config:
|
|
86
|
-
```bash
|
|
87
|
-
# package.json
|
|
88
|
-
VERSION=$(grep '"version"' package.json 2>/dev/null | head -1 | sed 's/.*: "\(.*\)".*/\1/')
|
|
89
|
-
# .csproj
|
|
90
|
-
[ -z "$VERSION" ] && VERSION=$(grep -oP '(?<=<Version>).*(?=</Version>)' *.csproj 2>/dev/null | head -1)
|
|
91
|
-
# VERSION file
|
|
92
|
-
[ -z "$VERSION" ] && VERSION=$(cat VERSION 2>/dev/null)
|
|
93
|
-
# Git tag
|
|
94
|
-
[ -z "$VERSION" ] && VERSION=$(git describe --tags --abbrev=0 2>/dev/null)
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### EF Core
|
|
98
|
-
- Lister les migrations (total et pending)
|
|
99
|
-
- Lister les DbContext detectes
|
|
100
|
-
|
|
101
|
-
### EF Core - Vue globale (toutes branches)
|
|
102
|
-
Si `--all-branches` ou si plusieurs branches GitFlow actives:
|
|
103
|
-
```bash
|
|
104
|
-
# Scanner les branches actives
|
|
105
|
-
FEATURES=$(git branch -r | grep 'feature/' | wc -l)
|
|
106
|
-
RELEASES=$(git branch -r | grep 'release/' | wc -l)
|
|
107
|
-
HOTFIXES=$(git branch -r | grep 'hotfix/' | wc -l)
|
|
108
|
-
|
|
109
|
-
# Pour chaque branche, detecter migrations ajoutees
|
|
110
|
-
for BRANCH in $(git branch -r | grep -E 'feature/|release/|hotfix/'); do
|
|
111
|
-
MIGRATIONS=$(git diff origin/develop..$BRANCH --name-only | grep -E "Migrations/.*\.cs$" | grep -v Designer | grep -v ModelSnapshot)
|
|
112
|
-
CONFLICT=$(git diff origin/develop..$BRANCH --name-only | grep "ModelSnapshot" | wc -l)
|
|
113
|
-
done
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
### Plans GitFlow
|
|
117
|
-
- Plans actifs (non termines)
|
|
118
|
-
- Plans termines recemment (7 jours)
|
|
119
|
-
|
|
120
|
-
### Operations en cours
|
|
121
|
-
- Rebase, merge, cherry-pick en cours?
|
|
122
|
-
- Conflits detectes?
|
|
123
|
-
|
|
124
|
-
### Risques
|
|
125
|
-
- **Divergence main/develop** (main a des commits absents de develop)
|
|
126
|
-
- Divergence > 5 commits vs develop
|
|
127
|
-
- Migrations non commitees
|
|
128
|
-
- ModelSnapshot modifie non commite
|
|
129
|
-
|
|
130
|
-
---
|
|
131
|
-
|
|
132
|
-
## Affichage
|
|
133
|
-
|
|
134
|
-
```
|
|
135
|
-
================================================================================
|
|
136
|
-
GITFLOW STATUS
|
|
137
|
-
================================================================================
|
|
138
|
-
|
|
139
|
-
BRANCHE: {branch} ({type}) | {clean|dirty}
|
|
140
|
-
VERSION: {version} ({source})
|
|
141
|
-
|
|
142
|
-
REMOTE SYNC
|
|
143
|
-
vs origin/{branch}: {UP-TO-DATE|AHEAD N|BEHIND N|DIVERGED|NO REMOTE}
|
|
144
|
-
|
|
145
|
-
--------------------------------------------------------------------------------
|
|
146
|
-
SYNC DEVELOP <-> MAIN
|
|
147
|
-
--------------------------------------------------------------------------------
|
|
148
|
-
develop → main: +{DEVELOP_AHEAD} commits {message}
|
|
149
|
-
main → develop: +{MAIN_AHEAD} commits {message}
|
|
150
|
-
|
|
151
|
-
{Si DEVELOP_AHEAD > 0 et MAIN_AHEAD == 0:}
|
|
152
|
-
✓ Normal: develop a {N} commits prets a releaser
|
|
153
|
-
→ Action: /gitflow:10-start release
|
|
154
|
-
|
|
155
|
-
{Si MAIN_AHEAD > 0:}
|
|
156
|
-
⚠️ ATTENTION: main contient {N} commits absents de develop!
|
|
157
|
-
|
|
158
|
-
Commits sur main non merges dans develop:
|
|
159
|
-
{git log origin/develop..origin/main --oneline}
|
|
160
|
-
|
|
161
|
-
Causes possibles:
|
|
162
|
-
- Hotfix non merge back dans develop
|
|
163
|
-
- Commit direct sur main (non recommande)
|
|
164
|
-
- Release mal finalisee
|
|
165
|
-
|
|
166
|
-
→ Actions:
|
|
167
|
-
1. Merger main dans develop: git merge origin/main
|
|
168
|
-
2. Ou via release: /gitflow:10-start release (reset main)
|
|
169
|
-
|
|
170
|
-
{Si DEVELOP_AHEAD == 0 et MAIN_AHEAD == 0:}
|
|
171
|
-
✓ Synchronise: develop et main sont identiques
|
|
172
|
-
--------------------------------------------------------------------------------
|
|
173
|
-
|
|
174
|
-
DERNIER TAG: {tag}
|
|
175
|
-
|
|
176
|
-
EF CORE (branche courante)
|
|
177
|
-
Migrations: {total} total, {pending} pending
|
|
178
|
-
[Pending] {liste}
|
|
179
|
-
|
|
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
|
|
187
|
-
|
|
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
|
-
--------------------------------------------------------------------------------
|
|
193
|
-
|
|
194
|
-
PLANS: {n} active | OPERATIONS: {none|rebase|merge} | RISKS: {liste}
|
|
195
|
-
|
|
196
|
-
================================================================================
|
|
197
|
-
Actions: /gitflow:13-sync | /gitflow:14-rebase | /gitflow:3-commit | /gitflow:4-plan
|
|
198
|
-
================================================================================
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
---
|
|
202
|
-
|
|
203
|
-
## Alertes Specifiques
|
|
204
|
-
|
|
205
|
-
### Alerte: main divergent de develop
|
|
206
|
-
|
|
207
|
-
```
|
|
208
|
-
╔══════════════════════════════════════════════════════════════════════════════╗
|
|
209
|
-
║ ⚠️ DIVERGENCE DETECTEE: main contient des commits absents de develop ║
|
|
210
|
-
╠══════════════════════════════════════════════════════════════════════════════╣
|
|
211
|
-
║ ║
|
|
212
|
-
║ Commits sur main non presents sur develop ({N}): ║
|
|
213
|
-
║ {hash1} {message1} ║
|
|
214
|
-
║ {hash2} {message2} ║
|
|
215
|
-
║ ... ║
|
|
216
|
-
║ ║
|
|
217
|
-
╠══════════════════════════════════════════════════════════════════════════════╣
|
|
218
|
-
║ RESOLUTIONS: ║
|
|
219
|
-
║ ║
|
|
220
|
-
║ Option 1 - Merger main dans develop (recommande): ║
|
|
221
|
-
║ git checkout develop && git merge origin/main ║
|
|
222
|
-
║ ║
|
|
223
|
-
║ Option 2 - Via la prochaine release: ║
|
|
224
|
-
║ /gitflow:10-start release ║
|
|
225
|
-
║ (La release peut reset main si necessaire) ║
|
|
226
|
-
║ ║
|
|
227
|
-
║ Option 3 - Cherry-pick selectif: ║
|
|
228
|
-
║ git cherry-pick {hash} ║
|
|
229
|
-
║ ║
|
|
230
|
-
╚══════════════════════════════════════════════════════════════════════════════╝
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
### Alerte: Release recommandee
|
|
234
|
-
|
|
235
|
-
```
|
|
236
|
-
┌──────────────────────────────────────────────────────────────────────────────┐
|
|
237
|
-
│ ℹ️ RELEASE RECOMMANDEE │
|
|
238
|
-
├──────────────────────────────────────────────────────────────────────────────┤
|
|
239
|
-
│ develop a {N} commits en avance de main. │
|
|
240
|
-
│ → /gitflow:10-start release │
|
|
241
|
-
└──────────────────────────────────────────────────────────────────────────────┘
|
|
242
|
-
```
|
|
243
|
-
|
|
244
|
-
---
|
|
245
|
-
|
|
246
|
-
## Modes
|
|
247
|
-
|
|
248
|
-
| Mode | Output |
|
|
249
|
-
|------|--------|
|
|
250
|
-
| Normal | Affichage complet |
|
|
251
|
-
| `--short` | `[branch] status \| vX.Y.Z \| dev→main:+X \| main→dev:+Y` |
|
|
252
|
-
| `--json` | JSON structure |
|
|
253
|
-
|
|
254
|
-
## Codes sortie
|
|
255
|
-
|
|
256
|
-
| Code | Signification |
|
|
257
|
-
|------|---------------|
|
|
258
|
-
| 0 | OK (synchronise ou release needed) |
|
|
259
|
-
| 1 | Warnings (pending, release recommandee) |
|
|
260
|
-
| 2 | Problemes (divergence main/develop, conflits, operation en cours) |
|
|
261
|
-
| 3 | Erreur (pas repo, no config) |
|
|
262
|
-
|
|
263
|
-
## Actions suggerees
|
|
264
|
-
|
|
265
|
-
| Etat | Commande Claude Code |
|
|
266
|
-
|------|----------------------|
|
|
267
|
-
| AHEAD N (push needed) | `/gitflow:13-sync` |
|
|
268
|
-
| BEHIND N (pull needed) | `/gitflow:13-sync` |
|
|
269
|
-
| DIVERGED local/remote | `/gitflow:13-sync` |
|
|
270
|
-
| NO REMOTE (not pushed yet) | `/gitflow:13-sync` |
|
|
271
|
-
| **main ahead of develop** | `git merge origin/main` ou `/gitflow:10-start release` |
|
|
272
|
-
| develop ahead of main | `/gitflow:10-start release` |
|
|
273
|
-
| Divergence > 5 vs develop | `/gitflow:14-rebase` |
|
|
274
|
-
| Pending migrations | `/efcore:db-deploy` |
|
|
275
|
-
| Dirty workdir | `/gitflow:3-commit` |
|
|
276
|
-
| Operation en cours | `/gitflow:6-abort` |
|
|
277
|
-
| No config | `/gitflow:1-init` |
|
|
1
|
+
---
|
|
2
|
+
description: Phase 2 - Display GitFlow state with versioning and EF Core details
|
|
3
|
+
agent: gitflow-status
|
|
4
|
+
model: haiku
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Phase 2: STATUS - Overview
|
|
8
|
+
|
|
9
|
+
Tu es expert GitFlow et EF Core. Affiche l'etat complet du projet.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Informations a collecter
|
|
14
|
+
|
|
15
|
+
### Git
|
|
16
|
+
- Branche courante et type (feature/release/hotfix/develop/main)
|
|
17
|
+
- Etat working directory (clean/dirty)
|
|
18
|
+
- Synchronisation locale vs remote (push/pull needed)
|
|
19
|
+
- Synchronisation vs develop et main (commits ahead/behind)
|
|
20
|
+
- Dernier tag
|
|
21
|
+
|
|
22
|
+
### Sync Local vs Remote
|
|
23
|
+
```bash
|
|
24
|
+
# Fetch pour avoir les infos a jour (sans modifier le working directory)
|
|
25
|
+
git fetch --quiet 2>/dev/null
|
|
26
|
+
|
|
27
|
+
# Verifier si la branche a un remote tracking
|
|
28
|
+
UPSTREAM=$(git rev-parse --abbrev-ref @{upstream} 2>/dev/null)
|
|
29
|
+
|
|
30
|
+
if [ -n "$UPSTREAM" ]; then
|
|
31
|
+
# Comparer local vs remote
|
|
32
|
+
LOCAL=$(git rev-parse @)
|
|
33
|
+
REMOTE=$(git rev-parse @{upstream})
|
|
34
|
+
BASE=$(git merge-base @ @{upstream})
|
|
35
|
+
|
|
36
|
+
if [ "$LOCAL" = "$REMOTE" ]; then
|
|
37
|
+
SYNC_STATUS="UP-TO-DATE"
|
|
38
|
+
elif [ "$LOCAL" = "$BASE" ]; then
|
|
39
|
+
BEHIND=$(git rev-list --count @..@{upstream})
|
|
40
|
+
SYNC_STATUS="BEHIND $BEHIND (pull needed)"
|
|
41
|
+
elif [ "$REMOTE" = "$BASE" ]; then
|
|
42
|
+
AHEAD=$(git rev-list --count @{upstream}..@)
|
|
43
|
+
SYNC_STATUS="AHEAD $AHEAD (push needed)"
|
|
44
|
+
else
|
|
45
|
+
AHEAD=$(git rev-list --count @{upstream}..@)
|
|
46
|
+
BEHIND=$(git rev-list --count @..@{upstream})
|
|
47
|
+
SYNC_STATUS="DIVERGED +$AHEAD/-$BEHIND (pull --rebase needed)"
|
|
48
|
+
fi
|
|
49
|
+
else
|
|
50
|
+
SYNC_STATUS="NO REMOTE (not pushed yet)"
|
|
51
|
+
fi
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Sync develop vs main (CRITIQUE)
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
# Commits sur develop absents de main (normal - a releaser)
|
|
58
|
+
DEVELOP_AHEAD=$(git rev-list --count origin/main..origin/develop 2>/dev/null || echo "0")
|
|
59
|
+
|
|
60
|
+
# Commits sur main absents de develop (ANORMAL - hotfix non merge back?)
|
|
61
|
+
MAIN_AHEAD=$(git rev-list --count origin/develop..origin/main 2>/dev/null || echo "0")
|
|
62
|
+
|
|
63
|
+
# Determiner l'etat de synchronisation
|
|
64
|
+
if [ "$DEVELOP_AHEAD" -eq 0 ] && [ "$MAIN_AHEAD" -eq 0 ]; then
|
|
65
|
+
BASE_SYNC="SYNCHRONIZED"
|
|
66
|
+
elif [ "$MAIN_AHEAD" -gt 0 ]; then
|
|
67
|
+
BASE_SYNC="DIVERGED" # PROBLEME!
|
|
68
|
+
elif [ "$DEVELOP_AHEAD" -gt 0 ]; then
|
|
69
|
+
BASE_SYNC="RELEASE_NEEDED" # Normal
|
|
70
|
+
fi
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**Si MAIN_AHEAD > 0 (main a des commits absents de develop):**
|
|
74
|
+
```bash
|
|
75
|
+
# Lister les commits divergents
|
|
76
|
+
git log origin/develop..origin/main --oneline
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Version
|
|
80
|
+
Read from configured source in [.claude/gitflow/config.json](.claude/gitflow/config.json):
|
|
81
|
+
- `versioning.source` → type (csproj, Directory.Build.props, AssemblyInfo, VERSION, git-tag, package.json)
|
|
82
|
+
- `versioning.sourceFile` → file path
|
|
83
|
+
- Read current version from THAT file (not from config.json)
|
|
84
|
+
|
|
85
|
+
Fallback si pas de config:
|
|
86
|
+
```bash
|
|
87
|
+
# package.json
|
|
88
|
+
VERSION=$(grep '"version"' package.json 2>/dev/null | head -1 | sed 's/.*: "\(.*\)".*/\1/')
|
|
89
|
+
# .csproj
|
|
90
|
+
[ -z "$VERSION" ] && VERSION=$(grep -oP '(?<=<Version>).*(?=</Version>)' *.csproj 2>/dev/null | head -1)
|
|
91
|
+
# VERSION file
|
|
92
|
+
[ -z "$VERSION" ] && VERSION=$(cat VERSION 2>/dev/null)
|
|
93
|
+
# Git tag
|
|
94
|
+
[ -z "$VERSION" ] && VERSION=$(git describe --tags --abbrev=0 2>/dev/null)
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### EF Core
|
|
98
|
+
- Lister les migrations (total et pending)
|
|
99
|
+
- Lister les DbContext detectes
|
|
100
|
+
|
|
101
|
+
### EF Core - Vue globale (toutes branches)
|
|
102
|
+
Si `--all-branches` ou si plusieurs branches GitFlow actives:
|
|
103
|
+
```bash
|
|
104
|
+
# Scanner les branches actives
|
|
105
|
+
FEATURES=$(git branch -r | grep 'feature/' | wc -l)
|
|
106
|
+
RELEASES=$(git branch -r | grep 'release/' | wc -l)
|
|
107
|
+
HOTFIXES=$(git branch -r | grep 'hotfix/' | wc -l)
|
|
108
|
+
|
|
109
|
+
# Pour chaque branche, detecter migrations ajoutees
|
|
110
|
+
for BRANCH in $(git branch -r | grep -E 'feature/|release/|hotfix/'); do
|
|
111
|
+
MIGRATIONS=$(git diff origin/develop..$BRANCH --name-only | grep -E "Migrations/.*\.cs$" | grep -v Designer | grep -v ModelSnapshot)
|
|
112
|
+
CONFLICT=$(git diff origin/develop..$BRANCH --name-only | grep "ModelSnapshot" | wc -l)
|
|
113
|
+
done
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Plans GitFlow
|
|
117
|
+
- Plans actifs (non termines)
|
|
118
|
+
- Plans termines recemment (7 jours)
|
|
119
|
+
|
|
120
|
+
### Operations en cours
|
|
121
|
+
- Rebase, merge, cherry-pick en cours?
|
|
122
|
+
- Conflits detectes?
|
|
123
|
+
|
|
124
|
+
### Risques
|
|
125
|
+
- **Divergence main/develop** (main a des commits absents de develop)
|
|
126
|
+
- Divergence > 5 commits vs develop
|
|
127
|
+
- Migrations non commitees
|
|
128
|
+
- ModelSnapshot modifie non commite
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Affichage
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
================================================================================
|
|
136
|
+
GITFLOW STATUS
|
|
137
|
+
================================================================================
|
|
138
|
+
|
|
139
|
+
BRANCHE: {branch} ({type}) | {clean|dirty}
|
|
140
|
+
VERSION: {version} ({source})
|
|
141
|
+
|
|
142
|
+
REMOTE SYNC
|
|
143
|
+
vs origin/{branch}: {UP-TO-DATE|AHEAD N|BEHIND N|DIVERGED|NO REMOTE}
|
|
144
|
+
|
|
145
|
+
--------------------------------------------------------------------------------
|
|
146
|
+
SYNC DEVELOP <-> MAIN
|
|
147
|
+
--------------------------------------------------------------------------------
|
|
148
|
+
develop → main: +{DEVELOP_AHEAD} commits {message}
|
|
149
|
+
main → develop: +{MAIN_AHEAD} commits {message}
|
|
150
|
+
|
|
151
|
+
{Si DEVELOP_AHEAD > 0 et MAIN_AHEAD == 0:}
|
|
152
|
+
✓ Normal: develop a {N} commits prets a releaser
|
|
153
|
+
→ Action: /gitflow:10-start release
|
|
154
|
+
|
|
155
|
+
{Si MAIN_AHEAD > 0:}
|
|
156
|
+
⚠️ ATTENTION: main contient {N} commits absents de develop!
|
|
157
|
+
|
|
158
|
+
Commits sur main non merges dans develop:
|
|
159
|
+
{git log origin/develop..origin/main --oneline}
|
|
160
|
+
|
|
161
|
+
Causes possibles:
|
|
162
|
+
- Hotfix non merge back dans develop
|
|
163
|
+
- Commit direct sur main (non recommande)
|
|
164
|
+
- Release mal finalisee
|
|
165
|
+
|
|
166
|
+
→ Actions:
|
|
167
|
+
1. Merger main dans develop: git merge origin/main
|
|
168
|
+
2. Ou via release: /gitflow:10-start release (reset main)
|
|
169
|
+
|
|
170
|
+
{Si DEVELOP_AHEAD == 0 et MAIN_AHEAD == 0:}
|
|
171
|
+
✓ Synchronise: develop et main sont identiques
|
|
172
|
+
--------------------------------------------------------------------------------
|
|
173
|
+
|
|
174
|
+
DERNIER TAG: {tag}
|
|
175
|
+
|
|
176
|
+
EF CORE (branche courante)
|
|
177
|
+
Migrations: {total} total, {pending} pending
|
|
178
|
+
[Pending] {liste}
|
|
179
|
+
|
|
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
|
|
187
|
+
|
|
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
|
+
--------------------------------------------------------------------------------
|
|
193
|
+
|
|
194
|
+
PLANS: {n} active | OPERATIONS: {none|rebase|merge} | RISKS: {liste}
|
|
195
|
+
|
|
196
|
+
================================================================================
|
|
197
|
+
Actions: /gitflow:13-sync | /gitflow:14-rebase | /gitflow:3-commit | /gitflow:4-plan
|
|
198
|
+
================================================================================
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## Alertes Specifiques
|
|
204
|
+
|
|
205
|
+
### Alerte: main divergent de develop
|
|
206
|
+
|
|
207
|
+
```
|
|
208
|
+
╔══════════════════════════════════════════════════════════════════════════════╗
|
|
209
|
+
║ ⚠️ DIVERGENCE DETECTEE: main contient des commits absents de develop ║
|
|
210
|
+
╠══════════════════════════════════════════════════════════════════════════════╣
|
|
211
|
+
║ ║
|
|
212
|
+
║ Commits sur main non presents sur develop ({N}): ║
|
|
213
|
+
║ {hash1} {message1} ║
|
|
214
|
+
║ {hash2} {message2} ║
|
|
215
|
+
║ ... ║
|
|
216
|
+
║ ║
|
|
217
|
+
╠══════════════════════════════════════════════════════════════════════════════╣
|
|
218
|
+
║ RESOLUTIONS: ║
|
|
219
|
+
║ ║
|
|
220
|
+
║ Option 1 - Merger main dans develop (recommande): ║
|
|
221
|
+
║ git checkout develop && git merge origin/main ║
|
|
222
|
+
║ ║
|
|
223
|
+
║ Option 2 - Via la prochaine release: ║
|
|
224
|
+
║ /gitflow:10-start release ║
|
|
225
|
+
║ (La release peut reset main si necessaire) ║
|
|
226
|
+
║ ║
|
|
227
|
+
║ Option 3 - Cherry-pick selectif: ║
|
|
228
|
+
║ git cherry-pick {hash} ║
|
|
229
|
+
║ ║
|
|
230
|
+
╚══════════════════════════════════════════════════════════════════════════════╝
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### Alerte: Release recommandee
|
|
234
|
+
|
|
235
|
+
```
|
|
236
|
+
┌──────────────────────────────────────────────────────────────────────────────┐
|
|
237
|
+
│ ℹ️ RELEASE RECOMMANDEE │
|
|
238
|
+
├──────────────────────────────────────────────────────────────────────────────┤
|
|
239
|
+
│ develop a {N} commits en avance de main. │
|
|
240
|
+
│ → /gitflow:10-start release │
|
|
241
|
+
└──────────────────────────────────────────────────────────────────────────────┘
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
## Modes
|
|
247
|
+
|
|
248
|
+
| Mode | Output |
|
|
249
|
+
|------|--------|
|
|
250
|
+
| Normal | Affichage complet |
|
|
251
|
+
| `--short` | `[branch] status \| vX.Y.Z \| dev→main:+X \| main→dev:+Y` |
|
|
252
|
+
| `--json` | JSON structure |
|
|
253
|
+
|
|
254
|
+
## Codes sortie
|
|
255
|
+
|
|
256
|
+
| Code | Signification |
|
|
257
|
+
|------|---------------|
|
|
258
|
+
| 0 | OK (synchronise ou release needed) |
|
|
259
|
+
| 1 | Warnings (pending, release recommandee) |
|
|
260
|
+
| 2 | Problemes (divergence main/develop, conflits, operation en cours) |
|
|
261
|
+
| 3 | Erreur (pas repo, no config) |
|
|
262
|
+
|
|
263
|
+
## Actions suggerees
|
|
264
|
+
|
|
265
|
+
| Etat | Commande Claude Code |
|
|
266
|
+
|------|----------------------|
|
|
267
|
+
| AHEAD N (push needed) | `/gitflow:13-sync` |
|
|
268
|
+
| BEHIND N (pull needed) | `/gitflow:13-sync` |
|
|
269
|
+
| DIVERGED local/remote | `/gitflow:13-sync` |
|
|
270
|
+
| NO REMOTE (not pushed yet) | `/gitflow:13-sync` |
|
|
271
|
+
| **main ahead of develop** | `git merge origin/main` ou `/gitflow:10-start release` |
|
|
272
|
+
| develop ahead of main | `/gitflow:10-start release` |
|
|
273
|
+
| Divergence > 5 vs develop | `/gitflow:14-rebase` |
|
|
274
|
+
| Pending migrations | `/efcore:db-deploy` |
|
|
275
|
+
| Dirty workdir | `/gitflow:3-commit` |
|
|
276
|
+
| Operation en cours | `/gitflow:6-abort` |
|
|
277
|
+
| No config | `/gitflow:1-init` |
|