@atlashub/smartstack-cli 3.2.0 → 3.3.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 (33) hide show
  1. package/dist/index.js +605 -25
  2. package/dist/index.js.map +1 -1
  3. package/package.json +1 -1
  4. package/templates/agents/ba-reader.md +1 -1
  5. package/templates/agents/ba-writer.md +8 -1
  6. package/templates/skills/business-analyse/SKILL.md +21 -23
  7. package/templates/skills/business-analyse/_architecture.md +123 -0
  8. package/templates/skills/business-analyse/_elicitation.md +206 -0
  9. package/templates/skills/business-analyse/_module-loop.md +56 -0
  10. package/templates/skills/business-analyse/_shared.md +75 -531
  11. package/templates/skills/business-analyse/_suggestions.md +34 -0
  12. package/templates/skills/business-analyse/questionnaire/06-security.md +1 -1
  13. package/templates/skills/business-analyse/questionnaire.md +2 -2
  14. package/templates/skills/business-analyse/react/components.md +1 -1
  15. package/templates/skills/business-analyse/react/schema.md +1 -1
  16. package/templates/skills/business-analyse/references/html-data-mapping.md +294 -0
  17. package/templates/skills/business-analyse/schemas/feature-schema.json +1 -1
  18. package/templates/skills/business-analyse/schemas/sections/analysis-schema.json +1 -1
  19. package/templates/skills/business-analyse/schemas/sections/handoff-schema.json +1 -1
  20. package/templates/skills/business-analyse/schemas/sections/specification-schema.json +1 -1
  21. package/templates/skills/business-analyse/steps/step-00-init.md +13 -10
  22. package/templates/skills/business-analyse/steps/step-01-cadrage.md +2 -0
  23. package/templates/skills/business-analyse/steps/step-02-decomposition.md +5 -3
  24. package/templates/skills/business-analyse/steps/{step-03-specify.md → step-03a-specify.md} +16 -606
  25. package/templates/skills/business-analyse/steps/step-03b-compile.md +670 -0
  26. package/templates/skills/business-analyse/steps/step-04-consolidation.md +7 -5
  27. package/templates/skills/business-analyse/steps/step-05a-handoff.md +727 -0
  28. package/templates/skills/business-analyse/steps/step-05b-deploy.md +479 -0
  29. package/templates/skills/business-analyse/steps/step-06-extract.md +4 -2
  30. package/templates/skills/business-analyse/templates/tpl-frd.md +1 -1
  31. package/templates/skills/business-analyse/templates/tpl-launch-displays.md +161 -0
  32. package/templates/skills/business-analyse/templates/tpl-progress.md +171 -0
  33. package/templates/skills/business-analyse/steps/step-05-handoff.md +0 -1682
@@ -0,0 +1,34 @@
1
+ # Business Analysis - Suggestions & Context7 (_suggestions.md)
2
+
3
+ > **Loaded by:** step-01-cadrage, step-04-consolidation
4
+ > **Purpose:** Proactive suggestion patterns and Context7 library references
5
+
6
+ ---
7
+
8
+ ## Proactive Suggestions
9
+
10
+ After scope definition in step-01, the skill suggests complementary modules/sections:
11
+
12
+ 1. Analyze feature type and scope from questionnaire answers
13
+ 2. Load `patterns/suggestion-catalog.md`
14
+ 3. Match against catalog patterns
15
+ 4. Present suggestions via AskUserQuestion (accept/reject per suggestion)
16
+ 5. Store in feature.json.suggestions[]
17
+
18
+ Accepted suggestions become candidates for future /business-analyse runs.
19
+
20
+ ---
21
+
22
+ ## Context7 (Step 04)
23
+
24
+ ```
25
+ Prompt pattern:
26
+ "use context7 with /facebook/react and /i18next/react-i18next
27
+ to generate {component} following SmartStack patterns"
28
+ ```
29
+
30
+ Libraries:
31
+ - `/facebook/react` - React 19 patterns
32
+ - `/i18next/react-i18next` - Internationalization
33
+ - `/remix-run/react-router` - React Router v7
34
+ - `/lucide-icons/lucide-react` - Icons
@@ -44,7 +44,7 @@
44
44
  > - Les rôles identifiés en Q6.1-Q6.4 sont des **ensembles de permissions**, pas des données métier
