@atlashub/smartstack-cli 2.9.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/.documentation/business-analyse.html +81 -17
  2. package/dist/mcp-entry.mjs +1302 -223
  3. package/dist/mcp-entry.mjs.map +1 -1
  4. package/package.json +1 -1
  5. package/templates/agents/efcore/db-deploy.md +1 -1
  6. package/templates/agents/efcore/migration.md +26 -10
  7. package/templates/agents/efcore/rebase-snapshot.md +24 -7
  8. package/templates/agents/efcore/squash.md +73 -57
  9. package/templates/agents/gitflow/commit.md +138 -18
  10. package/templates/agents/gitflow/exec.md +1 -1
  11. package/templates/agents/gitflow/finish.md +79 -62
  12. package/templates/agents/gitflow/init-clone.md +186 -0
  13. package/templates/agents/gitflow/init-detect.md +137 -0
  14. package/templates/agents/gitflow/init-validate.md +210 -0
  15. package/templates/agents/gitflow/init.md +231 -74
  16. package/templates/agents/gitflow/merge.md +65 -33
  17. package/templates/agents/gitflow/pr.md +93 -49
  18. package/templates/agents/gitflow/start.md +76 -33
  19. package/templates/agents/gitflow/status.md +41 -71
  20. package/templates/hooks/appsettings-guard.sh +76 -0
  21. package/templates/hooks/ef-migration-check.md +1 -1
  22. package/templates/hooks/hooks.json +9 -0
  23. package/templates/project/test-frontend/msw/handlers.ts +58 -0
  24. package/templates/project/test-frontend/msw/server.ts +25 -0
  25. package/templates/project/test-frontend/setup.ts +16 -0
  26. package/templates/project/test-frontend/test-utils.tsx +59 -0
  27. package/templates/project/test-frontend/vitest.config.ts +31 -0
  28. package/templates/skills/_resources/config-safety.md +61 -0
  29. package/templates/skills/_resources/formatting-guide.md +2 -2
  30. package/templates/skills/application/SKILL.md +12 -3
  31. package/templates/skills/application/steps/step-04-backend.md +21 -0
  32. package/templates/skills/application/steps/step-07-tests.md +259 -120
  33. package/templates/skills/business-analyse/SKILL.md +57 -28
  34. package/templates/skills/business-analyse/_shared.md +70 -39
  35. package/templates/skills/business-analyse/html/ba-interactive.html +2622 -0
  36. package/templates/skills/business-analyse/questionnaire/00-application.md +123 -131
  37. package/templates/skills/business-analyse/questionnaire/01-context.md +173 -24
  38. package/templates/skills/business-analyse/questionnaire/02-stakeholders.md +170 -50
  39. package/templates/skills/business-analyse/questionnaire/03-scope.md +154 -48
  40. package/templates/skills/business-analyse/questionnaire/10-documentation.md +1 -1
  41. package/templates/skills/business-analyse/questionnaire/14-risk-assumptions.md +135 -0
  42. package/templates/skills/business-analyse/questionnaire/15-success-metrics.md +136 -0
  43. package/templates/skills/business-analyse/questionnaire.md +55 -46
  44. package/templates/skills/business-analyse/steps/step-00-init.md +24 -2
  45. package/templates/skills/business-analyse/steps/step-01-cadrage.md +31 -20
  46. package/templates/skills/business-analyse/steps/step-03-specify.md +1 -0
  47. package/templates/skills/business-analyse/steps/step-05-handoff.md +103 -1
  48. package/templates/skills/business-analyse/steps/step-06-extract.md +518 -0
  49. package/templates/skills/check-version/SKILL.md +1 -1
  50. package/templates/skills/efcore/steps/db/step-deploy.md +22 -3
  51. package/templates/skills/efcore/steps/db/step-reset.md +27 -4
  52. package/templates/skills/efcore/steps/db/step-seed.md +46 -2
  53. package/templates/skills/efcore/steps/db/step-status.md +14 -0
  54. package/templates/skills/efcore/steps/migration/step-01-check.md +31 -5
  55. package/templates/skills/efcore/steps/migration/step-02-create.md +20 -4
  56. package/templates/skills/efcore/steps/rebase-snapshot/step-03-create.md +60 -0
  57. package/templates/skills/efcore/steps/shared/step-00-init.md +47 -8
  58. package/templates/skills/efcore/steps/squash/step-03-create.md +27 -5
  59. package/templates/skills/gitflow/SKILL.md +91 -29
  60. package/templates/skills/gitflow/_shared.md +144 -2
  61. package/templates/skills/gitflow/phases/status.md +11 -1
  62. package/templates/skills/gitflow/steps/step-commit.md +1 -1
  63. package/templates/skills/gitflow/steps/step-init.md +202 -39
  64. package/templates/skills/gitflow/templates/config.json +10 -1
  65. package/templates/skills/ralph-loop/steps/step-03-commit.md +2 -2
  66. package/templates/skills/validate-feature/SKILL.md +83 -0
  67. package/templates/skills/validate-feature/steps/step-01-compile.md +38 -0
  68. package/templates/skills/validate-feature/steps/step-02-unit-tests.md +45 -0
  69. package/templates/skills/validate-feature/steps/step-03-integration-tests.md +53 -0
  70. package/templates/skills/validate-feature/steps/step-04-api-smoke.md +157 -0
