@atlashub/smartstack-cli 4.18.0 → 4.20.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 (164) hide show
  1. package/package.json +1 -1
  2. package/templates/agents/ba-reader.md +86 -80
  3. package/templates/agents/ba-writer.md +318 -415
  4. package/templates/agents/docs-context-reader.md +3 -3
  5. package/templates/mcp-scaffolding/frontend/nav-routes.ts.hbs +133 -0
  6. package/templates/mcp-scaffolding/frontend/routes.tsx.hbs +126 -0
  7. package/templates/skills/apex/SKILL.md +29 -16
  8. package/templates/skills/apex/_shared.md +62 -9
  9. package/templates/skills/apex/references/analysis-methods.md +8 -6
  10. package/templates/skills/apex/references/challenge-questions.md +5 -5
  11. package/templates/skills/apex/references/core-seed-data.md +68 -45
  12. package/templates/skills/apex/references/frontend-route-wiring-app-tsx.md +26 -21
  13. package/templates/skills/apex/references/parallel-execution.md +156 -0
  14. package/templates/skills/apex/references/person-extension-pattern.md +12 -12
  15. package/templates/skills/apex/references/post-checks.md +1748 -1726
  16. package/templates/skills/apex/references/smartstack-api.md +63 -57
  17. package/templates/skills/apex/references/smartstack-frontend-compliance.md +594 -0
  18. package/templates/skills/apex/references/smartstack-frontend.md +1246 -1842
  19. package/templates/skills/apex/references/smartstack-layers.md +98 -145
  20. package/templates/skills/apex/steps/step-00-init.md +30 -6
  21. package/templates/skills/apex/steps/step-01-analyze.md +27 -23
  22. package/templates/skills/apex/steps/step-02-plan.md +12 -12
  23. package/templates/skills/apex/steps/step-03-execute.md +198 -143
  24. package/templates/skills/apex/steps/step-04-examine.md +24 -93
  25. package/templates/skills/apex/steps/step-05-deep-review.md +16 -16
  26. package/templates/skills/apex/steps/step-06-resolve.md +9 -9
  27. package/templates/skills/apex/steps/step-07-tests.md +3 -1
  28. package/templates/skills/apex/steps/step-08-run-tests.md +1 -1
  29. package/templates/skills/business-analyse/SKILL.md +182 -301
  30. package/templates/skills/business-analyse/_shared.md +119 -336
  31. package/templates/skills/business-analyse/html/ba-interactive.html +706 -85
  32. package/templates/skills/business-analyse/html/build-html.js +41 -3
  33. package/templates/skills/business-analyse/html/src/partials/cadrage-context.html +34 -0
  34. package/templates/skills/business-analyse/html/src/partials/cadrage-risks.html +48 -0
  35. package/templates/skills/business-analyse/html/src/partials/cadrage-scope.html +49 -0
  36. package/templates/skills/business-analyse/html/src/partials/cadrage-stakeholders.html +55 -0
  37. package/templates/skills/business-analyse/html/src/partials/cadrage-success.html +34 -0
  38. package/templates/skills/business-analyse/html/src/partials/consol-datamodel.html +8 -0
  39. package/templates/skills/business-analyse/html/src/partials/consol-flows.html +29 -0
  40. package/templates/skills/business-analyse/html/src/partials/consol-interactions.html +8 -0
  41. package/templates/skills/business-analyse/html/src/partials/consol-permissions.html +8 -0
  42. package/templates/skills/business-analyse/html/src/partials/decomp-dependencies.html +38 -0
  43. package/templates/skills/business-analyse/html/src/partials/decomp-modules.html +51 -0
  44. package/templates/skills/business-analyse/html/src/partials/handoff-summary.html +24 -0
  45. package/templates/skills/business-analyse/html/src/partials/module-spec-container.html +4 -0
  46. package/templates/skills/business-analyse/html/src/scripts/01-data-init.js +17 -1
  47. package/templates/skills/business-analyse/html/src/scripts/02-navigation.js +32 -6
  48. package/templates/skills/business-analyse/html/src/scripts/05-render-specs.js +100 -63
  49. package/templates/skills/business-analyse/html/src/scripts/06-render-mockups.js +372 -0
  50. package/templates/skills/business-analyse/html/src/scripts/07-render-handoff.js +1 -1
  51. package/templates/skills/business-analyse/html/src/scripts/10-comments.js +41 -13
  52. package/templates/skills/business-analyse/html/src/styles/09-mockups-html.css +136 -0
  53. package/templates/skills/business-analyse/html/src/template.html +1 -1
  54. package/templates/skills/business-analyse/patterns/suggestion-catalog.md +7 -5
  55. package/templates/skills/business-analyse/questionnaire/01-context.md +11 -157
  56. package/templates/skills/business-analyse/questionnaire/02-stakeholders-scope.md +101 -0
  57. package/templates/skills/business-analyse/questionnaire/03-data-ui.md +92 -0
  58. package/templates/skills/business-analyse/questionnaire/04-risks-metrics.md +6 -0
  59. package/templates/skills/business-analyse/questionnaire/05-cross-module.md +69 -0
  60. package/templates/skills/business-analyse/questionnaire.md +22 -280
  61. package/templates/skills/business-analyse/react/application-viewer.md +2 -2
  62. package/templates/skills/business-analyse/react/components.md +4 -4
  63. package/templates/skills/business-analyse/react/i18n-template.md +1 -1
  64. package/templates/skills/business-analyse/react/schema.md +14 -14
  65. package/templates/skills/business-analyse/references/acceptance-criteria.md +21 -21
  66. package/templates/skills/business-analyse/references/analysis-semantic-checks.md +3 -3
  67. package/templates/skills/business-analyse/references/compilation-structure-cards.md +1 -1
  68. package/templates/skills/business-analyse/references/consolidation-structural-checks.md +5 -5
  69. package/templates/skills/business-analyse/references/deploy-data-build.md +12 -11
  70. package/templates/skills/business-analyse/references/deploy-modes.md +10 -10
  71. package/templates/skills/business-analyse/references/detection-strategies.md +6 -6
  72. package/templates/skills/business-analyse/references/html-data-mapping.md +15 -15
  73. package/templates/skills/business-analyse/references/naming-conventions.md +4 -4
  74. package/templates/skills/business-analyse/references/review-data-mapping.md +29 -29
  75. package/templates/skills/business-analyse/references/robustness-checks.md +36 -36
  76. package/templates/skills/business-analyse/references/spec-auto-inference.md +2 -2
  77. package/templates/skills/business-analyse/references/ui-dashboard-spec.md +1 -1
  78. package/templates/skills/business-analyse/references/ui-resource-cards.md +1 -1
  79. package/templates/skills/business-analyse/references/validation-checklist.md +3 -3
  80. package/templates/skills/business-analyse/references/wireframe-svg-style-guide.md +2 -2
  81. package/templates/skills/business-analyse/schemas/application-schema.json +8 -8
  82. package/templates/skills/business-analyse/schemas/feature-schema.json +3 -3
  83. package/templates/skills/business-analyse/schemas/index-schema.json +47 -0
  84. package/templates/skills/business-analyse/schemas/project-schema.json +6 -6
  85. package/templates/skills/business-analyse/schemas/sections/analysis-schema.json +1 -1
  86. package/templates/skills/business-analyse/schemas/sections/handoff-schema.json +5 -3
  87. package/templates/skills/business-analyse/schemas/sections/metadata-schema.json +4 -4
  88. package/templates/skills/business-analyse/schemas/sections/specification-schema.json +1 -1
  89. package/templates/skills/business-analyse/schemas/shared/common-defs.json +4 -4
  90. package/templates/skills/business-analyse/steps/step-00-init.md +68 -77
  91. package/templates/skills/business-analyse/steps/step-01-cadrage.md +50 -216
  92. package/templates/skills/business-analyse/steps/step-02-structure.md +175 -0
  93. package/templates/skills/business-analyse/steps/step-03-specify.md +198 -0
  94. package/templates/skills/business-analyse/steps/step-04-consolidate.md +478 -0
  95. package/templates/skills/business-analyse/steps/step-05-deploy.md +220 -0
  96. package/templates/skills/business-analyse/steps/step-06-review.md +51 -69
  97. package/templates/skills/business-analyse/templates/tpl-frd.md +1 -1
  98. package/templates/skills/business-analyse/templates/tpl-handoff.md +20 -17
  99. package/templates/skills/business-analyse/templates/tpl-launch-displays.md +2 -2
  100. package/templates/skills/business-analyse/templates-react.md +2 -2
  101. package/templates/skills/derive-prd/SKILL.md +92 -0
  102. package/templates/skills/derive-prd/references/acceptance-criteria.md +169 -0
  103. package/templates/skills/derive-prd/references/entity-domain-mapping.md +115 -0
  104. package/templates/skills/{business-analyse → derive-prd}/references/handoff-file-templates.md +131 -120
  105. package/templates/skills/{business-analyse → derive-prd}/references/handoff-mappings.md +95 -95
  106. package/templates/skills/{business-analyse → derive-prd}/references/handoff-seeddata-generation.md +312 -312
  107. package/templates/skills/{business-analyse → derive-prd}/references/prd-generation.md +262 -263
  108. package/templates/skills/derive-prd/references/readiness-scoring.md +104 -0
  109. package/templates/skills/derive-prd/schemas/handoff-schema.json +95 -0
  110. package/templates/skills/derive-prd/steps/step-00-validate.md +130 -0
  111. package/templates/skills/derive-prd/steps/step-01-transform.md +206 -0
  112. package/templates/skills/derive-prd/steps/step-02-export.md +181 -0
  113. package/templates/skills/{business-analyse → derive-prd}/templates/tpl-progress.md +172 -172
  114. package/templates/skills/documentation/SKILL.md +7 -0
  115. package/templates/skills/ralph-loop/SKILL.md +2 -1
  116. package/templates/skills/ralph-loop/references/init-resume-recovery.md +1 -1
  117. package/templates/skills/ralph-loop/steps/step-01-task.md +2 -2
  118. package/templates/skills/apex/references/agent-teams-protocol.md +0 -203
  119. package/templates/skills/business-analyse/_architecture.md +0 -124
  120. package/templates/skills/business-analyse/_elicitation.md +0 -206
  121. package/templates/skills/business-analyse/_module-loop.md +0 -115
  122. package/templates/skills/business-analyse/_rules.md +0 -142
  123. package/templates/skills/business-analyse/_suggestions.md +0 -34
  124. package/templates/skills/business-analyse/questionnaire/00-application.md +0 -160
  125. package/templates/skills/business-analyse/questionnaire/00b-project.md +0 -85
  126. package/templates/skills/business-analyse/questionnaire/02-stakeholders.md +0 -189
  127. package/templates/skills/business-analyse/questionnaire/03-scope.md +0 -164
  128. package/templates/skills/business-analyse/questionnaire/04-data.md +0 -88
  129. package/templates/skills/business-analyse/questionnaire/05-integrations.md +0 -58
  130. package/templates/skills/business-analyse/questionnaire/06-security.md +0 -68
  131. package/templates/skills/business-analyse/questionnaire/07-ui.md +0 -76
  132. package/templates/skills/business-analyse/questionnaire/08-performance.md +0 -42
  133. package/templates/skills/business-analyse/questionnaire/09-constraints.md +0 -45
  134. package/templates/skills/business-analyse/questionnaire/10-documentation.md +0 -58
  135. package/templates/skills/business-analyse/questionnaire/11-data-lifecycle.md +0 -59
  136. package/templates/skills/business-analyse/questionnaire/12-migration.md +0 -58
  137. package/templates/skills/business-analyse/questionnaire/13-cross-module.md +0 -69
  138. package/templates/skills/business-analyse/questionnaire/14-risk-assumptions.md +0 -135
  139. package/templates/skills/business-analyse/questionnaire/15-success-metrics.md +0 -136
  140. package/templates/skills/business-analyse/references/agent-module-prompt.md +0 -366
  141. package/templates/skills/business-analyse/references/agent-pooling-best-practices.md +0 -557
  142. package/templates/skills/business-analyse/references/cache-warming-strategy.md +0 -566
  143. package/templates/skills/business-analyse/references/cadrage-challenge-patterns.md +0 -41
  144. package/templates/skills/business-analyse/references/cadrage-coverage-matrix.md +0 -74
  145. package/templates/skills/business-analyse/references/cadrage-pre-analysis.md +0 -115
  146. package/templates/skills/business-analyse/references/cadrage-shared-modules.md +0 -68
  147. package/templates/skills/business-analyse/references/cadrage-structure-cards.md +0 -85
  148. package/templates/skills/business-analyse/references/team-orchestration.md +0 -1093
  149. package/templates/skills/business-analyse/references/validate-incremental-html.md +0 -121
  150. package/templates/skills/business-analyse/steps/step-01b-applications.md +0 -419
  151. package/templates/skills/business-analyse/steps/step-02-decomposition.md +0 -387
  152. package/templates/skills/business-analyse/steps/step-03a-data.md +0 -16
  153. package/templates/skills/business-analyse/steps/step-03a1-setup.md +0 -486
  154. package/templates/skills/business-analyse/steps/step-03a2-analysis.md +0 -300
  155. package/templates/skills/business-analyse/steps/step-03b-ui.md +0 -405
  156. package/templates/skills/business-analyse/steps/step-03c-compile.md +0 -516
  157. package/templates/skills/business-analyse/steps/step-03d-validate.md +0 -691
  158. package/templates/skills/business-analyse/steps/step-04-consolidation.md +0 -17
  159. package/templates/skills/business-analyse/steps/step-04a-collect.md +0 -415
  160. package/templates/skills/business-analyse/steps/step-04b-analyze.md +0 -163
  161. package/templates/skills/business-analyse/steps/step-04c-decide.md +0 -186
  162. package/templates/skills/business-analyse/steps/step-05a-handoff.md +0 -937
  163. package/templates/skills/business-analyse/steps/step-05b-deploy.md +0 -522
  164. package/templates/skills/business-analyse/steps/step-05c-ralph-readiness.md +0 -703
