@atlashub/smartstack-cli 1.11.0 → 1.13.1

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 (74) hide show
  1. package/.documentation/agents.html +7 -2
  2. package/.documentation/apex.html +7 -2
  3. package/.documentation/business-analyse.html +7 -2
  4. package/.documentation/cli-commands.html +871 -0
  5. package/.documentation/commands.html +7 -2
  6. package/.documentation/efcore.html +7 -2
  7. package/.documentation/gitflow.html +7 -2
  8. package/.documentation/hooks.html +7 -2
  9. package/.documentation/index.html +7 -2
  10. package/.documentation/init.html +7 -2
  11. package/.documentation/installation.html +7 -2
  12. package/.documentation/ralph-loop.html +7 -2
  13. package/.documentation/test-web.html +7 -2
  14. package/dist/index.js +1932 -336
  15. package/dist/index.js.map +1 -1
  16. package/package.json +8 -2
  17. package/templates/agents/efcore/squash.md +67 -31
  18. package/templates/agents/gitflow/finish.md +68 -56
  19. package/templates/commands/business-analyse/0-orchestrate.md +72 -556
  20. package/templates/commands/business-analyse/1-init.md +23 -193
  21. package/templates/commands/business-analyse/2-discover.md +85 -462
  22. package/templates/commands/business-analyse/3-analyse.md +40 -342
  23. package/templates/commands/business-analyse/4-specify.md +72 -537
  24. package/templates/commands/business-analyse/5-validate.md +43 -237
  25. package/templates/commands/business-analyse/6-handoff.md +93 -682
  26. package/templates/commands/business-analyse/7-doc-html.md +45 -544
  27. package/templates/commands/business-analyse/_shared.md +176 -0
  28. package/templates/commands/business-analyse/bug.md +50 -257
  29. package/templates/commands/business-analyse/change-request.md +59 -283
  30. package/templates/commands/business-analyse/hotfix.md +36 -120
  31. package/templates/commands/business-analyse.md +55 -574
  32. package/templates/commands/efcore/_shared.md +206 -0
  33. package/templates/commands/efcore/conflicts.md +39 -201
  34. package/templates/commands/efcore/db-deploy.md +28 -237
  35. package/templates/commands/efcore/db-reset.md +41 -390
  36. package/templates/commands/efcore/db-seed.md +44 -323
  37. package/templates/commands/efcore/db-status.md +31 -210
  38. package/templates/commands/efcore/migration.md +45 -368
  39. package/templates/commands/efcore/rebase-snapshot.md +38 -241
  40. package/templates/commands/efcore/scan.md +35 -204
  41. package/templates/commands/efcore/squash.md +158 -251
  42. package/templates/commands/efcore.md +49 -177
  43. package/templates/commands/gitflow/1-init.md +94 -1318
  44. package/templates/commands/gitflow/10-start.md +86 -990
  45. package/templates/commands/gitflow/11-finish.md +264 -454
  46. package/templates/commands/gitflow/12-cleanup.md +40 -213
  47. package/templates/commands/gitflow/2-status.md +51 -386
  48. package/templates/commands/gitflow/3-commit.md +108 -801
  49. package/templates/commands/gitflow/4-plan.md +42 -13
  50. package/templates/commands/gitflow/5-exec.md +60 -5
  51. package/templates/commands/gitflow/6-abort.md +54 -277
  52. package/templates/commands/gitflow/7-pull-request.md +74 -717
  53. package/templates/commands/gitflow/8-review.md +51 -178
  54. package/templates/commands/gitflow/9-merge.md +74 -404
  55. package/templates/commands/gitflow/_shared.md +196 -0
  56. package/templates/commands/quickstart.md +154 -0
  57. package/templates/commands/ralph-loop/ralph-loop.md +104 -2
  58. package/templates/hooks/hooks.json +13 -0
  59. package/templates/hooks/ralph-mcp-logger.sh +46 -0
  60. package/templates/hooks/ralph-session-end.sh +69 -0
  61. package/templates/ralph/README.md +91 -0
  62. package/templates/ralph/ralph.config.yaml +113 -0
  63. package/templates/scripts/setup-ralph-loop.sh +173 -0
  64. package/templates/skills/_shared.md +117 -0
  65. package/templates/skills/ai-prompt/SKILL.md +87 -654
  66. package/templates/skills/application/SKILL.md +76 -499
  67. package/templates/skills/controller/SKILL.md +38 -165
  68. package/templates/skills/documentation/SKILL.md +2 -1
  69. package/templates/skills/feature-full/SKILL.md +107 -732
  70. package/templates/skills/notification/SKILL.md +85 -474
  71. package/templates/skills/ui-components/SKILL.md +62 -762
  72. package/templates/skills/workflow/SKILL.md +85 -489
  73. package/templates/commands/gitflow/rescue.md +0 -867
  74. package/templates/skills/business-analyse/SKILL.md +0 -191
