@atlashub/smartstack-cli 4.74.0 → 4.75.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.
- package/dist/index.js +111 -36
- package/dist/index.js.map +1 -1
- package/dist/mcp-entry.mjs +14 -3
- package/dist/mcp-entry.mjs.map +1 -1
- package/package.json +1 -1
- package/templates/agents/ba-reader.md +17 -15
- package/templates/agents/ba-writer.md +49 -51
- package/templates/skills/apex/_shared.md +1 -1
- package/templates/skills/apex/references/checks/backend-checks.sh +21 -7
- package/templates/skills/apex/references/checks/infrastructure-checks.sh +47 -10
- package/templates/skills/apex/references/frontend-route-wiring-app-tsx.md +3 -0
- package/templates/skills/apex/references/post-checks.md +5 -2
- package/templates/skills/apex/references/smartstack-frontend.md +53 -7
- package/templates/skills/apex/steps/step-00-init.md +74 -0
- package/templates/skills/apex/steps/step-03-execute.md +16 -4
- package/templates/skills/apex/steps/step-03b-layer1-seed.md +39 -6
- package/templates/skills/apex/steps/step-03c-layer2-backend.md +50 -5
- package/templates/skills/apex/steps/step-03d-layer3-frontend.md +102 -2
- package/templates/skills/application/references/frontend-route-wiring-app-tsx.md +3 -0
- package/templates/skills/business-analyse/SKILL.md +14 -0
- package/templates/skills/business-analyse/_shared.md +27 -0
- package/templates/skills/business-analyse/patterns/suggestion-catalog.md +34 -26
- package/templates/skills/business-analyse/questionnaire/01-context.md +13 -9
- package/templates/skills/business-analyse/questionnaire/02-stakeholders-scope.md +20 -27
- package/templates/skills/business-analyse/questionnaire.md +86 -9
- package/templates/skills/business-analyse/references/03-json-schemas.md +213 -0
- package/templates/skills/business-analyse/references/03-post-check-validation.md +144 -0
- package/templates/skills/business-analyse/references/03-smartstack-entity-guards.md +32 -0
- package/templates/skills/business-analyse/references/04-cross-module-validation.md +95 -0
- package/templates/skills/business-analyse/references/04-file-allocation.md +162 -0
- package/templates/skills/business-analyse/references/04-naming-audit-checks.md +174 -0
- package/templates/skills/business-analyse/references/04-semantic-validation-matrix.md +118 -0
- package/templates/skills/business-analyse/references/domain-research-playbook.md +234 -0
- package/templates/skills/business-analyse/references/entity-sourcing-presentation.md +166 -0
- package/templates/skills/business-analyse/references/init-resume-logic.md +70 -0
- package/templates/skills/business-analyse/references/module-completeness-challenge.md +174 -0
- package/templates/skills/business-analyse/references/multi-app-detection.md +149 -0
- package/templates/skills/business-analyse/references/portal-classification.md +52 -0
- package/templates/skills/business-analyse/references/validation-checklist.md +30 -1
- package/templates/skills/business-analyse/schemas/sections/analysis-schema.json +37 -4
- package/templates/skills/business-analyse/steps/step-00-init.md +22 -190
- package/templates/skills/business-analyse/steps/step-01-cadrage.md +365 -269
- package/templates/skills/business-analyse/steps/step-02-structure.md +98 -20
- package/templates/skills/business-analyse/steps/step-03-specify.md +652 -229
- package/templates/skills/business-analyse/steps/step-04-consolidate.md +308 -287
- package/templates/skills/business-analyse-design/SKILL.md +10 -0
- package/templates/skills/business-analyse-design/references/screens-post-check.md +221 -0
- package/templates/skills/business-analyse-design/references/screens-type-mapping.md +138 -0
- package/templates/skills/business-analyse-design/references/smartcomponents-templates.md +225 -0
- package/templates/skills/{business-analyse → business-analyse-design}/references/spec-auto-inference.md +117 -117
- package/templates/skills/business-analyse-design/steps/step-01-screens.md +36 -162
- package/templates/skills/business-analyse-design/steps/step-02-wireframes.md +8 -7
- package/templates/skills/business-analyse-design/steps/step-03-navigation.md +89 -42
- package/templates/skills/business-analyse-develop/references/compact-loop.md +9 -0
- package/templates/skills/business-analyse-develop/references/handoff-quality-gate.md +132 -0
- package/templates/skills/business-analyse-develop/references/prd-v3-transformation.md +326 -0
- package/templates/skills/business-analyse-develop/references/report-reconciliation.md +140 -0
- package/templates/skills/business-analyse-develop/references/report-template.md +142 -0
- package/templates/skills/business-analyse-develop/steps/step-01-task.md +5 -177
- package/templates/skills/business-analyse-develop/steps/step-02-execute.md +17 -4
- package/templates/skills/business-analyse-develop/steps/step-03-commit.md +6 -2
- package/templates/skills/business-analyse-develop/steps/step-04-check.md +6 -0
- package/templates/skills/business-analyse-develop/steps/step-05-report.md +3 -269
- package/templates/skills/business-analyse-handoff/SKILL.md +10 -0
- package/templates/skills/business-analyse-handoff/references/agent-handoff-transform-prompt.md +208 -0
- package/templates/skills/business-analyse-handoff/references/context-isolation-pattern.md +47 -0
- package/templates/skills/business-analyse-handoff/references/handoff-file-inventory.md +49 -0
- package/templates/skills/business-analyse-handoff/references/handoff-global-validation.md +142 -0
- package/templates/skills/business-analyse-handoff/references/prd-validation-checks.md +125 -0
- package/templates/skills/business-analyse-handoff/references/project-index-update.md +98 -0
- package/templates/skills/business-analyse-handoff/steps/step-01-transform.md +9 -160
- package/templates/skills/business-analyse-handoff/steps/step-02-export.md +10 -99
- package/templates/skills/business-analyse-html/SKILL.md +10 -0
- package/templates/skills/business-analyse-html/html/ba-interactive.html +306 -81
- package/templates/skills/business-analyse-html/html/src/scripts/01-data-init.js +15 -2
- package/templates/skills/business-analyse-html/html/src/scripts/02-navigation.js +6 -46
- package/templates/skills/business-analyse-html/html/src/scripts/06-render-mockups.js +88 -33
- package/templates/skills/business-analyse-html/html/src/scripts/12-render-diagrams.js +116 -0
- package/templates/skills/business-analyse-html/html/src/styles/10-diagrams.css +73 -0
- package/templates/skills/business-analyse-html/html/src/template.html +2 -0
- package/templates/skills/business-analyse-html/references/02-embedded-artifacts-building.md +144 -0
- package/templates/skills/business-analyse-html/references/02-feature-data-building.md +141 -0
- package/templates/skills/business-analyse-html/references/02-mapping-tables.md +442 -0
- package/templates/skills/business-analyse-html/references/02-normalization-helpers.md +139 -0
- package/templates/skills/business-analyse-html/references/02-screen-format-detection.md +283 -0
- package/templates/skills/business-analyse-html/references/02-self-check-validation.md +199 -0
- package/templates/skills/business-analyse-html/references/data-build.md +22 -1
- package/templates/skills/business-analyse-html/references/data-mapping.md +40 -5
- package/templates/skills/business-analyse-html/steps/step-02-build-data.md +12 -555
- package/templates/skills/business-analyse-review/SKILL.md +10 -0
- package/templates/skills/business-analyse-status/SKILL.md +8 -0
- package/templates/skills/dev-start/SKILL.md +143 -307
- package/templates/skills/efcore/SKILL.md +13 -0
|
@@ -9,25 +9,35 @@
|
|
|
9
9
|
|
|
10
10
|
## 1. Module Patterns
|
|
11
11
|
|
|
12
|
-
Suggests companion modules based on primary module type:
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
|
25
|
-
|
|
26
|
-
| **
|
|
27
|
-
| **
|
|
28
|
-
| **
|
|
29
|
-
| **
|
|
30
|
-
| **
|
|
12
|
+
Suggests companion modules based on primary module type. Modules are classified as:
|
|
13
|
+
- **CORE**: Always needed — absence = broken application. In step-02, CORE companions MUST be challenged as BLOCKING.
|
|
14
|
+
- **STANDARD**: Usually needed — absence = incomplete application. Recommended as WARNING.
|
|
15
|
+
- **OPTIONAL**: Nice to have — suggest only if context supports it.
|
|
16
|
+
|
|
17
|
+
> **CRITICAL — step-02 usage:**
|
|
18
|
+
> CORE companions are NOT optional suggestions. They are MANDATORY challenges.
|
|
19
|
+
> In step-02, for each identified module type, check CORE companions.
|
|
20
|
+
> If a CORE companion is absent → BLOCKING AskUserQuestion:
|
|
21
|
+
> "Module {companion} is a CORE component of {module_type} applications.
|
|
22
|
+
> (a) Add as module (b) Add as section (c) Exclude with justification"
|
|
23
|
+
|
|
24
|
+
| Module Type | Keywords | CORE Companions | STANDARD Companions | OPTIONAL Companions | Rationale |
|
|
25
|
+
|-------------|----------|-----------------|---------------------|---------------------|-----------|
|
|
26
|
+
| **Orders/Commandes** | order, commande, purchase, sales order | **Customers, Invoices** | Shipping, Returns | OrderLines | Orders need customer relationships and billing |
|
|
27
|
+
| **Clients/Customers** | client, customer, contact, account, party | **Contacts, Addresses** | Contracts, Documents | CRM | Customers have contacts and addresses at minimum |
|
|
28
|
+
| **Products/Articles** | product, article, item, catalog, sku | **Categories, Pricing** | Inventory, Suppliers | Images | Products need categorization and pricing |
|
|
29
|
+
| **Employees/HR** | employee, staff, personnel, team, workforce | **Leaves, Documents** | Evaluations | TimeTracking, Departments | Employees always need leave mgmt + document storage |
|
|
30
|
+
| **Tickets/Support** | ticket, support, incident, issue, case | **KnowledgeBase, Categories** | SLA, Escalation | Notifications | Support needs KB and categorization at minimum |
|
|
31
|
+
| **Projects** | project, task, milestone, workplan, roadmap | **Tasks, TimeTracking** | Milestones, Resources | Budgets, Timeline | Projects decompose into tasks + need time tracking |
|
|
32
|
+
| **Invoices/Billing** | invoice, billing, payment, receipt, statement | **CreditNotes, Payments** | Dunning, Reporting | Taxes, Subscriptions | Credit notes are legally required; payments are the purpose |
|
|
33
|
+
| **Inventory/Stock** | inventory, stock, warehouse, goods | **StockMovements, Locations** | Transfers, Alerts | AuditLog | Stock needs movement tracking + locations |
|
|
34
|
+
| **Documents** | document, file, attachment, media, archive | **Categories, Versions** | Sharing, Templates | Workflow | Document management needs categorization + versioning |
|
|
35
|
+
| **Contracts** | contract, agreement, legal, terms, service level | **Parties, Milestones** | Obligations, Renewal | Templates | Contracts involve parties + lifecycle milestones |
|
|
36
|
+
| **Permissions/Security** | permission, role, access, authority, rbac | **UserRoles, Policies** | Groups, Audit | Delegation | Permissions need role definitions + policies |
|
|
37
|
+
| **Notifications** | notification, alert, email, message, broadcast | **Templates, Channels** | Scheduling, Preferences | — | Notifications need templates + multi-channel |
|
|
38
|
+
| **Reporting** | report, dashboard, analytics, BI, metrics | **Dashboards, Exports** | Scheduling | AlertRules | Reporting needs visualization + export |
|
|
39
|
+
| **API Management / Integrations** | api, external, integration, webhook, export, data-export, machine-to-machine | **ExternalApps, ApiKeys** | DataExportEndpoints, AuditLogs | ExportAccess | API platforms need app registration + key management |
|
|
40
|
+
| **Client Portal** | portal, external, client, fournisseur, partenaire, tiers | **MyRequests, ClientDashboard** | PortalNotifications | — | External users need self-service views + status tracking |
|
|
31
41
|
|
|
32
42
|
---
|
|
33
43
|
|
|
@@ -241,7 +251,7 @@ When user selects suggestions:
|
|
|
241
251
|
"name": "Email Notifications",
|
|
242
252
|
"source": "Integration Pattern: Email mentioned",
|
|
243
253
|
"accepted": false,
|
|
244
|
-
"rejectionReason": "Out of scope for
|
|
254
|
+
"rejectionReason": "Out of scope for initial delivery"
|
|
245
255
|
}
|
|
246
256
|
]
|
|
247
257
|
}
|
|
@@ -351,19 +361,17 @@ integrationPatterns:
|
|
|
351
361
|
|
|
352
362
|
Skip suggestions if:
|
|
353
363
|
|
|
354
|
-
- **
|
|
364
|
+
- **Perimetre minimal :** L'utilisateur souhaite garder le perimetre au strict necessaire
|
|
355
365
|
- **Refactoring mode:** Skip module suggestions (only affect feature sections)
|
|
356
366
|
- **User explicitly declines:** Respect user's scope boundary
|
|
357
|
-
- **
|
|
367
|
+
- **Perimetre fixe :** L'utilisateur a indique un perimetre ferme
|
|
358
368
|
|
|
359
369
|
```
|
|
360
370
|
Suggested modules: Customers, Shipping, Invoices, Returns
|
|
361
371
|
|
|
362
|
-
But you indicated
|
|
363
|
-
- Timeline: 2 weeks (MVP only)
|
|
364
|
-
- Budget: 1 developer
|
|
372
|
+
But you indicated a minimal scope.
|
|
365
373
|
|
|
366
|
-
Suggestion: Start with Orders + Customers (
|
|
374
|
+
Suggestion: Start with Orders + Customers (essential), defer others.
|
|
367
375
|
|
|
368
376
|
[OK] [Adjust scope] [Ignore suggestions]
|
|
369
377
|
```
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
> **Usage :** Questions fondamentales pour comprendre le besoin métier
|
|
4
4
|
> **Quand charger :** TOUJOURS (noyau)
|
|
5
|
-
> **Objectif :** Comprendre le processus métier
|
|
5
|
+
> **Objectif :** Comprendre le processus métier et la vision cible
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
## 1.1 Le processus métier
|
|
9
|
+
## 1.1 Le processus métier (OBLIGATOIRE)
|
|
10
10
|
|
|
11
11
|
| # | Question | Type de réponse |
|
|
12
12
|
|---|----------|-----------------|
|
|
@@ -14,7 +14,11 @@
|
|
|
14
14
|
|
|
15
15
|
---
|
|
16
16
|
|
|
17
|
-
## 1.2 Les points de friction
|
|
17
|
+
## 1.2 Les points de friction (CONDITIONNEL)
|
|
18
|
+
|
|
19
|
+
> **Condition :** Poser UNIQUEMENT si `_preAnalysis.problem_type IN ("replace", "automate")`.
|
|
20
|
+
> Pour un système neuf (problem_type = "new_tool" | "centralize"), il n'y a pas de processus existant.
|
|
21
|
+
> Dans ce cas : `cadrage.asIs = "Aucun outil existant — nouveau système"` (auto-rempli).
|
|
18
22
|
|
|
19
23
|
| # | Question | Type de réponse |
|
|
20
24
|
|---|----------|-----------------|
|
|
@@ -22,7 +26,7 @@
|
|
|
22
26
|
|
|
23
27
|
---
|
|
24
28
|
|
|
25
|
-
## 1.3 La vision souhaitée
|
|
29
|
+
## 1.3 La vision souhaitée (OBLIGATOIRE)
|
|
26
30
|
|
|
27
31
|
| # | Question | Type de réponse |
|
|
28
32
|
|---|----------|-----------------|
|
|
@@ -32,8 +36,8 @@
|
|
|
32
36
|
|
|
33
37
|
## Mapping vers le cadrage
|
|
34
38
|
|
|
35
|
-
| Réponse | Alimente |
|
|
36
|
-
|
|
37
|
-
| Q1.1 | `cadrage.problem` |
|
|
38
|
-
| Q1.4 | `cadrage.asIs` |
|
|
39
|
-
| Q1.8 | `cadrage.toBe` |
|
|
39
|
+
| Réponse | Alimente | Remplissage |
|
|
40
|
+
|---------|----------|-------------|
|
|
41
|
+
| Q1.1 | `cadrage.problem` | Reponse directe |
|
|
42
|
+
| Q1.4 | `cadrage.asIs` | Reponse directe OU auto-rempli si systeme neuf |
|
|
43
|
+
| Q1.8 | `cadrage.toBe` | Reponse directe |
|
|
@@ -39,38 +39,33 @@
|
|
|
39
39
|
|
|
40
40
|
---
|
|
41
41
|
|
|
42
|
-
## 2.4
|
|
42
|
+
## 2.4 Limites du périmètre (OBLIGATOIRE)
|
|
43
43
|
|
|
44
|
-
> **But :**
|
|
45
|
-
> **Note :** SmartStack développe TOUS les modules identifiés. La classification vital/important/optionnel sert à doser la profondeur de spécification, PAS à phaser la livraison. Ne PAS présenter cette question comme un choix de "premier lancement" ou "quelle app d'abord".
|
|
44
|
+
> **But :** Borner ce que le système ne doit PAS faire. Essentiel pour eviter le scope creep.
|
|
46
45
|
|
|
47
46
|
| # | Question | Type de réponse |
|
|
48
47
|
|---|----------|-----------------|
|
|
49
|
-
| Q2.12 | Listez toutes les fonctionnalités que vous souhaitez dans ce système. Ne vous censurez pas. | Liste libre de fonctionnalités |
|
|
50
|
-
| Q2.13 | Parmi ces fonctionnalités, classez-les : lesquelles sont VITALES (le système n'a aucun sens sans elles), lesquelles sont IMPORTANTES (forte valeur ajoutée) et lesquelles sont OPTIONNELLES (confort) ? | Classification vital / important / optionnel |
|
|
51
48
|
| Q2.15 | Y a-t-il des choses que le système ne doit explicitement PAS faire ? Des limites claires à poser ? | Liste d'exclusions |
|
|
52
49
|
|
|
53
|
-
**
|
|
54
|
-
>
|
|
55
|
-
>
|
|
50
|
+
> **Note :** La detection des fonctionnalites IN-SCOPE est couverte par la reformulation (phase 2 de step-01).
|
|
51
|
+
> L'IA detecte les modules depuis le brief + domain research et les presente pour validation.
|
|
52
|
+
> Il n'est donc plus necessaire de demander au client de lister ses features (ex-Q2.12) ni de les classifier (ex-Q2.13).
|
|
56
53
|
|
|
57
54
|
---
|
|
58
55
|
|
|
59
|
-
## 2.5
|
|
56
|
+
## 2.5 Parcours principal (DEPLACE vers step-03)
|
|
60
57
|
|
|
61
|
-
> **
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|---|----------|-----------------|
|
|
65
|
-
| Q2.16 | Décrivez le parcours typique d'un utilisateur du début à la fin : il ouvre le système, que fait-il en premier ? | Liste d'étapes ordonnées |
|
|
66
|
-
| Q2.17 | À quels moments l'utilisateur doit-il prendre une décision ? Quelles sont les options possibles ? | Points de décision et options |
|
|
67
|
-
| Q2.18 | Que se passe-t-il quand quelque chose ne se déroule pas comme prévu ? Quels sont les cas particuliers ? | Scénarios alternatifs |
|
|
58
|
+
> **IMPORTANT :** Les questions Q2.16 (parcours), Q2.17 (decisions), Q2.18 (erreurs) ont ete **deplacees vers step-03-specify**.
|
|
59
|
+
> Elles alimentent directement les use cases par module et evitent la duplication cadrage → specification.
|
|
60
|
+
> En step-01, le parcours est capture dans la reformulation : "Le parcours type que j'ai compris est X → Y → Z. Correct ?"
|
|
68
61
|
|
|
69
62
|
---
|
|
70
63
|
|
|
71
|
-
## 2.6 Intégrations et systèmes externes
|
|
64
|
+
## 2.6 Intégrations et systèmes externes (CONDITIONNEL)
|
|
72
65
|
|
|
73
66
|
> **But :** Identifier les échanges de données avec l'extérieur et les migrations initiales.
|
|
67
|
+
> **Condition :** Poser UNIQUEMENT si le brief mentionne un systeme externe, une integration, une migration ou un import de donnees.
|
|
68
|
+
> Si non pertinent : `cadrage.externalIntegrations = []` et `cadrage.dataImport = null` (auto-rempli).
|
|
74
69
|
|
|
75
70
|
| # | Question | Type de réponse |
|
|
76
71
|
|---|----------|-----------------|
|
|
@@ -91,9 +86,7 @@
|
|
|
91
86
|
| Q2.1 (utilisateurs) | Utilisateurs hors entreprise mentionnés (clients, fournisseurs, partenaires) | "Quelles données ces utilisateurs externes doivent-ils consulter ou créer ? Quelles restrictions par rapport aux internes ?" |
|
|
92
87
|
| Q2.5 (tâches) | Tâches génériques | "Quand il arrive le matin et ouvre le système, quelle est sa première action ?" |
|
|
93
88
|
| Q2.9 (restrictions) | Réponse ambiguë | "Un employé voit-il les données salariales ? Un manager voit-il uniquement son équipe ou toute l'entreprise ?" |
|
|
94
|
-
| Q2.13 (indispensable) | Tout est indispensable | "Si vous ne pouviez garder que 3 fonctionnalités pour un premier lancement, lesquelles ?" |
|
|
95
89
|
| Q2.15 (exclusions) | "Je ne vois pas" | "Certains utilisateurs pourraient-ils s'attendre à des fonctionnalités que vous ne souhaitez PAS inclure ?" |
|
|
96
|
-
| Q2.16 (parcours) | Moins de 3 étapes | "Détaillons : l'utilisateur arrive sur l'écran d'accueil. Que voit-il ? Où clique-t-il ?" |
|
|
97
90
|
|
|
98
91
|
### Signaux d'alerte à détecter
|
|
99
92
|
|
|
@@ -101,18 +94,18 @@
|
|
|
101
94
|
|------------------|---------------------|----------------------|
|
|
102
95
|
| "Tous les utilisateurs font la même chose" | Rôles non différenciés | "Qui peut supprimer ? Qui ne fait que consulter ? Qui valide ?" |
|
|
103
96
|
| "Tout le monde doit tout voir" | Restrictions non définies | "Quelles données sont sensibles ? Un manager voit-il les données de toutes les équipes ou seulement la sienne ?" |
|
|
104
|
-
| Tout est vital (> 10 vitaux) | Classification non réfléchie | Appliquer le test de classification : "Si on enlevait X, le système aurait-il encore de la valeur ?" |
|
|
105
97
|
| Aucune exclusion identifiée | Périmètre non borné | "Y a-t-il des aspects qui relèvent d'un autre projet ou d'une version future ?" |
|
|
106
|
-
| Parcours linéaire sans alternative | Seul le cas idéal est décrit | "Que se passe-t-il à l'étape X si la condition Y n'est pas remplie ?" |
|
|
107
98
|
| "Nos clients doivent pouvoir..." ou "Les fournisseurs voient..." | Utilisateurs externes accédant au système | Classifier auto en 4b-bis. Approfondir les RÈGLES MÉTIER : quelles données, quelles actions, quelles restrictions ? |
|
|
108
99
|
|
|
109
100
|
---
|
|
110
101
|
|
|
111
102
|
## Mapping vers le cadrage
|
|
112
103
|
|
|
113
|
-
| Réponse | Alimente |
|
|
114
|
-
|
|
115
|
-
| Q2.1, Q2.5 | `cadrage.stakeholders[]` |
|
|
116
|
-
| Q2.9-Q2.11 | `cadrage.applicationRoles[]` |
|
|
117
|
-
| Q2.
|
|
118
|
-
| Q2.
|
|
104
|
+
| Réponse | Alimente | Remplissage |
|
|
105
|
+
|---------|----------|-------------|
|
|
106
|
+
| Q2.1, Q2.5 | `cadrage.stakeholders[]` | Reponse directe |
|
|
107
|
+
| Q2.9-Q2.11 | `cadrage.applicationRoles[]` | Reponse directe |
|
|
108
|
+
| Q2.15 | `cadrage.globalScope.excluded` | Reponse directe |
|
|
109
|
+
| Q2.19, Q2.20 | `cadrage.externalIntegrations[]`, `cadrage.dataImport` | Reponse directe OU auto-rempli (vide) si non pertinent |
|
|
110
|
+
| (reformulation) | `cadrage.globalScope.inScope` | Auto-deduit depuis brief + domain research, confirme en phase 2 |
|
|
111
|
+
| (step-03) | `cadrage.coverageMatrix` | Construit lors de la specification des use cases |
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
> **Usage:** Structured questions for step-01-cadrage and step-03-specify
|
|
4
4
|
> **Standard:** BABOK v3 - Elicitation Techniques (Interactive analysis)
|
|
5
5
|
> **Model:** OPUS with ULTRATHINK
|
|
6
|
-
> **Total:** ~
|
|
6
|
+
> **Total:** ~15 targeted questions across 4 active questionnaire files
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -32,10 +32,55 @@
|
|
|
32
32
|
|
|
33
33
|
## Questionnaire Files (v2)
|
|
34
34
|
|
|
35
|
+
### Classification des questions
|
|
36
|
+
|
|
37
|
+
| Marqueur | Signification |
|
|
38
|
+
|----------|---------------|
|
|
39
|
+
| **OBLIGATOIRE** | DOIT etre posee dans tous les cas |
|
|
40
|
+
| **CONDITIONNEL** | Posee uniquement si la condition est remplie |
|
|
41
|
+
| **RELANCE** | Posee si la reponse precedente est vague |
|
|
42
|
+
|
|
43
|
+
#### Questionnaire 01 (cadrage)
|
|
44
|
+
- Q1.1 : OBLIGATOIRE
|
|
45
|
+
- Q1.4 : CONDITIONNEL (si problem_type = "replace" ou "automate" — pas pour systemes neufs)
|
|
46
|
+
- Q1.8 : OBLIGATOIRE
|
|
47
|
+
|
|
48
|
+
#### Questionnaire 02 (cadrage)
|
|
49
|
+
- Q2.1 : OBLIGATOIRE
|
|
50
|
+
- Q2.5 : OBLIGATOIRE
|
|
51
|
+
- Q2.9 : OBLIGATOIRE
|
|
52
|
+
- Q2.10 : OBLIGATOIRE
|
|
53
|
+
- Q2.11 : OBLIGATOIRE
|
|
54
|
+
- Q2.15 : OBLIGATOIRE
|
|
55
|
+
- Q2.19 : CONDITIONNEL (si brief mentionne un systeme externe ou integration)
|
|
56
|
+
- Q2.20 : CONDITIONNEL (si brief mentionne migration ou import de donnees)
|
|
57
|
+
|
|
58
|
+
> **Questions SUPPRIMEES (v3) :**
|
|
59
|
+
> - Q2.12 (lister features) : redondant — l'IA detecte les modules depuis le brief, la reformulation (phase 2) sert de validation
|
|
60
|
+
> - Q2.13 (classifier vital/important/optionnel) : inutile — SmartStack construit tous les modules, la classification ne change rien au code genere
|
|
61
|
+
> - Q2.16-Q2.18 (parcours, decisions, erreurs) : **deplaces vers step-03** — alimentent directement les use cases, evite la duplication
|
|
62
|
+
|
|
63
|
+
#### Questionnaire 03 (specification, par module)
|
|
64
|
+
- Q3.1 : OBLIGATOIRE
|
|
65
|
+
- Q3.2 : OBLIGATOIRE
|
|
66
|
+
- Q3.3 : OBLIGATOIRE
|
|
67
|
+
- Q3.5 : OBLIGATOIRE
|
|
68
|
+
- Q3.7 : OBLIGATOIRE
|
|
69
|
+
- Q3.8 : CONDITIONNEL (si entites avec relations temporelles)
|
|
70
|
+
- Q3.9 : OBLIGATOIRE
|
|
71
|
+
- Q3.10 : CONDITIONNEL (premier module uniquement, reutilise ensuite)
|
|
72
|
+
- Q3.11-Q3.13 : CONDITIONNEL (couvert par /business-analyse-design)
|
|
73
|
+
- Q3.14-Q3.16 : CONDITIONNEL (si dashboard mentionne dans cadrage)
|
|
74
|
+
- Q3.17 : OBLIGATOIRE
|
|
75
|
+
- Q3.19 : OBLIGATOIRE
|
|
76
|
+
- Q3.20 : OBLIGATOIRE
|
|
77
|
+
- Q3.21 : OBLIGATOIRE
|
|
78
|
+
- Q3.22 : CONDITIONNEL (si Q3.21 = oui)
|
|
79
|
+
|
|
35
80
|
| File | Questions | Phase | Focus |
|
|
36
81
|
|------|-----------|-------|-------|
|
|
37
|
-
| `questionnaire/01-context.md` | 3 | step-01-cadrage | Business process, friction points
|
|
38
|
-
| `questionnaire/02-stakeholders-scope.md` |
|
|
82
|
+
| `questionnaire/01-context.md` | 2-3 | step-01-cadrage | Business process, vision (+ friction points si remplacement) |
|
|
83
|
+
| `questionnaire/02-stakeholders-scope.md` | 6-8 | step-01-cadrage | User profiles, access levels, exclusions (+ integrations/import si pertinent) |
|
|
39
84
|
| `questionnaire/03-data-ui.md` | ~15 | step-03-specify (per module) | Data entities, UI expectations, dashboards |
|
|
40
85
|
| `questionnaire/04-risks-metrics.md` | — | NOT USED | Risks/metrics out of BA scope |
|
|
41
86
|
| `questionnaire/05-cross-module.md` | ~8 | step-03-specify (conditional) | Cross-module dependencies, integration impact |
|
|
@@ -51,13 +96,23 @@
|
|
|
51
96
|
| step-01-cadrage | 01-context, 02-stakeholders-scope |
|
|
52
97
|
| step-03-specify (par module) | 03-data-ui, conditionnellement 05-cross-module |
|
|
53
98
|
|
|
54
|
-
### Phase de cadrage (step-01)
|
|
99
|
+
### Phase de cadrage (step-01) — 3 batches
|
|
100
|
+
|
|
101
|
+
> **Principe vibe coding :** L'utilisateur decrit son besoin, l'IA deduit et propose. Les questions servent a CONFIRMER et APPROFONDIR, pas a interroger.
|
|
102
|
+
|
|
103
|
+
**Batch 1 — Contexte & Vision** (Q1.1, Q1.8, + Q1.4 si remplacement) :
|
|
104
|
+
- Processus metier, vision cible, frictions (si applicable)
|
|
55
105
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
106
|
+
**Batch 2 — Utilisateurs & Acces** (Q2.1, Q2.5, Q2.9-Q2.11) :
|
|
107
|
+
- Profils, taches, restrictions, droits, validations
|
|
108
|
+
|
|
109
|
+
**Batch 3 — Perimetre & Limites** (Q2.15, + Q2.19/Q2.20 si pertinent) :
|
|
110
|
+
- Exclusions, integrations (conditionnel), import (conditionnel)
|
|
111
|
+
|
|
112
|
+
**Regles :**
|
|
113
|
+
1. **Adapter :** Sauter les questions non pertinentes selon le contexte
|
|
114
|
+
2. **Approfondir :** Poser des questions de relance sur les reponses vagues
|
|
115
|
+
3. **Challenger :** Ne pas accepter "on verra plus tard" sur les fonctionnalites indispensables
|
|
61
116
|
|
|
62
117
|
### Phase de specification (step-03)
|
|
63
118
|
|
|
@@ -72,6 +127,28 @@ Pour chaque réponse vague, utiliser :
|
|
|
72
127
|
- "Que se passe-t-il si cette règle n'est pas respectée ?"
|
|
73
128
|
- "Qui est impacté par cette décision ?"
|
|
74
129
|
|
|
130
|
+
### Mode Auto-déduction (step-03)
|
|
131
|
+
|
|
132
|
+
> **Par défaut, step-03 utilise l'auto-déduction avec confirmation groupée.**
|
|
133
|
+
> L'IA propose entités, règles, UCs et permissions basées sur le cadrage + recherche domaine,
|
|
134
|
+
> puis demande une confirmation par lot au lieu de poser chaque question individuellement.
|
|
135
|
+
|
|
136
|
+
| Mode | Déclencheur | Comportement |
|
|
137
|
+
|------|------------|-------------|
|
|
138
|
+
| **Auto-déduction** (défaut) | Cadrage complet + domaine clair | Proposition → confirmation groupée → questions ciblées si ambigu |
|
|
139
|
+
| **Interactif** | Cadrage incomplet ou domaine inconnu | Questions individuelles Q3.1-Q3.22 |
|
|
140
|
+
|
|
141
|
+
**Workflow auto-déduction :**
|
|
142
|
+
1. L'IA construit la proposition à partir du cadrage + recherche domaine (A-bis)
|
|
143
|
+
2. Présente le LOT complet : "Voici ce que je propose. Corrections ?"
|
|
144
|
+
3. Le client valide, corrige ou demande des détails
|
|
145
|
+
4. Les questions détaillées ne sont posées QUE pour les points ambigus
|
|
146
|
+
|
|
147
|
+
**Traçabilité :** Le mode utilisé est tracé dans `config.json` : `specificationMode: "auto-deduction" | "interactive"`
|
|
148
|
+
|
|
149
|
+
> **IMPORTANT :** L'auto-déduction ne dispense PAS de la validation client.
|
|
150
|
+
> Chaque lot (entités, règles, UCs, permissions) DOIT être confirmé avant écriture.
|
|
151
|
+
|
|
75
152
|
### Filtre de pertinence
|
|
76
153
|
|
|
77
154
|
Chaque question conservée passe ce test :
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
# JSON Schemas (step-03-specify)
|
|
2
|
+
|
|
3
|
+
## Entity Schema Format
|
|
4
|
+
|
|
5
|
+
```json
|
|
6
|
+
{
|
|
7
|
+
"name": "Employee",
|
|
8
|
+
"description": "Représente un employé de l'entreprise",
|
|
9
|
+
"personRoleConfig": { "variant": "mandatory", "userFields": ["firstName", "lastName", "email"] },
|
|
10
|
+
"attributes": [
|
|
11
|
+
{ "name": "code", "type": "string", "required": true, "unique": true, "searchable": true, "description": "Identifiant unique auto-généré" },
|
|
12
|
+
{ "name": "userId", "type": "string", "required": true, "unique": true, "description": "FK vers auth_Users (ASP.NET Identity — type string, NOT guid)" },
|
|
13
|
+
{ "name": "departmentId", "type": "guid", "required": true, "description": "Département d'affectation" },
|
|
14
|
+
{ "name": "hireDate", "type": "date", "required": true, "searchable": true, "description": "Date d'embauche" },
|
|
15
|
+
{ "name": "position", "type": "string", "searchable": true, "description": "Poste occupé" },
|
|
16
|
+
{ "name": "status", "type": "enum", "options": ["Active", "Inactive", "OnLeave", "Terminated"], "defaultValue": "Active", "searchable": true, "description": "Statut de l'employé" }
|
|
17
|
+
],
|
|
18
|
+
"versionedAttributes": [
|
|
19
|
+
{ "entity": "Salary", "attributes": ["grossAmount", "netAmount", "effectiveDate", "currency"], "reason": "Historique salarial versionné" }
|
|
20
|
+
],
|
|
21
|
+
"estimatedVolume": { "monthly": 50, "total2y": 1200 },
|
|
22
|
+
"searchableFields": ["code", "position", "status"],
|
|
23
|
+
"defaultFilters": ["status"],
|
|
24
|
+
"relationships": [
|
|
25
|
+
{ "target": "Department", "type": "ManyToOne", "description": "Appartient à un département" },
|
|
26
|
+
{ "target": "Contract", "type": "OneToMany", "description": "Possède plusieurs contrats" },
|
|
27
|
+
{ "target": "Salary", "type": "OneToMany", "description": "Historique de salaires versionnés" }
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**Attribute flags (OPTIONAL, default: false):**
|
|
33
|
+
- `unique: true` — attribute has uniqueness constraint (e.g., `code`, `userId`)
|
|
34
|
+
- `searchable: true` — attribute appears in search/filter results (e.g., `code`, `status`, `position`)
|
|
35
|
+
- `computed: true` — attribute value is calculated (e.g., `subtotal`, `total`). **MUST** have a corresponding `BR-CALC` rule with `formula` field
|
|
36
|
+
|
|
37
|
+
Omit flags when `false` (default). Include explicitly when `true`.
|
|
38
|
+
|
|
39
|
+
## Business Rules Schema Format
|
|
40
|
+
|
|
41
|
+
```json
|
|
42
|
+
{
|
|
43
|
+
"id": "BR-VAL-EMPLOYEES-001",
|
|
44
|
+
"name": "Validation date embauche",
|
|
45
|
+
"category": "validation",
|
|
46
|
+
"sectionCode": "list",
|
|
47
|
+
"statement": "La date d'embauche ne peut pas être dans le futur",
|
|
48
|
+
"example": "Date embauche = 2027-01-01 → erreur car > date du jour",
|
|
49
|
+
"entities": ["Employee"],
|
|
50
|
+
"severity": "blocking"
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Categories: `validation`, `calculation`, `workflow`, `security`, `data`, `notification`
|
|
55
|
+
|
|
56
|
+
**Mandatory requirements:**
|
|
57
|
+
- Each enum attribute MUST have a `defaultValue`
|
|
58
|
+
- Each bounded numeric attribute MUST have `validation.min/max`
|
|
59
|
+
- FK attributes to Identity (userId) MUST use type `string` (ASP.NET Identity convention)
|
|
60
|
+
- Each attribute marked "computed" in entities.json MUST have a rule with `category: "calculation"` and `formula` field
|
|
61
|
+
|
|
62
|
+
**Calculation rule example:**
|
|
63
|
+
```json
|
|
64
|
+
{
|
|
65
|
+
"id": "BR-CALC-INV-003",
|
|
66
|
+
"category": "calculation",
|
|
67
|
+
"statement": "Le reste à payer = total - montant payé",
|
|
68
|
+
"formula": "remainingAmount = total - paidAmount",
|
|
69
|
+
"entities": ["Invoice"]
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**MANDATORY enrichment fields (added in v2):**
|
|
74
|
+
- `severity` : `"blocking"` | `"warning"` | `"info"` — impact level of the rule
|
|
75
|
+
- `sectionCode` : section where this rule applies (e.g., `"list"`, `"approve"`)
|
|
76
|
+
- `examples[]` : structured as `{input: string, expected: string}` — at least 1 per rule
|
|
77
|
+
```json
|
|
78
|
+
"examples": [{ "input": "debut=15/03 fin=12/03", "expected": "Erreur : date de fin avant date de debut" }]
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**RECOMMENDED enrichment fields:**
|
|
82
|
+
- `conditions[]` : structured IF conditions — `{entity, field, operator, value}`
|
|
83
|
+
```json
|
|
84
|
+
"conditions": [{ "entity": "Absence", "field": "duration", "operator": ">", "value": 3 }]
|
|
85
|
+
```
|
|
86
|
+
- `consequences[]` : side effects when rule fires — `{type, target, description}`
|
|
87
|
+
```json
|
|
88
|
+
"consequences": [{ "type": "notification", "target": "RH Manager", "description": "Certificat medical requis" }]
|
|
89
|
+
```
|
|
90
|
+
- `formula` : for BR-CALC rules (e.g., `"remaining = entitled + carried - taken"`)
|
|
91
|
+
- `domainSpecific` : `true` if from domain research, `false` if generic CRUD validation
|
|
92
|
+
|
|
93
|
+
## Use Cases Schema Format
|
|
94
|
+
|
|
95
|
+
**CANONICAL FORMAT (MANDATORY):** The usecases.json file MUST use these exact keys:
|
|
96
|
+
- Root key: `"useCases"` (camelCase, NOT "usecases")
|
|
97
|
+
- Actor field: `"primaryActor"` (NOT "actor")
|
|
98
|
+
- Steps field: `"mainScenario"` (string[], NOT "steps" with objects)
|
|
99
|
+
- Alternatives: `"alternativeScenarios"` (object[] with `{name, steps}`, NOT "alternative" as flat string)
|
|
100
|
+
- This matches specification-schema.json. Deviation causes normalization overhead in 4+ downstream skills.
|
|
101
|
+
|
|
102
|
+
```json
|
|
103
|
+
{
|
|
104
|
+
"useCases": [
|
|
105
|
+
{
|
|
106
|
+
"id": "UC-EMPLOYEES-001",
|
|
107
|
+
"name": "Créer un employé",
|
|
108
|
+
"sectionCode": "list",
|
|
109
|
+
"primaryActor": "Responsable RH",
|
|
110
|
+
"preconditions": ["L'utilisateur a la permission HumanResources.Employees.Create"],
|
|
111
|
+
"mainScenario": [
|
|
112
|
+
"L'utilisateur ouvre la page de création",
|
|
113
|
+
"Il remplit les champs obligatoires (nom, département, date embauche)",
|
|
114
|
+
"Il valide le formulaire",
|
|
115
|
+
"Le système vérifie les règles métier (BR-VAL-EMPLOYEES-001)",
|
|
116
|
+
"Le système crée l'employé et affiche la fiche"
|
|
117
|
+
],
|
|
118
|
+
"alternativeScenarios": [
|
|
119
|
+
{
|
|
120
|
+
"name": "Données invalides",
|
|
121
|
+
"steps": ["Le système affiche les erreurs de validation", "L'utilisateur corrige et re-soumet"]
|
|
122
|
+
}
|
|
123
|
+
],
|
|
124
|
+
"businessRules": ["BR-VAL-EMPLOYEES-001"],
|
|
125
|
+
"result": "L'employé est créé avec le statut 'Actif'"
|
|
126
|
+
}
|
|
127
|
+
]
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
**MANDATORY enrichment fields (activated in v2):**
|
|
132
|
+
- `postconditions[]` : effects AFTER the UC completes (schema field exists, now mandatory)
|
|
133
|
+
```json
|
|
134
|
+
"postconditions": ["Absence.status = Approved", "AbsenceBalance.taken += duration", "Notification envoyee"]
|
|
135
|
+
```
|
|
136
|
+
- `errorScenarios[]` : error paths — MANDATORY for workflow UCs (schema field exists, now mandatory)
|
|
137
|
+
```json
|
|
138
|
+
"errorScenarios": [{ "name": "Solde insuffisant", "steps": ["Systeme affiche le solde restant", "Soumission bloquee"] }]
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
**Minimum requirements:**
|
|
142
|
+
- Workflow UCs: `mainScenario[]` >= 5 steps, `errorScenarios[]` >= 1, `postconditions[]` required
|
|
143
|
+
- CRUD UCs: `mainScenario[]` >= 3 steps, `postconditions[]` required
|
|
144
|
+
|
|
145
|
+
## Permissions Schema Format
|
|
146
|
+
|
|
147
|
+
```json
|
|
148
|
+
{
|
|
149
|
+
"roles": ["RH Admin", "Manager", "Employee"],
|
|
150
|
+
"matrix": [
|
|
151
|
+
{ "role": "RH Admin", "permissions": ["Read", "Create", "Update", "Delete", "Export"] },
|
|
152
|
+
{ "role": "Manager", "permissions": ["Read", "Export"] },
|
|
153
|
+
{ "role": "Employee", "permissions": ["Read"] }
|
|
154
|
+
],
|
|
155
|
+
"permissionPaths": [
|
|
156
|
+
"HumanResources.Employees.Read",
|
|
157
|
+
"HumanResources.Employees.Create",
|
|
158
|
+
"HumanResources.Employees.Update",
|
|
159
|
+
"HumanResources.Employees.Delete",
|
|
160
|
+
"HumanResources.Employees.Export"
|
|
161
|
+
]
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**Auto-detection rules:**
|
|
166
|
+
- If the cadrage mentions "export", "Excel", "CSV", or "télécharger" → automatically add `.export` permission and an export use case (UC-{PREFIX}-EXPORT)
|
|
167
|
+
- If the cadrage mentions "import", "importer", "upload" → automatically add `.import` permission and an import use case (UC-{PREFIX}-IMPORT)
|
|
168
|
+
|
|
169
|
+
## LifeCycle Schema Format
|
|
170
|
+
|
|
171
|
+
> Source: `specification-schema.json` `lifeCycles[]`
|
|
172
|
+
> **MANDATORY** for each entity with a status enum attribute.
|
|
173
|
+
> Generated in step-03 section F-bis. Consumed by Mermaid diagram generation (step-04) and code generation (handoff/develop).
|
|
174
|
+
|
|
175
|
+
```json
|
|
176
|
+
{
|
|
177
|
+
"entity": "EntityName",
|
|
178
|
+
"field": "status",
|
|
179
|
+
"initialState": "Draft",
|
|
180
|
+
"states": [
|
|
181
|
+
{
|
|
182
|
+
"id": "Draft",
|
|
183
|
+
"displayName": "Brouillon",
|
|
184
|
+
"color": "gray",
|
|
185
|
+
"allowedTransitions": ["Submitted"],
|
|
186
|
+
"isTerminal": false
|
|
187
|
+
}
|
|
188
|
+
],
|
|
189
|
+
"transitions": [
|
|
190
|
+
{
|
|
191
|
+
"from": "Draft",
|
|
192
|
+
"to": "Submitted",
|
|
193
|
+
"action": "submit",
|
|
194
|
+
"permission": "App.Module.Action",
|
|
195
|
+
"guards": ["BR-VAL-XXX"],
|
|
196
|
+
"effects": [
|
|
197
|
+
{ "type": "notification", "target": "Manager", "template": "entity-submitted" },
|
|
198
|
+
{ "type": "field-update", "target": "Entity.field", "template": "= value" }
|
|
199
|
+
],
|
|
200
|
+
"confirm": false
|
|
201
|
+
}
|
|
202
|
+
]
|
|
203
|
+
}
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
**Generation rules:**
|
|
207
|
+
- Extract states from entity's status enum `options[]`
|
|
208
|
+
- Extract transitions from BR-WF-* rules
|
|
209
|
+
- Link `guards[]` to BR-VAL-* rules that must pass before transition
|
|
210
|
+
- Link `effects[]` to BR-NOTIF-* and BR-CALC-* triggered by the transition
|
|
211
|
+
- Link `permission` from permissions.json for each transition action
|
|
212
|
+
- Set `color` based on state semantic: gray=draft, blue=active, green=success, red=error, yellow=warning
|
|
213
|
+
- Set `isTerminal: true` for states with no allowed transitions
|