45
45
  > - L'accès est contrôlé par des permissions attribuées aux rôles, pas par des propriétés d'entité
46
46
  > - Ne jamais proposer de créer une entité `Role`, `UserRole`, ou un attribut `User.Role`
47
- > - Le mapping rôle → permissions se fait dans la **Permission Matrix** (step-03-specify)
47
+ > - Le mapping rôle → permissions se fait dans la **Permission Matrix** (step-03a-specify)
48
48
 
49
49
  ## Elicitation Guide
50
50
 
@@ -1,6 +1,6 @@
1
1
  # Elicitation Questionnaire - Business Analysis
2
2
 
3
- > **Usage:** Structured questions for step-01-cadrage and step-03-specify
3
+ > **Usage:** Structured questions for step-01-cadrage and step-03a-specify
4
4
  > **Standard:** BABOK v3 - Elicitation Techniques (VibeCoding-focused)
5
5
  > **Model:** OPUS with ULTRATHINK
6
6
  > **Total:** ~68 targeted questions (dev-relevant only)
@@ -284,7 +284,7 @@
284
284
  | Phase | Categories utilisees |
285
285
  |-------|---------------------|
286
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) |
287
+ | step-03a-specify (par module) | 04, 07, 11, 12, 13 (chargees par module) |
288
288
 
289
289
  ### Phase de cadrage
290
290
 
@@ -1,7 +1,7 @@
1
1
  # React Components - Business Analyse Viewer
2
2
 
3
3
  > **Usage:** React component that renders feature.json directly
4
- > **Loaded in:** step-05-handoff.md
4
+ > **Loaded in:** step-05b-deploy.md
5
5
  > **Data source (module):** `docs/business/{app}/{module}/business-analyse/v{X.Y}/feature.json`
6
6
  > **Data source (application):** `docs/business/{app}/business-analyse/v{X.Y}/feature.json`
7
7
  > **Related:** `react/application-viewer.md` for application-level view
@@ -1,7 +1,7 @@
1
1
  # TypeScript Schema - Feature JSON Types
2
2
 
3
3
  > **Usage:** TypeScript interfaces aligned with feature-schema.json and application-schema.json
4
- > **Loaded in:** step-05-handoff.md (for web app rendering)
4
+ > **Loaded in:** step-05b-deploy.md (for web app rendering)
5
5
  > **Source (module):** `docs/business/{app}/{module}/business-analyse/v{X.Y}/feature.json`
6
6
  > **Source (application):** `docs/business/{app}/business-analyse/v{X.Y}/feature.json`
7
7
 