@@ -0,0 +1,136 @@
1
+ # Categorie 15 : Criteres de reussite
2
+
3
+ > **Usage :** Definir comment mesurer le succes du projet de maniere objective
4
+ > **Quand charger :** TOUJOURS (noyau, charge dans le cadrage)
5
+ > **Objectif :** Etablir des criteres observables et mesurables pour evaluer le resultat
6
+
7
+ ---
8
+
9
+ ## 15.1 La definition du succes
10
+
11
+ > **But :** Determiner concretement ce qui fera dire "ce projet est un succes".
12
+
13
+ | # | Question | Type de reponse |
14
+ |---|----------|-----------------|
15
+ | Q15.1 | Quand le systeme sera en place, comment saurez-vous que le projet est un succes ? Quel changement concret observerez-vous ? | Description du succes observable |
16
+ | Q15.2 | Si vous deviez convaincre votre direction que le projet a reussi, quels chiffres ou faits leur presenteriez-vous ? | Metriques de succes |
17
+ | Q15.3 | Au bout de combien de temps apres le lancement pourrez-vous juger si ca fonctionne ? 1 semaine ? 1 mois ? 3 mois ? | Delai d'evaluation |
18
+
19
+ **Reformulation guidee pour Q15.1 :**
20
+ ```
21
+ question: "Comment saurez-vous que le projet est un succes ?"
22
+ header: "Succes"
23
+ options:
24
+ - label: "Gain de temps mesurable"
25
+ description: "Un processus qui prenait X heures ne prend plus que Y minutes"
26
+ - label: "Reduction des erreurs"
27
+ description: "Le nombre d'erreurs ou de corrections a diminue de maniere significative"
28
+ - label: "Meilleure satisfaction"
29
+ description: "Les utilisateurs expriment clairement que leur quotidien s'est ameliore"
30
+ - label: "Indicateurs en hausse"
31
+ description: "Des chiffres cles (chiffre d'affaires, productivite, qualite) se sont ameliores"
32
+ ```
33
+
34
+ ---
35
+
36
+ ## 15.2 Les objectifs mesurables
37
+
38
+ > **But :** Transformer les attentes en objectifs chiffres et verifiables.
39
+
40
+ | # | Question | Type de reponse |
41
+ |---|----------|-----------------|
42
+ | Q15.4 | Pour chaque amelioration attendue, pouvez-vous donner un objectif chiffre ? Par exemple : "reduire le temps de traitement de 2 heures a 30 minutes" | Objectifs quantifies |
43
+ | Q15.5 | Quels indicateurs suivez-vous deja aujourd'hui qui pourraient servir de reference ? | Indicateurs existants |
44
+ | Q15.6 | Y a-t-il des indicateurs que vous ne suivez pas aujourd'hui mais que vous aimeriez pouvoir mesurer grace au nouveau systeme ? | Nouveaux indicateurs souhaites |
45
+
46
+ **Reformulation guidee pour Q15.4 :**
47
+ ```
48
+ question: "Pouvez-vous chiffrer les ameliorations attendues ?"
49
+ header: "Objectifs"
50
+ options:
51
+ - label: "Temps divise par 2 ou plus"
52
+ description: "Le processus actuel prend trop de temps, l'objectif est de le reduire d'au moins 50%"
53
+ - label: "Erreurs reduites a moins de 5%"
54
+ description: "Le taux d'erreur actuel est trop eleve, l'objectif est de le ramener sous les 5%"
55
+ - label: "100% de tracabilite"
56
+ description: "Aujourd'hui des informations se perdent, l'objectif est de tout tracer"
57
+ - label: "Difficile a chiffrer"
58
+ description: "L'amelioration est qualitative et difficile a mesurer numeriquement"
59
+ ```
60
+
61
+ ---
62
+
63
+ ## 15.3 Les criteres d'acceptation
64
+
65
+ > **But :** Definir les conditions minimales pour que le systeme soit considere comme livre.
66
+
67
+ | # | Question | Type de reponse |
68
+ |---|----------|-----------------|
69
+ | Q15.7 | Quelles sont les conditions minimales pour que vous acceptiez de mettre le systeme en service ? | Liste de conditions obligatoires |
70
+ | Q15.8 | Qui decide officiellement que le systeme est pret a etre utilise ? Quel est le processus de validation finale ? | Processus de validation |
71
+
72
+ **Reformulation guidee pour Q15.7 :**
73
+ ```
74
+ question: "Quelles conditions minimales pour mettre le systeme en service ?"
75
+ header: "Acceptation"
76
+ multiSelect: true
77
+ options:
78
+ - label: "Toutes les fonctionnalites vitales presentes"
79
+ description: "Les fonctionnalites classees indispensables fonctionnent correctement"
80
+ - label: "Donnees migrees et verifiees"
81
+ description: "Les donnees existantes ont ete transferees et validees dans le nouveau systeme"
82
+ - label: "Utilisateurs formes"
83
+ description: "Les utilisateurs principaux ont ete formes et savent utiliser le systeme"
84
+ - label: "Tests valides"
85
+ description: "Les tests de fonctionnement ont ete realises et les resultats sont satisfaisants"
86
+ ```
87
+
88
+ ---
89
+
90
+ ## Guide d'elicitation approfondi
91
+
92
+ ### Techniques de relance par question
93
+
94
+ | Question | Si la reponse est vague ou insuffisante | Relance recommandee |
95
+ |----------|----------------------------------------|---------------------|
96
+ | Q15.1 (succes) | "Que tout fonctionne bien" | "Concretement, imaginons que je visite votre bureau 3 mois apres le lancement. Qu'est-ce que je verrais de different par rapport a aujourd'hui ? Qu'est-ce que les gens feraient differemment ?" |
97
+ | Q15.2 (chiffres) | "Je ne sais pas quels chiffres" | "Pensez a votre patron : qu'est-ce qui le convaincrait ? Nombre de dossiers traites par jour ? Temps de reponse aux clients ? Taux d'erreur ? Satisfaction des equipes ?" |
98
+ | Q15.3 (delai) | "Tout de suite" | "Certains benefices apparaissent immediatement (gain de temps) et d'autres prennent du temps (adoption, qualite des donnees). Quel delai est realiste pour chaque benefice ?" |
99
+ | Q15.4 (objectifs chiffres) | "Difficile a chiffrer" | "Meme approximativement : le processus prend combien de temps aujourd'hui ? Quel serait un temps acceptable ? Combien d'erreurs par mois avez-vous aujourd'hui ?" |
100
+ | Q15.5 (indicateurs existants) | "On ne mesure rien" | "Comment evaluez-vous si la journee s'est bien passee ? Quels signaux vous disent que ca va bien ou mal ?" |
101
+ | Q15.7 (conditions minimales) | "Il faut que tout soit parfait" | "Si vous deviez lancer avec seulement 80% des fonctionnalites, lesquelles seraient dans ces 80% ?" |
102
+
103
+ ### Signaux d'alerte a detecter
104
+
105
+ | Signal du client | Probleme sous-jacent | Action de l'analyste |
106
+ |------------------|---------------------|----------------------|
107
+ | Aucun critere mesurable | **Succes non defini** | Proposer des metriques standards : temps de traitement, taux d'erreur, taux d'adoption, satisfaction utilisateur |
108
+ | "Ca doit etre parfait" | **Attentes irrealistes** | "La perfection est un objectif, mais quel est le niveau minimum acceptable pour un premier lancement ?" |
109
+ | Indicateurs contradictoires | **Objectifs mal alignes** | "Ces deux objectifs semblent en tension. Lequel est prioritaire si vous devez choisir ?" |
110
+ | Pas de processus de validation | **Pas de gouvernance** | "Qui signe l'acceptation ? Un email suffit ou faut-il un proces-verbal formel ?" |
111
+ | Succes mesure uniquement par la technique | **Oubli de l'humain** | "Au-dela du fonctionnement technique, comment mesurez-vous la satisfaction des utilisateurs ?" |
112
+
113
+ ---
114
+
115
+ ## Mapping vers le cadrage
116
+
117
+ | Reponse | Alimente |
118
+ |---------|----------|
119
+ | Q15.1, Q15.2, Q15.3 | `cadrage.acceptanceCriteria[]` |
120
+ | Q15.4, Q15.5, Q15.6 | `cadrage.acceptanceCriteria[]` + `cadrage.toBe` (enrichissement) |
121
+ | Q15.7, Q15.8 | `cadrage.acceptanceCriteria[]` (conditions de livraison) |
122
+
123
+ ---
124
+
125
+ ## Strategie de questionnement
126
+
127
+ ### Ordre des questions en 2 lots
128
+
129
+ **Lot 1 (Q15.1, Q15.2, Q15.3, Q15.4) : Definir le succes**
130
+ - Commencer par la vision qualitative du succes
131
+ - Puis quantifier avec des metriques et des delais
132
+
133
+ **Lot 2 (Q15.5, Q15.6, Q15.7, Q15.8) : Mesurer et valider**
134
+ - Identifier les indicateurs de reference existants
135
+ - Definir les conditions minimales de livraison
136
+ - Clarifier le processus de validation finale
@@ -258,66 +258,75 @@
258
258
 
