@atlashub/smartstack-cli 1.5.1 → 1.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.documentation/css/styles.css +2168 -2168
- package/.documentation/js/app.js +794 -794
- package/config/default-config.json +86 -86
- package/config/settings.json +53 -53
- package/config/settings.local.example.json +16 -16
- package/dist/index.js +0 -0
- package/dist/index.js.map +1 -1
- package/package.json +88 -88
- package/templates/agents/action.md +36 -36
- package/templates/agents/efcore/conflicts.md +84 -84
- package/templates/agents/efcore/db-deploy.md +51 -51
- package/templates/agents/efcore/db-reset.md +59 -59
- package/templates/agents/efcore/db-seed.md +56 -56
- package/templates/agents/efcore/db-status.md +64 -64
- package/templates/agents/efcore/migration.md +85 -85
- package/templates/agents/efcore/rebase-snapshot.md +62 -62
- package/templates/agents/efcore/scan.md +90 -90
- package/templates/agents/efcore/squash.md +67 -67
- package/templates/agents/explore-codebase.md +65 -65
- package/templates/agents/explore-docs.md +97 -97
- package/templates/agents/fix-grammar.md +49 -49
- package/templates/agents/gitflow/abort.md +45 -45
- package/templates/agents/gitflow/cleanup.md +85 -85
- package/templates/agents/gitflow/commit.md +40 -40
- package/templates/agents/gitflow/exec.md +48 -48
- package/templates/agents/gitflow/finish.md +92 -92
- package/templates/agents/gitflow/init.md +139 -139
- package/templates/agents/gitflow/merge.md +62 -62
- package/templates/agents/gitflow/plan.md +42 -42
- package/templates/agents/gitflow/pr.md +78 -78
- package/templates/agents/gitflow/review.md +49 -49
- package/templates/agents/gitflow/start.md +61 -61
- package/templates/agents/gitflow/status.md +32 -32
- package/templates/agents/snipper.md +36 -36
- package/templates/agents/websearch.md +46 -46
- package/templates/commands/_resources/formatting-guide.md +124 -124
- package/templates/commands/ai-prompt.md +315 -315
- package/templates/commands/apex/1-analyze.md +100 -100
- package/templates/commands/apex/2-plan.md +145 -145
- package/templates/commands/apex/3-execute.md +171 -171
- package/templates/commands/apex/4-examine.md +116 -116
- package/templates/commands/apex/5-tasks.md +209 -209
- package/templates/commands/apex.md +76 -76
- package/templates/commands/application/create.md +362 -362
- package/templates/commands/application/templates-backend.md +463 -463
- package/templates/commands/application/templates-frontend.md +517 -517
- package/templates/commands/application/templates-i18n.md +478 -478
- package/templates/commands/application/templates-seed.md +362 -362
- package/templates/commands/application.md +303 -303
- package/templates/commands/business-analyse/0-orchestrate.md +640 -640
- package/templates/commands/business-analyse/1-init.md +269 -269
- package/templates/commands/business-analyse/2-discover.md +520 -520
- package/templates/commands/business-analyse/3-analyse.md +408 -408
- package/templates/commands/business-analyse/4-specify.md +598 -598
- package/templates/commands/business-analyse/5-validate.md +326 -326
- package/templates/commands/business-analyse/6-handoff.md +746 -746
- package/templates/commands/business-analyse/7-doc-html.md +602 -602
- package/templates/commands/business-analyse/bug.md +325 -325
- package/templates/commands/business-analyse/change-request.md +368 -368
- package/templates/commands/business-analyse/hotfix.md +200 -200
- package/templates/commands/business-analyse.md +640 -640
- package/templates/commands/controller/create.md +216 -216
- package/templates/commands/controller/postman-templates.md +528 -528
- package/templates/commands/controller/templates.md +600 -600
- package/templates/commands/controller.md +337 -337
- package/templates/commands/create/agent.md +138 -138
- package/templates/commands/create/command.md +166 -166
- package/templates/commands/create/hook.md +234 -234
- package/templates/commands/create/plugin.md +329 -329
- package/templates/commands/create/project.md +507 -507
- package/templates/commands/create/skill.md +199 -199
- package/templates/commands/create.md +220 -220
- package/templates/commands/debug.md +95 -95
- package/templates/commands/documentation/module.md +202 -202
- package/templates/commands/documentation/templates.md +432 -432
- package/templates/commands/documentation.md +190 -190
- package/templates/commands/efcore/_env-check.md +153 -153
- package/templates/commands/efcore/conflicts.md +186 -186
- package/templates/commands/efcore/db-deploy.md +193 -193
- package/templates/commands/efcore/db-reset.md +426 -426
- package/templates/commands/efcore/db-seed.md +326 -326
- package/templates/commands/efcore/db-status.md +226 -226
- package/templates/commands/efcore/migration.md +400 -400
- package/templates/commands/efcore/rebase-snapshot.md +264 -264
- package/templates/commands/efcore/scan.md +198 -198
- package/templates/commands/efcore/squash.md +298 -298
- package/templates/commands/efcore.md +224 -224
- package/templates/commands/epct.md +69 -69
- package/templates/commands/explain.md +186 -186
- package/templates/commands/explore.md +45 -45
- package/templates/commands/feature-full.md +267 -267
- package/templates/commands/gitflow/1-init.md +1038 -1038
- package/templates/commands/gitflow/10-start.md +768 -768
- package/templates/commands/gitflow/11-finish.md +457 -457
- package/templates/commands/gitflow/12-cleanup.md +276 -276
- package/templates/commands/gitflow/13-sync.md +216 -216
- package/templates/commands/gitflow/14-rebase.md +251 -251
- package/templates/commands/gitflow/2-status.md +277 -277
- package/templates/commands/gitflow/3-commit.md +344 -344
- package/templates/commands/gitflow/4-plan.md +145 -145
- package/templates/commands/gitflow/5-exec.md +147 -147
- package/templates/commands/gitflow/6-abort.md +344 -344
- package/templates/commands/gitflow/7-pull-request.md +453 -355
- package/templates/commands/gitflow/8-review.md +240 -176
- package/templates/commands/gitflow/9-merge.md +451 -365
- package/templates/commands/gitflow.md +128 -128
- package/templates/commands/implement.md +663 -663
- package/templates/commands/init.md +567 -567
- package/templates/commands/mcp-integration.md +330 -330
- package/templates/commands/notification.md +129 -129
- package/templates/commands/oneshot.md +57 -57
- package/templates/commands/quick-search.md +72 -72
- package/templates/commands/ralph-loop/cancel-ralph.md +18 -18
- package/templates/commands/ralph-loop/help.md +126 -126
- package/templates/commands/ralph-loop/ralph-loop.md +18 -18
- package/templates/commands/review.md +106 -106
- package/templates/commands/utils/test-web-config.md +160 -160
- package/templates/commands/utils/test-web.md +151 -151
- package/templates/commands/validate.md +233 -233
- package/templates/commands/workflow.md +193 -193
- package/templates/gitflow/config.json +138 -138
- package/templates/hooks/ef-migration-check.md +139 -139
- package/templates/hooks/hooks.json +25 -25
- package/templates/hooks/stop-hook.sh +177 -177
- package/templates/skills/ai-prompt/SKILL.md +778 -778
- package/templates/skills/application/SKILL.md +563 -563
- package/templates/skills/application/templates-backend.md +450 -450
- package/templates/skills/application/templates-frontend.md +531 -531
- package/templates/skills/application/templates-i18n.md +520 -520
- package/templates/skills/application/templates-seed.md +647 -647
- package/templates/skills/business-analyse/SKILL.md +191 -191
- package/templates/skills/business-analyse/questionnaire.md +283 -283
- package/templates/skills/business-analyse/templates-frd.md +477 -477
- package/templates/skills/business-analyse/templates-react.md +580 -580
- package/templates/skills/controller/SKILL.md +240 -240
- package/templates/skills/controller/postman-templates.md +614 -614
- package/templates/skills/controller/templates.md +1468 -1468
- package/templates/skills/documentation/SKILL.md +133 -133
- package/templates/skills/documentation/templates.md +476 -476
- package/templates/skills/feature-full/SKILL.md +838 -838
- package/templates/skills/notification/SKILL.md +555 -555
- package/templates/skills/ui-components/SKILL.md +870 -870
- package/templates/skills/workflow/SKILL.md +582 -582
- package/templates/test-web/api-health.json +38 -38
- package/templates/test-web/minimal.json +19 -19
- package/templates/test-web/npm-package.json +46 -46
- package/templates/test-web/seo-check.json +54 -54
|
@@ -1,520 +1,520 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Phase 2 - Discovery and requirements elicitation (ULTRATHINK)
|
|
3
|
-
agent: ba-discover
|
|
4
|
-
model: opus
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Phase 2: Discovery - Élicitation des Besoins
|
|
8
|
-
|
|
9
|
-
> **Modèle:** OPUS (élicitation exhaustive, ULTRATHINK requis)
|
|
10
|
-
> **Coût estimé:** ~$0.30 (one-shot) / ~$1.50-4.50 (avec ralph-loop)
|
|
11
|
-
> **Standard:** BABOK v3 - Techniques d'élicitation
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## RALPH-LOOP INTEGRATION (RECOMMANDÉ)
|
|
16
|
-
|
|
17
|
-
```
|
|
18
|
-
╔══════════════════════════════════════════════════════════════════════════════╗
|
|
19
|
-
║ UTILISATION AVEC RALPH-LOOP POUR SPECS EN BÉTON ║
|
|
20
|
-
╠══════════════════════════════════════════════════════════════════════════════╣
|
|
21
|
-
║ ║
|
|
22
|
-
║ /ralph-loop "/business-analyse:2-discover FEAT-XXX" ║
|
|
23
|
-
║ --completion-promise "COMPLETE" --max-iterations 15 ║
|
|
24
|
-
║ ║
|
|
25
|
-
║ FICHIERS RALPH (créés automatiquement): ║
|
|
26
|
-
║ ├── prd.json → Catégories à documenter avec statut ║
|
|
27
|
-
║ └── progress.txt → Mémoire des questions/réponses ║
|
|
28
|
-
║ ║
|
|
29
|
-
║ PROCESSUS PAR ITERATION: ║
|
|
30
|
-
║ 1. Lire prd.json → Trouver prochaine catégorie "passes": false ║
|
|
31
|
-
║ 2. Lire progress.txt → Voir questions déjà posées ║
|
|
32
|
-
║ 3. Poser questions sur UNE catégorie ║
|
|
33
|
-
║ 4. Mettre à jour 1-discovery.md ║
|
|
34
|
-
║ 5. Mettre à jour prd.json → "passes": true ║
|
|
35
|
-
║ 6. Ajouter Q&R à progress.txt ║
|
|
36
|
-
║ 7. Si TOUTES catégories "passes": true → <promise>COMPLETE</promise> ║
|
|
37
|
-
║ ║
|
|
38
|
-
║ SIGNAL DE FIN: <promise>COMPLETE</promise> ║
|
|
39
|
-
║ ║
|
|
40
|
-
╚══════════════════════════════════════════════════════════════════════════════╝
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
### Structure prd.json pour Discovery
|
|
44
|
-
|
|
45
|
-
```json
|
|
46
|
-
{
|
|
47
|
-
"feature_id": "FEAT-XXX",
|
|
48
|
-
"phase": "discovery",
|
|
49
|
-
"userStories": [
|
|
50
|
-
{ "id": "1", "title": "Section Contexte Business", "passes": false },
|
|
51
|
-
{ "id": "2", "title": "Section Stakeholders (≥3)", "passes": false },
|
|
52
|
-
{ "id": "3", "title": "Section Périmètre (≥5 must-have)", "passes": false },
|
|
53
|
-
{ "id": "4", "title": "Section Données et Entités", "passes": false },
|
|
54
|
-
{ "id": "5", "title": "Section Sécurité (matrice CRUD)", "passes": false },
|
|
55
|
-
{ "id": "6", "title": "Section Contraintes", "passes": false },
|
|
56
|
-
{ "id": "7", "title": "Section Intégrations SmartStack", "passes": false },
|
|
57
|
-
{ "id": "8", "title": "Section Questions ouvertes", "passes": false },
|
|
58
|
-
{ "id": "9", "title": "Validation: aucun TBD/? restant", "passes": false }
|
|
59
|
-
]
|
|
60
|
-
}
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
---
|
|
64
|
-
|
|
65
|
-
## ULTRATHINK MODE (OBLIGATOIRE)
|
|
66
|
-
|
|
67
|
-
```
|
|
68
|
-
╔══════════════════════════════════════════════════════════════════════════════╗
|
|
69
|
-
║ ULTRATHINK: Réflexion approfondie pour élicitation exhaustive ║
|
|
70
|
-
╠══════════════════════════════════════════════════════════════════════════════╣
|
|
71
|
-
║ ║
|
|
72
|
-
║ CE MODE EXIGE: ║
|
|
73
|
-
║ • Considérer TOUS les edge cases avant chaque question ║
|
|
74
|
-
║ • Challenger CHAQUE hypothèse du stakeholder ║
|
|
75
|
-
║ • Anticiper les besoins NON exprimés ║
|
|
76
|
-
║ • Ne JAMAIS accepter de réponses vagues ║
|
|
77
|
-
║ • Valider la complétude avant de passer à la catégorie suivante ║
|
|
78
|
-
║ ║
|
|
79
|
-
║ QUESTIONS DE SUIVI OBLIGATOIRES: ║
|
|
80
|
-
║ • "Pouvez-vous donner un exemple concret?" ║
|
|
81
|
-
║ • "Comment mesurez-vous cela aujourd'hui?" ║
|
|
82
|
-
║ • "Que se passe-t-il si cette règle n'est pas respectée?" ║
|
|
83
|
-
║ • "Qui est impacté par cette décision?" ║
|
|
84
|
-
║ ║
|
|
85
|
-
╚══════════════════════════════════════════════════════════════════════════════╝
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
---
|
|
89
|
-
|
|
90
|
-
## STEP 1: Charger le contexte
|
|
91
|
-
|
|
92
|
-
```bash
|
|
93
|
-
# Charger la configuration
|
|
94
|
-
CONFIG=$(cat .business-analyse/config.json)
|
|
95
|
-
FEATURE_ID=$1 # Paramètre: FEAT-XXX
|
|
96
|
-
|
|
97
|
-
# Trouver le dossier feature
|
|
98
|
-
FEATURE_DIR=$(find .business-analyse -type d -name "${FEATURE_ID}*" | head -1)
|
|
99
|
-
|
|
100
|
-
if [ -z "$FEATURE_DIR" ]; then
|
|
101
|
-
echo "❌ ERREUR: Feature $FEATURE_ID non trouvée"
|
|
102
|
-
echo " Lancez d'abord: /business-analyse:1-init"
|
|
103
|
-
exit 1
|
|
104
|
-
fi
|
|
105
|
-
|
|
106
|
-
# Extraire application et module du path
|
|
107
|
-
APPLICATION=$(echo $FEATURE_DIR | grep -oP 'business/\K[^/]+')
|
|
108
|
-
MODULE=$(echo $FEATURE_DIR | grep -oP 'modules/\K[^/]+')
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
---
|
|
112
|
-
|
|
113
|
-
## STEP 2: Introduction et collecte du besoin initial
|
|
114
|
-
|
|
115
|
-
```javascript
|
|
116
|
-
AskUserQuestion({
|
|
117
|
-
questions: [{
|
|
118
|
-
question: "Décrivez le besoin business en quelques phrases. Quel problème voulez-vous résoudre?",
|
|
119
|
-
header: "Besoin",
|
|
120
|
-
options: [
|
|
121
|
-
{ label: "Nouveau processus", description: "Créer un processus qui n'existe pas" },
|
|
122
|
-
{ label: "Amélioration", description: "Améliorer un processus existant" },
|
|
123
|
-
{ label: "Automatisation", description: "Automatiser des tâches manuelles" },
|
|
124
|
-
{ label: "Intégration", description: "Connecter des systèmes existants" }
|
|
125
|
-
],
|
|
126
|
-
multiSelect: false
|
|
127
|
-
}]
|
|
128
|
-
})
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
---
|
|
132
|
-
|
|
133
|
-
## STEP 3: Élicitation structurée (40+ questions)
|
|
134
|
-
|
|
135
|
-
> **Référence:** Utiliser le questionnaire complet dans `questionnaire.md`
|
|
136
|
-
|
|
137
|
-
### 3.1 Contexte Business (Q1.1 - Q1.8)
|
|
138
|
-
|
|
139
|
-
Questions clés à poser:
|
|
140
|
-
- Quel problème business ce module doit-il résoudre?
|
|
141
|
-
- Quelle est la situation actuelle (AS-IS)?
|
|
142
|
-
- Quelle est la situation cible (TO-BE)?
|
|
143
|
-
- Quels sont les KPIs de succès mesurables?
|
|
144
|
-
|
|
145
|
-
**ULTRATHINK:** Pour chaque réponse, challenger avec "Pourquoi?" au moins 3 fois.
|
|
146
|
-
|
|
147
|
-
### 3.2 Stakeholders (Q2.1 - Q2.8)
|
|
148
|
-
|
|
149
|
-
Questions clés:
|
|
150
|
-
- Qui sont les utilisateurs finaux directs?
|
|
151
|
-
- Qui est le sponsor/décideur final?
|
|
152
|
-
- Pour chaque rôle: Quelles tâches doit-il accomplir?
|
|
153
|
-
|
|
154
|
-
**ULTRATHINK:** Créer une matrice rôle/responsabilité/fréquence.
|
|
155
|
-
|
|
156
|
-
### 3.3 Périmètre fonctionnel (Q3.1 - Q3.8)
|
|
157
|
-
|
|
158
|
-
Questions clés:
|
|
159
|
-
- Fonctionnalités ESSENTIELLES (Must-Have)?
|
|
160
|
-
- Fonctionnalités SOUHAITÉES (Should-Have)?
|
|
161
|
-
- Qu'est-ce qui est EXPLICITEMENT exclu?
|
|
162
|
-
|
|
163
|
-
**ULTRATHINK:** Pour chaque Must-Have, demander "Que se passe-t-il sans cette fonctionnalité?"
|
|
164
|
-
|
|
165
|
-
### 3.4 Données (Q4.1 - Q4.8)
|
|
166
|
-
|
|
167
|
-
Questions clés:
|
|
168
|
-
- Quelles sont les entités principales manipulées?
|
|
169
|
-
- Pour chaque entité: attributs importants?
|
|
170
|
-
- Données sensibles à protéger?
|
|
171
|
-
|
|
172
|
-
**ULTRATHINK:** Esquisser un modèle conceptuel simplifié.
|
|
173
|
-
|
|
174
|
-
### 3.5 Sécurité & Permissions (Q6.1 - Q6.8)
|
|
175
|
-
|
|
176
|
-
Questions clés:
|
|
177
|
-
- Qui peut VOIR/CRÉER/MODIFIER/SUPPRIMER?
|
|
178
|
-
- Audit trail requis?
|
|
179
|
-
- Conformité réglementaire?
|
|
180
|
-
|
|
181
|
-
**ULTRATHINK:** Construire matrice CRUD par rôle.
|
|
182
|
-
|
|
183
|
-
### 3.6 Intégrations SmartStack (Q7.1 - Q7.10) ⭐ NOUVEAU
|
|
184
|
-
|
|
185
|
-
> **CRITIQUE:** Ces questions déterminent les skills à utiliser pendant l'implémentation.
|
|
186
|
-
|
|
187
|
-
#### Notifications (Q7.1 - Q7.3)
|
|
188
|
-
|
|
189
|
-
```javascript
|
|
190
|
-
AskUserQuestion({
|
|
191
|
-
questions: [{
|
|
192
|
-
question: "Des notifications in-app sont-elles nécessaires pour cette feature?",
|
|
193
|
-
header: "Notifs",
|
|
194
|
-
options: [
|
|
195
|
-
{ label: "Oui", description: "Notifier les utilisateurs lors d'événements" },
|
|
196
|
-
{ label: "Non", description: "Pas de notification nécessaire" },
|
|
197
|
-
{ label: "À déterminer", description: "À analyser selon les cas d'usage" }
|
|
198
|
-
],
|
|
199
|
-
multiSelect: false
|
|
200
|
-
}]
|
|
201
|
-
})
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
Si OUI, demander:
|
|
205
|
-
- Q7.2: Quels événements déclenchent une notification? (création, modification, assignation, etc.)
|
|
206
|
-
- Q7.3: Qui doit être notifié? (créateur, assigné, admin, rôle spécifique)
|
|
207
|
-
|
|
208
|
-
#### Workflows & Emails (Q7.4 - Q7.6)
|
|
209
|
-
|
|
210
|
-
```javascript
|
|
211
|
-
AskUserQuestion({
|
|
212
|
-
questions: [{
|
|
213
|
-
question: "Des workflows automatisés sont-ils nécessaires? (emails, rappels, escalades)",
|
|
214
|
-
header: "Workflow",
|
|
215
|
-
options: [
|
|
216
|
-
{ label: "Oui - Email", description: "Envoi d'emails automatiques" },
|
|
217
|
-
{ label: "Oui - Rappels", description: "Rappels programmés (ex: SLA)" },
|
|
218
|
-
{ label: "Oui - Multi-étapes", description: "Workflow complexe multi-étapes" },
|
|
219
|
-
{ label: "Non", description: "Pas de workflow automatisé" }
|
|
220
|
-
],
|
|
221
|
-
multiSelect: true
|
|
222
|
-
}]
|
|
223
|
-
})
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
Si OUI, demander:
|
|
227
|
-
- Q7.5: Quels triggers déclenchent le workflow? (entity.created, entity.updated, etc.)
|
|
228
|
-
- Q7.6: Quelles variables sont disponibles? (entityId, entityName, userEmail, etc.)
|
|
229
|
-
|
|
230
|
-
#### Assistance IA (Q7.7 - Q7.10)
|
|
231
|
-
|
|
232
|
-
```javascript
|
|
233
|
-
AskUserQuestion({
|
|
234
|
-
questions: [{
|
|
235
|
-
question: "Une assistance IA est-elle pertinente pour cette feature?",
|
|
236
|
-
header: "IA",
|
|
237
|
-
options: [
|
|
238
|
-
{ label: "Génération texte", description: "Générer du contenu (descriptions, résumés)" },
|
|
239
|
-
{ label: "Classification", description: "Catégoriser automatiquement (priorité, tags)" },
|
|
240
|
-
{ label: "Suggestions", description: "Proposer des actions ou réponses" },
|
|
241
|
-
{ label: "Non applicable", description: "Pas d'IA nécessaire" }
|
|
242
|
-
],
|
|
243
|
-
multiSelect: true
|
|
244
|
-
}]
|
|
245
|
-
})
|
|
246
|
-
```
|
|
247
|
-
|
|
248
|
-
Si OUI, demander:
|
|
249
|
-
- Q7.8: Quel type de sortie attendue? (texte libre, JSON structuré, enum)
|
|
250
|
-
- Q7.9: Quelles données d'entrée? (contexte, historique, documents)
|
|
251
|
-
- Q7.10: Quelle validation requise? (schema JSON, longueur max, format)
|
|
252
|
-
|
|
253
|
-
**ULTRATHINK:** Pour chaque intégration identifiée, noter le skill associé:
|
|
254
|
-
- Notifications → `/notification`
|
|
255
|
-
- Workflows → `/workflow`
|
|
256
|
-
- IA → `/ai-prompt`
|
|
257
|
-
|
|
258
|
-
---
|
|
259
|
-
|
|
260
|
-
## STEP 4: Validation des réponses
|
|
261
|
-
|
|
262
|
-
Pour chaque catégorie complétée:
|
|
263
|
-
|
|
264
|
-
```javascript
|
|
265
|
-
AskUserQuestion({
|
|
266
|
-
questions: [{
|
|
267
|
-
question: "Voici le résumé de vos réponses pour [Catégorie]. Est-ce complet et correct?",
|
|
268
|
-
header: "Validation",
|
|
269
|
-
options: [
|
|
270
|
-
{ label: "Correct", description: "Passer à la catégorie suivante" },
|
|
271
|
-
{ label: "À corriger", description: "Modifier certaines réponses" },
|
|
272
|
-
{ label: "À compléter", description: "Ajouter des informations manquantes" }
|
|
273
|
-
],
|
|
274
|
-
multiSelect: false
|
|
275
|
-
}]
|
|
276
|
-
})
|
|
277
|
-
```
|
|
278
|
-
|
|
279
|
-
---
|
|
280
|
-
|
|
281
|
-
## STEP 5: Génération du document 1-discovery.md
|
|
282
|
-
|
|
283
|
-
```bash
|
|
284
|
-
DISCOVERY_FILE="$FEATURE_DIR/1-discovery.md"
|
|
285
|
-
```
|
|
286
|
-
|
|
287
|
-
### Template 1-discovery.md
|
|
288
|
-
|
|
289
|
-
```markdown
|
|
290
|
-
# Discovery - {FEATURE_ID} {Feature Name}
|
|
291
|
-
|
|
292
|
-
> **Module:** business/{application}/{module}
|
|
293
|
-
> **Version:** 1.0
|
|
294
|
-
> **Date:** {YYYY-MM-DD}
|
|
295
|
-
> **Auteur:** Business Analyst (Claude OPUS)
|
|
296
|
-
|
|
297
|
-
---
|
|
298
|
-
|
|
299
|
-
## 1. Contexte Business
|
|
300
|
-
|
|
301
|
-
### 1.1 Description du besoin
|
|
302
|
-
{Besoin exprimé par le stakeholder}
|
|
303
|
-
|
|
304
|
-
### 1.2 Problème actuel (AS-IS)
|
|
305
|
-
{Description de la situation actuelle et ses limitations}
|
|
306
|
-
|
|
307
|
-
### 1.3 Situation cible (TO-BE)
|
|
308
|
-
{Description de l'état souhaité après implémentation}
|
|
309
|
-
|
|
310
|
-
### 1.4 Valeur attendue
|
|
311
|
-
|
|
312
|
-
| KPI | Valeur actuelle | Valeur cible | Gain |
|
|
313
|
-
|-----|-----------------|--------------|------|
|
|
314
|
-
| {kpi} | {actuel} | {cible} | {gain} |
|
|
315
|
-
|
|
316
|
-
---
|
|
317
|
-
|
|
318
|
-
## 2. Stakeholders
|
|
319
|
-
|
|
320
|
-
| Rôle | Nom/Fonction | Implication | Niveau décision |
|
|
321
|
-
|------|--------------|-------------|-----------------|
|
|
322
|
-
| {rôle} | {nom} | {description} | {niveau} |
|
|
323
|
-
|
|
324
|
-
### 2.1 Besoins par rôle
|
|
325
|
-
|
|
326
|
-
| Rôle | Tâches principales | Fréquence | Pain points actuels |
|
|
327
|
-
|------|-------------------|-----------|---------------------|
|
|
328
|
-
| {rôle} | {tâches} | {fréquence} | {frustrations} |
|
|
329
|
-
|
|
330
|
-
---
|
|
331
|
-
|
|
332
|
-
## 3. Périmètre
|
|
333
|
-
|
|
334
|
-
### 3.1 In Scope (Must-Have)
|
|
335
|
-
|
|
336
|
-
| # | Fonctionnalité | Justification |
|
|
337
|
-
|---|----------------|---------------|
|
|
338
|
-
| 1 | {fonctionnalité} | {pourquoi essentiel} |
|
|
339
|
-
|
|
340
|
-
### 3.2 In Scope (Should-Have)
|
|
341
|
-
|
|
342
|
-
| # | Fonctionnalité | Priorité |
|
|
343
|
-
|---|----------------|----------|
|
|
344
|
-
| 1 | {fonctionnalité} | {priorité} |
|
|
345
|
-
|
|
346
|
-
### 3.3 Out of Scope
|
|
347
|
-
|
|
348
|
-
| # | Exclusion | Raison |
|
|
349
|
-
|---|-----------|--------|
|
|
350
|
-
| 1 | {exclusion} | {justification} |
|
|
351
|
-
|
|
352
|
-
---
|
|
353
|
-
|
|
354
|
-
## 4. Données identifiées
|
|
355
|
-
|
|
356
|
-
### 4.1 Entités principales
|
|
357
|
-
|
|
358
|
-
| Entité | Description | Attributs clés |
|
|
359
|
-
|--------|-------------|----------------|
|
|
360
|
-
| {entité} | {description} | {attributs} |
|
|
361
|
-
|
|
362
|
-
### 4.2 Relations
|
|
363
|
-
|
|
364
|
-
```
|
|
365
|
-
{Entité A} ──[1:N]──► {Entité B}
|
|
366
|
-
{Entité A} ──[N:M]──► {Entité C}
|
|
367
|
-
```
|
|
368
|
-
|
|
369
|
-
### 4.3 Données sensibles
|
|
370
|
-
|
|
371
|
-
| Donnée | Niveau sensibilité | Protection requise |
|
|
372
|
-
|--------|-------------------|-------------------|
|
|
373
|
-
| {donnée} | {niveau} | {mesures} |
|
|
374
|
-
|
|
375
|
-
---
|
|
376
|
-
|
|
377
|
-
## 5. Sécurité préliminaire
|
|
378
|
-
|
|
379
|
-
### 5.1 Matrice CRUD par rôle
|
|
380
|
-
|
|
381
|
-
| Permission | Admin | Manager | User | ReadOnly |
|
|
382
|
-
|------------|-------|---------|------|----------|
|
|
383
|
-
| Read | ✅ | ✅ | ✅ | ✅ |
|
|
384
|
-
| Create | ✅ | ✅ | ? | ❌ |
|
|
385
|
-
| Update | ✅ | ✅ | ? | ❌ |
|
|
386
|
-
| Delete | ✅ | ? | ❌ | ❌ |
|
|
387
|
-
|
|
388
|
-
### 5.2 Audit requis
|
|
389
|
-
|
|
390
|
-
| Action | Audit | Détails à logger |
|
|
391
|
-
|--------|-------|------------------|
|
|
392
|
-
| {action} | Oui/Non | {détails} |
|
|
393
|
-
|
|
394
|
-
---
|
|
395
|
-
|
|
396
|
-
## 6. Contraintes identifiées
|
|
397
|
-
|
|
398
|
-
| Type | Contrainte | Impact | Mitigation |
|
|
399
|
-
|------|------------|--------|------------|
|
|
400
|
-
| Technique | {contrainte} | {impact} | {solution} |
|
|
401
|
-
| Budget | {contrainte} | {impact} | {solution} |
|
|
402
|
-
| Délai | {contrainte} | {impact} | {solution} |
|
|
403
|
-
|
|
404
|
-
---
|
|
405
|
-
|
|
406
|
-
## 7. Intégrations SmartStack ⭐
|
|
407
|
-
|
|
408
|
-
> **Skills associés à utiliser pendant l'implémentation**
|
|
409
|
-
|
|
410
|
-
### 7.1 Notifications
|
|
411
|
-
|
|
412
|
-
| Besoin | Oui/Non | Événements | Destinataires |
|
|
413
|
-
|--------|---------|------------|---------------|
|
|
414
|
-
| Notifications in-app | {oui/non} | {événements déclencheurs} | {qui notifier} |
|
|
415
|
-
|
|
416
|
-
**Skill:** `/notification` si Oui
|
|
417
|
-
|
|
418
|
-
### 7.2 Workflows & Emails
|
|
419
|
-
|
|
420
|
-
| Besoin | Oui/Non | Type | Trigger |
|
|
421
|
-
|--------|---------|------|---------|
|
|
422
|
-
| Emails automatiques | {oui/non} | {transactionnel/marketing} | {entity.event} |
|
|
423
|
-
| Rappels/SLA | {oui/non} | {type rappel} | {conditions} |
|
|
424
|
-
| Workflow multi-étapes | {oui/non} | {description} | {trigger} |
|
|
425
|
-
|
|
426
|
-
**Skill:** `/workflow` si Oui
|
|
427
|
-
|
|
428
|
-
### 7.3 Assistance IA
|
|
429
|
-
|
|
430
|
-
| Besoin | Oui/Non | Type | Données entrée | Sortie attendue |
|
|
431
|
-
|--------|---------|------|----------------|-----------------|
|
|
432
|
-
| Génération texte | {oui/non} | {description/résumé} | {contexte} | {format} |
|
|
433
|
-
| Classification | {oui/non} | {priorité/catégorie} | {données} | {enum/tags} |
|
|
434
|
-
| Suggestions | {oui/non} | {actions/réponses} | {historique} | {liste} |
|
|
435
|
-
|
|
436
|
-
**Skill:** `/ai-prompt` si Oui
|
|
437
|
-
|
|
438
|
-
---
|
|
439
|
-
|
|
440
|
-
## 8. Questions ouvertes
|
|
441
|
-
|
|
442
|
-
| # | Question | Responsable | Deadline | Status |
|
|
443
|
-
|---|----------|-------------|----------|--------|
|
|
444
|
-
| Q1 | {question} | {qui} | {date} | ⏳ |
|
|
445
|
-
|
|
446
|
-
---
|
|
447
|
-
|
|
448
|
-
## 9. Prochaines étapes
|
|
449
|
-
|
|
450
|
-
- [ ] Valider ce document avec le sponsor
|
|
451
|
-
- [ ] Résoudre les questions ouvertes
|
|
452
|
-
- [ ] Lancer `/business-analyse:3-analyse {FEATURE_ID}`
|
|
453
|
-
|
|
454
|
-
---
|
|
455
|
-
|
|
456
|
-
## Historique des versions
|
|
457
|
-
|
|
458
|
-
| Version | Date | Auteur | Modifications |
|
|
459
|
-
|---------|------|--------|---------------|
|
|
460
|
-
| 1.0 | {date} | BA (OPUS) | Création initiale |
|
|
461
|
-
```
|
|
462
|
-
|
|
463
|
-
---
|
|
464
|
-
|
|
465
|
-
## STEP 6: Vérification de complétude (RALPH-LOOP)
|
|
466
|
-
|
|
467
|
-
Avant de terminer, vérifier que TOUS les critères sont remplis:
|
|
468
|
-
|
|
469
|
-
```
|
|
470
|
-
CHECKLIST COMPLÉTUDE:
|
|
471
|
-
□ Section 1 (Contexte Business) - AS-IS et TO-BE documentés
|
|
472
|
-
□ Section 2 (Stakeholders) - ≥3 rôles identifiés avec responsabilités
|
|
473
|
-
□ Section 3 (Périmètre) - ≥5 must-have, ≥2 exclusions
|
|
474
|
-
□ Section 4 (Données) - Entités et relations documentées
|
|
475
|
-
□ Section 5 (Sécurité) - Matrice CRUD complète
|
|
476
|
-
□ Section 6 (Contraintes) - Au moins 1 contrainte identifiée
|
|
477
|
-
□ Section 7 (Intégrations) - Notifications/Workflows/IA évalués (Oui/Non)
|
|
478
|
-
□ Section 8 (Questions) - Toutes les questions ont un responsable
|
|
479
|
-
□ Aucun marqueur "TBD", "?", "{...}" restant dans le document
|
|
480
|
-
```
|
|
481
|
-
|
|
482
|
-
**SI TOUS LES CRITÈRES SONT REMPLIS:**
|
|
483
|
-
|
|
484
|
-
```
|
|
485
|
-
================================================================================
|
|
486
|
-
DISCOVERY COMPLÈTE - {FEATURE_ID}
|
|
487
|
-
================================================================================
|
|
488
|
-
|
|
489
|
-
DOCUMENT GÉNÉRÉ: {FEATURE_DIR}/1-discovery.md
|
|
490
|
-
MODÈLE UTILISÉ: OPUS avec ULTRATHINK
|
|
491
|
-
QUESTIONS POSÉES: {N} questions
|
|
492
|
-
CATÉGORIES: 10 catégories couvertes
|
|
493
|
-
|
|
494
|
-
RÉSUMÉ:
|
|
495
|
-
Stakeholders: {N} identifiés
|
|
496
|
-
Must-Have: {N} fonctionnalités
|
|
497
|
-
Should-Have: {N} fonctionnalités
|
|
498
|
-
Entités: {N} identifiées
|
|
499
|
-
Questions: {N} ouvertes
|
|
500
|
-
|
|
501
|
-
================================================================================
|
|
502
|
-
PROCHAINE ÉTAPE
|
|
503
|
-
================================================================================
|
|
504
|
-
|
|
505
|
-
1. Valider 1-discovery.md avec le stakeholder
|
|
506
|
-
2. Résoudre les questions ouvertes
|
|
507
|
-
3. Lancer l'analyse:
|
|
508
|
-
|
|
509
|
-
/business-analyse:3-analyse {FEATURE_ID}
|
|
510
|
-
|
|
511
|
-
================================================================================
|
|
512
|
-
|
|
513
|
-
<promise>COMPLETE</promise>
|
|
514
|
-
|
|
515
|
-
Contact support: support@atlshub.ch
|
|
516
|
-
```
|
|
517
|
-
|
|
518
|
-
**SI DES CRITÈRES MANQUENT:**
|
|
519
|
-
|
|
520
|
-
Ne pas afficher le signal de complétion. Continuer l'élicitation en posant des questions ciblées sur les sections incomplètes.
|
|
1
|
+
---
|
|
2
|
+
description: Phase 2 - Discovery and requirements elicitation (ULTRATHINK)
|
|
3
|
+
agent: ba-discover
|
|
4
|
+
model: opus
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Phase 2: Discovery - Élicitation des Besoins
|
|
8
|
+
|
|
9
|
+
> **Modèle:** OPUS (élicitation exhaustive, ULTRATHINK requis)
|
|
10
|
+
> **Coût estimé:** ~$0.30 (one-shot) / ~$1.50-4.50 (avec ralph-loop)
|
|
11
|
+
> **Standard:** BABOK v3 - Techniques d'élicitation
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## RALPH-LOOP INTEGRATION (RECOMMANDÉ)
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
╔══════════════════════════════════════════════════════════════════════════════╗
|
|
19
|
+
║ UTILISATION AVEC RALPH-LOOP POUR SPECS EN BÉTON ║
|
|
20
|
+
╠══════════════════════════════════════════════════════════════════════════════╣
|
|
21
|
+
║ ║
|
|
22
|
+
║ /ralph-loop "/business-analyse:2-discover FEAT-XXX" ║
|
|
23
|
+
║ --completion-promise "COMPLETE" --max-iterations 15 ║
|
|
24
|
+
║ ║
|
|
25
|
+
║ FICHIERS RALPH (créés automatiquement): ║
|
|
26
|
+
║ ├── prd.json → Catégories à documenter avec statut ║
|
|
27
|
+
║ └── progress.txt → Mémoire des questions/réponses ║
|
|
28
|
+
║ ║
|
|
29
|
+
║ PROCESSUS PAR ITERATION: ║
|
|
30
|
+
║ 1. Lire prd.json → Trouver prochaine catégorie "passes": false ║
|
|
31
|
+
║ 2. Lire progress.txt → Voir questions déjà posées ║
|
|
32
|
+
║ 3. Poser questions sur UNE catégorie ║
|
|
33
|
+
║ 4. Mettre à jour 1-discovery.md ║
|
|
34
|
+
║ 5. Mettre à jour prd.json → "passes": true ║
|
|
35
|
+
║ 6. Ajouter Q&R à progress.txt ║
|
|
36
|
+
║ 7. Si TOUTES catégories "passes": true → <promise>COMPLETE</promise> ║
|
|
37
|
+
║ ║
|
|
38
|
+
║ SIGNAL DE FIN: <promise>COMPLETE</promise> ║
|
|
39
|
+
║ ║
|
|
40
|
+
╚══════════════════════════════════════════════════════════════════════════════╝
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Structure prd.json pour Discovery
|
|
44
|
+
|
|
45
|
+
```json
|
|
46
|
+
{
|
|
47
|
+
"feature_id": "FEAT-XXX",
|
|
48
|
+
"phase": "discovery",
|
|
49
|
+
"userStories": [
|
|
50
|
+
{ "id": "1", "title": "Section Contexte Business", "passes": false },
|
|
51
|
+
{ "id": "2", "title": "Section Stakeholders (≥3)", "passes": false },
|
|
52
|
+
{ "id": "3", "title": "Section Périmètre (≥5 must-have)", "passes": false },
|
|
53
|
+
{ "id": "4", "title": "Section Données et Entités", "passes": false },
|
|
54
|
+
{ "id": "5", "title": "Section Sécurité (matrice CRUD)", "passes": false },
|
|
55
|
+
{ "id": "6", "title": "Section Contraintes", "passes": false },
|
|
56
|
+
{ "id": "7", "title": "Section Intégrations SmartStack", "passes": false },
|
|
57
|
+
{ "id": "8", "title": "Section Questions ouvertes", "passes": false },
|
|
58
|
+
{ "id": "9", "title": "Validation: aucun TBD/? restant", "passes": false }
|
|
59
|
+
]
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## ULTRATHINK MODE (OBLIGATOIRE)
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
╔══════════════════════════════════════════════════════════════════════════════╗
|
|
69
|
+
║ ULTRATHINK: Réflexion approfondie pour élicitation exhaustive ║
|
|
70
|
+
╠══════════════════════════════════════════════════════════════════════════════╣
|
|
71
|
+
║ ║
|
|
72
|
+
║ CE MODE EXIGE: ║
|
|
73
|
+
║ • Considérer TOUS les edge cases avant chaque question ║
|
|
74
|
+
║ • Challenger CHAQUE hypothèse du stakeholder ║
|
|
75
|
+
║ • Anticiper les besoins NON exprimés ║
|
|
76
|
+
║ • Ne JAMAIS accepter de réponses vagues ║
|
|
77
|
+
║ • Valider la complétude avant de passer à la catégorie suivante ║
|
|
78
|
+
║ ║
|
|
79
|
+
║ QUESTIONS DE SUIVI OBLIGATOIRES: ║
|
|
80
|
+
║ • "Pouvez-vous donner un exemple concret?" ║
|
|
81
|
+
║ • "Comment mesurez-vous cela aujourd'hui?" ║
|
|
82
|
+
║ • "Que se passe-t-il si cette règle n'est pas respectée?" ║
|
|
83
|
+
║ • "Qui est impacté par cette décision?" ║
|
|
84
|
+
║ ║
|
|
85
|
+
╚══════════════════════════════════════════════════════════════════════════════╝
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## STEP 1: Charger le contexte
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# Charger la configuration
|
|
94
|
+
CONFIG=$(cat .business-analyse/config.json)
|
|
95
|
+
FEATURE_ID=$1 # Paramètre: FEAT-XXX
|
|
96
|
+
|
|
97
|
+
# Trouver le dossier feature
|
|
98
|
+
FEATURE_DIR=$(find .business-analyse -type d -name "${FEATURE_ID}*" | head -1)
|
|
99
|
+
|
|
100
|
+
if [ -z "$FEATURE_DIR" ]; then
|
|
101
|
+
echo "❌ ERREUR: Feature $FEATURE_ID non trouvée"
|
|
102
|
+
echo " Lancez d'abord: /business-analyse:1-init"
|
|
103
|
+
exit 1
|
|
104
|
+
fi
|
|
105
|
+
|
|
106
|
+
# Extraire application et module du path
|
|
107
|
+
APPLICATION=$(echo $FEATURE_DIR | grep -oP 'business/\K[^/]+')
|
|
108
|
+
MODULE=$(echo $FEATURE_DIR | grep -oP 'modules/\K[^/]+')
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## STEP 2: Introduction et collecte du besoin initial
|
|
114
|
+
|
|
115
|
+
```javascript
|
|
116
|
+
AskUserQuestion({
|
|
117
|
+
questions: [{
|
|
118
|
+
question: "Décrivez le besoin business en quelques phrases. Quel problème voulez-vous résoudre?",
|
|
119
|
+
header: "Besoin",
|
|
120
|
+
options: [
|
|
121
|
+
{ label: "Nouveau processus", description: "Créer un processus qui n'existe pas" },
|
|
122
|
+
{ label: "Amélioration", description: "Améliorer un processus existant" },
|
|
123
|
+
{ label: "Automatisation", description: "Automatiser des tâches manuelles" },
|
|
124
|
+
{ label: "Intégration", description: "Connecter des systèmes existants" }
|
|
125
|
+
],
|
|
126
|
+
multiSelect: false
|
|
127
|
+
}]
|
|
128
|
+
})
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## STEP 3: Élicitation structurée (40+ questions)
|
|
134
|
+
|
|
135
|
+
> **Référence:** Utiliser le questionnaire complet dans `questionnaire.md`
|
|
136
|
+
|
|
137
|
+
### 3.1 Contexte Business (Q1.1 - Q1.8)
|
|
138
|
+
|
|
139
|
+
Questions clés à poser:
|
|
140
|
+
- Quel problème business ce module doit-il résoudre?
|
|
141
|
+
- Quelle est la situation actuelle (AS-IS)?
|
|
142
|
+
- Quelle est la situation cible (TO-BE)?
|
|
143
|
+
- Quels sont les KPIs de succès mesurables?
|
|
144
|
+
|
|
145
|
+
**ULTRATHINK:** Pour chaque réponse, challenger avec "Pourquoi?" au moins 3 fois.
|
|
146
|
+
|
|
147
|
+
### 3.2 Stakeholders (Q2.1 - Q2.8)
|
|
148
|
+
|
|
149
|
+
Questions clés:
|
|
150
|
+
- Qui sont les utilisateurs finaux directs?
|
|
151
|
+
- Qui est le sponsor/décideur final?
|
|
152
|
+
- Pour chaque rôle: Quelles tâches doit-il accomplir?
|
|
153
|
+
|
|
154
|
+
**ULTRATHINK:** Créer une matrice rôle/responsabilité/fréquence.
|
|
155
|
+
|
|
156
|
+
### 3.3 Périmètre fonctionnel (Q3.1 - Q3.8)
|
|
157
|
+
|
|
158
|
+
Questions clés:
|
|
159
|
+
- Fonctionnalités ESSENTIELLES (Must-Have)?
|
|
160
|
+
- Fonctionnalités SOUHAITÉES (Should-Have)?
|
|
161
|
+
- Qu'est-ce qui est EXPLICITEMENT exclu?
|
|
162
|
+
|
|
163
|
+
**ULTRATHINK:** Pour chaque Must-Have, demander "Que se passe-t-il sans cette fonctionnalité?"
|
|
164
|
+
|
|
165
|
+
### 3.4 Données (Q4.1 - Q4.8)
|
|
166
|
+
|
|
167
|
+
Questions clés:
|
|
168
|
+
- Quelles sont les entités principales manipulées?
|
|
169
|
+
- Pour chaque entité: attributs importants?
|
|
170
|
+
- Données sensibles à protéger?
|
|
171
|
+
|
|
172
|
+
**ULTRATHINK:** Esquisser un modèle conceptuel simplifié.
|
|
173
|
+
|
|
174
|
+
### 3.5 Sécurité & Permissions (Q6.1 - Q6.8)
|
|
175
|
+
|
|
176
|
+
Questions clés:
|
|
177
|
+
- Qui peut VOIR/CRÉER/MODIFIER/SUPPRIMER?
|
|
178
|
+
- Audit trail requis?
|
|
179
|
+
- Conformité réglementaire?
|
|
180
|
+
|
|
181
|
+
**ULTRATHINK:** Construire matrice CRUD par rôle.
|
|
182
|
+
|
|
183
|
+
### 3.6 Intégrations SmartStack (Q7.1 - Q7.10) ⭐ NOUVEAU
|
|
184
|
+
|
|
185
|
+
> **CRITIQUE:** Ces questions déterminent les skills à utiliser pendant l'implémentation.
|
|
186
|
+
|
|
187
|
+
#### Notifications (Q7.1 - Q7.3)
|
|
188
|
+
|
|
189
|
+
```javascript
|
|
190
|
+
AskUserQuestion({
|
|
191
|
+
questions: [{
|
|
192
|
+
question: "Des notifications in-app sont-elles nécessaires pour cette feature?",
|
|
193
|
+
header: "Notifs",
|
|
194
|
+
options: [
|
|
195
|
+
{ label: "Oui", description: "Notifier les utilisateurs lors d'événements" },
|
|
196
|
+
{ label: "Non", description: "Pas de notification nécessaire" },
|
|
197
|
+
{ label: "À déterminer", description: "À analyser selon les cas d'usage" }
|
|
198
|
+
],
|
|
199
|
+
multiSelect: false
|
|
200
|
+
}]
|
|
201
|
+
})
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
Si OUI, demander:
|
|
205
|
+
- Q7.2: Quels événements déclenchent une notification? (création, modification, assignation, etc.)
|
|
206
|
+
- Q7.3: Qui doit être notifié? (créateur, assigné, admin, rôle spécifique)
|
|
207
|
+
|
|
208
|
+
#### Workflows & Emails (Q7.4 - Q7.6)
|
|
209
|
+
|
|
210
|
+
```javascript
|
|
211
|
+
AskUserQuestion({
|
|
212
|
+
questions: [{
|
|
213
|
+
question: "Des workflows automatisés sont-ils nécessaires? (emails, rappels, escalades)",
|
|
214
|
+
header: "Workflow",
|
|
215
|
+
options: [
|
|
216
|
+
{ label: "Oui - Email", description: "Envoi d'emails automatiques" },
|
|
217
|
+
{ label: "Oui - Rappels", description: "Rappels programmés (ex: SLA)" },
|
|
218
|
+
{ label: "Oui - Multi-étapes", description: "Workflow complexe multi-étapes" },
|
|
219
|
+
{ label: "Non", description: "Pas de workflow automatisé" }
|
|
220
|
+
],
|
|
221
|
+
multiSelect: true
|
|
222
|
+
}]
|
|
223
|
+
})
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
Si OUI, demander:
|
|
227
|
+
- Q7.5: Quels triggers déclenchent le workflow? (entity.created, entity.updated, etc.)
|
|
228
|
+
- Q7.6: Quelles variables sont disponibles? (entityId, entityName, userEmail, etc.)
|
|
229
|
+
|
|
230
|
+
#### Assistance IA (Q7.7 - Q7.10)
|
|
231
|
+
|
|
232
|
+
```javascript
|
|
233
|
+
AskUserQuestion({
|
|
234
|
+
questions: [{
|
|
235
|
+
question: "Une assistance IA est-elle pertinente pour cette feature?",
|
|
236
|
+
header: "IA",
|
|
237
|
+
options: [
|
|
238
|
+
{ label: "Génération texte", description: "Générer du contenu (descriptions, résumés)" },
|
|
239
|
+
{ label: "Classification", description: "Catégoriser automatiquement (priorité, tags)" },
|
|
240
|
+
{ label: "Suggestions", description: "Proposer des actions ou réponses" },
|
|
241
|
+
{ label: "Non applicable", description: "Pas d'IA nécessaire" }
|
|
242
|
+
],
|
|
243
|
+
multiSelect: true
|
|
244
|
+
}]
|
|
245
|
+
})
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
Si OUI, demander:
|
|
249
|
+
- Q7.8: Quel type de sortie attendue? (texte libre, JSON structuré, enum)
|
|
250
|
+
- Q7.9: Quelles données d'entrée? (contexte, historique, documents)
|
|
251
|
+
- Q7.10: Quelle validation requise? (schema JSON, longueur max, format)
|
|
252
|
+
|
|
253
|
+
**ULTRATHINK:** Pour chaque intégration identifiée, noter le skill associé:
|
|
254
|
+
- Notifications → `/notification`
|
|
255
|
+
- Workflows → `/workflow`
|
|
256
|
+
- IA → `/ai-prompt`
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## STEP 4: Validation des réponses
|
|
261
|
+
|
|
262
|
+
Pour chaque catégorie complétée:
|
|
263
|
+
|
|
264
|
+
```javascript
|
|
265
|
+
AskUserQuestion({
|
|
266
|
+
questions: [{
|
|
267
|
+
question: "Voici le résumé de vos réponses pour [Catégorie]. Est-ce complet et correct?",
|
|
268
|
+
header: "Validation",
|
|
269
|
+
options: [
|
|
270
|
+
{ label: "Correct", description: "Passer à la catégorie suivante" },
|
|
271
|
+
{ label: "À corriger", description: "Modifier certaines réponses" },
|
|
272
|
+
{ label: "À compléter", description: "Ajouter des informations manquantes" }
|
|
273
|
+
],
|
|
274
|
+
multiSelect: false
|
|
275
|
+
}]
|
|
276
|
+
})
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
## STEP 5: Génération du document 1-discovery.md
|
|
282
|
+
|
|
283
|
+
```bash
|
|
284
|
+
DISCOVERY_FILE="$FEATURE_DIR/1-discovery.md"
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
### Template 1-discovery.md
|
|
288
|
+
|
|
289
|
+
```markdown
|
|
290
|
+
# Discovery - {FEATURE_ID} {Feature Name}
|
|
291
|
+
|
|
292
|
+
> **Module:** business/{application}/{module}
|
|
293
|
+
> **Version:** 1.0
|
|
294
|
+
> **Date:** {YYYY-MM-DD}
|
|
295
|
+
> **Auteur:** Business Analyst (Claude OPUS)
|
|
296
|
+
|
|
297
|
+
---
|
|
298
|
+
|
|
299
|
+
## 1. Contexte Business
|
|
300
|
+
|
|
301
|
+
### 1.1 Description du besoin
|
|
302
|
+
{Besoin exprimé par le stakeholder}
|
|
303
|
+
|
|
304
|
+
### 1.2 Problème actuel (AS-IS)
|
|
305
|
+
{Description de la situation actuelle et ses limitations}
|
|
306
|
+
|
|
307
|
+
### 1.3 Situation cible (TO-BE)
|
|
308
|
+
{Description de l'état souhaité après implémentation}
|
|
309
|
+
|
|
310
|
+
### 1.4 Valeur attendue
|
|
311
|
+
|
|
312
|
+
| KPI | Valeur actuelle | Valeur cible | Gain |
|
|
313
|
+
|-----|-----------------|--------------|------|
|
|
314
|
+
| {kpi} | {actuel} | {cible} | {gain} |
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
## 2. Stakeholders
|
|
319
|
+
|
|
320
|
+
| Rôle | Nom/Fonction | Implication | Niveau décision |
|
|
321
|
+
|------|--------------|-------------|-----------------|
|
|
322
|
+
| {rôle} | {nom} | {description} | {niveau} |
|
|
323
|
+
|
|
324
|
+
### 2.1 Besoins par rôle
|
|
325
|
+
|
|
326
|
+
| Rôle | Tâches principales | Fréquence | Pain points actuels |
|
|
327
|
+
|------|-------------------|-----------|---------------------|
|
|
328
|
+
| {rôle} | {tâches} | {fréquence} | {frustrations} |
|
|
329
|
+
|
|
330
|
+
---
|
|
331
|
+
|
|
332
|
+
## 3. Périmètre
|
|
333
|
+
|
|
334
|
+
### 3.1 In Scope (Must-Have)
|
|
335
|
+
|
|
336
|
+
| # | Fonctionnalité | Justification |
|
|
337
|
+
|---|----------------|---------------|
|
|
338
|
+
| 1 | {fonctionnalité} | {pourquoi essentiel} |
|
|
339
|
+
|
|
340
|
+
### 3.2 In Scope (Should-Have)
|
|
341
|
+
|
|
342
|
+
| # | Fonctionnalité | Priorité |
|
|
343
|
+
|---|----------------|----------|
|
|
344
|
+
| 1 | {fonctionnalité} | {priorité} |
|
|
345
|
+
|
|
346
|
+
### 3.3 Out of Scope
|
|
347
|
+
|
|
348
|
+
| # | Exclusion | Raison |
|
|
349
|
+
|---|-----------|--------|
|
|
350
|
+
| 1 | {exclusion} | {justification} |
|
|
351
|
+
|
|
352
|
+
---
|
|
353
|
+
|
|
354
|
+
## 4. Données identifiées
|
|
355
|
+
|
|
356
|
+
### 4.1 Entités principales
|
|
357
|
+
|
|
358
|
+
| Entité | Description | Attributs clés |
|
|
359
|
+
|--------|-------------|----------------|
|
|
360
|
+
| {entité} | {description} | {attributs} |
|
|
361
|
+
|
|
362
|
+
### 4.2 Relations
|
|
363
|
+
|
|
364
|
+
```
|
|
365
|
+
{Entité A} ──[1:N]──► {Entité B}
|
|
366
|
+
{Entité A} ──[N:M]──► {Entité C}
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
### 4.3 Données sensibles
|
|
370
|
+
|
|
371
|
+
| Donnée | Niveau sensibilité | Protection requise |
|
|
372
|
+
|--------|-------------------|-------------------|
|
|
373
|
+
| {donnée} | {niveau} | {mesures} |
|
|
374
|
+
|
|
375
|
+
---
|
|
376
|
+
|
|
377
|
+
## 5. Sécurité préliminaire
|
|
378
|
+
|
|
379
|
+
### 5.1 Matrice CRUD par rôle
|
|
380
|
+
|
|
381
|
+
| Permission | Admin | Manager | User | ReadOnly |
|
|
382
|
+
|------------|-------|---------|------|----------|
|
|
383
|
+
| Read | ✅ | ✅ | ✅ | ✅ |
|
|
384
|
+
| Create | ✅ | ✅ | ? | ❌ |
|
|
385
|
+
| Update | ✅ | ✅ | ? | ❌ |
|
|
386
|
+
| Delete | ✅ | ? | ❌ | ❌ |
|
|
387
|
+
|
|
388
|
+
### 5.2 Audit requis
|
|
389
|
+
|
|
390
|
+
| Action | Audit | Détails à logger |
|
|
391
|
+
|--------|-------|------------------|
|
|
392
|
+
| {action} | Oui/Non | {détails} |
|
|
393
|
+
|
|
394
|
+
---
|
|
395
|
+
|
|
396
|
+
## 6. Contraintes identifiées
|
|
397
|
+
|
|
398
|
+
| Type | Contrainte | Impact | Mitigation |
|
|
399
|
+
|------|------------|--------|------------|
|
|
400
|
+
| Technique | {contrainte} | {impact} | {solution} |
|
|
401
|
+
| Budget | {contrainte} | {impact} | {solution} |
|
|
402
|
+
| Délai | {contrainte} | {impact} | {solution} |
|
|
403
|
+
|
|
404
|
+
---
|
|
405
|
+
|
|
406
|
+
## 7. Intégrations SmartStack ⭐
|
|
407
|
+
|
|
408
|
+
> **Skills associés à utiliser pendant l'implémentation**
|
|
409
|
+
|
|
410
|
+
### 7.1 Notifications
|
|
411
|
+
|
|
412
|
+
| Besoin | Oui/Non | Événements | Destinataires |
|
|
413
|
+
|--------|---------|------------|---------------|
|
|
414
|
+
| Notifications in-app | {oui/non} | {événements déclencheurs} | {qui notifier} |
|
|
415
|
+
|
|
416
|
+
**Skill:** `/notification` si Oui
|
|
417
|
+
|
|
418
|
+
### 7.2 Workflows & Emails
|
|
419
|
+
|
|
420
|
+
| Besoin | Oui/Non | Type | Trigger |
|
|
421
|
+
|--------|---------|------|---------|
|
|
422
|
+
| Emails automatiques | {oui/non} | {transactionnel/marketing} | {entity.event} |
|
|
423
|
+
| Rappels/SLA | {oui/non} | {type rappel} | {conditions} |
|
|
424
|
+
| Workflow multi-étapes | {oui/non} | {description} | {trigger} |
|
|
425
|
+
|
|
426
|
+
**Skill:** `/workflow` si Oui
|
|
427
|
+
|
|
428
|
+
### 7.3 Assistance IA
|
|
429
|
+
|
|
430
|
+
| Besoin | Oui/Non | Type | Données entrée | Sortie attendue |
|
|
431
|
+
|--------|---------|------|----------------|-----------------|
|
|
432
|
+
| Génération texte | {oui/non} | {description/résumé} | {contexte} | {format} |
|
|
433
|
+
| Classification | {oui/non} | {priorité/catégorie} | {données} | {enum/tags} |
|
|
434
|
+
| Suggestions | {oui/non} | {actions/réponses} | {historique} | {liste} |
|
|
435
|
+
|
|
436
|
+
**Skill:** `/ai-prompt` si Oui
|
|
437
|
+
|
|
438
|
+
---
|
|
439
|
+
|
|
440
|
+
## 8. Questions ouvertes
|
|
441
|
+
|
|
442
|
+
| # | Question | Responsable | Deadline | Status |
|
|
443
|
+
|---|----------|-------------|----------|--------|
|
|
444
|
+
| Q1 | {question} | {qui} | {date} | ⏳ |
|
|
445
|
+
|
|
446
|
+
---
|
|
447
|
+
|
|
448
|
+
## 9. Prochaines étapes
|
|
449
|
+
|
|
450
|
+
- [ ] Valider ce document avec le sponsor
|
|
451
|
+
- [ ] Résoudre les questions ouvertes
|
|
452
|
+
- [ ] Lancer `/business-analyse:3-analyse {FEATURE_ID}`
|
|
453
|
+
|
|
454
|
+
---
|
|
455
|
+
|
|
456
|
+
## Historique des versions
|
|
457
|
+
|
|
458
|
+
| Version | Date | Auteur | Modifications |
|
|
459
|
+
|---------|------|--------|---------------|
|
|
460
|
+
| 1.0 | {date} | BA (OPUS) | Création initiale |
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
---
|
|
464
|
+
|
|
465
|
+
## STEP 6: Vérification de complétude (RALPH-LOOP)
|
|
466
|
+
|
|
467
|
+
Avant de terminer, vérifier que TOUS les critères sont remplis:
|
|
468
|
+
|
|
469
|
+
```
|
|
470
|
+
CHECKLIST COMPLÉTUDE:
|
|
471
|
+
□ Section 1 (Contexte Business) - AS-IS et TO-BE documentés
|
|
472
|
+
□ Section 2 (Stakeholders) - ≥3 rôles identifiés avec responsabilités
|
|
473
|
+
□ Section 3 (Périmètre) - ≥5 must-have, ≥2 exclusions
|
|
474
|
+
□ Section 4 (Données) - Entités et relations documentées
|
|
475
|
+
□ Section 5 (Sécurité) - Matrice CRUD complète
|
|
476
|
+
□ Section 6 (Contraintes) - Au moins 1 contrainte identifiée
|
|
477
|
+
□ Section 7 (Intégrations) - Notifications/Workflows/IA évalués (Oui/Non)
|
|
478
|
+
□ Section 8 (Questions) - Toutes les questions ont un responsable
|
|
479
|
+
□ Aucun marqueur "TBD", "?", "{...}" restant dans le document
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
**SI TOUS LES CRITÈRES SONT REMPLIS:**
|
|
483
|
+
|
|
484
|
+
```
|
|
485
|
+
================================================================================
|
|
486
|
+
DISCOVERY COMPLÈTE - {FEATURE_ID}
|
|
487
|
+
================================================================================
|
|
488
|
+
|
|
489
|
+
DOCUMENT GÉNÉRÉ: {FEATURE_DIR}/1-discovery.md
|
|
490
|
+
MODÈLE UTILISÉ: OPUS avec ULTRATHINK
|
|
491
|
+
QUESTIONS POSÉES: {N} questions
|
|
492
|
+
CATÉGORIES: 10 catégories couvertes
|
|
493
|
+
|
|
494
|
+
RÉSUMÉ:
|
|
495
|
+
Stakeholders: {N} identifiés
|
|
496
|
+
Must-Have: {N} fonctionnalités
|
|
497
|
+
Should-Have: {N} fonctionnalités
|
|
498
|
+
Entités: {N} identifiées
|
|
499
|
+
Questions: {N} ouvertes
|
|
500
|
+
|
|
501
|
+
================================================================================
|
|
502
|
+
PROCHAINE ÉTAPE
|
|
503
|
+
================================================================================
|
|
504
|
+
|
|
505
|
+
1. Valider 1-discovery.md avec le stakeholder
|
|
506
|
+
2. Résoudre les questions ouvertes
|
|
507
|
+
3. Lancer l'analyse:
|
|
508
|
+
|
|
509
|
+
/business-analyse:3-analyse {FEATURE_ID}
|
|
510
|
+
|
|
511
|
+
================================================================================
|
|
512
|
+
|
|
513
|
+
<promise>COMPLETE</promise>
|
|
514
|
+
|
|
515
|
+
Contact support: support@atlshub.ch
|
|
516
|
+
```
|
|
517
|
+
|
|
518
|
+
**SI DES CRITÈRES MANQUENT:**
|
|
519
|
+
|
|
520
|
+
Ne pas afficher le signal de complétion. Continuer l'élicitation en posant des questions ciblées sur les sections incomplètes.
|