@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
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  name: business-analyse
3
- description: Business Analysis v4.0 - Iterative multi-module workflow with 5-level navigation hierarchy, client checkpoints, and integrated documentation.
4
- argument-hint: "[-a] [-e] [-q <FEAT-ID> \"question\"] [-r <FEAT-ID> \"change\"] [-m] <feature description>"
3
+ description: Business Analysis v5.0 - Iterative multi-module workflow with 5-level navigation hierarchy, client checkpoints, interactive HTML documentation, and extraction pipeline.
4
+ argument-hint: "[-a] [-e] [-q <FEAT-ID> \"question\"] [-r <FEAT-ID> \"change\"] [-m] [-x <json-path>] <feature description>"
5
5
  ---
6
6
 
7
7
  <objective>
8
- Execute VibeCoding-focused business analysis workflows. This skill produces a single feature.json progressively enriched at each step, published to docs/business/ for web app rendering. Supports 4 use cases: new feature analysis, questions about existing features, feature refactoring, and one-shot micro-features.
8
+ Execute VibeCoding-focused business analysis workflows. This skill produces a single feature.json progressively enriched at each step, published to docs/business/ for web app rendering. Supports 5 use cases: new feature analysis, questions about existing features, feature refactoring, one-shot micro-features, and extraction from interactive HTML documentation.
9
9
  </objective>
10
10
 
11
11
  <quick_start>
12
- **Four use cases:**
12
+ **Five use cases:**
13
13
 
14
14
  ```bash
15
15
  # A. New feature (full workflow)
@@ -23,6 +23,9 @@ Execute VibeCoding-focused business analysis workflows. This skill produces a si
23
23
 
24
24
  # D. Micro-feature (one-shot, minimal questions)
25
25
  /business-analyse -m Add a status field to orders
26
+
27
+ # E. Extract from interactive HTML export
28
+ /business-analyse -x ./docs/business/MyApp/ba-export.json
26
29
  ```
27
30
 
28
31
  **Recommended autonomous workflow:**
@@ -45,6 +48,7 @@ See `<parameters>` for complete flag list.
45
48
  | `-q` | `--question` | Question mode: query an existing feature (requires FEAT-ID + question) |
46
49
  | `-r` | `--refactor` | Refactoring mode: delta changes on existing feature (requires FEAT-ID + change description) |
47
50
  | `-m` | `--micro` | Micro-feature mode: minimal questions, direct handoff |
51
+ | `-x` | `--extract` | Extract mode: import from interactive HTML export JSON (requires json-path) |
48
52
  | `-app` | `--application` | Application mode: multi-module analysis with module decomposition |
49
53
  | `-i` | `--interactive` | Interactive mode: configure flags via AskUserQuestion |
50
54
 
@@ -72,6 +76,9 @@ See `<parameters>` for complete flag list.
72
76
  # E. Micro-feature (minimal questions)
73
77
  /business-analyse -m Add a status field to orders
74
78
 
79
+ # F. Extract from interactive HTML export
80
+ /business-analyse -x ./docs/business/MyApp/ba-export.json
81
+
75
82
  # Autonomous application mode
76
83
  /business-analyse -app -a New HR management system
77
84
 
@@ -86,7 +93,7 @@ See `<parameters>` for complete flag list.
86
93
  1. Defaults loaded from `steps/step-00-init.md` `<defaults>` section
87
94
  2. Command-line flags override defaults
88
95
  3. Flags removed from input, remainder becomes `{feature_description}`
89
- 4. Use case determined by flags: question > refactor > micro > new (default)
96
+ 4. Use case determined by flags: question > refactor > extract > micro > new (default)
90
97
  5. Feature ID generated as `FEAT-NNN` for new features
91
98
  </parsing_rules>
92
99
 
@@ -96,10 +103,13 @@ See `<parameters>` for complete flag list.
96
103
  **All outputs saved to PROJECT directory:**
97
104
 