@@ -0,0 +1,176 @@
1
+ # Business Analyse - Fonctions Partagées
2
+
3
+ > **Ref:** Ce fichier contient les fonctions communes à toutes les phases BA.
4
+
5
+ ---
6
+
7
+ ## Validation Contexte Business
8
+
9
+ ```bash
10
+ validate_business_context() {
11
+ local CONTEXT="$1"
12
+ [[ "$CONTEXT" =~ ^(platform|personal|system)$ ]] && {
13
+ echo "❌ ERREUR: BA réservée au contexte 'business'. Contact: support@atlshub.ch"
14
+ return 1
15
+ }
16
+ return 0
17
+ }
18
+ ```
19
+
20
+ ---
21
+
22
+ ## Feature Directory
23
+
24
+ ```bash
25
+ find_feature_dir() {
26
+ local FEATURE_ID="$1"
27
+ FEATURE_DIR=$(find .business-analyse -type d -name "${FEATURE_ID}*" 2>/dev/null | head -1)
28
+ [ -z "$FEATURE_DIR" ] && { echo "❌ Feature $FEATURE_ID non trouvée"; return 1; }
29
+ APPLICATION=$(echo "$FEATURE_DIR" | grep -oP 'business/\K[^/]+')
30
+ MODULE=$(echo "$FEATURE_DIR" | grep -oP 'modules/\K[^/]+')
31
+ export FEATURE_DIR APPLICATION MODULE
32
+ }
33
+ ```
34
+
35
+ ---
36
+
37
+ ## Génération Feature ID
38
+
39
+ ```bash
40
+ generate_feature_id() {
41
+ local LAST_ID=$(grep -oP '"lastFeatureId":\s*\K\d+' .business-analyse/config.json 2>/dev/null || echo "0")
42
+ printf "FEAT-%03d" $((LAST_ID + 1))
43
+ }
44
+ ```
45
+
46
+ ---
47
+
48
+ ## Modèles par Phase
49
+
50
+ | Phase | Modèle | Raison |
51
+ |-------|--------|--------|
52
+ | 1-init | Haiku | Setup structure |
53
+ | 2-discover | **Opus** | Elicitation ULTRATHINK |
54
+ | 3-analyse | Sonnet | Modélisation BRD |
55
+ | 4-specify | Sonnet | FRD + Use Cases |
56
+ | 5-validate | Haiku | Gate oui/non |
57
+ | 6-handoff | **Opus** | Prompt zéro ambiguïté |
58
+ | 7-doc-html | Sonnet | React + Context7 |
59
+
60
+ ---
61
+
62
+ ## ULTRATHINK
63
+
64
+ Mode comportemental pour phases critiques (2, 3, 4, 6):
65
+ - Considérer TOUS les edge cases
66
+ - Challenger CHAQUE hypothèse
67
+ - Anticiper besoins NON exprimés
68
+ - Valider complétude avant output
69
+
70
+ **NE PAS appeler** comme skill/tool.
71
+
72
+ ---
73
+
74
+ ## Context7 (Phase 7)
75
+
76
+ ```
77
+ "use context7 with /facebook/react and /i18next/react-i18next
78
+ to generate {component} following SmartStack patterns"
79
+ ```
80
+
81
+ Libraries: `/facebook/react`, `/i18next/react-i18next`, `/remix-run/react-router`, `/lucide-icons/lucide-react`
82
+
83
+ ---
84
+
85
+ ## Permission Path
86
+
87
+ Format: `business.{application}.{module}.{action}`
88
+
89
+ | Action | Permission |
90
+ |--------|------------|
91
+ | Lecture | `.read` |
92
+ | Création | `.create` |
93
+ | Modification | `.update` |
94
+ | Suppression | `.delete` |
95
+ | Export | `.export` |
96
+ | Import | `.import` |
97
+ | Admin | `.admin` |
98
+
99
+ ---
100
+
101
+ ## i18n (4 langues obligatoires)
102
+
103
+ | Langue | Fichier |
104
+ |--------|---------|
105
+ | FR | `fr/{app}-{module}.json` |
106
+ | EN | `en/{app}-{module}.json` |
107
+ | IT | `it/{app}-{module}.json` |
108
+ | DE | `de/{app}-{module}.json` |
109
+
110
+ ---
111
+
112
+ ## Output Paths
113
+
114
+ | Type | Chemin |
115
+ |------|--------|
116
+ | Documentation | `web/smartstack-web/src/pages/business/{app}/{module}/DocumentationPage.tsx` |
117
+ | i18n | `web/smartstack-web/src/i18n/locales/{lang}/` |
118
+ | Route | `/business/{app}/{module}/documentation` |
119
+
120
+ ---
121
+
122
+ ## Résumé Standard
123
+
124
+ ```
125
+ {PHASE} - {FEATURE_ID}
126
+ ├── Status: {Complete/En cours}
127
+ ├── Output: {fichiers créés}
128
+ └── Prochain: {commande suivante}
129
+ ```
130
+
131
+ ---
132
+
133
+ ## Config Template
134
+
135
+ ```json
136
+ {
137
+ "project": "{Name}",
138
+ "lastFeatureId": 0,
139
+ "context": "business",
140
+ "standards": ["BABOK-v3", "IEEE-830"],
141
+ "contact": "support@atlshub.ch"
142
+ }
143
+ ```
144
+
145
+ ---
146
+
147
+ ## Structure Feature
148
+
149
+ ```
150
+ .business-analyse/business/{app}/modules/{module}/features/{FEAT-XXX}/
151
+ ├── 1-discovery.md
152
+ ├── 2-business-requirements.md
153
+ ├── 3-functional-specification.md
154
+ ├── 4-development-handoff.md
155
+ ├── validation.json
156
+ └── tracking/
157
+ ├── changes/
158
+ ├── bugs/
159
+ └── hotfixes/
160
+ ```
161
+
162
+ ---
163
+
164
+ ## Ralph Loop (optionnel)
165
+
166
+ Fichiers créés par phase Ralph:
167
+ - `prd.json` - Tracking tâches (`"passes": true/false`)
168
+ - `progress.txt` - Mémoire inter-itérations
169
+
170
+ Signal fin: `<promise>COMPLETE</promise>`
171
+
172
+ ---
173
+
174
+ ## Support
175
+
176
+ Contact: **support@atlshub.ch**
@@ -4,54 +4,42 @@ agent: ba-bug
4
4
  model: sonnet