259
259
  ---
260
260
 
261
- ## Conditional Categories (loaded only if relevant)
261
+ ## Categories conditionnelles (chargees selon le contexte)
262
262
 
263
- ### Category 11: Data Lifecycle (questionnaire/11-data-lifecycle.md)
264
- > Loaded if: entities have retention/archival/GDPR requirements
263
+ ### Categorie 11 : Cycle de vie des donnees (questionnaire/11-data-lifecycle.md)
264
+ > Charge si : les entites ont des exigences de retention, d'archivage ou de conformite
265
265
 
266
- ### Category 12: Migration (questionnaire/12-migration.md)
267
- > Loaded if: data migration from existing system needed
266
+ ### Categorie 12 : Migration (questionnaire/12-migration.md)
267
+ > Charge si : migration de donnees depuis un systeme existant
268
268
 
269
- ### Category 13: Cross-Module Impact (questionnaire/13-cross-module.md)
270
- > Loaded if: feature interacts with existing modules
269
+ ### Categorie 13 : Impact inter-modules (questionnaire/13-cross-module.md)
270
+ > Charge si : la fonctionnalite interagit avec des modules existants
271
+
272
+ ### Categorie 14 : Risques et hypotheses (questionnaire/14-risk-assumptions.md)
273
+ > Charge : TOUJOURS (noyau, integre au cadrage)
274
+
275
+ ### Categorie 15 : Criteres de reussite (questionnaire/15-success-metrics.md)
276
+ > Charge : TOUJOURS (noyau, integre au cadrage)
271
277
 
