@atlashub/smartstack-cli 1.5.0 → 1.5.2
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 +920 -916
- package/.documentation/apex.html +1022 -1018
- package/.documentation/business-analyse.html +1505 -1501
- package/.documentation/commands.html +684 -680
- package/.documentation/css/styles.css +2168 -2168
- package/.documentation/efcore.html +2509 -2505
- package/.documentation/gitflow.html +2622 -2618
- package/.documentation/hooks.html +417 -413
- package/.documentation/index.html +327 -323
- package/.documentation/init.html +565 -0
- package/.documentation/installation.html +548 -462
- package/.documentation/js/app.js +794 -794
- package/.documentation/ralph-loop.html +534 -530
- package/.documentation/test-web.html +517 -513
- 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 +18 -8
- 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 -562
- 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,326 +1,326 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Phase 5 - User validation of specifications
|
|
3
|
-
agent: ba-validate
|
|
4
|
-
model: haiku
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Phase 5: Validation Utilisateur
|
|
8
|
-
|
|
9
|
-
> **Modèle:** Haiku (gate approbation, oui/non)
|
|
10
|
-
> **Coût estimé:** ~$0.01
|
|
11
|
-
> **Prérequis:** 3-functional-specification.md existant
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## GATE VALIDATION (BLOQUANT)
|
|
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
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
FEATURE_ID=$1
|
|
43
|
-
FEATURE_DIR=$(find .business-analyse -type d -name "${FEATURE_ID}*" | head -1)
|
|
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")
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
---
|
|
59
|
-
|
|
60
|
-
## STEP 2: Afficher le résumé pour validation
|
|
61
|
-
|
|
62
|
-
```
|
|
63
|
-
================================================================================
|
|
64
|
-
VALIDATION DES SPÉCIFICATIONS - {FEATURE_ID}
|
|
65
|
-
================================================================================
|
|
66
|
-
|
|
67
|
-
DOCUMENTS À VALIDER:
|
|
68
|
-
|
|
69
|
-
1. DISCOVERY (1-discovery.md)
|
|
70
|
-
────────────────────────────────────────
|
|
71
|
-
• Stakeholders identifiés: {N}
|
|
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
|
-
```
|
|
91
|
-
|
|
92
|
-
---
|
|
93
|
-
|
|
94
|
-
## STEP 3: Demande de validation
|
|
95
|
-
|
|
96
|
-
```javascript
|
|
97
|
-
AskUserQuestion({
|
|
98
|
-
questions: [
|
|
99
|
-
{
|
|
100
|
-
question: "Les cas d'utilisation couvrent-ils tous les besoins exprimés?",
|
|
101
|
-
header: "Use Cases",
|
|
102
|
-
options: [
|
|
103
|
-
{ label: "Oui, complets", description: "Tous les UC sont validés" },
|
|
104
|
-
{ label: "Partiellement", description: "Certains UC manquent ou sont incomplets" },
|
|
105
|
-
{ label: "Non", description: "Révision majeure nécessaire" }
|
|
106
|
-
],
|
|
107
|
-
multiSelect: false
|
|
108
|
-
},
|
|
109
|
-
{
|
|
110
|
-
question: "Les wireframes correspondent-ils à vos attentes?",
|
|
111
|
-
header: "UI/UX",
|
|
112
|
-
options: [
|
|
113
|
-
{ label: "Oui, validés", description: "Les écrans sont conformes" },
|
|
114
|
-
{ label: "Ajustements mineurs", description: "Quelques modifications à faire" },
|
|
115
|
-
{ label: "Non", description: "Refonte des wireframes nécessaire" }
|
|
116
|
-
],
|
|
117
|
-
multiSelect: false
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
question: "Les règles métier (BR-XXX) sont-elles correctes?",
|
|
121
|
-
header: "Règles",
|
|
122
|
-
options: [
|
|
123
|
-
{ label: "Oui, correctes", description: "Toutes les règles sont validées" },
|
|
124
|
-
{ label: "Corrections mineures", description: "Quelques règles à ajuster" },
|
|
125
|
-
{ label: "Non", description: "Règles incorrectes ou manquantes" }
|
|
126
|
-
],
|
|
127
|
-
multiSelect: false
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
question: "Les permissions sont-elles appropriées?",
|
|
131
|
-
header: "Permissions",
|
|
132
|
-
options: [
|
|
133
|
-
{ label: "Oui, validées", description: "Matrice permissions OK" },
|
|
134
|
-
{ label: "À ajuster", description: "Certains rôles/permissions à modifier" },
|
|
135
|
-
{ label: "Non", description: "Permissions à revoir entièrement" }
|
|
136
|
-
],
|
|
137
|
-
multiSelect: false
|
|
138
|
-
}
|
|
139
|
-
]
|
|
140
|
-
})
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
---
|
|
144
|
-
|
|
145
|
-
## STEP 4: Traitement de la décision
|
|
146
|
-
|
|
147
|
-
### Si toutes les réponses sont positives (Oui/Validé)
|
|
148
|
-
|
|
149
|
-
```bash
|
|
150
|
-
# Créer le fichier validation.json
|
|
151
|
-
cat > "$FEATURE_DIR/validation.json" << EOF
|
|
152
|
-
{
|
|
153
|
-
"featureId": "$FEATURE_ID",
|
|
154
|
-
"validatedAt": "$(date -Iseconds)",
|
|
155
|
-
"validatedBy": "{stakeholder}",
|
|
156
|
-
"status": "APPROVED",
|
|
157
|
-
"documents": {
|
|
158
|
-
"discovery": { "version": "1.0", "status": "approved" },
|
|
159
|
-
"brd": { "version": "1.0", "status": "approved" },
|
|
160
|
-
"frd": { "version": "1.0", "status": "approved" }
|
|
161
|
-
},
|
|
162
|
-
"comments": "",
|
|
163
|
-
"nextStep": "handoff"
|
|
164
|
-
}
|
|
165
|
-
EOF
|
|
166
|
-
|
|
167
|
-
echo "✅ VALIDATION APPROUVÉE"
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
**Output:**
|
|
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
|
|
197
|
-
|
|
198
|
-
```bash
|
|
199
|
-
# Créer le fichier validation.json avec status REJECTED
|
|
200
|
-
cat > "$FEATURE_DIR/validation.json" << EOF
|
|
201
|
-
{
|
|
202
|
-
"featureId": "$FEATURE_ID",
|
|
203
|
-
"validatedAt": "$(date -Iseconds)",
|
|
204
|
-
"validatedBy": "{stakeholder}",
|
|
205
|
-
"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
|
-
],
|
|
216
|
-
"nextStep": "revise"
|
|
217
|
-
}
|
|
218
|
-
EOF
|
|
219
|
-
|
|
220
|
-
echo "❌ VALIDATION REJETÉE - Révision requise"
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
**Output:**
|
|
224
|
-
```
|
|
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
|
-
|
|
282
|
-
---
|
|
283
|
-
|
|
284
|
-
## Règles de versioning post-validation
|
|
285
|
-
|
|
286
|
-
| Situation | Action | Nouvelle version |
|
|
287
|
-
|-----------|--------|------------------|
|
|
288
|
-
| Approuvé | Verrouiller | 1.0 (locked) |
|
|
289
|
-
| Rejet mineur | Réviser specify | 1.1 |
|
|
290
|
-
| Rejet majeur | Réviser analyse | 2.0 |
|
|
291
|
-
| Change request post-handoff | CR process | via CR-FEAT-XXX-001 |
|
|
292
|
-
|
|
293
|
-
---
|
|
294
|
-
|
|
295
|
-
## Fichier validation.json
|
|
296
|
-
|
|
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
|
-
```
|
|
319
|
-
|
|
320
|
-
---
|
|
321
|
-
|
|
322
|
-
## Support
|
|
323
|
-
|
|
324
|
-
> **Questions sur le processus de validation?**
|
|
325
|
-
>
|
|
326
|
-
> 📧 **support@atlshub.ch**
|
|
1
|
+
---
|
|
2
|
+
description: Phase 5 - User validation of specifications
|
|
3
|
+
agent: ba-validate
|
|
4
|
+
model: haiku
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Phase 5: Validation Utilisateur
|
|
8
|
+
|
|
9
|
+
> **Modèle:** Haiku (gate approbation, oui/non)
|
|
10
|
+
> **Coût estimé:** ~$0.01
|
|
11
|
+
> **Prérequis:** 3-functional-specification.md existant
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## GATE VALIDATION (BLOQUANT)
|
|
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
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
FEATURE_ID=$1
|
|
43
|
+
FEATURE_DIR=$(find .business-analyse -type d -name "${FEATURE_ID}*" | head -1)
|
|
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")
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## STEP 2: Afficher le résumé pour validation
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
================================================================================
|
|
64
|
+
VALIDATION DES SPÉCIFICATIONS - {FEATURE_ID}
|
|
65
|
+
================================================================================
|
|
66
|
+
|
|
67
|
+
DOCUMENTS À VALIDER:
|
|
68
|
+
|
|
69
|
+
1. DISCOVERY (1-discovery.md)
|
|
70
|
+
────────────────────────────────────────
|
|
71
|
+
• Stakeholders identifiés: {N}
|
|
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
|
+
```
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## STEP 3: Demande de validation
|
|
95
|
+
|
|
96
|
+
```javascript
|
|
97
|
+
AskUserQuestion({
|
|
98
|
+
questions: [
|
|
99
|
+
{
|
|
100
|
+
question: "Les cas d'utilisation couvrent-ils tous les besoins exprimés?",
|
|
101
|
+
header: "Use Cases",
|
|
102
|
+
options: [
|
|
103
|
+
{ label: "Oui, complets", description: "Tous les UC sont validés" },
|
|
104
|
+
{ label: "Partiellement", description: "Certains UC manquent ou sont incomplets" },
|
|
105
|
+
{ label: "Non", description: "Révision majeure nécessaire" }
|
|
106
|
+
],
|
|
107
|
+
multiSelect: false
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
question: "Les wireframes correspondent-ils à vos attentes?",
|
|
111
|
+
header: "UI/UX",
|
|
112
|
+
options: [
|
|
113
|
+
{ label: "Oui, validés", description: "Les écrans sont conformes" },
|
|
114
|
+
{ label: "Ajustements mineurs", description: "Quelques modifications à faire" },
|
|
115
|
+
{ label: "Non", description: "Refonte des wireframes nécessaire" }
|
|
116
|
+
],
|
|
117
|
+
multiSelect: false
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
question: "Les règles métier (BR-XXX) sont-elles correctes?",
|
|
121
|
+
header: "Règles",
|
|
122
|
+
options: [
|
|
123
|
+
{ label: "Oui, correctes", description: "Toutes les règles sont validées" },
|
|
124
|
+
{ label: "Corrections mineures", description: "Quelques règles à ajuster" },
|
|
125
|
+
{ label: "Non", description: "Règles incorrectes ou manquantes" }
|
|
126
|
+
],
|
|
127
|
+
multiSelect: false
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
question: "Les permissions sont-elles appropriées?",
|
|
131
|
+
header: "Permissions",
|
|
132
|
+
options: [
|
|
133
|
+
{ label: "Oui, validées", description: "Matrice permissions OK" },
|
|
134
|
+
{ label: "À ajuster", description: "Certains rôles/permissions à modifier" },
|
|
135
|
+
{ label: "Non", description: "Permissions à revoir entièrement" }
|
|
136
|
+
],
|
|
137
|
+
multiSelect: false
|
|
138
|
+
}
|
|
139
|
+
]
|
|
140
|
+
})
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## STEP 4: Traitement de la décision
|
|
146
|
+
|
|
147
|
+
### Si toutes les réponses sont positives (Oui/Validé)
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
# Créer le fichier validation.json
|
|
151
|
+
cat > "$FEATURE_DIR/validation.json" << EOF
|
|
152
|
+
{
|
|
153
|
+
"featureId": "$FEATURE_ID",
|
|
154
|
+
"validatedAt": "$(date -Iseconds)",
|
|
155
|
+
"validatedBy": "{stakeholder}",
|
|
156
|
+
"status": "APPROVED",
|
|
157
|
+
"documents": {
|
|
158
|
+
"discovery": { "version": "1.0", "status": "approved" },
|
|
159
|
+
"brd": { "version": "1.0", "status": "approved" },
|
|
160
|
+
"frd": { "version": "1.0", "status": "approved" }
|
|
161
|
+
},
|
|
162
|
+
"comments": "",
|
|
163
|
+
"nextStep": "handoff"
|
|
164
|
+
}
|
|
165
|
+
EOF
|
|
166
|
+
|
|
167
|
+
echo "✅ VALIDATION APPROUVÉE"
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
**Output:**
|
|
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
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
# Créer le fichier validation.json avec status REJECTED
|
|
200
|
+
cat > "$FEATURE_DIR/validation.json" << EOF
|
|
201
|
+
{
|
|
202
|
+
"featureId": "$FEATURE_ID",
|
|
203
|
+
"validatedAt": "$(date -Iseconds)",
|
|
204
|
+
"validatedBy": "{stakeholder}",
|
|
205
|
+
"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
|
+
],
|
|
216
|
+
"nextStep": "revise"
|
|
217
|
+
}
|
|
218
|
+
EOF
|
|
219
|
+
|
|
220
|
+
echo "❌ VALIDATION REJETÉE - Révision requise"
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
**Output:**
|
|
224
|
+
```
|
|
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
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
## Règles de versioning post-validation
|
|
285
|
+
|
|
286
|
+
| Situation | Action | Nouvelle version |
|
|
287
|
+
|-----------|--------|------------------|
|
|
288
|
+
| Approuvé | Verrouiller | 1.0 (locked) |
|
|
289
|
+
| Rejet mineur | Réviser specify | 1.1 |
|
|
290
|
+
| Rejet majeur | Réviser analyse | 2.0 |
|
|
291
|
+
| Change request post-handoff | CR process | via CR-FEAT-XXX-001 |
|
|
292
|
+
|
|
293
|
+
---
|
|
294
|
+
|
|
295
|
+
## Fichier validation.json
|
|
296
|
+
|
|
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
|
+
```
|
|
319
|
+
|
|
320
|
+
---
|
|
321
|
+
|
|
322
|
+
## Support
|
|
323
|
+
|
|
324
|
+
> **Questions sur le processus de validation?**
|
|
325
|
+
>
|
|
326
|
+
> 📧 **support@atlshub.ch**
|