5
5
  ---
6
6
 
7
- # Documentation Bug - Business Analyse
7
+ # Documentation Bug
8
8
 
9
- > **Modèle:** Sonnet (analyse root cause)
9
+ > **Ref:** Fonctions communes dans [_shared.md](_shared.md)
10
10
  > **Output:** `.business-analyse/.../tracking/bugs/BUG-XXX.md`
11
11
 
12
12
  ---
13
13
 
14
- ## QUAND UTILISER
14
+ ## Quand utiliser
15
15
 
16
- ```
17
- ╔══════════════════════════════════════════════════════════════════════════════╗
18
- ║ DOCUMENTATION BUG: Traçabilité et analyse structurée ║
19
- ╠══════════════════════════════════════════════════════════════════════════════╣
20
- ║ ║
21
- ║ Utiliser cette commande pour: ║
22
- ║ • Documenter un bug découvert après implémentation ║
23
- ║ • Analyser la root cause ║
24
- ║ • Créer un prompt de correction pour Claude ║
25
- ║ • Maintenir la traçabilité vers les specs (FR/BR impactés) ║
26
- ║ ║
27
- ║ NE PAS utiliser pour: ║
28
- ║ • Hotfix urgent (utiliser /business-analyse:hotfix) ║
29
- ║ • Changement de scope (utiliser /business-analyse:change-request) ║
30
- ║ ║
31
- ╚══════════════════════════════════════════════════════════════════════════════╝
32
- ```
16
+ | ✅ Utiliser | ❌ Ne pas utiliser |
17
+ |-------------|-------------------|
18
+ | Bug post-implémentation | Hotfix urgent → `/business-analyse:hotfix` |
19
+ | Analyse root cause | Changement scope → `/business-analyse:change-request` |
20
+ | Traçabilité specs | |
33
21
 