@@ -0,0 +1,294 @@
1
+ # HTML Data Mapping Reference (references/html-data-mapping.md)
2
+
3
+ > **Used by:** step-05b-deploy (section 3: Deploy Interactive HTML Document)
4
+ > **Purpose:** Exact mapping from feature.json to HTML FEATURE_DATA and EMBEDDED_ARTIFACTS objects
5
+
6
+ ---
7
+
8
+ ## FEATURE_DATA Mapping
9
+
10
+ Build a JSON object following this **exact mapping** from feature.json to the HTML data model:
11
+
12
+ ```javascript
13
+ {
14
+ metadata: {
15
+ applicationName: master.metadata.application, // e.g. "RH"
16
+ applicationId: master.id, // e.g. "FEAT-001"
17
+ version: master.version, // e.g. "1.0"
18
+ createdAt: master.metadata.createdAt,
19
+ lastModified: master.metadata.updatedAt
20
+ },
21
+ cadrage: {
22
+ problem: {
23
+ description: master.cadrage.problem, // string → problem.description
24
+ trigger: master.cadrage.trigger, // string → problem.trigger
25
+ impactedPeople: "", // not in feature.json, client fills
26
+ history: "",
27
+ consequences: ""
28
+ },
29
+ current: {
30
+ tools: master.cadrage.asIs, // string → current.tools
31
+ steps: [], // client can add process steps
32
+ painPoints: master.cadrage.stakeholders
33
+ .flatMap(s => s.painPoints || []).join("\n"), // aggregate all painPoints
34
+ errors: ""
35
+ },
36
+ vision: {
37
+ changes: master.cadrage.toBe, // string → vision.changes
38
+ results: master.cadrage.acceptanceCriteria
39
+ .map(ac => ac.criterion).join("\n"), // AC → results (one per line)
40
+ successSign: ""
41
+ },
42
+ stakeholders: master.cadrage.stakeholders.map(s => ({
43
+ role: s.role,
44
+ function: s.function || "",
45
+ tasks: s.tasks || [],
46
+ frequency: mapFrequency(s.frequency), // "Quotidien"→"daily", etc.
47
+ access: mapAccess(s.involvement), // "decision-maker"→"admin", "end-user"→"contributor"
48
+ frustrations: (s.painPoints || []).join("\n")
49
+ })),
50
+ scope: {
51
+ vital: (master.cadrage.globalScope.mustHave || [])
52
+ .map(item => ({ name: item, description: "" })), // string[] → {name,description}[]
53
+ important: (master.cadrage.globalScope.shouldHave || [])
54
+ .map(item => ({ name: item, description: "" })),
55
+ optional: (master.cadrage.globalScope.couldHave || [])
56
+ .map(item => ({ name: item, description: "" })),
57
+ excluded: (master.cadrage.globalScope.outOfScope || [])
58
+ .map(item => ({ name: item, description: "" }))
59
+ },
60
+ risks: (master.cadrage.risks || []).map(r => ({
61
+ description: r.description,
62
+ probability: r.probability, // "high" | "medium" | "low"
63
+ impact: r.impact,
64
+ mitigation: r.mitigation || ""
65
+ })),
66
+ assumptions: "",
67
+ success: {
68
+ definition: (master.cadrage.acceptanceCriteria || [])
69
+ .map(ac => ac.criterion).join("\n"),
70
+ metrics: "",
71
+ timeline: "",
72
+ minimumConditions: ""
73
+ }
74
+ },
75
+ modules: master.modules.map(m => ({
76
+ code: m.code,
77
+ name: m.code, // module code as name
78
+ description: m.description || "",
79
+ featureType: m.featureType || "data-centric",
80
+ priority: m.priority || "must",
81
+ entities: m.entities || [],
82
+ status: m.status || "handed-off"
83
+ })),
84
+ dependencies: (master.dependencyGraph?.edges || []).map(e => ({
85
+ from: e.from,
86
+ to: e.to,
87
+ description: e.description || ""
88
+ })),
89
+ moduleSpecs: {
90
+ // FOR EACH module: read module feature.json, then map:
91
+ // [moduleCode]: { useCases, businessRules, entities, permissions, notes, mockupNotes }
92
+ },
93
+ consolidation: {
94
+ interactions: (master.consolidation?.crossModuleInteractions || []).map(i => ({
95
+ from: i.fromModule,
96
+ to: i.toModule,
97
+ description: i.description || ""
98
+ })),
99
+ e2eFlows: (master.consolidation?.e2eFlows || []).map(f => ({
100
+ name: f.name,
101
+ steps: (f.steps || []).map(s => ({ module: s.module, action: s.action })),
102
+ actors: (f.steps || []).map(s => s.permission).join(", ")
103
+ }))
104
+ },
105
+ handoff: master.handoff || {}
106
+ }
107
+ ```
108
+
109
+ ### Module Specs Mapping
110
+
111
+ For EACH module in `master.modules[]`:
112
+
113
+ 1. Read the module feature.json at `master.modules[i].featureJsonPath`
114
+ 2. Map to `moduleSpecs[moduleCode]`:
115
+
116
+ ```javascript
117
+ moduleSpecs[moduleCode] = {
118
+ useCases: (moduleFeature.specification?.useCases || []).map(uc => ({
119
+ name: uc.name,
120
+ actor: uc.primaryActor,
121
+ steps: (uc.mainScenario || []).join("\n"), // array → newline-separated string
122
+ alternative: (uc.alternativeScenarios || [])
123
+ .map(a => a.name + ": " + (a.steps || []).join(", ")).join("\n")
124
+ })),
125
+ businessRules: (moduleFeature.analysis?.businessRules || []).map(br => ({
126
+ name: br.name,
127
+ category: br.category, // "validation"|"calculation"|"workflow"|"security"|"data"
128
+ statement: br.statement,
129
+ example: (br.examples || []).map(e => e.input + " → " + e.expected).join("; ")
130
+ })),
131
+ entities: (moduleFeature.analysis?.entities || []).map(ent => ({
132
+ name: ent.name,
133
+ description: ent.description || "",
134
+ attributes: (ent.attributes || []).map(a => ({
135
+ name: a.name,
136
+ description: a.description || ""
137
+ })),
138
+ relationships: (ent.relationships || []).map(r =>
139
+ r.target + " (" + r.type + ") - " + (r.description || "")
140
+ )
141
+ })),
142
+ permissions: buildPermissionKeys(moduleFeature), // see below
143
+ notes: "",
144
+ mockupNotes: "" // Deprecated: wireframes now embedded separately in EMBEDDED_ARTIFACTS
145
+ }
146
+ ```
147
+
148
+ ### Permission Keys Function
149
+
150
+ The HTML uses `"Role|Action"` format (e.g. `"RH Admin|Consulter"`):
151
+
152
+ ```javascript
153
+ function buildPermissionKeys(moduleFeature) {
154
+ const keys = [];
155
+ const matrix = moduleFeature.specification?.permissionMatrix;
156
+ if (!matrix) return keys;
157
+ const actionMap = { read: "Consulter", create: "Creer", update: "Modifier",
158
+ delete: "Supprimer", validate: "Valider", export: "Exporter",
159
+ submit: "Valider", import: "Creer" };
160
+ (matrix.roleAssignments || []).forEach(ra => {
161
+ (ra.permissions || []).forEach(permPath => {
162
+ const action = permPath.split(".").pop(); // last segment = action
163
+ const uiAction = actionMap[action] || action;
164
+ keys.push(ra.role + "|" + uiAction);
165
+ });
166
+ });
167
+ return keys;
168
+ }
169
+ ```
170
+
171
+ ### Frequency Mapping
172
+
173
+ ```
174
+ "Quotidien" → "daily", "Hebdomadaire" → "weekly", "Mensuel" → "monthly"
175
+ Default: "daily"
176
+ ```
177
+
178
+ ### Access Mapping (involvement → access)
179
+
180
+ ```
181
+ "decision-maker" → "admin", "end-user" with manager-like tasks → "manager"
182
+ "end-user" → "contributor", "observer" → "viewer"
183
+ Default: "contributor"
184
+ ```
185
+
186
+ ---
187
+
188
+ ## EMBEDDED_ARTIFACTS Mapping
189
+
190
+ Build a JSON object containing ALL visual artifacts from feature.json:
191
+
192
+ ```javascript
193
+ {
194
+ wireframes: {
195
+ // FOR EACH module: extract all wireframes from module feature.json
196
+ // [moduleCode]: [ {screen, format, content, elements, componentMapping, layout, description} ]
197
+ },
198
+ e2eFlows: [
199
+ // Extract from master consolidation.e2eFlows[]
200
+ // { name, diagram, steps, actors }
201
+ ],
202
+ dependencyGraph: {
203
+ // Extract from master dependencyGraph
204
+ // nodes: [ {id, label, type} ], edges: [ {from, to, description} ]
205
+ }
206
+ }
207
+ ```
208
+
209
+ ### Wireframes Mapping
210
+
211
+ For EACH module in `master.modules[]`:
212
+
213
+ ```javascript
214
+ // Read the module feature.json
215
+ const moduleFeature = readModuleFeature(moduleCode);
216
+ const wireframes = (moduleFeature.specification?.uiWireframes || []).map(wf => ({
217
+ screen: wf.screen, // e.g. "UM-list", "UM-form"
218
+ section: wf.section, // e.g. "list", "form"
219
+ format: wf.mockupFormat || "ascii", // "ascii" | "svg"
220
+ content: wf.mockup, // ASCII art or SVG markup
221
+ description: wf.description || "",
222
+ elements: wf.elements || [], // ["DataGrid", "FilterBar", ...]
223
+ actions: wf.actions || [], // ["filter", "sort", "create", ...]
224
+ componentMapping: wf.componentMapping || [], // [{ wireframeElement, reactComponent }]
225
+ layout: wf.layout || null, // { type, regions: [...] }
226
+ permissionsRequired: wf.permissionsRequired || []
227
+ }));
228
+
229
+ // Store in artifacts object
230
+ EMBEDDED_ARTIFACTS.wireframes[moduleCode] = wireframes;
231
+ ```
232
+
233
+ ### E2E Flows Mapping
234
+
235
+ From master consolidation:
236
+
237
+ ```javascript
238
+ EMBEDDED_ARTIFACTS.e2eFlows = (master.consolidation?.e2eFlows || []).map(flow => ({
239
+ name: flow.name,
240
+ diagram: generateE2EDiagram(flow), // ASCII diagram from flow.steps[]
241
+ steps: flow.steps || [], // [{ module, action, permission }]
242
+ actors: Array.from(new Set((flow.steps || [])
243
+ .map(s => s.permission?.split(".")[0]) // Extract role from permission path
244
+ .filter(Boolean))).join(", "),
245
+ modules: Array.from(new Set((flow.steps || [])
246
+ .map(s => s.module))).join(" → ")
247
+ }));
248
+
249
+ function generateE2EDiagram(flow) {
250
+ // Generate ASCII diagram from flow.steps[]
251
+ // Example output:
252
+ // "Customer ──[read]──→ Order ──[create]──→ Invoice ──[send]──→"
253
+ // " (Orders) (Orders) (Invoices)"
254
+ // " Contributor Manager System"
255
+
256
+ const stepDiagrams = (flow.steps || []).map(s =>
257
+ `${s.action}(${s.module})`
258
+ ).join(" ──→ ");
259
+
260
+ return stepDiagrams;
261
+ }
262
+ ```
263
+
264
+ ### Dependency Graph Mapping
265
+
266
+ From master dependencyGraph:
267
+
268
+ ```javascript
269
+ EMBEDDED_ARTIFACTS.dependencyGraph = {
270
+ nodes: (master.modules || []).map(m => ({
271
+ id: m.code,
272
+ label: m.code,
273
+ type: m.featureType || "data-centric"
274
+ })),
275
+ edges: (master.dependencyGraph?.edges || []).map(e => ({
276
+ from: e.from,
277
+ to: e.to,
278
+ description: e.description || ""
279
+ }))
280
+ };
281
+ ```
282
+
283
+ ---
284
+
285
+ ## Usage in step-05b-deploy
286
+
287
+ 1. Serialize the FEATURE_DATA object as JSON (with 2-space indentation for readability)
288
+ 2. Serialize the EMBEDDED_ARTIFACTS object as JSON (with 2-space indentation)
289
+ 3. Replace `{{FEATURE_DATA}}` with the serialized FEATURE_DATA JSON
290
+ 4. Replace `{{EMBEDDED_ARTIFACTS}}` with the serialized EMBEDDED_ARTIFACTS JSON
291
+ 5. Replace `{{APPLICATION_NAME}}` → `{application_name}` (still used in `<title>` and header)
292
+ 6. Replace `{{APPLICATION_ID}}` → `{feature_id}` (still used in `APP_KEY`)
293
+ 7. Replace `{{VERSION}}` → `{version}`
294
+ 8. Replace `{{CREATED_AT}}` → `{ISO timestamp}`
@@ -43,7 +43,7 @@
43
43
  }