98
105
  ```
99
- docs/business/{app}/business-analyse/v{X.Y}/
100
- feature.json # APPLICATION-level master (modules, dependencies, roles)
101
- docs/business/{app}/{module}/business-analyse/v{X.Y}/
102
- feature.json # MODULE-level detail (entities, UC, FR, permissions, mockups)
106
+ docs/business/
107
+ index.json # BA manifest (auto-updated at handoff, consumed by web app viewer)
108
+ {app}/business-analyse/v{X.Y}/
109
+ feature.json # APPLICATION-level master (modules, dependencies, roles)
110
+ ba-interactive.html # Client-facing interactive review document (deployed at handoff)
111
+ {app}/{module}/business-analyse/v{X.Y}/
112
+ feature.json # MODULE-level detail (entities, UC, FR, permissions, mockups)
103
113
  ```
104
114
 
105
115
  **Ralph Loop files (generated by step-05):**
@@ -133,6 +143,15 @@ When provided, step-00 will:
133
143
  2. Create new version folder (v1.1 from v1.0, etc.)
134
144
  3. Load existing feature context
135
145
  4. Continue through steps 01-04 with delta focus
146
+
147
+ **Extract mode (`-x <json-path>`):**
148
+
149
+ When provided, step-00 will:
150
+
151
+ 1. Validate the JSON file at `<json-path>` exists and is valid JSON
152
+ 2. Pass parsed content to step-06-extract.md
153
+ 3. Step-06 maps ALL client data to feature.json format (zero information loss)
154
+ 4. Post-extraction: choice to enrich, handoff, or terminate
136
155
  </resume_workflow>
137
156
 
138
157
  <workflow>
@@ -141,9 +160,10 @@ When provided, step-00 will:
141
160
  1. Parse flags and feature description
142
161
  2. If `-q`: Load ba-reader, answer question → EXIT
143
162
  3. If `-r`: Load existing feature.json, create new version
144
- 4. If `-m`: Create minimal feature.json → simplified handoff
145
- 5. If `-app` or auto-detected multi-module: Full application workflow
146
- 6. Default: Single module workflow (same phases, decomposition is trivial)
163
+ 4. If `-x`: Load JSON export, extract to feature.json → step-06
164
+ 5. If `-m`: Create minimal feature.json simplified handoff
165
+ 6. If `-app` or auto-detected multi-module: Full application workflow
166
+ 7. Default: Single module workflow (same phases, decomposition is trivial)
147
167
 
148
168
  **Application workflow (multi-module):**
149
169
  - **Step 00:** Parse flags, create master feature.json (draft)
@@ -170,6 +190,11 @@ When provided, step-00 will:
170
190
  **Micro workflow:**
171
191
  - **Step 00:** Create minimal feature.json
172
192
  - **Step 05:** Direct handoff (skip 01-04)
193
+
194
+ **Extract workflow (from interactive HTML):**
195
+ - **Step 00:** Parse `-x` flag, validate JSON file
196
+ - **Step 06:** Map HTML export to feature.json (cadrage, modules, specs, consolidation)
197
+ - Post-extraction choice: enrich with questionnaire (step-01), go to handoff (step-05), or terminate
173
198
  </workflow>
174
199
 
175
200
  <state_variables>
@@ -179,7 +204,7 @@ When provided, step-00 will:
179
204
  | ----------------------- | ------- | ------------------------------------------------------ |
180
205
  | `{feature_id}` | string | Unique identifier (e.g., `FEAT-001`) |
181
206
  | `{feature_description}` | string | What to analyze (flags removed) |
182
- | `{use_case}` | string | One of: new, question, refactoring, micro |
207
+ | `{use_case}` | string | One of: new, question, refactoring, micro, extract |
183
208
  | `{version}` | string | SemVer (1.0, 1.1, 2.0, etc.) |
184
209
  | `{application_name}` | string | Target application name |
185
210
  | `{module_name}` | string | Target module name |
@@ -208,6 +233,7 @@ When provided, step-00 will:
208
233
  | 03 | `steps/step-03-specify.md` | Opus | Iterative per-module specification + validation |
209
234
  | 04 | `steps/step-04-consolidation.md` | Sonnet | Cross-module validation, E2E flows, permissions coherence |