272
278
  ---
273
279
 
274
- ## Questionnaire Usage
280
+ ## Utilisation des questionnaires
275
281
 
276
- ### Phase Mapping
282
+ ### Correspondance avec les phases
277
283
 
278
- | Phase | Categories Used |
279
- |-------|----------------|
280
- | step-01-cadrage | 00 (if app mode), 01, 02, 03, + conditionals (05, 06, 08, 09, 10) |
281
- | step-03-specify (per module) | 04, 07, 11, 12, 13 (loaded per module) |
284
+ | Phase | Categories utilisees |
285
+ |-------|---------------------|
286
+ | step-01-cadrage | 00 (si mode application), 01, 02, 03, 14, 15 + conditionnelles (05, 06, 08, 09, 10) |
287
+ | step-03-specify (par module) | 04, 07, 11, 12, 13 (chargees par module) |
282
288
 
283
- ### Cadrage Phase
289
+ ### Phase de cadrage
284
290
 
285
- 1. **Start:** Begin with Category 0 (if application mode), then Category 1 (Business Context)
286
- 2. **Adapt:** Skip questions not relevant to the context
287
- 3. **Deepen:** Ask follow-up questions on vague answers
288
- 4. **Challenge:** Don't accept "we'll see later" on Must-Have
289
- 5. **Batch:** Present 3-4 questions per interaction (AskUserQuestion)
291
+ 1. **Debut :** Commencer par la categorie 0 (si mode application), puis la categorie 1 (Contexte metier)
292
+ 2. **Adapter :** Sauter les questions non pertinentes selon le contexte
293
+ 3. **Approfondir :** Poser des questions de relance sur les reponses vagues
294
+ 4. **Challenger :** Ne pas accepter "on verra plus tard" sur les fonctionnalites indispensables
295
+ 5. **Par lots :** Presenter 3 a 4 questions par interaction (AskUserQuestion)
296
+ 6. **Risques et succes :** TOUJOURS poser les categories 14 et 15 en fin de cadrage
290
297
 
291
- ### Follow-up Questions
298
+ ### Questions de relance
292
299
 
293
- For each vague answer, use:
294
- - "Can you give a concrete example?"
295
- - "How do you measure that today?"
296
- - "What happens if this rule is not respected?"
297
- - "Who is impacted by this decision?"
300
+ Pour chaque reponse vague, utiliser :
301
+ - "Pouvez-vous me donner un exemple concret ?"
302
+ - "Comment mesurez-vous cela aujourd'hui ?"
303
+ - "Que se passe-t-il si cette regle n'est pas respectee ?"
304
+ - "Qui est impacte par cette decision ?"
298
305
 