@@ -1,522 +0,0 @@
1
- ---
2
- name: step-05b-deploy
3
- description: Generate prd.json, deploy artifacts, interactive HTML
4
- model: sonnet
5
- next_step: steps/step-05c-ralph-readiness.md
6
- ---
7
-
8
- > **Context files:** _shared.md
9
-
10
- # Step 5b: Deploy Artifacts & Interactive HTML
11
-
12
- ## MANDATORY EXECUTION RULES
13
-
14
- - **ALWAYS** verify all module handoffs are complete before generating artifacts
15
- - **ALWAYS** derive prd.json from feature.json (NEVER independently)
16
- - **NEVER** invent entities/FRs/BRs not in feature.json
17
- - **ALWAYS** update BA manifest at docs/index.json
18
- - **ALWAYS** deploy ba-interactive.html PRE-POPULATED with all data
19
- - **ALWAYS** follow references/html-data-mapping.md EXACTLY for FEATURE_DATA and EMBEDDED_ARTIFACTS mapping
20
- - **FEATURE_DATA.moduleSpecs MUST be populated for EACH module** — empty moduleSpecs = BROKEN specification tabs
21
- - **FEATURE_DATA.cadrage.scope must use HTML keys** (vital/important/optional/excluded) NOT feature.json keys (mustHave/shouldHave/couldHave/outOfScope)
22
- - **FEATURE_DATA.metadata.analysisMode must be set** from master.metadata.analysisMode (always "interactive")
23
- - **NEVER leave FEATURE_DATA or EMBEDDED_ARTIFACTS empty or partial**
24
-
25
- ## YOUR TASK
26
-
27
- Generate deployment artifacts (prd.json, progress.txt, BA manifest) and deploy the interactive HTML document pre-populated with all analysis data.
28
-
29
- ---
30
-
31
- ## EXECUTION SEQUENCE
32
-
33
- ### 0. Pre-flight Verification
34
-
35
- Before generating ANY artifact, verify step-05a completed successfully:
36
-
37
- ```
38
- FOR each module in modules[]:
39
- Read module feature.json
40
- IF module.handoff === {} OR module.status !== "handed-off":
41
- → BLOCKING ERROR: Module {module.code} has no handoff data
42
- → Return to step-05a-handoff.md
43
- ```
44
-
45
- IF all modules have valid handoff → proceed.
46
-
47
- ---
48
-
49
- ### 1. Generate prd.json (PROGRAMMATIC)
50
-
51
- > **RULE:** prd.json is extracted by CLI code, **NEVER** generated by LLM.
52
- > The `ss derive-prd` command performs a deterministic data transformation from feature.json.
53
-
54
- **For each module:**
55
-
56
- ```
57
- Execute: ss derive-prd --feature {moduleFeaturePath} --output .ralph/prd-{moduleCode}.json
58
- ```
59
-
60
- **For consolidated view (multi-module, optional):**
61
-
62
- ```
63
- Execute: ss derive-prd --application {masterFeaturePath}
64
- → Generates .ralph/prd-{moduleCode}.json for each module
65
- ```
66
-
67
- **Verification:** After execution, read the generated prd.json and display summary:
68
-
69
- ```
70
- prd.json generated for module {moduleCode}:
71
- - Use cases: {count}
72
- - Functional requirements: {count}
73
- - Business rules: {count}
74
- - API endpoints: {count}
75
- - Sections: {count}
76
- - Files to create: {count}
77
- - BR-to-code mappings: {count}
78
- ```
79
-
80
- **Key guarantees:**
81
- - Source MUST reference feature.json path (traceability)
82
- - All data is EXACT COPY from feature.json (no transformation, no invention)
83
- - prd.json $version: "3.0.0" (unified format with pre-computed tasks)
84
- - source.type: "ba-handoff-programmatic"
85
-
86
- **POST-CHECK (BLOCKING — DO NOT SKIP):**
87
-
88
- After `ss derive-prd` execution, read the generated prd-{moduleCode}.json and verify structural integrity:
89
-
90
- ```javascript
91
- const prd = readJSON(`.ralph/prd-${moduleCode}.json`);
92
- const featureHandoff = moduleFeature.handoff.filesToCreate;
93
-
94
- // 1. Verify structure: filesToCreate MUST be under implementation (NOT root level)
95
- if (prd.filesToCreate && !prd.implementation?.filesToCreate) {
96
- BLOCKING_ERROR("prd.json has filesToCreate at ROOT level — this is NOT from ss derive-prd");
97
- BLOCKING_ERROR("Re-run: ss derive-prd --feature {path} --output .ralph/prd-{moduleCode}.json");
98
- STOP;
99
- }
100
-
101
- // 2. Verify ALL 7 categories present and match feature.json
102
- const categories = ['domain', 'application', 'infrastructure', 'api', 'frontend', 'seedData', 'tests'];
103
- for (const cat of categories) {
104
- const prdCount = prd.implementation.filesToCreate[cat]?.length ?? 0;
105
- const featureCount = featureHandoff[cat]?.length ?? 0;
106
- if (prdCount !== featureCount) {
107
- BLOCKING_ERROR(`${cat}: prd has ${prdCount} files but feature.json has ${featureCount}`);
108
- }
109
- }
110
- ```
111
-
112
- Display verification table:
113
-
114
- ```
115
- POST-CHECK: prd-{moduleCode}.json integrity
116
- | Category | feature.json | prd.json | Match |
117
- |----------------|-------------|----------|-------|
118
- | domain | {n} | {n} | OK/FAIL |
119
- | application | {n} | {n} | OK/FAIL |
120
- | infrastructure | {n} | {n} | OK/FAIL |
121
- | api | {n} | {n} | OK/FAIL |
122
- | frontend | {n} | {n} | OK/FAIL |
123
- | seedData | {n} | {n} | OK/FAIL |
124
- | tests | {n} | {n} | OK/FAIL |
125
- ```
126
-
127
- IF ANY category shows FAIL → **STOP AND RE-RUN `ss derive-prd`**. DO NOT proceed with incomplete PRD.
128
-
129
- ---
130
-
131
- ### 2. Initialize Progress Tracker
132
-
133
- > **Template:** Read `templates/tpl-progress.md` for the complete progress tracker template structure.
134
- > Populate the template with module-specific data from feature.json handoff sections.
135
-
136
- **Progress Tracker Rules:**
137
- - One section per module, in topological order (dependencies first)
138
- - CORE SeedData ALWAYS 5 entries (mandatory)
139
- - Business SeedData varies by module
140
- - Hierarchical task structure (module -> layer -> tasks)
141
- - Each task is independent, assignable checkbox
142
- - Effort estimate per module (simple/medium/complex)
143
- - Summary with totals across all modules
144
- - Cross-module tasks only if multi-module
145
-
146
- ---
147
-
148
- ### 3. Update BA Manifest (MANDATORY)
149
-
150
- > **The BA manifest enables the SmartStack web app to discover and display all available business analyses.**
151
- > It is a JSON index file at `docs/index.json` that lists all feature.json files.
152
-
153
- **Path:** `docs/index.json` (project root relative)
154
-
155
- **Schema:**
156
- ```json
157
- {
158
- "version": "1.0",
159
- "updatedAt": "{ISO timestamp}",
160
- "analyses": [
161
- {
162
- "appCode": "{app_code}",
163
- "appName": "{application_name}",
164
- "moduleCode": null | "{module_code}",
165
- "moduleName": "{module_name}",
166
- "version": "{version}",
167
- "status": "handed-off",
168
- "featureDescription": "{feature_description}",
169
- "path": "{app_code}/business-analyse/v{version}/feature.json",
170
- "updatedAt": "{ISO timestamp}"
171
- }
172
- ]
173
- }
174
- ```
175
-
176
- > Note: The "path" field uses `{app_code}` directly without any prefix (e.g., `FreeBike/business-analyse/v1.0/feature.json`).
177
-
178
- **Update logic:**
179
-
180
- 1. Read existing manifest at `docs/index.json` (or create empty `{ "version": "1.0", "updatedAt": "", "analyses": [] }`)
181
-
182
- 2. **PROJECT MODE (`workflow.mode === "project"`):**
183
- a. Add/update PROJECT-level entry:
184
- - Find existing entry where `projectId == {project_id}` AND `scope == "project"`
185
- - If found: update `status`, `updatedAt`
186
- - If not found: append new entry with `scope: "project"`, `projectId: "{project_id}"`, `path: "business-analyse/v{version}/feature.json"`
187
- b. For EACH APPLICATION:
188
- - Find existing entry where `appCode == {app_code}` AND `moduleCode == null` AND `version == {version}`
189
- - If found: update `status`, `updatedAt`, `featureDescription`
190
- - If not found: append new entry with `moduleCode: null` and `path: "{app_code}/business-analyse/v{version}/feature.json"`
191
- c. For EACH MODULE within each application:
192
- - Find existing entry where `appCode == {app_code}` AND `moduleCode == {module_code}` AND `version == {version}`
193
- - If found: update `status`, `updatedAt`, `featureDescription`
194
- - If not found: append new entry with `path: "{app_code}/{module_code}/business-analyse/v{version}/feature.json"`
195
-
196
- 3. **SINGLE-APP MODE (default):**
197
- a. For the APPLICATION-level feature.json:
198
- - Find existing entry where `appCode == {app_code}` AND `moduleCode == null` AND `version == {version}`
199
- - If found: update `status`, `updatedAt`, `featureDescription`
200
- - If not found: append new entry with `moduleCode: null` and `path: "{app_code}/business-analyse/v{version}/feature.json"`
201
- b. For EACH MODULE-level feature.json:
202
- - Find existing entry where `appCode == {app_code}` AND `moduleCode == {module_code}` AND `version == {version}`
203
- - If found: update `status`, `updatedAt`, `featureDescription`
204
- - If not found: append new entry with `moduleCode: "{module_code}"` and `path: "{app_code}/{module_code}/business-analyse/v{version}/feature.json"`
205
-
206
- 4. Update root `updatedAt` to current timestamp
207
- 5. Write manifest back to `docs/index.json`
208
-
209
- **Display confirmation:**
210
- ```
211
- ✓ BA manifest updated: docs/index.json
212
- Entries: {total_count} ({project_count} projects, {app_count} applications, {module_count} modules)
213
- Web viewer: /system/docs/ba
214
- ```
215
-
216
- **Why a manifest?**
217
- - The web app needs to discover available BAs without scanning the filesystem
218
- - Static file serving (no backend API needed)
219
- - Incremental updates: each handoff adds/updates only its entries
220
- - Consumed by the SmartStack web app BA viewer at `/system/docs/ba`
221
-
222
- ---
223
-
224
- ### 4. Read Source Data for HTML
225
-
226
- 1. Read the HTML template from skill directory: `html/ba-interactive.html` (relative to `~/.claude/skills/business-analyse/`)
227
- 2. **SINGLE-APP MODE:** Read the master feature.json (application level)
228
- 3. **PROJECT MODE:** Read the project feature.json + ALL application feature.json files
229
- 4. Read EACH module feature.json (module level, across all applications in project mode)
230
-
231
- > **Reference:** Read `references/html-data-mapping.md` for the complete FEATURE_DATA and EMBEDDED_ARTIFACTS mapping specification.
232
-
233
- **Key requirements:**
234
- - FEATURE_DATA must be pre-populated with ALL analysis data (empty data = BUG)
235
- - FEATURE_DATA.**moduleSpecs** MUST be populated for EACH module across ALL applications (use cases, business rules, entities, permissions) — empty moduleSpecs = BROKEN specification tabs
236
- - FEATURE_DATA.**cadrage.scope** must use HTML keys (vital/important/optional/excluded) NOT feature.json keys (mustHave/shouldHave/couldHave/outOfScope)
237
- - FEATURE_DATA.**metadata.analysisMode** must be set from `master.metadata.analysisMode` (always "interactive")
238
- - EMBEDDED_ARTIFACTS contains wireframes, E2E diagrams, dependency graph
239
- - Both objects are serialized as JSON with 2-space indentation
240
- - All data mapped from master and module feature.json files — follow `html-data-mapping.md` EXACTLY
241
-
242
- **PROJECT MODE additions to FEATURE_DATA:**
243
- - `FEATURE_DATA.project` — project-level metadata (name, applicationCount, applicationOrder)
244
- - `FEATURE_DATA.applications` — array of application summaries with their modules
245
- - `FEATURE_DATA.modules` — flattened list of ALL modules across ALL applications (each with `applicationCode` field)
246
- - `FEATURE_DATA.consolidation.crossApplicationInteractions` — from project feature.json
247
- - FEATURE_DATA.**metadata.workflowMode** must be `"project"` (enables multi-app tabs in HTML)
248
-
249
- ---
250
-
251
- ### 5-7. Build FEATURE_DATA, EMBEDDED_ARTIFACTS & Replace Placeholders
252
-
253
- See [references/deploy-data-build.md](../references/deploy-data-build.md) for:
254
- - Complete FEATURE_DATA object structure (metadata, cadrage, modules, moduleSpecs, consolidation, handoff)
255
- - Complete EMBEDDED_ARTIFACTS object structure (wireframes, e2eFlows, dependencyGraph)
256
- - 7-step build process for FEATURE_DATA
257
- - 4-step artifact gathering for EMBEDDED_ARTIFACTS
258
- - Placeholder replacement rules (8 placeholders)
259
-
260
- **Critical reminders:**
261
- - FEATURE_DATA.**moduleSpecs** MUST have ONE entry per module (empty = BUG)
262
- - FEATURE_DATA.**cadrage.scope** converts `mustHave→vital`, `shouldHave→important`, `couldHave→optional`, `outOfScope→excluded`
263
- - FEATURE_DATA.**metadata.analysisMode** from `master.metadata.analysisMode`
264
- - Also reference `references/html-data-mapping.md` for the full mapping spec
265
-
266
- ---
267
-
268
- ### 7-bis. Generate SVG Wireframes (Parallel Enrichment)
269
-
270
- > **After EMBEDDED_ARTIFACTS is built (sections 5-7) but BEFORE writing the HTML (section 8).**
271
- > This step enriches each ASCII wireframe with a professional SVG version for dual-view rendering.
272
-
273
- See [references/wireframe-svg-style-guide.md](../references/wireframe-svg-style-guide.md) for the complete SVG style specification, prompt template, and orchestration process.
274
-
275
- **Process summary:**
276
-
277
- 1. **Read** `references/wireframe-svg-style-guide.md` to get the prompt template
278
- 2. **Collect** all wireframes across ALL modules in `EMBEDDED_ARTIFACTS.wireframes` where `content` exists and `svgContent` is null
279
- 3. **Spawn parallel Task(sonnet) agents** — ONE per wireframe, ALL in a single message
280
- 4. **Collect and validate** results: strip markdown fences if present, verify SVG starts with `<svg` and contains `</svg>`
281
- 5. **Inject** valid SVGs into `EMBEDDED_ARTIFACTS.wireframes[moduleCode][index].svgContent`
282
- 6. **Display summary:**
283
- ```
284
- SVG wireframe generation:
285
- Total wireframes: {total}
286
- SVG generated: {successCount}/{total}
287
- Fallback (ASCII only): {failCount}/{total}
288
- ```
289
-
290
- > **CRITICAL:** This step is NEVER blocking. If all SVG generations fail, deployment
291
- > continues with ASCII-only wireframes. The HTML renderer checks for `svgContent` before
292
- > showing the SVG view. SVG is an enhancement, not a requirement.
293
-
294
- ---
295
-
296
- ### 8. Write and Verify
297
-
298
- 1. Write the populated HTML to the output directory: `docs/{app}/business-analyse/v{version}/ba-interactive.html`
299
- 2. Display deployment confirmation:
300
-
301
- ```
302
- [OK] Interactive HTML deployed:
303
- Path: docs/{app}/business-analyse/v{version}/ba-interactive.html
304
- Pre-populated with: {stakeholder_count} stakeholders, {module_count} modules,
305
- {total_uc} use cases, {total_br} business rules, {total_entity} entities
306
- Visual artifacts: {total_wireframes} wireframes, {e2e_flow_count} E2E diagrams
307
- Open in browser to review and edit the business analysis.
308
- Export JSON and re-import with: /business-analyse -x <exported-json-path>
309
- ```
310
-
311
- ---
312
-
313
- ## SELF-VERIFICATION (BEFORE COMPLETION)
314
-
315
- Before displaying completion, VERIFY:
316
-
317
- 1. **`.ralph/prd-{module}.json`** exists for ALL modules (file size > 100 bytes each)
318
- 2. **`.ralph/progress.txt`** exists (file size > 500 bytes)
319
- 3. **`docs/index.json`** exists with correct entry count
320
- 4. **ba-interactive.html** exists and file size > 100KB
321
- 5. **FEATURE_DATA contains moduleSpecs** with entries for ALL modules
322
- 6. **cadrage.scope uses HTML keys** (vital/important/optional/excluded)
323
-
324
- **IF any check fails → GENERATE the missing artifact before proceeding to completion.**
325
-
326
- ---
327
-
328
- ## POST-CHECK (BLOCKING)
329
-
330
- After writing the HTML file, verify:
331
-
332
- 1. **File size > 100KB** (indicates pre-populated, not empty template)
333
- ```bash
334
- file_size=$(stat --format=%s "{output_path}/ba-interactive.html")
335
- if [ $file_size -lt 100000 ]; then
336
- BLOCKING_ERROR("ba-interactive.html is only ${file_size} bytes — not pre-populated")
337
- fi
338
- ```
339
-
340
- 2. **Grep for "moduleSpecs"** — MUST be present in generated HTML
341
- ```bash
342
- if ! grep -q '"moduleSpecs"' "{output_path}/ba-interactive.html"; then
343
- BLOCKING_ERROR("moduleSpecs not found in HTML — FEATURE_DATA not serialized correctly")
344
- fi
345
- ```
346
-
347
- 3. **moduleSpecs must have entries for ALL modules** (not empty object `{}`)
348
- ```bash
349
- # Count moduleSpecs entries — should equal module count
350
- moduleSpec_count=$(grep -o '"moduleCode"' "{output_path}/ba-interactive.html" | wc -l)
351
- if [ $moduleSpec_count -lt {module_count} ]; then
352
- BLOCKING_ERROR("moduleSpecs has only ${moduleSpec_count} entries but need {module_count}")
353
- fi
354
- ```
355
-
356
- 4. **cadrage.scope must use HTML keys** (vital/important/optional/excluded)
357
- ```bash
358
- if grep -q '"mustHave"' "{output_path}/ba-interactive.html"; then
359
- BLOCKING_ERROR("cadrage.scope still has feature.json keys (mustHave) — must convert to HTML keys (vital)")
360
- fi
361
- ```
362
-
363
- 5. **EMBEDDED_ARTIFACTS wireframes must use renamed fields** (`format`/`content`, NOT `mockupFormat`/`mockup`)
364
- ```bash
365
- # Check that wireframe field rename was applied (mockup → content, mockupFormat → format)
366
- if grep -q '"mockupFormat"' "{output_path}/ba-interactive.html"; then
367
- BLOCKING_ERROR("EMBEDDED_ARTIFACTS wireframes still use 'mockupFormat' — must rename to 'format'")
368
- BLOCKING_ERROR("See references/html-data-mapping.md for correct field mapping")
369
- fi
370
- if grep -q '"mockup":' "{output_path}/ba-interactive.html" | grep -v '"mockupNotes"'; then
371
- # Note: "mockup" in EMBEDDED_ARTIFACTS = wrong, must be "content"
372
- BLOCKING_ERROR("EMBEDDED_ARTIFACTS wireframes still use 'mockup' — must rename to 'content'")
373
- fi
374
- ```
375
-
376
- 6. **EMBEDDED_ARTIFACTS wireframes must exist for ALL modules** (not empty `{}`)
377
- ```bash
378
- # Each module should have at least one wireframe with "format" and "content"
379
- if ! grep -q '"format"' "{output_path}/ba-interactive.html"; then
380
- BLOCKING_ERROR("No wireframe 'format' field found — EMBEDDED_ARTIFACTS wireframes not populated")
381
- fi
382
- ```
383
-
384
- 7. **WIREFRAME KEY ALIGNMENT** — wireframe keys MUST match module codes exactly
385
- ```
386
- FOR each module in FEATURE_DATA.modules:
387
- moduleCode = module.code (e.g., "GestionTemps")
388
- IF EMBEDDED_ARTIFACTS.wireframes[moduleCode] is undefined OR empty:
389
- BLOCKING_ERROR("Wireframe key mismatch: module code '${moduleCode}' not found in EMBEDDED_ARTIFACTS.wireframes")
390
- BLOCKING_ERROR("Available wireframe keys: ${Object.keys(EMBEDDED_ARTIFACTS.wireframes).join(', ')}")
391
- → FIX: Rename the wireframe key to match module.code exactly
392
- ```
393
- > **Why this matters:** The HTML renders wireframes via `EMBEDDED_ARTIFACTS.wireframes[code]`. If the key doesn't match the module code (e.g., "TimeTracking" vs "GestionTemps"), the wireframes tab shows "Aucune maquette disponible" even though data exists.
394
-
395
- 8. **MODULE COMPLETENESS** — every module must have spec data AND wireframes in HTML
396
- ```
397
- FOR each module in master.modules[]:
398
- IF FEATURE_DATA.moduleSpecs[module.code] is undefined:
399
- BLOCKING_ERROR("Module '${module.code}' missing from FEATURE_DATA.moduleSpecs")
400
- IF EMBEDDED_ARTIFACTS.wireframes[module.code] is undefined:
401
- BLOCKING_ERROR("Module '${module.code}' missing from EMBEDDED_ARTIFACTS.wireframes")
402
- IF module.featureJsonPath is null:
403
- BLOCKING_ERROR("Module '${module.code}' has no per-module feature.json (featureJsonPath is null)")
404
-
405
- expectedModules = master.modules.map(m => m.code).sort()
406
- specModules = Object.keys(FEATURE_DATA.moduleSpecs).sort()
407
- wireframeModules = Object.keys(EMBEDDED_ARTIFACTS.wireframes).sort()
408
-
409
- IF expectedModules.join(',') !== specModules.join(','):
410
- BLOCKING_ERROR("Module mismatch: expected [${expectedModules}] but moduleSpecs has [${specModules}]")
411
- IF expectedModules.join(',') !== wireframeModules.join(','):
412
- BLOCKING_ERROR("Module mismatch: expected [${expectedModules}] but wireframes has [${wireframeModules}]")
413
- ```
414
-
415
- 9. **MODULE DATA COMPLETENESS** — every module in FEATURE_DATA.modules[] must carry ALL fields from feature.json
416
- ```
417
- FOR each htmlModule in FEATURE_DATA.modules[]:
418
- masterModule = master.modules.find(m => m.code === htmlModule.code)
419
-
420
- // name MUST be display name, NOT code
421
- IF htmlModule.name === htmlModule.code AND masterModule.name !== masterModule.code:
422
- BLOCKING_ERROR("Module '${htmlModule.code}' has name === code. Expected: '${masterModule.name}'")
423
-
424
- // anticipatedSections MUST be present (drives Structure tab + navigation tree)
425
- IF masterModule.anticipatedSections?.length > 0 AND (!htmlModule.anticipatedSections OR htmlModule.anticipatedSections.length === 0):
426
- BLOCKING_ERROR("Module '${htmlModule.code}' lost anticipatedSections: master has ${masterModule.anticipatedSections.length}, HTML has 0")
427
- → FIX: Copy anticipatedSections from master.modules[].anticipatedSections
428
-
429
- // dependencies/dependents MUST be present (drives dependency graph)
430
- IF masterModule.dependencies?.length > 0 AND (!htmlModule.dependencies OR htmlModule.dependencies.length === 0):
431
- BLOCKING_ERROR("Module '${htmlModule.code}' lost dependencies array")
432
- ```
433
-
434
- Display verification table:
435
- ```
436
- POST-CHECK: Module data completeness
437
- | Module | name | sections | deps | wireframes | specs | Match |
438
- |----------------|---------|----------|------|------------|-------|-------|
439
- | {code} | {name} | {n} | {n} | {n} | OK | OK/FAIL |
440
- ```
441
-
442
- **IF ANY CHECK FAILS → DO NOT PROCEED. Fix the data mapping and regenerate.**
443
-
444
- ---
445
-
446
- ## COMPLETION
447
-
448
- > **IMPORTANT:** La BA ne lance JAMAIS /ralph-loop automatiquement.
449
- > Il peut y avoir une phase de revue/modification de la documentation entre les deux étapes.
450
- > L'utilisateur lance `/ralph-loop` manuellement quand il est prêt.
451
-
452
- Display completion using the template from `templates/tpl-launch-displays.md`:
453
-
454
- ```
455
- ═══════════════════════════════════════════════════════════════
456
- [OK] BUSINESS ANALYSE TERMINEE - {application_name OR project_name}
457
- ═══════════════════════════════════════════════════════════════
458
-
459
- {IF workflow.mode === "project":}
460
- Project: {project_name}
461
- Apps: {app_count} ({app_names})
462
- {ENDIF}
463
- Modules: {count} ({names})
464
- Strategy: {strategy}
465
- Files: {total files across all modules}
466
- Tasks: {total tasks} ({core_count} CORE + {biz_count} business + {dev_count} development)
467
- Complexity: {complexity}
468
- Effort: {total_days} days ({total_hours} hours)
469
-
470
- [DIR] Artefacts générés:
471
- ✓ feature.json ({IF project: "project + " ENDIF}master + per-module) - spécification complète
472
- ✓ .ralph/prd-{module}.json - task breakdown per module
473
- {IF workflow.mode === "project":}
474
- ✓ .ralph/prd-CrossApplication.json - cross-application integration tests
475
- {ENDIF}
476
- ✓ .ralph/progress.txt - tracker de progression
477
- ✓ ba-interactive.html - document de revue interactif
478
-
479
- [TARGET] Prochaines étapes:
480
- 1. Ouvrir ba-interactive.html dans le navigateur
481
- 2. Partager avec les stakeholders pour validation
482
- 3. Si retours --> relancer /business-analyse pour une nouvelle itération
483
- 4. Validation qualité ULTRATHINK (automatique):
484
-
485
- → Lancement automatique de step-05c-ralph-readiness.md...
486
-
487
- 5. Une fois validé, lancer le développement:
488
-
489
- /ralph-loop
490
-
491
- Note: /ralph-loop -r sert UNIQUEMENT à reprendre une boucle interrompue.
492
- Après un /business-analyse, toujours utiliser /ralph-loop (sans -r).
493
-
494
- ═══════════════════════════════════════════════════════════════
495
- ```
496
-
497
- ---
498
-
499
- ## NEXT STEP
500
-
501
- **MANDATORY:** Load `steps/step-05c-ralph-readiness.md` — ULTRATHINK quality review & readiness gate.
502
-
503
- > **This step is NON-NEGOTIABLE.** The BA skill MUST run step-05c before completing.
504
- > DO NOT skip this step. DO NOT display a "done" message without running step-05c first.
505
-
506
- This validation ensures:
507
- - ULTRATHINK deep quality review of the entire BA output
508
- - All module handoffs are complete and content is coherent
509
- - PRD files are structurally valid
510
- - Cross-module references are resolvable
511
- - Specification quality meets production standards
512
- - No blocking issues before development
513
-
514
- ---
515
-
516
- ## MODE SUPPORT & TROUBLESHOOTING
517
-
518
- See [references/deploy-modes.md](../references/deploy-modes.md) for:
519
- - **Standard Mode** — full handoff (all 7 categories, complete mapping)
520
- - **Micro Mode** — simplified CRUD (3 core SeedData, lightweight)
521
- - **Delta Mode** — refactoring focus (affected modules only)
522
- - **Troubleshooting** — 12 common issues with resolutions