210
235
  | 05 | `steps/step-05-handoff.md` | Opus | Development prompt + Ralph Loop prd.json |
236
+ | 06 | `steps/step-06-extract.md` | Sonnet | Extract interactive HTML export → feature.json |
211
237
 
212
238
  </step_files>
213
239
 
@@ -216,21 +242,23 @@ When provided, step-00 will:
216
242
 
217
243
  Load ONLY relevant categories based on feature type:
218
244
 
219
- | Category | File | Questions | When to load |
220
- | -------- | ----------------------------------- | --------- | ------------ |
221
- | 00 | `questionnaire/00-application.md` | 8 | If application mode |
222
- | 01 | `questionnaire/01-context.md` | 4 | Always |
223
- | 02 | `questionnaire/02-stakeholders.md` | 6 | Always |
224
- | 03 | `questionnaire/03-scope.md` | 6 | Always |
225
- | 04 | `questionnaire/04-data.md` | 6 | If data-centric |
226
- | 05 | `questionnaire/05-integrations.md` | 6 | If integrations |
227
- | 06 | `questionnaire/06-security.md` | 4 | Always (minimal) |
228
- | 07 | `questionnaire/07-ui.md` | 6 | If UI-centric |
229
- | 08 | `questionnaire/08-performance.md` | 4 | If performance-critical |
230
- | 09 | `questionnaire/09-constraints.md` | 4 | If constraints exist |
231
- | 10 | `questionnaire/10-documentation.md` | 4 | If doc required |
232
-
233
- **Total: ~60 questions (trimmed from 100+)**
245
+ | Categorie | Fichier | Questions | Quand charger |
246
+ | --------- | ------------------------------------- | --------- | ------------- |
247
+ | 00 | `questionnaire/00-application.md` | 8 | Si mode application |
248
+ | 01 | `questionnaire/01-context.md` | 12 | Toujours |
249
+ | 02 | `questionnaire/02-stakeholders.md` | 14 | Toujours |
250
+ | 03 | `questionnaire/03-scope.md` | 12 | Toujours |
251
+ | 04 | `questionnaire/04-data.md` | 8 | Si module oriente donnees |
252
+ | 05 | `questionnaire/05-integrations.md` | 8 | Si integrations |
253
+ | 06 | `questionnaire/06-security.md` | 8 | Si securite mentionnee |
254
+ | 07 | `questionnaire/07-ui.md` | 12 | Si module oriente interface |
255
+ | 08 | `questionnaire/08-performance.md` | 4 | Si performance critique |
256
+ | 09 | `questionnaire/09-constraints.md` | 4 | Si contraintes |
257
+ | 10 | `questionnaire/10-documentation.md` | 4 | Si documentation requise |
258
+ | 14 | `questionnaire/14-risk-assumptions.md`| 8 | Toujours |
259
+ | 15 | `questionnaire/15-success-metrics.md` | 8 | Toujours |
260
+
261
+ **Total noyau : ~86 questions (en profondeur, langage business)**
234
262
 
235
263
  </questionnaire_files>
236
264
 
@@ -243,6 +271,7 @@ Load ONLY relevant categories based on feature type:
243
271
  | spec | `templates/tpl-frd.md` | 02 |
244
272
  | handoff | `templates/tpl-handoff.md` | 04 |
245
273
  | suggestions | `patterns/suggestion-catalog.md` | 01 |
274
+ | interactive | `html/ba-interactive.html` | 05 (deploy) |
246
275
 
247
276
  </template_files>
248
277
 