299
- ### Dev-Relevance Filter
306
+ ### Filtre de pertinence
300
307
 
301
- Each question kept passes this test:
302
- > "Does the answer change something in the generated code?"
303
- > Yes -> Keep | No -> Remove
308
+ Chaque question conservee passe ce test :
309
+ > "La reponse change-t-elle quelque chose dans le systeme a construire ?"
310
+ > Oui Conserver | Non Supprimer
304
311
 
305
312
  ---
306
313
 
307
- ## Summary
308
-
309
- | Category | Questions | Phase | Focus |
310
- |----------|-----------|-------|-------|
311
- | 0. Application Identity | 8 | step-01 (app mode) | Application name, modules, roles |
312
- | 1. Business Context | 4 | step-01 | Problem + AS-IS/TO-BE |
313
- | 2. Stakeholders | 8 | step-01 | Roles + needs |
314
- | 3. Functional Scope | 8 | step-01 | Priority levels + flows |
315
- | 4. Data | 8 | step-03 (per module) | Entities + rules |
316
- | 5. Integrations | 8 | step-01 (conditional) | Systems + flows |
317
- | 6. Security | 8 | step-01 (conditional) | Permissions + restrictions |
318
- | 7. UI | 8 | step-03 (per module) | Screens + experience |
319
- | 8. Performance | 4 | step-01 (conditional) | Response time + tests |
320
- | 9. Constraints | 4 | step-01 (conditional) | Tech stack + deps |
321
- | 10. Documentation | 4 | step-01 (conditional) | User + tech docs |
322
- | **Total Core** | **72** | | |
323
- | 11-13 (conditional) | ~24 | step-03 (per module) | Lifecycle, migration, cross-module |
314
+ ## Synthese
315
+
316
+ | Categorie | Questions | Phase | Focus |
317
+ |-----------|-----------|-------|-------|
318
+ | 0. Identite de l'application | 8 | step-01 (mode application) | Nom, domaines, profils |
319
+ | 1. Contexte metier | 12 | step-01 | Probleme, situation actuelle, vision, declencheur |
320
+ | 2. Parties prenantes | 14 | step-01 | Utilisateurs, taches, acces, changement |
321
+ | 3. Perimetre fonctionnel | 12 | step-01 | Priorites, parcours, besoins transversaux |
322
+ | 4. Donnees | 8 | step-03 (par module) | Entites et regles |
323
+ | 5. Integrations | 8 | step-01 (conditionnel) | Systemes et flux |
324
+ | 6. Securite et acces | 8 | step-01 (conditionnel) | Permissions et restrictions |
325
+ | 7. Interface utilisateur | 8 | step-03 (par module) | Ecrans et experience |
326
+ | 8. Performance et qualite | 4 | step-01 (conditionnel) | Temps de reponse et tests |
327
+ | 9. Contraintes | 4 | step-01 (conditionnel) | Technologies et dependances |
328
+ | 10. Documentation | 4 | step-01 (conditionnel) | Guides et formation |
329
+ | 14. Risques et hypotheses | 8 | step-01 | Risques, hypotheses, lecons du passe |
330
+ | 15. Criteres de reussite | 8 | step-01 | Indicateurs de succes, conditions d'acceptation |
331
+ | **Total noyau** | **~86** | | |
332
+ | 11-13 (conditionnel) | ~24 | step-03 (par module) | Cycle de vie, migration, impact inter-modules |
@@ -36,6 +36,7 @@ context: business
36
36
  question_mode: false
37
37
  refactor_mode: false
38
38
  micro_mode: false
39
+ extract_mode: false
39
40
  interactive_mode: false
40
41
  application_mode: false # Multi-module application analysis
41
42
  ```
@@ -52,6 +53,7 @@ application_mode: false # Multi-module application analysis
52
53
  | `-r` | `--refactor` | Refactoring mode | next arg = FEAT-ID, remaining = change description |
53
54
  | `-m` | `--micro` | Micro feature mode | none |
54
55
  | `-i` | `--interactive` | Interactive mode | none |
56
+ | `-x` | `--extract` | Extract mode: import from interactive HTML export | next arg = JSON file path |
55
57
  | `-app` | `--application` | Application mode: multi-module analysis | none |
56
58
 
57
59
  **Remaining arguments after flag removal = feature_description**
@@ -62,6 +64,8 @@ IF question_mode = true:
62
64
  use_case = "question"
63
65
  ELSE IF refactor_mode = true:
64
66
  use_case = "refactoring"
67
+ ELSE IF extract_mode = true:
68
+ use_case = "extract"
65
69
  ELSE IF micro_mode = true:
66
70
  use_case = "micro"
67
71
  ELSE:
@@ -125,6 +129,23 @@ ba -r FEAT-001 "Add support for multi-language feature names"
125
129
  ba -m "Add email notification on approval"
126
130
  ```
