@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.
- package/.documentation/agents.html +7 -2
- package/.documentation/apex.html +7 -2
- package/.documentation/business-analyse.html +7 -2
- package/.documentation/cli-commands.html +871 -0
- package/.documentation/commands.html +7 -2
- package/.documentation/efcore.html +7 -2
- package/.documentation/gitflow.html +7 -2
- package/.documentation/hooks.html +7 -2
- package/.documentation/index.html +7 -2
- package/.documentation/init.html +7 -2
- package/.documentation/installation.html +7 -2
- package/.documentation/ralph-loop.html +7 -2
- package/.documentation/test-web.html +7 -2
- package/dist/index.js +1932 -336
- package/dist/index.js.map +1 -1
- package/package.json +8 -2
- package/templates/agents/efcore/squash.md +67 -31
- package/templates/agents/gitflow/finish.md +68 -56
- package/templates/commands/business-analyse/0-orchestrate.md +72 -556
- package/templates/commands/business-analyse/1-init.md +23 -193
- package/templates/commands/business-analyse/2-discover.md +85 -462
- package/templates/commands/business-analyse/3-analyse.md +40 -342
- package/templates/commands/business-analyse/4-specify.md +72 -537
- package/templates/commands/business-analyse/5-validate.md +43 -237
- package/templates/commands/business-analyse/6-handoff.md +93 -682
- package/templates/commands/business-analyse/7-doc-html.md +45 -544
- package/templates/commands/business-analyse/_shared.md +176 -0
- package/templates/commands/business-analyse/bug.md +50 -257
- package/templates/commands/business-analyse/change-request.md +59 -283
- package/templates/commands/business-analyse/hotfix.md +36 -120
- package/templates/commands/business-analyse.md +55 -574
- package/templates/commands/efcore/_shared.md +206 -0
- package/templates/commands/efcore/conflicts.md +39 -201
- package/templates/commands/efcore/db-deploy.md +28 -237
- package/templates/commands/efcore/db-reset.md +41 -390
- package/templates/commands/efcore/db-seed.md +44 -323
- package/templates/commands/efcore/db-status.md +31 -210
- package/templates/commands/efcore/migration.md +45 -368
- package/templates/commands/efcore/rebase-snapshot.md +38 -241
- package/templates/commands/efcore/scan.md +35 -204
- package/templates/commands/efcore/squash.md +158 -251
- package/templates/commands/efcore.md +49 -177
- package/templates/commands/gitflow/1-init.md +94 -1318
- package/templates/commands/gitflow/10-start.md +86 -990
- package/templates/commands/gitflow/11-finish.md +264 -454
- package/templates/commands/gitflow/12-cleanup.md +40 -213
- package/templates/commands/gitflow/2-status.md +51 -386
- package/templates/commands/gitflow/3-commit.md +108 -801
- package/templates/commands/gitflow/4-plan.md +42 -13
- package/templates/commands/gitflow/5-exec.md +60 -5
- package/templates/commands/gitflow/6-abort.md +54 -277
- package/templates/commands/gitflow/7-pull-request.md +74 -717
- package/templates/commands/gitflow/8-review.md +51 -178
- package/templates/commands/gitflow/9-merge.md +74 -404
- package/templates/commands/gitflow/_shared.md +196 -0
- package/templates/commands/quickstart.md +154 -0
- package/templates/commands/ralph-loop/ralph-loop.md +104 -2
- package/templates/hooks/hooks.json +13 -0
- package/templates/hooks/ralph-mcp-logger.sh +46 -0
- package/templates/hooks/ralph-session-end.sh +69 -0
- package/templates/ralph/README.md +91 -0
- package/templates/ralph/ralph.config.yaml +113 -0
- package/templates/scripts/setup-ralph-loop.sh +173 -0
- package/templates/skills/_shared.md +117 -0
- package/templates/skills/ai-prompt/SKILL.md +87 -654
- package/templates/skills/application/SKILL.md +76 -499
- package/templates/skills/controller/SKILL.md +38 -165
- package/templates/skills/documentation/SKILL.md +2 -1
- package/templates/skills/feature-full/SKILL.md +107 -732
- package/templates/skills/notification/SKILL.md +85 -474
- package/templates/skills/ui-components/SKILL.md +62 -762
- package/templates/skills/workflow/SKILL.md +85 -489
- package/templates/commands/gitflow/rescue.md +0 -867
- package/templates/skills/business-analyse/SKILL.md +0 -191
|
@@ -6,133 +6,73 @@ model: haiku
|
|
|
6
6
|
|
|
7
7
|
# Phase 5: Validation Utilisateur
|
|
8
8
|
|
|
9
|
-
> **
|
|
10
|
-
> **Coût estimé:** ~$0.01
|
|
11
|
-
> **Prérequis:** 3-functional-specification.md existant
|
|
9
|
+
> **Ref:** Fonctions communes dans [_shared.md](_shared.md)
|
|
12
10
|
|
|
13
11
|
---
|
|
14
12
|
|
|
15
|
-
##
|
|
16
|
-
|
|
17
|
-
```
|
|
18
|
-
╔══════════════════════════════════════════════════════════════════════════════╗
|
|
19
|
-
║ VALIDATION OBLIGATOIRE AVANT HANDOFF ║
|
|
20
|
-
╠══════════════════════════════════════════════════════════════════════════════╣
|
|
21
|
-
║ ║
|
|
22
|
-
║ Cette phase est un GATE qui BLOQUE le passage au handoff si non approuvé. ║
|
|
23
|
-
║ ║
|
|
24
|
-
║ Le sponsor/stakeholder DOIT valider: ║
|
|
25
|
-
║ • Les cas d'utilisation sont complets ║
|
|
26
|
-
║ • Les wireframes correspondent aux attentes ║
|
|
27
|
-
║ • Les règles métier sont correctes ║
|
|
28
|
-
║ • Les permissions sont appropriées ║
|
|
29
|
-
║ ║
|
|
30
|
-
║ SI REJET: ║
|
|
31
|
-
║ → Retour à /business-analyse:3-analyse pour révision ║
|
|
32
|
-
║ → Document versionné (incrémentation minor ou major) ║
|
|
33
|
-
║ ║
|
|
34
|
-
╚══════════════════════════════════════════════════════════════════════════════╝
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
---
|
|
38
|
-
|
|
39
|
-
## STEP 1: Charger les documents
|
|
13
|
+
## Prérequis
|
|
40
14
|
|
|
41
15
|
```bash
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
FRD_FILE="$FEATURE_DIR/3-functional-specification.md"
|
|
45
|
-
|
|
46
|
-
if [ ! -f "$FRD_FILE" ]; then
|
|
47
|
-
echo "❌ ERREUR: 3-functional-specification.md non trouvé"
|
|
48
|
-
echo " Lancez d'abord: /business-analyse:4-specify $FEATURE_ID"
|
|
49
|
-
exit 1
|
|
50
|
-
fi
|
|
51
|
-
|
|
52
|
-
# Charger les documents pour résumé
|
|
53
|
-
DISCOVERY=$(cat "$FEATURE_DIR/1-discovery.md" 2>/dev/null)
|
|
54
|
-
BRD=$(cat "$FEATURE_DIR/2-business-requirements.md" 2>/dev/null)
|
|
55
|
-
FRD=$(cat "$FRD_FILE")
|
|
16
|
+
find_feature_dir "$1" || exit 1
|
|
17
|
+
[ -f "$FEATURE_DIR/3-functional-specification.md" ] || { echo "❌ FRD requis"; exit 1; }
|
|
56
18
|
```
|
|
57
19
|
|
|
58
20
|
---
|
|
59
21
|
|
|
60
|
-
##
|
|
22
|
+
## GATE VALIDATION
|
|
61
23
|
|
|
62
|
-
|
|
63
|
-
================================================================================
|
|
64
|
-
VALIDATION DES SPÉCIFICATIONS - {FEATURE_ID}
|
|
65
|
-
================================================================================
|
|
24
|
+
Cette phase BLOQUE le passage au handoff si non approuvé.
|
|
66
25
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
• Questions ouvertes: {N}
|
|
73
|
-
• Périmètre défini: ✅
|
|
74
|
-
|
|
75
|
-
2. BRD (2-business-requirements.md)
|
|
76
|
-
────────────────────────────────────────
|
|
77
|
-
• Objectifs business: {N}
|
|
78
|
-
• Règles métier: {N} (BR-001 à BR-XXX)
|
|
79
|
-
• Processus modélisés: {N}
|
|
80
|
-
|
|
81
|
-
3. FRD (3-functional-specification.md)
|
|
82
|
-
────────────────────────────────────────
|
|
83
|
-
• Cas d'utilisation: {N} (UC-001 à UC-XXX)
|
|
84
|
-
• Exigences fonctionnelles: {N} (FR-001 à FR-XXX)
|
|
85
|
-
• Wireframes: {N} écrans
|
|
86
|
-
• Permissions: {N} définies
|
|
87
|
-
• Scénarios Gherkin: {N}
|
|
88
|
-
|
|
89
|
-
================================================================================
|
|
90
|
-
```
|
|
26
|
+
Le stakeholder DOIT valider:
|
|
27
|
+
- Cas d'utilisation complets
|
|
28
|
+
- Wireframes conformes
|
|
29
|
+
- Règles métier correctes
|
|
30
|
+
- Permissions appropriées
|
|
91
31
|
|
|
92
32
|
---
|
|
93
33
|
|
|
94
|
-
##
|
|
34
|
+
## Demande de validation
|
|
95
35
|
|
|
96
36
|
```javascript
|
|
97
37
|
AskUserQuestion({
|
|
98
38
|
questions: [
|
|
99
39
|
{
|
|
100
|
-
question: "Les cas d'utilisation couvrent-ils tous les besoins
|
|
40
|
+
question: "Les cas d'utilisation couvrent-ils tous les besoins?",
|
|
101
41
|
header: "Use Cases",
|
|
102
42
|
options: [
|
|
103
|
-
{ label: "Oui, complets", description: "Tous les UC
|
|
104
|
-
{ label: "Partiellement", description: "
|
|
105
|
-
{ label: "Non", description: "Révision majeure
|
|
43
|
+
{ label: "Oui, complets", description: "Tous les UC validés" },
|
|
44
|
+
{ label: "Partiellement", description: "UC incomplets" },
|
|
45
|
+
{ label: "Non", description: "Révision majeure" }
|
|
106
46
|
],
|
|
107
47
|
multiSelect: false
|
|
108
48
|
},
|
|
109
49
|
{
|
|
110
|
-
question: "Les wireframes correspondent
|
|
50
|
+
question: "Les wireframes correspondent aux attentes?",
|
|
111
51
|
header: "UI/UX",
|
|
112
52
|
options: [
|
|
113
|
-
{ label: "Oui, validés", description: "
|
|
114
|
-
{ label: "Ajustements mineurs", description: "
|
|
115
|
-
{ label: "Non", description: "Refonte
|
|
53
|
+
{ label: "Oui, validés", description: "Écrans conformes" },
|
|
54
|
+
{ label: "Ajustements mineurs", description: "Modifications légères" },
|
|
55
|
+
{ label: "Non", description: "Refonte nécessaire" }
|
|
116
56
|
],
|
|
117
57
|
multiSelect: false
|
|
118
58
|
},
|
|
119
59
|
{
|
|
120
|
-
question: "Les règles métier (BR-XXX) sont
|
|
60
|
+
question: "Les règles métier (BR-XXX) sont correctes?",
|
|
121
61
|
header: "Règles",
|
|
122
62
|
options: [
|
|
123
|
-
{ label: "Oui, correctes", description: "Toutes
|
|
124
|
-
{ label: "Corrections mineures", description: "Quelques
|
|
125
|
-
{ label: "Non", description: "Règles incorrectes
|
|
63
|
+
{ label: "Oui, correctes", description: "Toutes validées" },
|
|
64
|
+
{ label: "Corrections mineures", description: "Quelques ajustements" },
|
|
65
|
+
{ label: "Non", description: "Règles incorrectes" }
|
|
126
66
|
],
|
|
127
67
|
multiSelect: false
|
|
128
68
|
},
|
|
129
69
|
{
|
|
130
|
-
question: "Les permissions sont
|
|
70
|
+
question: "Les permissions sont appropriées?",
|
|
131
71
|
header: "Permissions",
|
|
132
72
|
options: [
|
|
133
|
-
{ label: "Oui, validées", description: "Matrice
|
|
134
|
-
{ label: "À ajuster", description: "
|
|
135
|
-
{ label: "Non", description: "
|
|
73
|
+
{ label: "Oui, validées", description: "Matrice OK" },
|
|
74
|
+
{ label: "À ajuster", description: "Rôles à modifier" },
|
|
75
|
+
{ label: "Non", description: "À revoir" }
|
|
136
76
|
],
|
|
137
77
|
multiSelect: false
|
|
138
78
|
}
|
|
@@ -142,185 +82,51 @@ AskUserQuestion({
|
|
|
142
82
|
|
|
143
83
|
---
|
|
144
84
|
|
|
145
|
-
##
|
|
85
|
+
## Traitement décision
|
|
146
86
|
|
|
147
|
-
### Si toutes
|
|
87
|
+
### Si APPROUVÉ (toutes réponses positives)
|
|
148
88
|
|
|
149
|
-
```
|
|
150
|
-
# Créer le fichier validation.json
|
|
151
|
-
cat > "$FEATURE_DIR/validation.json" << EOF
|
|
89
|
+
```json
|
|
152
90
|
{
|
|
153
|
-
"featureId": "
|
|
154
|
-
"validatedAt": "$(date -Iseconds)",
|
|
155
|
-
"validatedBy": "{stakeholder}",
|
|
91
|
+
"featureId": "{FEATURE_ID}",
|
|
156
92
|
"status": "APPROVED",
|
|
157
93
|
"documents": {
|
|
158
94
|
"discovery": { "version": "1.0", "status": "approved" },
|
|
159
95
|
"brd": { "version": "1.0", "status": "approved" },
|
|
160
96
|
"frd": { "version": "1.0", "status": "approved" }
|
|
161
97
|
},
|
|
162
|
-
"comments": "",
|
|
163
98
|
"nextStep": "handoff"
|
|
164
99
|
}
|
|
165
|
-
EOF
|
|
166
|
-
|
|
167
|
-
echo "✅ VALIDATION APPROUVÉE"
|
|
168
100
|
```
|
|
169
101
|
|
|
170
|
-
|
|
171
|
-
```
|
|
172
|
-
================================================================================
|
|
173
|
-
✅ VALIDATION APPROUVÉE - {FEATURE_ID}
|
|
174
|
-
================================================================================
|
|
175
|
-
|
|
176
|
-
Tous les documents ont été validés par le stakeholder.
|
|
177
|
-
|
|
178
|
-
DOCUMENTS VERROUILLÉS:
|
|
179
|
-
• 1-discovery.md v1.0 ✅
|
|
180
|
-
• 2-business-requirements.md v1.0 ✅
|
|
181
|
-
• 3-functional-specification.md v1.0 ✅
|
|
182
|
-
|
|
183
|
-
FICHIER CRÉÉ: validation.json
|
|
184
|
-
|
|
185
|
-
================================================================================
|
|
186
|
-
PROCHAINE ÉTAPE
|
|
187
|
-
================================================================================
|
|
188
|
-
|
|
189
|
-
Générez le prompt de développement:
|
|
190
|
-
|
|
191
|
-
/business-analyse:6-handoff {FEATURE_ID}
|
|
192
|
-
|
|
193
|
-
================================================================================
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
### Si réponses négatives ou partielles
|
|
102
|
+
### Si REJETÉ
|
|
197
103
|
|
|
198
|
-
```
|
|
199
|
-
# Créer le fichier validation.json avec status REJECTED
|
|
200
|
-
cat > "$FEATURE_DIR/validation.json" << EOF
|
|
104
|
+
```json
|
|
201
105
|
{
|
|
202
|
-
"featureId": "
|
|
203
|
-
"validatedAt": "$(date -Iseconds)",
|
|
204
|
-
"validatedBy": "{stakeholder}",
|
|
106
|
+
"featureId": "{FEATURE_ID}",
|
|
205
107
|
"status": "REJECTED",
|
|
206
|
-
"rejectionReasons": {
|
|
207
|
-
"useCases": "{feedback}",
|
|
208
|
-
"wireframes": "{feedback}",
|
|
209
|
-
"businessRules": "{feedback}",
|
|
210
|
-
"permissions": "{feedback}"
|
|
211
|
-
},
|
|
212
|
-
"requiredChanges": [
|
|
213
|
-
"{change 1}",
|
|
214
|
-
"{change 2}"
|
|
215
|
-
],
|
|
108
|
+
"rejectionReasons": { "useCases": "", "wireframes": "", "businessRules": "", "permissions": "" },
|
|
216
109
|
"nextStep": "revise"
|
|
217
110
|
}
|
|
218
|
-
EOF
|
|
219
|
-
|
|
220
|
-
echo "❌ VALIDATION REJETÉE - Révision requise"
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
**Output:**
|
|
224
111
|
```
|
|
225
|
-
================================================================================
|
|
226
|
-
❌ VALIDATION REJETÉE - {FEATURE_ID}
|
|
227
|
-
================================================================================
|
|
228
|
-
|
|
229
|
-
Le stakeholder a demandé des révisions.
|
|
230
|
-
|
|
231
|
-
POINTS À RÉVISER:
|
|
232
|
-
□ Use Cases: {feedback détaillé}
|
|
233
|
-
□ Wireframes: {feedback détaillé}
|
|
234
|
-
□ Règles métier: {feedback détaillé}
|
|
235
|
-
□ Permissions: {feedback détaillé}
|
|
236
|
-
|
|
237
|
-
FICHIER CRÉÉ: validation.json (status: REJECTED)
|
|
238
|
-
|
|
239
|
-
================================================================================
|
|
240
|
-
ACTION REQUISE
|
|
241
|
-
================================================================================
|
|
242
|
-
|
|
243
|
-
1. Relire le feedback dans validation.json
|
|
244
|
-
2. Réviser les documents concernés
|
|
245
|
-
3. Relancer les phases appropriées:
|
|
246
|
-
|
|
247
|
-
# Si révision majeure (scope change)
|
|
248
|
-
/business-analyse:3-analyse {FEATURE_ID} # Incrémente version major
|
|
249
|
-
|
|
250
|
-
# Si révision mineure (ajustements)
|
|
251
|
-
/business-analyse:4-specify {FEATURE_ID} # Incrémente version minor
|
|
252
|
-
|
|
253
|
-
4. Relancer la validation:
|
|
254
|
-
/business-analyse:5-validate {FEATURE_ID}
|
|
255
|
-
|
|
256
|
-
================================================================================
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
---
|
|
260
|
-
|
|
261
|
-
## STEP 5: Collecte du feedback détaillé (si rejet)
|
|
262
|
-
|
|
263
|
-
```javascript
|
|
264
|
-
AskUserQuestion({
|
|
265
|
-
questions: [{
|
|
266
|
-
question: "Décrivez les changements nécessaires pour chaque point rejeté:",
|
|
267
|
-
header: "Feedback",
|
|
268
|
-
options: [
|
|
269
|
-
{ label: "Fourni ci-dessous", description: "Je vais détailler les changements" },
|
|
270
|
-
{ label: "Réunion nécessaire", description: "Je préfère discuter en réunion" }
|
|
271
|
-
],
|
|
272
|
-
multiSelect: false
|
|
273
|
-
}]
|
|
274
|
-
})
|
|
275
|
-
```
|
|
276
|
-
|
|
277
|
-
Si "Fourni ci-dessous":
|
|
278
|
-
- Collecter le feedback textuel
|
|
279
|
-
- Ajouter au validation.json
|
|
280
|
-
- Créer un fichier de tracking pour les changements
|
|
281
112
|
|
|
282
113
|
---
|
|
283
114
|
|
|
284
|
-
##
|
|
115
|
+
## Versioning post-validation
|
|
285
116
|
|
|
286
117
|
| Situation | Action | Nouvelle version |
|
|
287
118
|
|-----------|--------|------------------|
|
|
288
119
|
| Approuvé | Verrouiller | 1.0 (locked) |
|
|
289
120
|
| Rejet mineur | Réviser specify | 1.1 |
|
|
290
121
|
| Rejet majeur | Réviser analyse | 2.0 |
|
|
291
|
-
| Change request post-handoff | CR process | via CR-FEAT-XXX-001 |
|
|
292
122
|
|
|
293
123
|
---
|
|
294
124
|
|
|
295
|
-
##
|
|
125
|
+
## Résumé
|
|
296
126
|
|
|
297
|
-
```json
|
|
298
|
-
{
|
|
299
|
-
"featureId": "FEAT-XXX",
|
|
300
|
-
"validatedAt": "2024-01-15T14:30:00Z",
|
|
301
|
-
"validatedBy": "product.owner@company.com",
|
|
302
|
-
"status": "APPROVED | REJECTED",
|
|
303
|
-
"documents": {
|
|
304
|
-
"discovery": { "version": "1.0", "status": "approved" },
|
|
305
|
-
"brd": { "version": "1.0", "status": "approved" },
|
|
306
|
-
"frd": { "version": "1.0", "status": "approved | needs_revision" }
|
|
307
|
-
},
|
|
308
|
-
"rejectionReasons": {
|
|
309
|
-
"useCases": "string or null",
|
|
310
|
-
"wireframes": "string or null",
|
|
311
|
-
"businessRules": "string or null",
|
|
312
|
-
"permissions": "string or null"
|
|
313
|
-
},
|
|
314
|
-
"requiredChanges": [],
|
|
315
|
-
"comments": "string",
|
|
316
|
-
"nextStep": "handoff | revise"
|
|
317
|
-
}
|
|
318
127
|
```
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
> **Questions sur le processus de validation?**
|
|
325
|
-
>
|
|
326
|
-
> 📧 **support@atlshub.ch**
|
|
128
|
+
VALIDATE - {FEATURE_ID}
|
|
129
|
+
├── Status: {APPROVED/REJECTED}
|
|
130
|
+
├── Documents: {N} validés
|
|
131
|
+
└── Prochain: /business-analyse:6-handoff {FEATURE_ID}
|
|
132
|
+
```
|