@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.
Files changed (147) hide show
  1. package/.documentation/css/styles.css +2168 -2168
  2. package/.documentation/js/app.js +794 -794
  3. package/config/default-config.json +86 -86
  4. package/config/settings.json +53 -53
  5. package/config/settings.local.example.json +16 -16
  6. package/dist/index.js +0 -0
  7. package/dist/index.js.map +1 -1
  8. package/package.json +88 -88
  9. package/templates/agents/action.md +36 -36
  10. package/templates/agents/efcore/conflicts.md +84 -84
  11. package/templates/agents/efcore/db-deploy.md +51 -51
  12. package/templates/agents/efcore/db-reset.md +59 -59
  13. package/templates/agents/efcore/db-seed.md +56 -56
  14. package/templates/agents/efcore/db-status.md +64 -64
  15. package/templates/agents/efcore/migration.md +85 -85
  16. package/templates/agents/efcore/rebase-snapshot.md +62 -62
  17. package/templates/agents/efcore/scan.md +90 -90
  18. package/templates/agents/efcore/squash.md +67 -67
  19. package/templates/agents/explore-codebase.md +65 -65
  20. package/templates/agents/explore-docs.md +97 -97
  21. package/templates/agents/fix-grammar.md +49 -49
  22. package/templates/agents/gitflow/abort.md +45 -45
  23. package/templates/agents/gitflow/cleanup.md +85 -85
  24. package/templates/agents/gitflow/commit.md +40 -40
  25. package/templates/agents/gitflow/exec.md +48 -48
  26. package/templates/agents/gitflow/finish.md +92 -92
  27. package/templates/agents/gitflow/init.md +139 -139
  28. package/templates/agents/gitflow/merge.md +62 -62
  29. package/templates/agents/gitflow/plan.md +42 -42
  30. package/templates/agents/gitflow/pr.md +78 -78
  31. package/templates/agents/gitflow/review.md +49 -49
  32. package/templates/agents/gitflow/start.md +61 -61
  33. package/templates/agents/gitflow/status.md +32 -32
  34. package/templates/agents/snipper.md +36 -36
  35. package/templates/agents/websearch.md +46 -46
  36. package/templates/commands/_resources/formatting-guide.md +124 -124
  37. package/templates/commands/ai-prompt.md +315 -315
  38. package/templates/commands/apex/1-analyze.md +100 -100
  39. package/templates/commands/apex/2-plan.md +145 -145
  40. package/templates/commands/apex/3-execute.md +171 -171
  41. package/templates/commands/apex/4-examine.md +116 -116
  42. package/templates/commands/apex/5-tasks.md +209 -209
  43. package/templates/commands/apex.md +76 -76
  44. package/templates/commands/application/create.md +362 -362
  45. package/templates/commands/application/templates-backend.md +463 -463
  46. package/templates/commands/application/templates-frontend.md +517 -517
  47. package/templates/commands/application/templates-i18n.md +478 -478
  48. package/templates/commands/application/templates-seed.md +362 -362
  49. package/templates/commands/application.md +303 -303
  50. package/templates/commands/business-analyse/0-orchestrate.md +640 -640
  51. package/templates/commands/business-analyse/1-init.md +269 -269
  52. package/templates/commands/business-analyse/2-discover.md +520 -520
  53. package/templates/commands/business-analyse/3-analyse.md +408 -408
  54. package/templates/commands/business-analyse/4-specify.md +598 -598
  55. package/templates/commands/business-analyse/5-validate.md +326 -326
  56. package/templates/commands/business-analyse/6-handoff.md +746 -746
  57. package/templates/commands/business-analyse/7-doc-html.md +602 -602
  58. package/templates/commands/business-analyse/bug.md +325 -325
  59. package/templates/commands/business-analyse/change-request.md +368 -368
  60. package/templates/commands/business-analyse/hotfix.md +200 -200
  61. package/templates/commands/business-analyse.md +640 -640
  62. package/templates/commands/controller/create.md +216 -216
  63. package/templates/commands/controller/postman-templates.md +528 -528
  64. package/templates/commands/controller/templates.md +600 -600
  65. package/templates/commands/controller.md +337 -337
  66. package/templates/commands/create/agent.md +138 -138
  67. package/templates/commands/create/command.md +166 -166
  68. package/templates/commands/create/hook.md +234 -234
  69. package/templates/commands/create/plugin.md +329 -329
  70. package/templates/commands/create/project.md +507 -507
  71. package/templates/commands/create/skill.md +199 -199
  72. package/templates/commands/create.md +220 -220
  73. package/templates/commands/debug.md +95 -95
  74. package/templates/commands/documentation/module.md +202 -202
  75. package/templates/commands/documentation/templates.md +432 -432
  76. package/templates/commands/documentation.md +190 -190
  77. package/templates/commands/efcore/_env-check.md +153 -153
  78. package/templates/commands/efcore/conflicts.md +186 -186
  79. package/templates/commands/efcore/db-deploy.md +193 -193
  80. package/templates/commands/efcore/db-reset.md +426 -426
  81. package/templates/commands/efcore/db-seed.md +326 -326
  82. package/templates/commands/efcore/db-status.md +226 -226
  83. package/templates/commands/efcore/migration.md +400 -400
  84. package/templates/commands/efcore/rebase-snapshot.md +264 -264
  85. package/templates/commands/efcore/scan.md +198 -198
  86. package/templates/commands/efcore/squash.md +298 -298
  87. package/templates/commands/efcore.md +224 -224
  88. package/templates/commands/epct.md +69 -69
  89. package/templates/commands/explain.md +186 -186
  90. package/templates/commands/explore.md +45 -45
  91. package/templates/commands/feature-full.md +267 -267
  92. package/templates/commands/gitflow/1-init.md +1038 -1038
  93. package/templates/commands/gitflow/10-start.md +768 -768
  94. package/templates/commands/gitflow/11-finish.md +457 -457
  95. package/templates/commands/gitflow/12-cleanup.md +276 -276
  96. package/templates/commands/gitflow/13-sync.md +216 -216
  97. package/templates/commands/gitflow/14-rebase.md +251 -251
  98. package/templates/commands/gitflow/2-status.md +277 -277
  99. package/templates/commands/gitflow/3-commit.md +344 -344
  100. package/templates/commands/gitflow/4-plan.md +145 -145
  101. package/templates/commands/gitflow/5-exec.md +147 -147
  102. package/templates/commands/gitflow/6-abort.md +344 -344
  103. package/templates/commands/gitflow/7-pull-request.md +453 -355
  104. package/templates/commands/gitflow/8-review.md +240 -176
  105. package/templates/commands/gitflow/9-merge.md +451 -365
  106. package/templates/commands/gitflow.md +128 -128
  107. package/templates/commands/implement.md +663 -663
  108. package/templates/commands/init.md +567 -567
  109. package/templates/commands/mcp-integration.md +330 -330
  110. package/templates/commands/notification.md +129 -129
  111. package/templates/commands/oneshot.md +57 -57
  112. package/templates/commands/quick-search.md +72 -72
  113. package/templates/commands/ralph-loop/cancel-ralph.md +18 -18
  114. package/templates/commands/ralph-loop/help.md +126 -126
  115. package/templates/commands/ralph-loop/ralph-loop.md +18 -18
  116. package/templates/commands/review.md +106 -106
  117. package/templates/commands/utils/test-web-config.md +160 -160
  118. package/templates/commands/utils/test-web.md +151 -151
  119. package/templates/commands/validate.md +233 -233
  120. package/templates/commands/workflow.md +193 -193
  121. package/templates/gitflow/config.json +138 -138
  122. package/templates/hooks/ef-migration-check.md +139 -139
  123. package/templates/hooks/hooks.json +25 -25
  124. package/templates/hooks/stop-hook.sh +177 -177
  125. package/templates/skills/ai-prompt/SKILL.md +778 -778
  126. package/templates/skills/application/SKILL.md +563 -563
  127. package/templates/skills/application/templates-backend.md +450 -450
  128. package/templates/skills/application/templates-frontend.md +531 -531
  129. package/templates/skills/application/templates-i18n.md +520 -520
  130. package/templates/skills/application/templates-seed.md +647 -647
  131. package/templates/skills/business-analyse/SKILL.md +191 -191
  132. package/templates/skills/business-analyse/questionnaire.md +283 -283
  133. package/templates/skills/business-analyse/templates-frd.md +477 -477
  134. package/templates/skills/business-analyse/templates-react.md +580 -580
  135. package/templates/skills/controller/SKILL.md +240 -240
  136. package/templates/skills/controller/postman-templates.md +614 -614
  137. package/templates/skills/controller/templates.md +1468 -1468
  138. package/templates/skills/documentation/SKILL.md +133 -133
  139. package/templates/skills/documentation/templates.md +476 -476
  140. package/templates/skills/feature-full/SKILL.md +838 -838
  141. package/templates/skills/notification/SKILL.md +555 -555
  142. package/templates/skills/ui-components/SKILL.md +870 -870
  143. package/templates/skills/workflow/SKILL.md +582 -582
  144. package/templates/test-web/api-health.json +38 -38
  145. package/templates/test-web/minimal.json +19 -19
  146. package/templates/test-web/npm-package.json +46 -46
  147. package/templates/test-web/seo-check.json +54 -54