127
131
 
132
+ ### Extract Mode (-x)
133
+ ```
134
+ 1. Parse: extract_mode = true, json_path = first remaining arg
135
+ 2. Validate JSON file exists at {json_path}
136
+ 3. Read JSON file content
137
+ 4. Load step-06-extract.md with {json_data} = parsed content
138
+ 5. EXIT after extraction — step-06 handles everything
139
+ ```
140
+
141
+ **Example:**
142
+ ```
143
+ ba -x ./docs/business/MyApp/ba-export.json
144
+ ```
145
+
146
+ > **Note:** The JSON file is the export from the interactive HTML document (`ba-interactive.html`).
147
+ > The extract step maps ALL client data to feature.json format with zero information loss.
148
+
128
149
  ### Default Mode (New Feature)
129
150
  ```
130
151
  1. Set use_case = "new"
@@ -557,17 +578,18 @@ NEXT STEP: step-01-analyse ({use_case} mode)
557
578
 
558
579
  ## Step 13: Load Next Step
559
580
 
560
- **All modes except question (-q) and micro (-m):**
581
+ **All modes except question (-q), micro (-m), and extract (-x):**
561
582
  After showing initialization summary, proceed to `./step-01-cadrage.md`
562
583
 
563
584
  **Question mode (-q):** EXIT after ba-reader answers the question.
564
585
  **Micro mode (-m):** Load `./step-05-handoff.md` directly.
586
+ **Extract mode (-x):** Load `./step-06-extract.md` with `{json_data}` from parsed JSON file.
565
587
 
566
588
  **Pass context variables:**
567
589
  ```yaml
568
590
  feature_id: string
569
591
  feature_description: string
570
- use_case: "new" | "question" | "refactoring" | "micro" | "application"
592
+ use_case: "new" | "question" | "refactoring" | "micro" | "extract" | "application"
571
593
  application_name: string
572
594
  module_name: string
573
595
  language: string
@@ -104,35 +104,46 @@ After each batch: Apply ULTRATHINK + Elicitation Techniques.
104
104
 
105
105
  ### 4. Core Questionnaires (always)
106
106
 
107
- Load these categories in order:
107
+ Load these categories in order. Each questionnaire contains its own batching strategy and elicitation guide.
108
108
 
109
- **Category 01 - Context** (`questionnaire/01-context.md`)
110
- - Q1.1-Q1.4: Problem, AS-IS, TO-BE, trigger
111
- - 1 AskUserQuestion batch
109
+ **Categorie 01 - Contexte metier** (`questionnaire/01-context.md`)
110
+ - Q1.1-Q1.12 : Probleme, situation actuelle, vision, declencheur
111
+ - 3 lots AskUserQuestion (probleme, processus actuel, vision et urgence)
112
+ - ULTRATHINK : Identifier la douleur reelle, pas la solution imaginee
112
113
 
113
- **Category 02 - Stakeholders** (`questionnaire/02-stakeholders.md`)
114
- - Q2.1-Q2.8: Roles, tasks, frequency, pain points
115
- - 2 AskUserQuestion batches
116
- - ULTRATHINK: Map stakeholders to application roles
114
+ **Categorie 02 - Parties prenantes** (`questionnaire/02-stakeholders.md`)
115
+ - Q2.1-Q2.14 : Utilisateurs, taches, acces, conduite du changement
116
+ - 4 lots AskUserQuestion
117
+ - ULTRATHINK : Mapper les parties prenantes vers les profils d'acces
117
118
 
118
- **Category 03 - Scope** (`questionnaire/03-scope.md`)
119
- - Q3.1-Q3.8: Priority levels (Essentiel/Important/Optionnel/Hors périmètre), flows, errors
120
- - 2 AskUserQuestion batches
121
- - ULTRATHINK: Ensure scope items map to modules
119
+ **Categorie 03 - Perimetre fonctionnel** (`questionnaire/03-scope.md`)
120
+ - Q3.1-Q3.12 : Priorites (indispensable/important/optionnel/hors perimetre), parcours, besoins transversaux
121
+ - 3 lots AskUserQuestion
122
+ - ULTRATHINK : S'assurer que le perimetre couvre les besoins identifies
123
+
124
+ **Categorie 14 - Risques et hypotheses** (`questionnaire/14-risk-assumptions.md`)
125
+ - Q14.1-Q14.8 : Risques, hypotheses non verifiees, lecons du passe
126
+ - 2 lots AskUserQuestion
127
+ - TOUJOURS charge (noyau) - ne jamais sauter cette categorie
128
+
129
+ **Categorie 15 - Criteres de reussite** (`questionnaire/15-success-metrics.md`)
130
+ - Q15.1-Q15.8 : Definition du succes, objectifs mesurables, conditions d'acceptation
131
+ - 2 lots AskUserQuestion
132
+ - TOUJOURS charge (noyau) - ne jamais sauter cette categorie
122
133
 
