@atlashub/smartstack-cli 3.39.0 → 3.40.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 (471) hide show
  1. package/.documentation/apex.html +644 -644
  2. package/.documentation/css/styles.css +2320 -2320
  3. package/.documentation/init.html +1377 -1377
  4. package/.documentation/js/app.js +780 -780
  5. package/.documentation/prd-json-v2.0.0.md +396 -396
  6. package/.documentation/testing-ba-e2e.md +462 -462
  7. package/config/default-config.json +95 -95
  8. package/config/mcp-defaults.json +62 -62
  9. package/config/settings.json +53 -53
  10. package/config/settings.local.example.json +16 -16
  11. package/dist/index.js.map +1 -1
  12. package/dist/mcp-entry.mjs +6 -4
  13. package/dist/mcp-entry.mjs.map +1 -1
  14. package/package.json +115 -115
  15. package/scripts/extract-api-endpoints.ts +325 -325
  16. package/scripts/extract-business-rules.ts +440 -440
  17. package/scripts/generate-doc-with-mock-ui.ts +804 -804
  18. package/scripts/health-check.sh +168 -168
  19. package/scripts/postinstall.js +18 -18
  20. package/templates/agents/action.md +37 -37
  21. package/templates/agents/ba-reader.md +378 -378
  22. package/templates/agents/ba-writer.md +861 -861
  23. package/templates/agents/code-reviewer.md +163 -163
  24. package/templates/agents/db-reader.md +149 -149
  25. package/templates/agents/docs-context-reader.md +143 -143
  26. package/templates/agents/docs-sync-checker.md +122 -122
  27. package/templates/agents/efcore/conflicts.md +84 -84
  28. package/templates/agents/efcore/db-deploy.md +74 -74
  29. package/templates/agents/efcore/db-reset.md +85 -85
  30. package/templates/agents/efcore/db-seed.md +61 -61
  31. package/templates/agents/efcore/db-status.md +86 -86
  32. package/templates/agents/efcore/migration.md +186 -186
  33. package/templates/agents/efcore/rebase-snapshot.md +108 -108
  34. package/templates/agents/efcore/scan.md +92 -92
  35. package/templates/agents/efcore/squash.md +161 -161
  36. package/templates/agents/explore-codebase.md +66 -66
  37. package/templates/agents/explore-docs.md +98 -98
  38. package/templates/agents/fix-grammar.md +50 -50
  39. package/templates/agents/gitflow/abort.md +45 -45
  40. package/templates/agents/gitflow/cleanup.md +96 -96
  41. package/templates/agents/gitflow/commit.md +236 -236
  42. package/templates/agents/gitflow/exec.md +48 -48
  43. package/templates/agents/gitflow/finish.md +146 -146
  44. package/templates/agents/gitflow/init-clone.md +199 -199
  45. package/templates/agents/gitflow/init-detect.md +137 -137
  46. package/templates/agents/gitflow/init-validate.md +225 -225
  47. package/templates/agents/gitflow/init.md +340 -340
  48. package/templates/agents/gitflow/merge.md +145 -145
  49. package/templates/agents/gitflow/plan.md +42 -42
  50. package/templates/agents/gitflow/pr.md +191 -191
  51. package/templates/agents/gitflow/review.md +49 -49
  52. package/templates/agents/gitflow/start.md +147 -147
  53. package/templates/agents/gitflow/status.md +95 -95
  54. package/templates/agents/mcp-healthcheck.md +163 -163
  55. package/templates/agents/snipper.md +37 -37
  56. package/templates/agents/websearch.md +46 -46
  57. package/templates/hooks/appsettings-guard.sh +76 -76
  58. package/templates/hooks/docs-drift-check.md +96 -96
  59. package/templates/hooks/ef-migration-check.md +139 -139
  60. package/templates/hooks/hooks.json +58 -58
  61. package/templates/hooks/mcp-check.md +64 -64
  62. package/templates/hooks/ralph-mcp-logger.sh +46 -46
  63. package/templates/hooks/ralph-session-end.sh +69 -69
  64. package/templates/hooks/stop-hook.sh +177 -177
  65. package/templates/hooks/wsl-dotnet-cleanup.sh +24 -24
  66. package/templates/mcp-scaffolding/component.tsx.hbs +318 -318
  67. package/templates/mcp-scaffolding/controller.cs.hbs +192 -192
  68. package/templates/mcp-scaffolding/entity-extension.cs.hbs +239 -239
  69. package/templates/mcp-scaffolding/frontend/api-client.ts.hbs +116 -116
  70. package/templates/mcp-scaffolding/frontend/nav-routes.ts.hbs +133 -133
  71. package/templates/mcp-scaffolding/frontend/routes.tsx.hbs +126 -126
  72. package/templates/mcp-scaffolding/migrations/seed-roles.cs.hbs +261 -261
  73. package/templates/mcp-scaffolding/service-extension.cs.hbs +53 -53
  74. package/templates/mcp-scaffolding/tests/controller.test.cs.hbs +436 -436
  75. package/templates/mcp-scaffolding/tests/entity.test.cs.hbs +239 -239
  76. package/templates/mcp-scaffolding/tests/repository.test.cs.hbs +441 -441
  77. package/templates/mcp-scaffolding/tests/security.test.cs.hbs +442 -442
  78. package/templates/mcp-scaffolding/tests/service.test.cs.hbs +402 -402
  79. package/templates/mcp-scaffolding/tests/validator.test.cs.hbs +428 -428
  80. package/templates/project/DependencyInjection.Application.cs.template +25 -25
  81. package/templates/project/DependencyInjection.Infrastructure.cs.template +61 -61
  82. package/templates/project/DesignTimeExtensionsDbContextFactory.cs.template +70 -70
  83. package/templates/project/ExampleEntity.cs.template +116 -116
  84. package/templates/project/ExampleEntityConfiguration.cs.template +64 -64
  85. package/templates/project/ExampleService.cs.template +146 -146
  86. package/templates/project/ExtensionsDbContext.cs.template +41 -41
  87. package/templates/project/IExtensionsDbContext.cs.template +22 -22
  88. package/templates/project/Program.cs.template +47 -47
  89. package/templates/project/README.md +79 -79
  90. package/templates/project/api.ts.template +12 -12
  91. package/templates/project/appsettings.json.template +170 -170
  92. package/templates/project/claude-settings.json.template +5 -5
  93. package/templates/project/test-frontend/msw/handlers.ts +58 -58
  94. package/templates/project/test-frontend/msw/server.ts +25 -25
  95. package/templates/project/test-frontend/setup.ts +16 -16
  96. package/templates/project/test-frontend/test-utils.tsx +59 -59
  97. package/templates/project/test-frontend/vitest.config.ts +31 -31
  98. package/templates/ralph/README.md +93 -93
  99. package/templates/ralph/ralph.config.yaml +113 -113
  100. package/templates/scripts/setup-ralph-loop.sh +173 -173
  101. package/templates/skills/_resources/config-safety.md +61 -61
  102. package/templates/skills/_resources/context-digest-template.md +53 -53
  103. package/templates/skills/_resources/doc-context-cache.md +60 -60
  104. package/templates/skills/_resources/docs-manifest-schema.md +155 -155
  105. package/templates/skills/_resources/formatting-guide.md +124 -124
  106. package/templates/skills/_resources/mcp-validate-documentation-spec.md +181 -181
  107. package/templates/skills/_shared.md +228 -228
  108. package/templates/skills/admin/SKILL.md +48 -48
  109. package/templates/skills/ai-prompt/SKILL.md +107 -107
  110. package/templates/skills/ai-prompt/steps/step-00-init.md +47 -47
  111. package/templates/skills/ai-prompt/steps/step-01-implementation.md +122 -122
  112. package/templates/skills/apex/SKILL.md +168 -168
  113. package/templates/skills/apex/_shared.md +141 -141
  114. package/templates/skills/apex/references/agent-teams-protocol.md +164 -164
  115. package/templates/skills/apex/references/analysis-methods.md +141 -141
  116. package/templates/skills/apex/references/challenge-questions.md +145 -145
  117. package/templates/skills/apex/references/code-generation.md +412 -412
  118. package/templates/skills/apex/references/core-seed-data.md +1437 -1437
  119. package/templates/skills/apex/references/error-classification.md +144 -144
  120. package/templates/skills/apex/references/examine-build-validation.md +82 -82
  121. package/templates/skills/apex/references/execution-frontend-gates.md +177 -177
  122. package/templates/skills/apex/references/execution-frontend-patterns.md +105 -105
  123. package/templates/skills/apex/references/execution-layer1-rules.md +96 -96
  124. package/templates/skills/apex/references/initialization-challenge-flow.md +110 -110
  125. package/templates/skills/apex/references/planning-layer-mapping.md +151 -151
  126. package/templates/skills/apex/references/post-checks.md +1584 -1584
  127. package/templates/skills/apex/references/smartstack-api.md +1053 -1053
  128. package/templates/skills/apex/references/smartstack-frontend.md +1571 -1571
  129. package/templates/skills/apex/references/smartstack-layers.md +402 -402
  130. package/templates/skills/apex/steps/step-00-init.md +307 -307
  131. package/templates/skills/apex/steps/step-01-analyze.md +165 -165
  132. package/templates/skills/apex/steps/step-02-plan.md +144 -144
  133. package/templates/skills/apex/steps/step-03-execute.md +328 -328
  134. package/templates/skills/apex/steps/step-04-examine.md +263 -263
  135. package/templates/skills/apex/steps/step-05-deep-review.md +129 -129
  136. package/templates/skills/apex/steps/step-06-resolve.md +101 -101
  137. package/templates/skills/apex/steps/step-07-tests.md +238 -238
  138. package/templates/skills/apex/steps/step-08-run-tests.md +125 -125
  139. package/templates/skills/application/SKILL.md +4 -4
  140. package/templates/skills/application/references/application-roles-template.md +227 -227
  141. package/templates/skills/application/references/backend-controller-hierarchy.md +58 -58
  142. package/templates/skills/application/references/backend-entity-seeding.md +72 -72
  143. package/templates/skills/application/references/backend-seeding-and-dto-output.md +83 -83
  144. package/templates/skills/application/references/backend-table-prefix-mapping.md +79 -79
  145. package/templates/skills/application/references/backend-verification.md +88 -88
  146. package/templates/skills/application/references/frontend-i18n-and-output.md +67 -67
  147. package/templates/skills/application/references/frontend-route-naming.md +117 -117
  148. package/templates/skills/application/references/frontend-route-wiring-app-tsx.md +107 -107
  149. package/templates/skills/application/references/frontend-verification.md +156 -156
  150. package/templates/skills/application/references/migration-checklist-troubleshooting.md +1 -1
  151. package/templates/skills/application/references/provider-template.md +177 -177
  152. package/templates/skills/application/references/roles-client-project-handling.md +55 -55
  153. package/templates/skills/application/references/roles-fallback-procedure.md +149 -149
  154. package/templates/skills/application/references/test-coverage-requirements.md +213 -213
  155. package/templates/skills/application/references/test-frontend.md +73 -73
  156. package/templates/skills/application/references/test-prerequisites.md +72 -72
  157. package/templates/skills/application/steps/step-05-frontend.md +176 -176
  158. package/templates/skills/application/steps/step-06-migration.md +193 -193
  159. package/templates/skills/application/steps/step-07-tests.md +356 -356
  160. package/templates/skills/application/steps/step-08-documentation.md +137 -137
  161. package/templates/skills/application/templates-backend.md +463 -463
  162. package/templates/skills/application/templates-frontend.md +685 -685
  163. package/templates/skills/application/templates-i18n.md +520 -520
  164. package/templates/skills/application/templates-seed.md +1096 -1096
  165. package/templates/skills/business-analyse/SKILL.md +327 -327
  166. package/templates/skills/business-analyse/_architecture.md +123 -123
  167. package/templates/skills/business-analyse/_elicitation.md +206 -206
  168. package/templates/skills/business-analyse/_module-loop.md +115 -115
  169. package/templates/skills/business-analyse/_shared.md +383 -383
  170. package/templates/skills/business-analyse/_suggestions.md +34 -34
  171. package/templates/skills/business-analyse/html/ba-interactive.html +4477 -4477
  172. package/templates/skills/business-analyse/html/build-html.js +77 -77
  173. package/templates/skills/business-analyse/html/src/scripts/01-data-init.js +150 -150
  174. package/templates/skills/business-analyse/html/src/scripts/02-navigation.js +227 -227
  175. package/templates/skills/business-analyse/html/src/scripts/03-render-cadrage.js +199 -199
  176. package/templates/skills/business-analyse/html/src/scripts/04-render-modules.js +205 -205
  177. package/templates/skills/business-analyse/html/src/scripts/05-render-specs.js +647 -647
  178. package/templates/skills/business-analyse/html/src/scripts/06-render-consolidation.js +195 -195
  179. package/templates/skills/business-analyse/html/src/scripts/07-render-handoff.js +92 -92
  180. package/templates/skills/business-analyse/html/src/scripts/08-editing.js +135 -135
  181. package/templates/skills/business-analyse/html/src/scripts/09-export.js +168 -168
  182. package/templates/skills/business-analyse/html/src/scripts/10-comments.js +171 -171
  183. package/templates/skills/business-analyse/html/src/scripts/11-review-panel.js +166 -166
  184. package/templates/skills/business-analyse/html/src/styles/01-variables.css +38 -38
  185. package/templates/skills/business-analyse/html/src/styles/02-layout.css +101 -101
  186. package/templates/skills/business-analyse/html/src/styles/03-navigation.css +120 -120
  187. package/templates/skills/business-analyse/html/src/styles/04-cards.css +196 -196
  188. package/templates/skills/business-analyse/html/src/styles/05-modules.css +454 -454
  189. package/templates/skills/business-analyse/html/src/styles/06-wireframes.css +272 -272
  190. package/templates/skills/business-analyse/html/src/styles/07-comments.css +184 -184
  191. package/templates/skills/business-analyse/html/src/styles/08-review-panel.css +241 -241
  192. package/templates/skills/business-analyse/html/src/template.html +516 -516
  193. package/templates/skills/business-analyse/patterns/suggestion-catalog.md +546 -546
  194. package/templates/skills/business-analyse/questionnaire/00-application.md +160 -160
  195. package/templates/skills/business-analyse/questionnaire/00b-project.md +85 -85
  196. package/templates/skills/business-analyse/questionnaire/01-context.md +185 -185
  197. package/templates/skills/business-analyse/questionnaire/02-stakeholders.md +189 -189
  198. package/templates/skills/business-analyse/questionnaire/03-scope.md +164 -164
  199. package/templates/skills/business-analyse/questionnaire/04-data.md +88 -88
  200. package/templates/skills/business-analyse/questionnaire/05-integrations.md +58 -58
  201. package/templates/skills/business-analyse/questionnaire/06-security.md +68 -68
  202. package/templates/skills/business-analyse/questionnaire/07-ui.md +76 -76
  203. package/templates/skills/business-analyse/questionnaire/08-performance.md +42 -42
  204. package/templates/skills/business-analyse/questionnaire/09-constraints.md +45 -45
  205. package/templates/skills/business-analyse/questionnaire/10-documentation.md +43 -43
  206. package/templates/skills/business-analyse/questionnaire/11-data-lifecycle.md +59 -59
  207. package/templates/skills/business-analyse/questionnaire/12-migration.md +58 -58
  208. package/templates/skills/business-analyse/questionnaire/13-cross-module.md +69 -69
  209. package/templates/skills/business-analyse/questionnaire/14-risk-assumptions.md +135 -135
  210. package/templates/skills/business-analyse/questionnaire/15-success-metrics.md +136 -136
  211. package/templates/skills/business-analyse/questionnaire.md +337 -337
  212. package/templates/skills/business-analyse/react/application-viewer.md +242 -242
  213. package/templates/skills/business-analyse/react/components.md +551 -551
  214. package/templates/skills/business-analyse/react/i18n-template.md +306 -306
  215. package/templates/skills/business-analyse/references/acceptance-criteria.md +169 -169
  216. package/templates/skills/business-analyse/references/agent-module-prompt.md +362 -362
  217. package/templates/skills/business-analyse/references/agent-pooling-best-practices.md +557 -557
  218. package/templates/skills/business-analyse/references/analysis-semantic-checks.md +190 -190
  219. package/templates/skills/business-analyse/references/cache-warming-strategy.md +566 -566
  220. package/templates/skills/business-analyse/references/cadrage-challenge-patterns.md +41 -41
  221. package/templates/skills/business-analyse/references/cadrage-coverage-matrix.md +74 -74
  222. package/templates/skills/business-analyse/references/cadrage-pre-analysis.md +115 -115
  223. package/templates/skills/business-analyse/references/cadrage-shared-modules.md +68 -69
  224. package/templates/skills/business-analyse/references/cadrage-structure-cards.md +85 -85
  225. package/templates/skills/business-analyse/references/compilation-structure-cards.md +297 -297
  226. package/templates/skills/business-analyse/references/consolidation-structural-checks.md +107 -107
  227. package/templates/skills/business-analyse/references/deploy-data-build.md +180 -180
  228. package/templates/skills/business-analyse/references/deploy-modes.md +118 -118
  229. package/templates/skills/business-analyse/references/detection-strategies.md +424 -424
  230. package/templates/skills/business-analyse/references/entity-architecture-decision.md +218 -218
  231. package/templates/skills/business-analyse/references/handoff-file-templates.md +120 -120
  232. package/templates/skills/business-analyse/references/handoff-mappings.md +81 -81
  233. package/templates/skills/business-analyse/references/handoff-seeddata-generation.md +312 -312
  234. package/templates/skills/business-analyse/references/html-data-mapping.md +299 -299
  235. package/templates/skills/business-analyse/references/init-schema-deployment.md +65 -65
  236. package/templates/skills/business-analyse/references/naming-conventions.md +243 -243
  237. package/templates/skills/business-analyse/references/prd-generation.md +258 -258
  238. package/templates/skills/business-analyse/references/review-data-mapping.md +363 -363
  239. package/templates/skills/business-analyse/references/robustness-checks.md +542 -542
  240. package/templates/skills/business-analyse/references/spec-auto-inference.md +111 -111
  241. package/templates/skills/business-analyse/references/team-orchestration.md +1022 -1022
  242. package/templates/skills/business-analyse/references/ui-dashboard-spec.md +85 -85
  243. package/templates/skills/business-analyse/references/ui-resource-cards.md +259 -259
  244. package/templates/skills/business-analyse/references/validate-incremental-html.md +121 -121
  245. package/templates/skills/business-analyse/references/validation-checklist.md +347 -347
  246. package/templates/skills/business-analyse/references/wireframe-svg-style-guide.md +335 -335
  247. package/templates/skills/business-analyse/schemas/application-schema.json +453 -453
  248. package/templates/skills/business-analyse/schemas/feature-schema.json +53 -53
  249. package/templates/skills/business-analyse/schemas/project-schema.json +485 -485
  250. package/templates/skills/business-analyse/schemas/sections/analysis-schema.json +201 -201
  251. package/templates/skills/business-analyse/schemas/sections/discovery-schema.json +82 -82
  252. package/templates/skills/business-analyse/schemas/sections/handoff-schema.json +80 -80
  253. package/templates/skills/business-analyse/schemas/sections/metadata-schema.json +70 -70
  254. package/templates/skills/business-analyse/schemas/sections/specification-schema.json +547 -547
  255. package/templates/skills/business-analyse/schemas/sections/validation-schema.json +93 -93
  256. package/templates/skills/business-analyse/schemas/shared/common-defs.json +226 -226
  257. package/templates/skills/business-analyse/steps/step-00-init.md +575 -576
  258. package/templates/skills/business-analyse/steps/step-01-cadrage.md +767 -767
  259. package/templates/skills/business-analyse/steps/step-01b-applications.md +419 -419
  260. package/templates/skills/business-analyse/steps/step-02-decomposition.md +387 -387
  261. package/templates/skills/business-analyse/steps/step-03a-data.md +16 -16
  262. package/templates/skills/business-analyse/steps/step-03a1-setup.md +506 -506
  263. package/templates/skills/business-analyse/steps/step-03a2-analysis.md +252 -252
  264. package/templates/skills/business-analyse/steps/step-03b-ui.md +425 -425
  265. package/templates/skills/business-analyse/steps/step-03c-compile.md +611 -611
  266. package/templates/skills/business-analyse/steps/step-03d-validate.md +783 -783
  267. package/templates/skills/business-analyse/steps/step-04-consolidation.md +17 -17
  268. package/templates/skills/business-analyse/steps/step-04a-collect.md +415 -415
  269. package/templates/skills/business-analyse/steps/step-04b-analyze.md +163 -163
  270. package/templates/skills/business-analyse/steps/step-04c-decide.md +186 -186
  271. package/templates/skills/business-analyse/steps/step-05a-handoff.md +840 -840
  272. package/templates/skills/business-analyse/steps/step-05b-deploy.md +522 -522
  273. package/templates/skills/business-analyse/steps/step-05c-ralph-readiness.md +703 -703
  274. package/templates/skills/business-analyse/steps/step-06-review.md +278 -278
  275. package/templates/skills/business-analyse/templates/tpl-frd.md +168 -168
  276. package/templates/skills/business-analyse/templates/tpl-handoff.md +186 -186
  277. package/templates/skills/business-analyse/templates/tpl-launch-displays.md +59 -59
  278. package/templates/skills/business-analyse/templates/tpl-progress.md +172 -172
  279. package/templates/skills/business-analyse/templates-frd.md +476 -476
  280. package/templates/skills/business-analyse/templates-react.md +574 -574
  281. package/templates/skills/cc-agent/SKILL.md +129 -129
  282. package/templates/skills/cc-agent/references/agent-behavior-patterns.md +95 -95
  283. package/templates/skills/cc-agent/references/agent-frontmatter.md +213 -213
  284. package/templates/skills/cc-agent/references/permission-modes.md +102 -102
  285. package/templates/skills/cc-agent/references/tools-reference.md +144 -144
  286. package/templates/skills/cc-agent/steps/step-00-init.md +134 -134
  287. package/templates/skills/cc-agent/steps/step-01-design.md +186 -186
  288. package/templates/skills/cc-agent/steps/step-02-generate.md +131 -131
  289. package/templates/skills/cc-agent/steps/step-03-validate.md +130 -130
  290. package/templates/skills/cc-agent/templates/agent-categorized.md +67 -67
  291. package/templates/skills/cc-agent/templates/agent-standalone.md +56 -56
  292. package/templates/skills/cc-agent/templates/agent-with-skills.md +94 -94
  293. package/templates/skills/cc-audit/SKILL.md +108 -108
  294. package/templates/skills/cc-audit/references/agent-checklist.md +91 -91
  295. package/templates/skills/cc-audit/references/hook-checklist.md +110 -110
  296. package/templates/skills/cc-audit/references/skill-checklist.md +70 -70
  297. package/templates/skills/cc-audit/steps/step-00-init.md +98 -98
  298. package/templates/skills/cc-audit/steps/step-01-scan.md +142 -142
  299. package/templates/skills/cc-audit/steps/step-02-analyze.md +158 -158
  300. package/templates/skills/cc-audit/steps/step-03-report.md +142 -142
  301. package/templates/skills/cc-skill/SKILL.md +134 -134
  302. package/templates/skills/cc-skill/references/best-practices.md +167 -167
  303. package/templates/skills/cc-skill/references/frontmatter-reference.md +182 -182
  304. package/templates/skills/cc-skill/references/skill-patterns.md +199 -199
  305. package/templates/skills/cc-skill/steps/step-00-init.md +119 -119
  306. package/templates/skills/cc-skill/steps/step-01-design.md +199 -199
  307. package/templates/skills/cc-skill/steps/step-02-generate.md +145 -145
  308. package/templates/skills/cc-skill/steps/step-03-steps.md +151 -151
  309. package/templates/skills/cc-skill/steps/step-04-validate.md +124 -124
  310. package/templates/skills/cc-skill/templates/skill-forked.md +85 -85
  311. package/templates/skills/cc-skill/templates/skill-progressive.md +102 -102
  312. package/templates/skills/cc-skill/templates/skill-simple.md +75 -75
  313. package/templates/skills/cc-skill/templates/step-template.md +82 -82
  314. package/templates/skills/check-version/SKILL.md +196 -196
  315. package/templates/skills/controller/SKILL.md +162 -162
  316. package/templates/skills/controller/postman-templates.md +614 -614
  317. package/templates/skills/controller/references/controller-code-templates.md +159 -159
  318. package/templates/skills/controller/references/mcp-scaffold-workflow.md +209 -209
  319. package/templates/skills/controller/references/permission-sync-templates.md +149 -149
  320. package/templates/skills/controller/steps/step-00-init.md +193 -191
  321. package/templates/skills/controller/steps/step-01-analyze.md +146 -146
  322. package/templates/skills/controller/steps/step-02-plan.md +176 -176
  323. package/templates/skills/controller/steps/step-03-generate.md +189 -189
  324. package/templates/skills/controller/steps/step-04-perms.md +80 -80
  325. package/templates/skills/controller/steps/step-05-validate.md +107 -107
  326. package/templates/skills/controller/templates.md +1555 -1555
  327. package/templates/skills/debug/SKILL.md +70 -70
  328. package/templates/skills/debug/references/team-protocol.md +232 -232
  329. package/templates/skills/debug/steps/step-00-init.md +57 -57
  330. package/templates/skills/debug/steps/step-01-analyze.md +219 -219
  331. package/templates/skills/debug/steps/step-02-resolve.md +85 -85
  332. package/templates/skills/documentation/SKILL.md +132 -132
  333. package/templates/skills/documentation/data-schema.md +227 -227
  334. package/templates/skills/documentation/steps/step-00-init.md +70 -70
  335. package/templates/skills/documentation/steps/step-01-scan.md +113 -113
  336. package/templates/skills/documentation/steps/step-02-generate.md +231 -231
  337. package/templates/skills/documentation/steps/step-03-validate.md +251 -238
  338. package/templates/skills/documentation/templates.md +662 -663
  339. package/templates/skills/efcore/SKILL.md +167 -167
  340. package/templates/skills/efcore/references/both-contexts.md +32 -32
  341. package/templates/skills/efcore/references/database-operations.md +67 -67
  342. package/templates/skills/efcore/references/destructive-operations.md +38 -38
  343. package/templates/skills/efcore/references/reset-operations.md +81 -81
  344. package/templates/skills/efcore/references/seed-methods.md +86 -86
  345. package/templates/skills/efcore/references/shared-init-functions.md +250 -250
  346. package/templates/skills/efcore/references/sql-objects-injection.md +61 -61
  347. package/templates/skills/efcore/references/troubleshooting.md +81 -81
  348. package/templates/skills/efcore/references/zero-downtime-patterns.md +227 -227
  349. package/templates/skills/efcore/steps/db/step-deploy.md +217 -217
  350. package/templates/skills/efcore/steps/db/step-reset.md +186 -186
  351. package/templates/skills/efcore/steps/db/step-seed.md +166 -166
  352. package/templates/skills/efcore/steps/db/step-status.md +173 -173
  353. package/templates/skills/efcore/steps/migration/step-00-init.md +102 -102
  354. package/templates/skills/efcore/steps/migration/step-01-check.md +164 -164
  355. package/templates/skills/efcore/steps/migration/step-02-create.md +160 -160
  356. package/templates/skills/efcore/steps/migration/step-03-validate.md +168 -168
  357. package/templates/skills/efcore/steps/rebase-snapshot/step-00-init.md +173 -173
  358. package/templates/skills/efcore/steps/rebase-snapshot/step-01-backup.md +100 -100
  359. package/templates/skills/efcore/steps/rebase-snapshot/step-02-fetch.md +115 -115
  360. package/templates/skills/efcore/steps/rebase-snapshot/step-03-create.md +112 -112
  361. package/templates/skills/efcore/steps/rebase-snapshot/step-04-validate.md +157 -157
  362. package/templates/skills/efcore/steps/shared/step-00-init.md +131 -131
  363. package/templates/skills/efcore/steps/squash/step-00-init.md +141 -141
  364. package/templates/skills/efcore/steps/squash/step-01-backup.md +120 -120
  365. package/templates/skills/efcore/steps/squash/step-02-fetch.md +168 -168
  366. package/templates/skills/efcore/steps/squash/step-03-create.md +184 -184
  367. package/templates/skills/efcore/steps/squash/step-04-validate.md +174 -174
  368. package/templates/skills/explore/SKILL.md +98 -98
  369. package/templates/skills/feature-full/SKILL.md +111 -111
  370. package/templates/skills/feature-full/steps/step-00-init.md +57 -57
  371. package/templates/skills/feature-full/steps/step-01-implementation.md +120 -120
  372. package/templates/skills/gitflow/SKILL.md +377 -377
  373. package/templates/skills/gitflow/_shared.md +620 -620
  374. package/templates/skills/gitflow/phases/abort.md +189 -189
  375. package/templates/skills/gitflow/phases/cleanup.md +234 -234
  376. package/templates/skills/gitflow/phases/status.md +192 -192
  377. package/templates/skills/gitflow/references/commit-message-generation.md +58 -58
  378. package/templates/skills/gitflow/references/commit-migration-validation.md +49 -49
  379. package/templates/skills/gitflow/references/finish-cleanup.md +55 -55
  380. package/templates/skills/gitflow/references/finish-version-bumping.md +45 -45
  381. package/templates/skills/gitflow/references/init-config-template.md +135 -135
  382. package/templates/skills/gitflow/references/init-environment-detection.md +41 -41
  383. package/templates/skills/gitflow/references/init-name-normalization.md +103 -103
  384. package/templates/skills/gitflow/references/init-questions.md +185 -185
  385. package/templates/skills/gitflow/references/init-structure-creation.md +75 -75
  386. package/templates/skills/gitflow/references/init-version-detection.md +21 -21
  387. package/templates/skills/gitflow/references/init-workspace-detection.md +43 -43
  388. package/templates/skills/gitflow/references/merge-ci-status.md +36 -36
  389. package/templates/skills/gitflow/references/merge-execution.md +62 -62
  390. package/templates/skills/gitflow/references/merge-pr-context.md +76 -76
  391. package/templates/skills/gitflow/references/plan-template.md +69 -69
  392. package/templates/skills/gitflow/references/pr-build-checks.md +60 -60
  393. package/templates/skills/gitflow/references/pr-generation.md +58 -58
  394. package/templates/skills/gitflow/references/start-branch-normalization.md +28 -28
  395. package/templates/skills/gitflow/references/start-efcore-preflight.md +70 -70
  396. package/templates/skills/gitflow/references/start-local-config.md +113 -113
  397. package/templates/skills/gitflow/references/start-worktree-creation.md +50 -50
  398. package/templates/skills/gitflow/references/sync-push-verify.md +44 -44
  399. package/templates/skills/gitflow/references/sync-rebase-conflicts.md +38 -38
  400. package/templates/skills/gitflow/steps/step-commit.md +199 -199
  401. package/templates/skills/gitflow/steps/step-finish.md +147 -147
  402. package/templates/skills/gitflow/steps/step-init.md +190 -190
  403. package/templates/skills/gitflow/steps/step-merge.md +85 -85
  404. package/templates/skills/gitflow/steps/step-plan.md +151 -151
  405. package/templates/skills/gitflow/steps/step-pr.md +199 -199
  406. package/templates/skills/gitflow/steps/step-start.md +195 -195
  407. package/templates/skills/gitflow/steps/step-sync.md +161 -161
  408. package/templates/skills/gitflow/templates/config.json +72 -72
  409. package/templates/skills/mcp/SKILL.md +62 -62
  410. package/templates/skills/mcp/steps/step-01-healthcheck.md +108 -108
  411. package/templates/skills/mcp/steps/step-02-tools.md +73 -73
  412. package/templates/skills/notification/SKILL.md +173 -173
  413. package/templates/skills/quick-search/SKILL.md +99 -99
  414. package/templates/skills/ralph-loop/SKILL.md +234 -234
  415. package/templates/skills/ralph-loop/references/category-completeness.md +185 -185
  416. package/templates/skills/ralph-loop/references/category-rules.md +96 -96
  417. package/templates/skills/ralph-loop/references/compact-loop.md +300 -300
  418. package/templates/skills/ralph-loop/references/init-resume-recovery.md +127 -127
  419. package/templates/skills/ralph-loop/references/module-transition.md +151 -151
  420. package/templates/skills/ralph-loop/references/multi-module-queue.md +171 -171
  421. package/templates/skills/ralph-loop/references/parallel-execution.md +246 -246
  422. package/templates/skills/ralph-loop/references/section-splitting.md +439 -439
  423. package/templates/skills/ralph-loop/references/task-transform-legacy.md +256 -256
  424. package/templates/skills/ralph-loop/references/team-orchestration.md +547 -547
  425. package/templates/skills/ralph-loop/steps/step-00-init.md +150 -150
  426. package/templates/skills/ralph-loop/steps/step-01-task.md +174 -174
  427. package/templates/skills/ralph-loop/steps/step-02-execute.md +177 -177
  428. package/templates/skills/ralph-loop/steps/step-03-commit.md +92 -92
  429. package/templates/skills/ralph-loop/steps/step-04-check.md +207 -207
  430. package/templates/skills/ralph-loop/steps/step-05-report.md +175 -175
  431. package/templates/skills/refactor/SKILL.md +56 -56
  432. package/templates/skills/refactor/steps/step-01-discover.md +60 -60
  433. package/templates/skills/refactor/steps/step-02-execute.md +67 -67
  434. package/templates/skills/review-code/SKILL.md +94 -94
  435. package/templates/skills/review-code/references/clean-code-principles.md +292 -292
  436. package/templates/skills/review-code/references/code-quality-metrics.md +174 -174
  437. package/templates/skills/review-code/references/feedback-patterns.md +149 -149
  438. package/templates/skills/review-code/references/owasp-api-top10.md +243 -243
  439. package/templates/skills/review-code/references/security-checklist.md +212 -212
  440. package/templates/skills/review-code/steps/step-01-smartstack.md +96 -96
  441. package/templates/skills/review-code/steps/step-02-detailed-review.md +80 -80
  442. package/templates/skills/review-code/steps/step-03-react.md +44 -44
  443. package/templates/skills/ui-components/SKILL.md +137 -137
  444. package/templates/skills/ui-components/accessibility.md +170 -170
  445. package/templates/skills/ui-components/patterns/dashboard-chart.md +327 -327
  446. package/templates/skills/ui-components/patterns/data-table.md +39 -39
  447. package/templates/skills/ui-components/patterns/entity-card.md +77 -77
  448. package/templates/skills/ui-components/patterns/grid-layout.md +91 -91
  449. package/templates/skills/ui-components/patterns/kanban.md +43 -43
  450. package/templates/skills/ui-components/responsive-guidelines.md +278 -278
  451. package/templates/skills/ui-components/style-guide.md +113 -113
  452. package/templates/skills/utils/SKILL.md +44 -44
  453. package/templates/skills/utils/subcommands/test-web-config.md +152 -152
  454. package/templates/skills/utils/subcommands/test-web.md +123 -123
  455. package/templates/skills/validate/SKILL.md +181 -181
  456. package/templates/skills/validate-feature/SKILL.md +101 -101
  457. package/templates/skills/validate-feature/references/api-smoke-tests.md +140 -140
  458. package/templates/skills/validate-feature/references/db-validation-checks.md +180 -180
  459. package/templates/skills/validate-feature/steps/step-00-dependencies.md +121 -121
  460. package/templates/skills/validate-feature/steps/step-01-compile.md +39 -39
  461. package/templates/skills/validate-feature/steps/step-02-unit-tests.md +45 -45
  462. package/templates/skills/validate-feature/steps/step-03-integration-tests.md +53 -53
  463. package/templates/skills/validate-feature/steps/step-04-api-smoke.md +94 -94
  464. package/templates/skills/validate-feature/steps/step-05-db-validation.md +149 -149
  465. package/templates/skills/workflow/SKILL.md +127 -127
  466. package/templates/skills/workflow/steps/step-00-init.md +57 -57
  467. package/templates/skills/workflow/steps/step-01-implementation.md +84 -84
  468. package/templates/test-web/api-health.json +38 -38
  469. package/templates/test-web/minimal.json +19 -19
  470. package/templates/test-web/npm-package.json +46 -46
  471. package/templates/test-web/seo-check.json +54 -54
@@ -1,522 +1,522 @@
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
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