34
22
  ---
35
23
 
36
- ## STEP 1: Collecte des informations
24
+ ## Collecte informations
37
25
 
38
26
  ```javascript
39
27
  AskUserQuestion({
40
28
  questions: [
41
29
  {
42
- question: "Quelle feature est impactée par ce bug?",
30
+ question: "Quelle feature est impactée?",
43
31
  header: "Feature",
44
32
  options: [
45
- { label: "Feature existante", description: "Bug sur une feature documentée" },
46
- { label: "Nouvelle", description: "Bug sur code non documenté en BA" }
33
+ { label: "Feature existante", description: "Bug sur feature documentée" },
34
+ { label: "Nouvelle", description: "Bug sur code non documenté" }
47
35
  ],
48
36
  multiSelect: false
49
37
  },
50
38
  {
51
- question: "Quelle est la sévérité du bug?",
39
+ question: "Sévérité du bug?",
52
40
  header: "Sévérité",
53
41
  options: [
54
- { label: "Critique", description: "Bloque l'utilisation, perte de données" },
42
+ { label: "Critique", description: "Bloque utilisation, perte données" },
55
43
  { label: "Majeur", description: "Fonctionnalité principale impactée" },
56
44
  { label: "Mineur", description: "Workaround possible" },
57
45
  { label: "Cosmétique", description: "UI/UX, pas d'impact fonctionnel" }
@@ -59,13 +47,13 @@ AskUserQuestion({
59
47
  multiSelect: false
60
48
  },
61
49
  {
62
- question: "Le bug est-il reproductible?",
50
+ question: "Bug reproductible?",
63
51
  header: "Repro",
64
52
  options: [
65
- { label: "Toujours", description: "100% reproductible" },
66
- { label: "Souvent", description: ">50% du temps" },
67
- { label: "Parfois", description: "<50% du temps" },
68
- { label: "Rarement", description: "Difficile à reproduire" }
53
+ { label: "Toujours", description: "100%" },
54
+ { label: "Souvent", description: ">50%" },
55
+ { label: "Parfois", description: "<50%" },
56
+ { label: "Rarement", description: "Difficile" }
69
57
  ],
70
58
  multiSelect: false
71
59
  }
@@ -75,114 +63,7 @@ AskUserQuestion({
75
63
 
76
64
  ---
77
65
 
78
- ## STEP 2: Générer Bug ID
79
-
80
- ```bash
81
- FEATURE_ID=$1 # Optionnel
82
- DATE=$(date +%Y%m%d)
83
-
84
- # Lire le dernier bug ID
85
- LAST_BUG_ID=$(find .business-analyse -name "BUG-*.md" | grep -oP 'BUG-\K\d+' | sort -n | tail -1 || echo "0")
86
- NEW_BUG_ID=$(printf "%03d" $((LAST_BUG_ID + 1)))
87
- BUG_ID="BUG-$NEW_BUG_ID"
88
-
89
- # Déterminer le dossier
90
- if [ -n "$FEATURE_ID" ]; then
91
- FEATURE_DIR=$(find .business-analyse -type d -name "${FEATURE_ID}*" | head -1)
92
- BUG_DIR="$FEATURE_DIR/tracking/bugs"
93
- else
94
- BUG_DIR=".business-analyse/tracking/bugs"
95
- fi
96
-
97
- mkdir -p "$BUG_DIR"
98
- ```
99
-
100
- ---
101
-
102
- ## STEP 3: Collecte détaillée
103
-
104
- Demander à l'utilisateur:
105
-
106
- 1. **Description du bug** (comportement observé vs attendu)
107
- 2. **Étapes de reproduction**
108
- 3. **Environnement** (browser, OS, données de test)
109
- 4. **Screenshots/logs** si disponibles
110
-
111
- ---
112
-
113
- ## STEP 4: Analyse root cause
114
-
115
- ```
116
- ╔══════════════════════════════════════════════════════════════════════════════╗
117
- ║ ANALYSE ROOT CAUSE (5 WHYS) ║
118
- ╠══════════════════════════════════════════════════════════════════════════════╣
119
- ║ ║
120
- ║ 1. POURQUOI le bug se produit? ║
121
- ║ → {réponse niveau 1} ║
122
- ║ ║
123
- ║ 2. POURQUOI {réponse niveau 1}? ║
124
- ║ → {réponse niveau 2} ║
125
- ║ ║
126
- ║ 3. POURQUOI {réponse niveau 2}? ║
127
- ║ → {réponse niveau 3} ║
128
- ║ ║
129
- ║ ... jusqu'à identifier la ROOT CAUSE ║
130
- ║ ║
131
- ╚══════════════════════════════════════════════════════════════════════════════╝
132
- ```
133
-
134
- ---
135
-
136
- ## STEP 5: Génération du document
137
-
138
- ### Template BUG-XXX.md
139
-
140
- ```markdown
141
- # {BUG_ID} - {Bug Title}
142
-
143
- > **Feature:** {FEATURE_ID} (si applicable)
144
- > **Sévérité:** {Critique/Majeur/Mineur/Cosmétique}
145
- > **Status:** Open
146
- > **Date:** {YYYY-MM-DD}
147
-
148
- ---
149
-
150
- ## 1. Description
151
-
152
- ### Comportement observé
153
- {Description précise de ce qui se passe}
154
-
155
- ### Comportement attendu
156
- {Ce qui devrait se passer selon les specs}
157
-
158
- ### Impact
159
- - Utilisateurs impactés: {qui}
160
- - Fonctionnalité: {laquelle}
161
- - Workaround: {existe/n'existe pas}
162
-
163
- ---
164
-
165
- ## 2. Reproduction
166
-
167
- ### Prérequis
168
- - Environnement: {dev/staging/prod}
169
- - Rôle utilisateur: {rôle}
170
- - Données requises: {données de test}
171
-
172
- ### Étapes
173
- 1. {Étape 1}
174
- 2. {Étape 2}
175
- 3. {Étape 3}
176
- 4. → Bug observé
177
-
178
- ### Reproductibilité
179
- {Toujours/Souvent/Parfois/Rarement}
180
-
181
- ---
182
-
183
- ## 3. Analyse
184
-
185
- ### 3.1 Root Cause Analysis (5 Whys)
66
+ ## Analyse Root Cause (5 Whys)
186
67
 
187
68
  | # | Question | Réponse |
188
69
  |---|----------|---------|
@@ -190,136 +71,48 @@ Demander à l'utilisateur:
190
71
  | 2 | Pourquoi {réponse 1}? | {réponse} |
191
72
  | 3 | Pourquoi {réponse 2}? | {réponse} |
192
73
  | 4 | Pourquoi {réponse 3}? | {réponse} |
193
- | 5 | Pourquoi {réponse 4}? | **ROOT CAUSE: {cause}** |
194
-
195
- ### 3.2 Specs impactées
196
-
197
- | Type | ID | Description | Impact |
198
- |------|----|----|--------|
199
- | Règle métier | BR-XXX | {description} | {comment impacté} |
200
- | Exigence | FR-XXX | {description} | {comment impacté} |
201
- | Use Case | UC-XXX | {description} | {comment impacté} |
202
-
203
- ### 3.3 Code impacté
204
-
205
- | Fichier | Ligne(s) | Description |
206
- |---------|----------|-------------|
207
- | `{path/to/file}` | ~{lines} | {ce qui est incorrect} |
208
-
209
- ---
210
-
211
- ## 4. Solution proposée
212
-
213
- ### 4.1 Correction
214
-
215
- {Description de la correction à apporter}
216
-
217
- ### 4.2 Fichiers à modifier
218
-
219
- | Fichier | Modification |
220
- |---------|--------------|
221
- | `{path}` | {description du changement} |
222
-
223
- ### 4.3 Tests à ajouter
224
-
225
- ```gherkin
226
- @bugfix @{BUG_ID}
227
- Scenario: {BUG_ID} - {description}
228
- Given {contexte}
229
- When {action qui causait le bug}
230
- Then {comportement correct attendu}
231
- ```
232
-
233
- ---
234
-
235
- ## 5. Prompt de correction
236
-
237
- ```
238
- CONTEXTE:
239
- Bug {BUG_ID} à corriger dans le module business/{app}/{module}
240
-
241
- ROOT CAUSE:
242
- {root cause identifiée}
243
-
244
- CORRECTION:
245
- {description de la correction}
246
-
247
- FICHIERS À MODIFIER:
248
- {liste des fichiers}
249
-
250
- TEST DE VALIDATION:
251
- Après correction, le scénario Gherkin suivant doit passer:
252
- {scénario}
253
- ```
74
+ | 5 | Pourquoi {réponse 4}? | **ROOT CAUSE** |
254
75
 
255
76
  ---
256
77
 
257
- ## 6. Validation
258
-
259
- ### Critères d'acceptation
260
- - [ ] Bug n'est plus reproductible
261
- - [ ] Tests de régression passent
262
- - [ ] Nouveau test ajouté pour ce cas
263
- - [ ] Code review effectué
264
-
265
- ### Environnements testés
266
- - [ ] Local
267
- - [ ] Staging
268
- - [ ] Production (si applicable)
78
+ ## Template BUG-XXX.md
269
79
 
270
- ---
271
-
272
- ## 7. Prévention
273
-
274
- ### Comment éviter ce type de bug à l'avenir?
80
+ ```markdown
81
+ # {BUG_ID} - {Title}
275
82
 
276
- | Action | Responsable | Deadline |
277
- |--------|-------------|----------|
278
- | {action préventive} | {qui} | {quand} |
83
+ > **Feature:** {FEATURE_ID} | **Sévérité:** {X} | **Status:** Open
279
84
 
280
- ---
85
+ ## 1. Description
86
+ ### Observé vs Attendu
281
87
 
282
- ## Historique
88
+ ## 2. Reproduction
89
+ ### Prérequis | Étapes | Reproductibilité
283
90
 
284
- | Date | Action | Par |
285
- |------|--------|-----|
286
- | {date} | Création | {auteur} |
287
- | {date} | Analyse | {auteur} |
288
- | {date} | Correction | {dev} |
289
- | {date} | Validation | {qa} |
290
- | {date} | Fermé | {pm} |
91
+ ## 3. Analyse
92
+ ### Root Cause (5 Whys)
93
+ ### Specs impactées (BR/FR/UC)
94
+ ### Code impacté
95
+
96
+ ## 4. Solution
97
+ ### Correction | Fichiers | Tests Gherkin
98
+
99
+ ## 5. Prompt correction
100
+ CONTEXTE: Bug {BUG_ID}
101
+ ROOT CAUSE: {cause}
102
+ CORRECTION: {description}
103
+ FICHIERS: {liste}
104
+ VALIDATION: {scénario Gherkin}
291
105
  ```
292
106
 
293
107
  ---
294
108
 
295
- ## STEP 6: Résumé
109
+ ## Résumé
296
110
 
297
111
  ```
298
- ================================================================================
299
- BUG DOCUMENTÉ - {BUG_ID}
300
- ================================================================================
301
-
302
- FICHIER: {BUG_DIR}/{BUG_ID}.md
303
- FEATURE LIÉE: {FEATURE_ID ou "N/A"}
304
- SÉVÉRITÉ: {sévérité}
305
- ROOT CAUSE: {résumé}
306
-
307
- SPECS IMPACTÉES:
308
- • BR: {liste ou "Aucune"}
309
- • FR: {liste ou "Aucune"}
310
- • UC: {liste ou "Aucune"}
311
-
312
- ================================================================================
313
- CORRECTION
314
- ================================================================================
315
-
316
- Utilisez le prompt de correction dans la section 5 pour demander
317
- à Claude de corriger ce bug.
318
-
319
- Si c'est un hotfix urgent, utilisez:
320
- /business-analyse:hotfix {BUG_ID}
321
-
322
- ================================================================================
323
-
324
- Contact support: support@atlshub.ch
112
+ BUG - {BUG_ID}
113
+ ├── Feature: {FEATURE_ID}
114
+ ├── Sévérité: {X}
115
+ ├── Root Cause: {résumé}
116
+ ├── Specs: BR-XXX, FR-XXX, UC-XXX
117
+ └── Correction: /business-analyse:hotfix {BUG_ID}
325
118
  ```