123
134
  ### 5. Conditional Questionnaires
124
135
 
125
136
  Based on feature description analysis, load additional categories:
126
137
 
127
- | Condition | Category | Questionnaire |
128
- |-----------|----------|---------------|
129
- | Security concerns mentioned | 06 | `questionnaire/06-security.md` |
130
- | Integration with external systems | 05 | `questionnaire/05-integrations.md` |
131
- | Performance requirements | 08 | `questionnaire/08-performance.md` |
132
- | Technical constraints | 09 | `questionnaire/09-constraints.md` |
133
- | Documentation requirements | 10 | `questionnaire/10-documentation.md` |
138
+ | Condition | Categorie | Questionnaire |
139
+ |-----------|-----------|---------------|
140
+ | Securite ou conformite mentionnee | 06 | `questionnaire/06-security.md` |
141
+ | Integration avec des systemes externes | 05 | `questionnaire/05-integrations.md` |
142
+ | Exigences de performance | 08 | `questionnaire/08-performance.md` |
143
+ | Contraintes techniques | 09 | `questionnaire/09-constraints.md` |
144
+ | Besoins de documentation | 10 | `questionnaire/10-documentation.md` |
134
145
 
135
- > **Categories 04 (data), 07 (ui), 11 (data-lifecycle), 12 (migration), 13 (cross-module) are per-module and loaded in step-03.**
146
+ > **Categories 04 (donnees), 07 (interface), 11 (cycle de vie), 12 (migration), 13 (inter-modules) sont par module et chargees dans step-03.**
136
147
 
137
148
  ### 6. Application Roles Definition
138
149
 
@@ -447,6 +447,7 @@ For EACH section confirmed in 3a, build the `specification.sections[]` structure
447
447
  #### 3b. For Each Section: Generate MANDATORY ASCII Mockup
448
448
 
449
449
  > **BLOCKING RULE:** Every section MUST have a wireframe. No section proceeds to entity definition (step 6) without a validated mockup stored in `specification.uiWireframes[]`.
450
+ > **HTML INTEGRATION:** These wireframes are also rendered in the interactive HTML document (`ba-interactive.html`) deployed at handoff. The client can review and annotate mockups directly in their browser.
450
451
 
451
452
  For each confirmed section, generate an ASCII mockup and validate with client:
452
453
 
@@ -915,6 +915,98 @@ Status journey: analyze → consolidate → **handed-off**
915
915
 
916
916
  ---
917
917
 