@@ -473,70 +473,101 @@ AskUserQuestion({
473
473
 
474
474
  ---
475
475
 
476
- ## Elicitation Techniques
476
+ ## Techniques d'elicitation
477
477
 
478
- > **Loaded by:** step-01-analyse (Opus ULTRATHINK)
479
- > **Purpose:** Guide HOW to question, not just WHAT to ask.
478
+ > **Charge par :** step-01-cadrage (Opus ULTRATHINK)
479
+ > **Objectif :** Guider COMMENT questionner, pas seulement QUOI demander.
480
+ > **Principe :** Chaque technique doit etre appliquee naturellement dans le flux de la conversation,
481
+ > pas comme un outil supplementaire. L'analyste choisit la technique adaptee a la situation.
480
482
 
481
- ### Technique 1: Solution Problem Reframing
483
+ ### Technique 1 : Reformulation du besoin
482
484
 
483
- If the user describes a **solution** (button, field, screen, API), reframe as a **need**:
485
+ Quand le client decrit une **solution** (bouton, ecran, champ, outil), reformuler en **besoin** :
484
486
 
485
- | User says | BA agent asks |
486
- |-----------|---------------|
487
- | "I need a Role dropdown on the User form" | "What problem are you trying to solve with different user access levels?" |
488
- | "We need an export button" | "What do you do with the exported data? Who needs it and why?" |
489
- | "Add a status field" | "What lifecycle does this entity go through? What triggers each transition?" |
487
+ | Le client dit | L'analyste demande |
488
+ |---------------|-------------------|
489
+ | "Il me faut un menu deroulant pour les roles" | "Quel probleme rencontrez-vous aujourd'hui avec la gestion des acces ? Pourquoi certaines personnes doivent-elles avoir des acces differents ?" |
490
+ | "On a besoin d'un bouton d'export" | "Que faites-vous avec les donnees une fois exportees ? Qui en a besoin et pourquoi ?" |
491
+ | "Ajoutez un champ statut" | "Quel parcours suit cet element du debut a la fin ? Quels evenements declenchent un changement d'etat ?" |
490
492
 
491
- ### Technique 2: 5 Whys (Root Cause)
493
+ ### Technique 2 : Chaine des pourquoi
492
494
 
493
- When the need seems superficial, chain up to 5 "Why?":
495
+ Quand le besoin semble superficiel, enchainez jusqu'a 5 "Pourquoi ?" pour trouver la cause racine :
494
496
 
495
497
  ```
496
- User: "We need to track user activity"
497
- Why? "To know who modified what"
498
- Why? "Because we had data integrity issues"
499
- Why? "Because multiple people edit the same records"
500
- ROOT CAUSE: Concurrent editing conflictNeed audit trail + optimistic locking
498
+ Client : "On a besoin de suivre l'activite des utilisateurs"
499
+ Pourquoi ? "Pour savoir qui a modifie quoi"
500
+ Pourquoi ? "Parce qu'on a eu des problemes de donnees incorrectes"
501
+ Pourquoi ? "Parce que plusieurs personnes modifient les memes fiches"
502
+ CAUSE RACINE : Conflit d'edition simultaneeBesoin de journal d'activite + protection des modifications
501
503
  ```
502
504
 
503
- ### Technique 3: Concrete Scenario Extraction
505
+ ### Technique 3 : Extraction de scenario concret
504
506
 
505
- Never accept abstract descriptions. Always ask for **a real day-in-the-life scenario**:
507
+ Ne jamais accepter de descriptions abstraites. Toujours demander un **scenario de vie reelle** :
506
508
 
507
509
  ```
508
- "Walk me through a typical day: you arrive at the office,
509
- you open the application what is the FIRST thing you need to do?
510
- Then what? What information do you look at? What decisions do you make?"
510
+ "Racontez-moi une journee type : vous arrivez au bureau, vous ouvrez l'application.
511
+ Quelle est la PREMIERE chose que vous devez faire ?
512
+ Puis ensuite ? Quelles informations consultez-vous ? Quelles decisions prenez-vous ?"
511
513
  ```
512
514
 
513
- ### Technique 4: Absence Test
515
+ ### Technique 4 : Test d'absence
514
516
 
515
- Validate necessity by asking what happens WITHOUT:
517
+ Valider la necessite en demandant ce qui se passe SANS :
516
518
 
517
519
  ```
518
- "If this feature did NOT exist, what would you do instead?
519
- How much time/money does the current workaround cost?"
520
+ "Si cette fonctionnalite N'EXISTAIT PAS, que feriez-vous a la place ?
521
+ Combien de temps ou d'argent le contournement actuel coute-t-il ?"
520
522
  ```
521
523
 
522
- ### Technique 5: Completeness Probing
524
+ ### Technique 5 : Verification de completude
523
525
 
524
- For every list answer, challenge completeness:
526
+ Pour chaque reponse sous forme de liste, verifier qu'il ne manque rien :
525
527
 
526
- | Answer type | Probe |
527
- |-------------|-------|
528
- | "There are 3 user types" | "Are there external actors? Auditors? System admins? Automated processes?" |
529
- | "The main flow is ABC" | "What if the user cancels at step B? What if step C fails? What if they go back to A?" |
530
- | "Required fields: name, email" | "What uniqueness constraints? What format? What happens on duplicate?" |
528
+ | Type de reponse | Relance |
529
+ |-----------------|---------|
530
+ | "Il y a 3 types d'utilisateurs" | "Y a-t-il des acteurs externes ? Des auditeurs ? Des administrateurs systeme ? Des processus automatiques ?" |
531
+ | "Le flux principal est A puis B puis C" | "Que se passe-t-il si l'utilisateur annule a l'etape B ? Si l'etape C echoue ? S'il veut revenir a A ?" |
532
+ | "Champs obligatoires : nom et email" | "Quelles contraintes d'unicite ? Quel format ? Que se passe-t-il en cas de doublon ?" |
531
533
 
532
- ### Answer Quality Indicators
534
+ ### Technique 6 : Projection dans le futur
533
535
 
534
- | Quality | Signal | Action |
536
+ Demander au client de se projeter pour decouvrir des besoins non exprimes :
537
+
538
+ ```
539
+ "Imaginons que nous sommes 2 ans dans le futur et que l'application fonctionne parfaitement.
540
+ Qu'est-ce qui a change dans votre facon de travailler ?
541
+ Quels nouveaux besoins sont apparus auxquels vous ne pensez pas aujourd'hui ?"
542
+ ```
543
+
544
+ ### Technique 7 : Test de contradiction
545
+
546
+ Quand deux reponses semblent contradictoires, les confronter pour clarifier :
547
+
548
+ ```
549
+ "Vous avez mentionne que [affirmation A], mais vous dites aussi que [affirmation B].
550
+ Ces deux elements semblent en tension. Pouvez-vous m'aider a comprendre
551
+ comment ils coexistent dans la realite ?"
552
+ ```
553
+
554
+ ### Technique 8 : Escalade d'impact
555
+
556
+ Augmenter progressivement l'echelle pour tester les limites :
557
+
558
+ ```
559
+ "Aujourd'hui vous avez 50 fiches. Que se passe-t-il avec 500 ? Avec 5000 ?
560
+ Est-ce que le processus reste le meme ou faudrait-il faire differemment ?"
561
+ ```
562
+
563
+ ### Indicateurs de qualite des reponses
564
+
565
+ | Qualite | Signal | Action |
535
566
  |---------|--------|--------|
536
- | **Insufficient** | < 1 sentence, "I don't know", vague adjective | Apply technique 1-5, ask for concrete example |
537
- | **Solution-oriented** | Contains UI/tech terms (button, field, API, database) | Apply technique 1 (reframe to problem) |
538
- | **Sufficient** | Contains WHO, WHAT, WHY, concrete example | Proceed, note confidence level |
539
- | **Excellent** | Includes edge cases, constraints, measurable criteria | Proceed, mark as "Confirmed" |
567
+ | **Insuffisante** | Moins d'une phrase, "je ne sais pas", adjectif vague | Appliquer les techniques 1 a 8, demander un exemple concret |
568
+ | **Orientee solution** | Contient des termes d'interface ou techniques (bouton, champ, base de donnees) | Appliquer la technique 1 (reformuler en besoin) |
569
+ | **Suffisante** | Contient QUI, QUOI, POURQUOI et un exemple concret | Continuer, noter le niveau de confiance |
570
+ | **Excellente** | Inclut les cas limites, les contraintes et des criteres mesurables | Continuer, marquer comme "Confirme" |
540
571
 
541
572
  ---
542
573