44
44
  },
45
45
 
46
- "$comment": "Sub-schema loading guide per BA step: step-00-init → metadata-schema.json | step-01-cadrage → discovery-schema.json (module) OR application-schema.json (master) | step-02-decomposition → application-schema.json (modules[], dependencyGraph) | step-03-specify → analysis-schema.json + specification-schema.json | step-04-consolidation → validation-schema.json + application-schema.json (consolidation) | step-05-handoff → handoff-schema.json",
46
+ "$comment": "Sub-schema loading guide per BA step: step-00-init → metadata-schema.json | step-01-cadrage → discovery-schema.json (module) OR application-schema.json (master) | step-02-decomposition → application-schema.json (modules[], dependencyGraph) | step-03a-specify → analysis-schema.json | step-03b-compile → specification-schema.json | step-04-consolidation → validation-schema.json + application-schema.json (consolidation) | step-05a-handoff → handoff-schema.json | step-05b-deploy → (artifacts only)",
47
47
 
48
48
  "$defs": {
49
49
  "stepStatus": { "$ref": "shared/common-defs.json#/$defs/stepStatus" },
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "analysis-schema.json",
4
4
  "title": "SmartStack BA - Analysis",
5
- "description": "Module-level analysis: objectives, business rules, entities, process flows, integrations, data lifecycle. Enriched by step-03-specify.",
5
+ "description": "Module-level analysis: objectives, business rules, entities, process flows, integrations, data lifecycle. Enriched by step-03a-specify.",
6
6
  "type": "object",
7
7
  "properties": {
8
8
  "objectives": {
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "handoff-schema.json",
4
4
  "title": "SmartStack BA - Handoff",
5
- "description": "Module-level handoff: file mapping (7 categories), BR-to-code mapping, API endpoint summary. Used by step-05-handoff.",
5
+ "description": "Module-level handoff: file mapping (7 categories), BR-to-code mapping, API endpoint summary. Used by step-05a-handoff.",
6
6
  "type": "object",
7
7
  "properties": {
8
8
  "complexity": { "type": "string", "enum": ["simple", "medium", "complex"] },
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "specification-schema.json",
4
4
  "title": "SmartStack BA - Specification",
5
- "description": "Module-level specification: actors, use cases, FRs, permissions, navigation, wireframes, dashboards, sections, resources. Enriched by step-03-specify.",
5
+ "description": "Module-level specification: actors, use cases, FRs, permissions, navigation, wireframes, dashboards, sections, resources. Enriched by step-03b-compile.",
6
6
  "type": "object",
7
7
  "properties": {
8
8
  "actors": {
@@ -4,6 +4,8 @@ description: Initialize Business Analysis - Parse flags, route use case, create
4
4
  next_step: steps/step-01-cadrage.md
5
5
  ---
6
6
 
7
+ > **Context files:** `_shared.md`
8
+
7
9
  # Step 00: Initialize Business Analysis
8
10
 
9
11
  Initialize the business analysis workflow by parsing input flags, routing to the appropriate use case handler, and creating the initial feature.json structure.
@@ -294,17 +296,18 @@ Determine the language for analysis and code generation.
294
296
 
295
297
  **Check config:**
296
298
  - Retrieve `businessContext.language` from config
297
- - Default: "en" (English)
299
+ - Default: "fr" (Francais)
298
300
 
299
301
  **If not in config OR auto_mode = false:**
300
302
  ```
301
303
  Ask via AskUserQuestion:
302
- question: "Select language for analysis"
303
- header: "Language"
304
+ question: "Quelle langue pour l'analyse ?"
305
+ header: "Langue"
304
306
  options:
307
+ - label: "Francais (fr)"
305
308
  - label: "English (en)"
306
- - label: "French (fr)"
307
- - label: "Spanish (es)"
309
+ - label: "Italiano (it)"
310
+ - label: "Deutsch (de)"
308
311
  ```
309
312
 
310
313
  **Store:**
@@ -372,12 +375,12 @@ Cache file location: `docs/business/{app}/business-analyse/.schema-cache.json`
372
375
  ```
373
376
  IF EXISTS docs/business/{app}/business-analyse/.schema-cache.json:
374
377
  Read cache file
375
- IF cache.version == "6.0" (CURRENT SKILL VERSION):
376
- Display: "✓ Schemas already deployed (v6.0) - skipping"
378
+ IF cache.version == "{CLI_VERSION}" (from package.json):
379
+ Display: "✓ Schemas already deployed ({CLI_VERSION}) - skipping"
377
380
  SKIP deployment (trust cache)
378
381
  → Go to Step 10
379
382
  ELSE:
380
- Display: "⚠ Schema version mismatch (cache: {cache.version}, current: 6.0)"
383
+ Display: "⚠ Schema version mismatch (cache: {cache.version}, current: {CLI_VERSION})"
381
384
  Proceed to deployment
382
385
  ELSE:
383
386
  Display: "Deploying schemas (first time)..."
@@ -418,7 +421,7 @@ docs/business/{app}/business-analyse/schemas/
418
421
 
419
422
  ```json
420
423
  {
421
- "version": "6.0",
424
+ "version": "{CLI_VERSION}",
422
425
  "deployedAt": "{ISO timestamp}",
423
426
  "schemas": [
424
427
  "feature-schema.json",
@@ -612,7 +615,7 @@ NEXT STEP: step-01-analyse ({use_case} mode)
612
615
  After showing initialization summary, proceed to `./step-01-cadrage.md`
613
616
 
614
617
  **Question mode (-q):** EXIT after ba-reader answers the question.
615
- **Micro mode (-m):** Load `./step-05-handoff.md` directly.
618
+ **Micro mode (-m):** Load `./step-05a-handoff.md` directly.
616
619
  **Extract mode (-x):** Load `./step-06-extract.md` with `{json_data}` from parsed JSON file.
617
620
 
618
621
  **Pass context variables:**
@@ -5,6 +5,8 @@ model: opus
5
5
  next_step: steps/step-02-decomposition.md
6
6
  ---
7
7
 
8
+ > **Context files:** `_shared.md` | `_elicitation.md` | `_architecture.md` | `_suggestions.md`
9
+
8
10
  # Step 1: Cadrage (Framing)
9
11
 
10
12
  ## MANDATORY EXECUTION RULES
@@ -2,9 +2,11 @@
2
2
  name: step-02-decomposition
3
3
  description: Module decomposition - identify modules, dependency graph, topological sort, client checkpoint
4
4
  model: sonnet
5
- next_step: steps/step-03-specify.md
5
+ next_step: steps/step-03a-specify.md
6
6
  ---
7
7
 
8
+ > **Context files:** `_shared.md`
9
+
8
10
  # Step 2: Decomposition
9
11
 
10
12
  ## MANDATORY EXECUTION RULES
@@ -36,7 +38,7 @@ ba-reader.findFeature({feature_id})
36
38
 
37
39
  IF status already "decomposed":
38
40
  Display: "Decomposition already completed. Loading next step."
39
- Load: steps/step-03-specify.md
41
+ Load: steps/step-03a-specify.md
40
42
  STOP
41
43
 
42
44
  ### 2. Module Identification
@@ -290,4 +292,4 @@ When `workflow.mode = "module"` or only 1 scope item identified:
290
292
 
291
293
  ## NEXT STEP
292
294
 
293
- Load: `./step-03-specify.md`
295
+ Load: `./step-03a-specify.md`