918
+ ### 9d. Deploy Interactive HTML Document (MANDATORY)
919
+
920
+ > **The interactive HTML document is deployed to the project for client-facing review.**
921
+ > It allows clients to review, edit, and enrich the business analysis directly in their browser.
922
+
923
+ **Source:** `html/ba-interactive.html` (relative to skill root = `~/.claude/skills/business-analyse/html/`)
924
+
925
+ **Destination:** `docs/business/{app}/business-analyse/v{version}/ba-interactive.html`
926
+
927
+ **Deployment steps:**
928
+
929
+ 1. Read the HTML template from skill directory
930
+ 2. Replace template placeholders with actual values:
931
+ - `{{APPLICATION_NAME}}` → `{application_name}`
932
+ - `{{APPLICATION_ID}}` → `{feature_id}`
933
+ - `{{VERSION}}` → `{version}`
934
+ - `{{CREATED_AT}}` → `{ISO timestamp}`
935
+ 3. Write the populated HTML to the output directory
936
+ 4. Display deployment confirmation:
937
+
938
+ ```
939
+ ✓ Interactive HTML deployed:
940
+ Path: docs/business/{app}/business-analyse/v{version}/ba-interactive.html
941
+ Open in browser to review and edit the business analysis.
942
+ Export JSON and re-import with: /business-analyse -x <exported-json-path>
943
+ ```
944
+
945
+ **Why deploy at handoff?**
946
+ - The feature.json is complete at this point (all modules specified and consolidated)
947
+ - The client can review the full analysis in an interactive format
948
+ - Any client modifications can be re-imported via `-x` extraction mode
949
+ - The HTML is standalone (no server required) with localStorage persistence
950
+
951
+ ---
952
+
953
+ ### 9e. Update BA Manifest (MANDATORY)
954
+
955
+ > **The BA manifest enables the SmartStack web app to discover and display all available business analyses.**
956
+ > It is a JSON index file at `docs/business/index.json` that lists all feature.json files.
957
+
958
+ **Path:** `docs/business/index.json` (project root relative)
959
+
960
+ **Schema:**
961
+ ```json
962
+ {
963
+ "version": "1.0",
964
+ "updatedAt": "{ISO timestamp}",
965
+ "analyses": [
966
+ {
967
+ "appCode": "{app_code}",
968
+ "appName": "{application_name}",
969
+ "moduleCode": null | "{module_code}",
970
+ "moduleName": "{module_name}",
971
+ "version": "{version}",
972
+ "status": "handed-off",
973
+ "featureDescription": "{feature_description}",
974
+ "path": "{app_code}/business-analyse/v{version}/feature.json",
975
+ "updatedAt": "{ISO timestamp}"
976
+ }
977
+ ]
978
+ }
979
+ ```
980
+
981
+ **Update logic:**
982
+
983
+ 1. Read existing manifest at `docs/business/index.json` (or create empty `{ "version": "1.0", "updatedAt": "", "analyses": [] }`)
984
+ 2. For the APPLICATION-level feature.json:
985
+ - Find existing entry where `appCode == {app_code}` AND `moduleCode == null` AND `version == {version}`
986
+ - If found: update `status`, `updatedAt`, `featureDescription`
987
+ - If not found: append new entry with `moduleCode: null` and `path: "{app_code}/business-analyse/v{version}/feature.json"`
988
+ 3. For EACH MODULE-level feature.json:
989
+ - Find existing entry where `appCode == {app_code}` AND `moduleCode == {module_code}` AND `version == {version}`
990
+ - If found: update `status`, `updatedAt`, `featureDescription`
991
+ - If not found: append new entry with `moduleCode: "{module_code}"` and `path: "{app_code}/{module_code}/business-analyse/v{version}/feature.json"`
992
+ 4. Update root `updatedAt` to current timestamp
993
+ 5. Write manifest back to `docs/business/index.json`
994
+
995
+ **Display confirmation:**
996
+ ```
997
+ ✓ BA manifest updated: docs/business/index.json
998
+ Entries: {total_count} ({app_count} applications, {module_count} modules)
999
+ Web viewer: /system/docs/ba
1000
+ ```
1001
+
1002
+ **Why a manifest?**
1003
+ - The web app needs to discover available BAs without scanning the filesystem
1004
+ - Static file serving (no backend API needed)
1005
+ - Incremental updates: each handoff adds/updates only its entries
1006
+ - Consumed by the SmartStack web app BA viewer at `/system/docs/ba`
1007
+
1008
+ ---
1009
+
918
1010
  ### 10. User Choice: Next Agent
919
1011
 
920
1012
  Present development options after successful handoff:
@@ -935,6 +1027,7 @@ Generated Artifacts:
935
1027
  ✓ feature.json (master + per-module) - enhanced with handoff section
936
1028
  ✓ .ralph/prd.json or .ralph/prd-{module}.json - derived from feature.json
937
1029
  ✓ .ralph/progress.txt - comprehensive task tracker
1030
+ ✓ ba-interactive.html - client-facing interactive review document
938
1031
  ✓ Implementation strategy selected: {strategy}
939
1032
 
940
1033
  Next: Choose development approach
@@ -1003,7 +1096,14 @@ This step enriches **feature.json** (master + per-module) with:
1003
1096
  - **handoff** section: complexity, implementationStrategy, moduleOrder, filesToCreate (7 categories), brToCodeMapping, apiEndpointSummary, prdFiles
1004
1097
  - **status:** "handed-off"
1005
1098
 
1006
- Also generates two working files:
1099
+ Also generates working files and updates the manifest:
1100
+
1101
+ - **ba-interactive.html** (deployed to docs/business/{app}/business-analyse/v{version}/)
1102
+ - Standalone interactive HTML document for client review
1103
+ - Pre-populated with application name, ID, version
1104
+ - Client can edit, add use cases, modify scope, and export JSON
1105
+ - Re-importable via `/business-analyse -x <exported-json-path>`
1106
+
1007
1107
  - **.ralph/prd.json** (or .ralph/prd-{module}.json per module structure)
1008
1108
  - Derived entirely from feature.json
1009
1109
  - Single source of truth for development team
@@ -1092,6 +1192,8 @@ Before presenting handoff to user:
1092
1192
  - [ ] feature.json updated: handoff section + status "handed-off"
1093
1193
  - [ ] All paths use project namespace from .smartstack/config.json
1094
1194
  - [ ] No invented requirements (everything traced to feature.json)
1195
+ - [ ] ba-interactive.html deployed with placeholders replaced
1196
+ - [ ] BA manifest (docs/business/index.json) updated with current analysis entries
1095
1197
  - [ ] User ready for next agent selection
1096
1198
 
1097
1199
  ---