@@ -1,276 +1,276 @@
1
- ---
2
- description: Phase 12 - Cleanup worktrees and orphan branches (audit and remove)
3
- agent: gitflow-cleanup
4
- model: sonnet
5
- ---
6
-
7
- # Phase 12: CLEANUP - Audit et nettoyage des worktrees
8
-
9
- Tu es expert GitFlow. Audite et nettoie les worktrees orphelins ou obsoletes.
10
-
11
- **Argument:** `$ARGUMENTS` = options (--dry-run, --force, --stale-days=N)
12
-
13
- ---
14
-
15
- ## Prerequis
16
-
17
- **IMPORTANT:** Cette commande doit etre executee depuis `main` ou `develop` uniquement.
18
-
19
- ```bash
20
- CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
21
- if [[ "$CURRENT_BRANCH" != "main" && "$CURRENT_BRANCH" != "develop" ]]; then
22
- echo "⚠️ ERREUR: Cette commande doit etre executee depuis main ou develop"
23
- echo "Branche courante: $CURRENT_BRANCH"
24
- echo ""
25
- echo "Executez: git checkout develop && /gitflow:12-cleanup"
26
- exit 1
27
- fi
28
- ```
29
-
30
- ---
31
-
32
- ## Workflow
33
-
34
- ### 1. Collecter les informations
35
-
36
- ```bash
37
- # Lister tous les worktrees
38
- git worktree list --porcelain
39
-
40
- # Lister toutes les branches locales
41
- git branch -a
42
-
43
- # Lister les branches remote
44
- git fetch --prune
45
- git branch -r
46
- ```
47
-
48
- ### 2. Analyser chaque worktree
49
-
50
- Pour chaque worktree detecte:
51
-
52
- | Verification | Condition | Status |
53
- |--------------|-----------|--------|
54
- | Branche existe localement | `git branch --list $BRANCH` | ✓ Active / ✗ Orphelin |
55
- | Branche existe sur remote | `git branch -r --list origin/$BRANCH` | ✓ Trackee / ✗ Locale only |
56
- | Derniere activite | `git log -1 --format=%ci $BRANCH` | Date dernier commit |
57
- | Modifications non commitees | `git -C $WORKTREE status --porcelain` | ✓ Clean / ⚠️ Dirty |
58
-
59
- ### 3. Categoriser les worktrees
60
-
61
- ```
62
- AUDIT WORKTREES
63
- ═══════════════════════════════════════════════════════════════
64
-
65
- 📁 Worktrees permanents (proteges):
66
- ✓ ../worktrees/main → main
67
- ✓ ../worktrees/develop → develop
68
-
69
- 📁 Worktrees actifs:
70
- ✓ ../worktrees/features/xxx → feature/xxx (3 jours)
71
- ✓ ../worktrees/releases/v2 → release/v2.0.0 (1 jour)
72
-
73
- ⚠️ Worktrees orphelins (branche supprimee):
74
- ✗ ../worktrees/features/old → feature/old (BRANCHE INEXISTANTE)
75
- ✗ ../worktrees/hotfixes/fix → hotfix/fix (BRANCHE INEXISTANTE)
76
-
77
- ⏰ Worktrees stale (inactifs > {N} jours):
78
- ⚠ ../worktrees/features/abc → feature/abc (45 jours sans commit)
79
-
80
- 💾 Worktrees dirty (modifications non commitees):
81
- ⚠ ../worktrees/features/wip → feature/wip (fichiers modifies)
82
-
83
- ═══════════════════════════════════════════════════════════════
84
- ```
85
-
86
- ---
87
-
88
- ## Actions proposees
89
-
90
- ### Mode par defaut (interactif)
91
-
92
- ```
93
- ACTIONS PROPOSEES
94
- ═══════════════════════════════════════════════════════════════
95
-
96
- Orphelins a supprimer:
97
- [1] ../worktrees/features/old (branche inexistante)
98
- [2] ../worktrees/hotfixes/fix (branche inexistante)
99
-
100
- Stale a examiner (> 30 jours):
101
- [3] ../worktrees/features/abc (45 jours)
102
-
103
- Options:
104
- [A] Supprimer tous les orphelins
105
- [S] Supprimer tous les stale
106
- [1-N] Supprimer individuellement
107
- [D] Details sur un worktree
108
- [Q] Quitter sans action
109
-
110
- Choix: _
111
- ═══════════════════════════════════════════════════════════════
112
- ```
113
-
114
- ### Mode --dry-run
115
-
116
- Affiche uniquement l'audit sans proposer d'actions.
117
-
118
- ### Mode --force
119
-
120
- Supprime automatiquement tous les orphelins sans confirmation.
121
-
122
- ---
123
-
124
- ## Suppression d'un worktree
125
-
126
- ```bash
127
- # Verifier si dirty
128
- if [ -n "$(git -C $WORKTREE_PATH status --porcelain)" ]; then
129
- echo "⚠️ Worktree dirty - modifications non commitees"
130
- echo "Utilisez --force pour supprimer quand meme"
131
- exit 1
132
- fi
133
-
134
- # Supprimer le worktree
135
- git worktree remove "$WORKTREE_PATH" --force
136
-
137
- # Nettoyer le dossier si reste
138
- rm -rf "$WORKTREE_PATH" 2>/dev/null || true
139
-
140
- # Pruner les worktrees
141
- git worktree prune
142
- ```
143
-
144
- ---
145
-
146
- ## Detection des dossiers orphelins
147
-
148
- En plus des worktrees git, detecter les dossiers qui ne sont plus lies:
149
-
150
- ```bash
151
- # Lister les worktrees connus
152
- KNOWN_WORKTREES=$(git worktree list --porcelain | grep "^worktree " | sed 's/worktree //')
153
-
154
- # Scanner les dossiers de worktrees
155
- WORKTREE_BASE="../worktrees"
156
- for TYPE in features releases hotfixes; do
157
- for DIR in "$WORKTREE_BASE/$TYPE"/*; do
158
- if [ -d "$DIR" ]; then
159
- # Verifier si c'est un worktree connu
160
- if ! echo "$KNOWN_WORKTREES" | grep -q "$DIR"; then
161
- echo "⚠️ Dossier orphelin: $DIR"
162
- fi
163
- fi
164
- done
165
- done
166
- ```
167
-
168
- ---
169
-
170
- ## Resume final
171
-
172
- ```
173
- CLEANUP COMPLETE
174
- ═══════════════════════════════════════════════════════════════
175
-
176
- Worktrees analyses: {total}
177
- Permanents (proteges): {n_permanent}
178
- Actifs: {n_active}
179
- Supprimes: {n_deleted}
180
- - Orphelins: {n_orphan}
181
- - Stale: {n_stale}
182
- Ignores (dirty): {n_dirty}
183
-
184
- Espace libere: ~{size} MB
185
-
186
- Dossiers orphelins: {n_orphan_dirs}
187
- - Supprimes: {n_orphan_dirs_deleted}
188
-
189
- ═══════════════════════════════════════════════════════════════
190
- Environnement propre!
191
- ```
192
-
193
- ---
194
-
195
- ## Modes
196
-
197
- | Commande | Action |
198
- |----------|--------|
199
- | `/gitflow:12-cleanup` | Audit interactif avec propositions |
200
- | `/gitflow:12-cleanup --dry-run` | Audit seul, aucune action |
201
- | `/gitflow:12-cleanup --force` | Supprime tous les orphelins automatiquement |
202
- | `/gitflow:12-cleanup --stale-days=30` | Seuil pour worktrees stale (defaut: 30) |
203
- | `/gitflow:12-cleanup --include-stale` | Inclut les stale dans la suppression auto |
204
- | `/gitflow:12-cleanup --verbose` | Affiche les details de chaque worktree |
205
-
206
- ---
207
-
208
- ## Integration automatique
209
-
210
- Cette commande est appelee automatiquement par:
211
- - `/gitflow:11-finish` → Apres finalisation d'une branche
212
- - `/gitflow:6-abort --branch` → Apres abandon d'une branche
213
-
214
- Dans ces cas, seul le worktree de la branche concernee est nettoye (cleanup cible).
215
-
216
- ---
217
-
218
- ## Cleanup cible (usage interne)
219
-
220
- Quand appelee depuis finish/abort avec une branche specifique:
221
-
222
- ```bash
223
- # Usage interne
224
- cleanup_worktree_for_branch() {
225
- BRANCH=$1
226
- WORKTREE_BASE="../worktrees"
227
-
228
- # Determiner le chemin selon le type
229
- if [[ $BRANCH == feature/* ]]; then
230
- NAME=${BRANCH#feature/}
231
- WORKTREE_PATH="$WORKTREE_BASE/features/$NAME"
232
- elif [[ $BRANCH == release/* ]]; then
233
- VERSION=${BRANCH#release/}
234
- WORKTREE_PATH="$WORKTREE_BASE/releases/$VERSION"
235
- elif [[ $BRANCH == hotfix/* ]]; then
236
- NAME=${BRANCH#hotfix/}
237
- WORKTREE_PATH="$WORKTREE_BASE/hotfixes/$NAME"
238
- fi
239
-
240
- # Supprimer si existe
241
- if [ -d "$WORKTREE_PATH" ]; then
242
- git worktree remove "$WORKTREE_PATH" --force 2>/dev/null || true
243
- rm -rf "$WORKTREE_PATH" 2>/dev/null || true
244
- git worktree prune
245
- echo "✓ Worktree nettoye: $WORKTREE_PATH"
246
- fi
247
- }
248
- ```
249
-
250
- ---
251
-
252
- ## Logs
253
-
254
- Chaque cleanup est logue dans `.claude/gitflow/logs/cleanup_{timestamp}.json`:
255
-
256
- ```json
257
- {
258
- "timestamp": "{ISO_DATE}",
259
- "type": "cleanup",
260
- "mode": "interactive|dry-run|force|targeted",
261
- "branch": "{main|develop}",
262
- "worktrees": {
263
- "analyzed": {n},
264
- "deleted": [
265
- { "path": "...", "branch": "...", "reason": "orphan|stale" }
266
- ],
267
- "skipped": [
268
- { "path": "...", "branch": "...", "reason": "dirty|active|permanent" }
269
- ]
270
- },
271
- "orphan_dirs": {
272
- "found": {n},
273
- "deleted": {n}
274
- }
275
- }
276
- ```
1
+ ---
2
+ description: Phase 12 - Cleanup worktrees and orphan branches (audit and remove)
3
+ agent: gitflow-cleanup
4
+ model: sonnet
5
+ ---
6
+
7
+ # Phase 12: CLEANUP - Audit et nettoyage des worktrees
8
+
9
+ Tu es expert GitFlow. Audite et nettoie les worktrees orphelins ou obsoletes.
10
+
11
+ **Argument:** `$ARGUMENTS` = options (--dry-run, --force, --stale-days=N)
12
+
13
+ ---
14
+
15
+ ## Prerequis
16
+
17
+ **IMPORTANT:** Cette commande doit etre executee depuis `main` ou `develop` uniquement.
18
+
19
+ ```bash
20
+ CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
21
+ if [[ "$CURRENT_BRANCH" != "main" && "$CURRENT_BRANCH" != "develop" ]]; then
22
+ echo "⚠️ ERREUR: Cette commande doit etre executee depuis main ou develop"
23
+ echo "Branche courante: $CURRENT_BRANCH"
24
+ echo ""
25
+ echo "Executez: git checkout develop && /gitflow:12-cleanup"
26
+ exit 1
27
+ fi
28
+ ```
29
+
30
+ ---
31
+
32
+ ## Workflow
33
+
34
+ ### 1. Collecter les informations
35
+
36
+ ```bash
37
+ # Lister tous les worktrees
38
+ git worktree list --porcelain
39
+
40
+ # Lister toutes les branches locales
41
+ git branch -a
42
+
43
+ # Lister les branches remote
44
+ git fetch --prune
45
+ git branch -r
46
+ ```
47
+
48
+ ### 2. Analyser chaque worktree
49
+
50
+ Pour chaque worktree detecte:
51
+
52
+ | Verification | Condition | Status |
53
+ |--------------|-----------|--------|
54
+ | Branche existe localement | `git branch --list $BRANCH` | ✓ Active / ✗ Orphelin |
55
+ | Branche existe sur remote | `git branch -r --list origin/$BRANCH` | ✓ Trackee / ✗ Locale only |
56
+ | Derniere activite | `git log -1 --format=%ci $BRANCH` | Date dernier commit |
57
+ | Modifications non commitees | `git -C $WORKTREE status --porcelain` | ✓ Clean / ⚠️ Dirty |
58
+
59
+ ### 3. Categoriser les worktrees
60
+
61
+ ```
62
+ AUDIT WORKTREES
63
+ ═══════════════════════════════════════════════════════════════
64
+
65
+ 📁 Worktrees permanents (proteges):
66
+ ✓ ../worktrees/main → main
67
+ ✓ ../worktrees/develop → develop
68
+
69
+ 📁 Worktrees actifs:
70
+ ✓ ../worktrees/features/xxx → feature/xxx (3 jours)
71
+ ✓ ../worktrees/releases/v2 → release/v2.0.0 (1 jour)
72
+
73
+ ⚠️ Worktrees orphelins (branche supprimee):
74
+ ✗ ../worktrees/features/old → feature/old (BRANCHE INEXISTANTE)
75
+ ✗ ../worktrees/hotfixes/fix → hotfix/fix (BRANCHE INEXISTANTE)
76
+
77
+ ⏰ Worktrees stale (inactifs > {N} jours):
78
+ ⚠ ../worktrees/features/abc → feature/abc (45 jours sans commit)
79
+
80
+ 💾 Worktrees dirty (modifications non commitees):
81
+ ⚠ ../worktrees/features/wip → feature/wip (fichiers modifies)
82
+
83
+ ═══════════════════════════════════════════════════════════════
84
+ ```
85
+
86
+ ---
87
+
88
+ ## Actions proposees
89
+
90
+ ### Mode par defaut (interactif)
91
+
92
+ ```
93
+ ACTIONS PROPOSEES
94
+ ═══════════════════════════════════════════════════════════════
95
+
96
+ Orphelins a supprimer:
97
+ [1] ../worktrees/features/old (branche inexistante)
98
+ [2] ../worktrees/hotfixes/fix (branche inexistante)
99
+
100
+ Stale a examiner (> 30 jours):
101
+ [3] ../worktrees/features/abc (45 jours)
102
+
103
+ Options:
104
+ [A] Supprimer tous les orphelins
105
+ [S] Supprimer tous les stale
106
+ [1-N] Supprimer individuellement
107
+ [D] Details sur un worktree
108
+ [Q] Quitter sans action
109
+
110
+ Choix: _
111
+ ═══════════════════════════════════════════════════════════════
112
+ ```
113
+
114
+ ### Mode --dry-run
115
+
116
+ Affiche uniquement l'audit sans proposer d'actions.
117
+
118
+ ### Mode --force
119
+
120
+ Supprime automatiquement tous les orphelins sans confirmation.
121
+
122
+ ---
123
+
124
+ ## Suppression d'un worktree
125
+
126
+ ```bash
127
+ # Verifier si dirty
128
+ if [ -n "$(git -C $WORKTREE_PATH status --porcelain)" ]; then
129
+ echo "⚠️ Worktree dirty - modifications non commitees"
130
+ echo "Utilisez --force pour supprimer quand meme"
131
+ exit 1
132
+ fi
133
+
134
+ # Supprimer le worktree
135
+ git worktree remove "$WORKTREE_PATH" --force
136
+
137
+ # Nettoyer le dossier si reste
138
+ rm -rf "$WORKTREE_PATH" 2>/dev/null || true
139
+
140
+ # Pruner les worktrees
141
+ git worktree prune
142
+ ```
143
+
144
+ ---
145
+
146
+ ## Detection des dossiers orphelins
147
+
148
+ En plus des worktrees git, detecter les dossiers qui ne sont plus lies:
149
+
150
+ ```bash
151
+ # Lister les worktrees connus
152
+ KNOWN_WORKTREES=$(git worktree list --porcelain | grep "^worktree " | sed 's/worktree //')
153
+
154
+ # Scanner les dossiers de worktrees
155
+ WORKTREE_BASE="../worktrees"
156
+ for TYPE in features releases hotfixes; do
157
+ for DIR in "$WORKTREE_BASE/$TYPE"/*; do
158
+ if [ -d "$DIR" ]; then
159
+ # Verifier si c'est un worktree connu
160
+ if ! echo "$KNOWN_WORKTREES" | grep -q "$DIR"; then
161
+ echo "⚠️ Dossier orphelin: $DIR"
162
+ fi
163
+ fi
164
+ done
165
+ done
166
+ ```
167
+
168
+ ---
169
+
170
+ ## Resume final
171
+
172
+ ```
173
+ CLEANUP COMPLETE
174
+ ═══════════════════════════════════════════════════════════════
175
+
176
+ Worktrees analyses: {total}
177
+ Permanents (proteges): {n_permanent}
178
+ Actifs: {n_active}
179
+ Supprimes: {n_deleted}
180
+ - Orphelins: {n_orphan}
181
+ - Stale: {n_stale}
182
+ Ignores (dirty): {n_dirty}
183
+
184
+ Espace libere: ~{size} MB
185
+
186
+ Dossiers orphelins: {n_orphan_dirs}
187
+ - Supprimes: {n_orphan_dirs_deleted}
188
+
189
+ ═══════════════════════════════════════════════════════════════
190
+ Environnement propre!
191
+ ```
192
+
193
+ ---
194
+
195
+ ## Modes
196
+
197
+ | Commande | Action |
198
+ |----------|--------|
199
+ | `/gitflow:12-cleanup` | Audit interactif avec propositions |
200
+ | `/gitflow:12-cleanup --dry-run` | Audit seul, aucune action |
201
+ | `/gitflow:12-cleanup --force` | Supprime tous les orphelins automatiquement |
202
+ | `/gitflow:12-cleanup --stale-days=30` | Seuil pour worktrees stale (defaut: 30) |
203
+ | `/gitflow:12-cleanup --include-stale` | Inclut les stale dans la suppression auto |
204
+ | `/gitflow:12-cleanup --verbose` | Affiche les details de chaque worktree |
205
+
206
+ ---
207
+
208
+ ## Integration automatique
209
+
210
+ Cette commande est appelee automatiquement par:
211
+ - `/gitflow:11-finish` → Apres finalisation d'une branche
212
+ - `/gitflow:6-abort --branch` → Apres abandon d'une branche
213
+
214
+ Dans ces cas, seul le worktree de la branche concernee est nettoye (cleanup cible).
215
+
216
+ ---
217
+
218
+ ## Cleanup cible (usage interne)
219
+
220
+ Quand appelee depuis finish/abort avec une branche specifique:
221
+
222
+ ```bash
223
+ # Usage interne
224
+ cleanup_worktree_for_branch() {
225
+ BRANCH=$1
226
+ WORKTREE_BASE="../worktrees"
227
+
228
+ # Determiner le chemin selon le type
229
+ if [[ $BRANCH == feature/* ]]; then
230
+ NAME=${BRANCH#feature/}
231
+ WORKTREE_PATH="$WORKTREE_BASE/features/$NAME"
232
+ elif [[ $BRANCH == release/* ]]; then
233
+ VERSION=${BRANCH#release/}
234
+ WORKTREE_PATH="$WORKTREE_BASE/releases/$VERSION"
235
+ elif [[ $BRANCH == hotfix/* ]]; then
236
+ NAME=${BRANCH#hotfix/}
237
+ WORKTREE_PATH="$WORKTREE_BASE/hotfixes/$NAME"
238
+ fi
239
+
240
+ # Supprimer si existe
241
+ if [ -d "$WORKTREE_PATH" ]; then
242
+ git worktree remove "$WORKTREE_PATH" --force 2>/dev/null || true
243
+ rm -rf "$WORKTREE_PATH" 2>/dev/null || true
244
+ git worktree prune
245
+ echo "✓ Worktree nettoye: $WORKTREE_PATH"
246
+ fi
247
+ }
248
+ ```
249
+
250
+ ---
251
+
252
+ ## Logs
253
+
254
+ Chaque cleanup est logue dans `.claude/gitflow/logs/cleanup_{timestamp}.json`:
255
+
256
+ ```json
257
+ {
258
+ "timestamp": "{ISO_DATE}",
259
+ "type": "cleanup",
260
+ "mode": "interactive|dry-run|force|targeted",
261
+ "branch": "{main|develop}",
262
+ "worktrees": {
263
+ "analyzed": {n},
264
+ "deleted": [
265
+ { "path": "...", "branch": "...", "reason": "orphan|stale" }
266
+ ],
267
+ "skipped": [
268
+ { "path": "...", "branch": "...", "reason": "dirty|active|permanent" }
269
+ ]
270
+ },
271
+ "orphan_dirs": {
272
+ "found": {n},
273
+ "deleted": {n}
274
+ }
275
+ }
276
+ ```