@atlashub/smartstack-cli 3.39.0 → 3.41.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 (472) 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 +6 -3
  12. package/dist/index.js.map +1 -1
  13. package/dist/mcp-entry.mjs +6 -4
  14. package/dist/mcp-entry.mjs.map +1 -1
  15. package/package.json +115 -115
  16. package/scripts/extract-api-endpoints.ts +325 -325
  17. package/scripts/extract-business-rules.ts +440 -440
  18. package/scripts/generate-doc-with-mock-ui.ts +804 -804
  19. package/scripts/health-check.sh +168 -168
  20. package/scripts/postinstall.js +18 -18
  21. package/templates/agents/action.md +37 -37
  22. package/templates/agents/ba-reader.md +378 -378
  23. package/templates/agents/ba-writer.md +861 -861
  24. package/templates/agents/code-reviewer.md +163 -163
  25. package/templates/agents/db-reader.md +149 -149
  26. package/templates/agents/docs-context-reader.md +143 -143
  27. package/templates/agents/docs-sync-checker.md +122 -122
  28. package/templates/agents/efcore/conflicts.md +95 -84
  29. package/templates/agents/efcore/db-deploy.md +85 -74
  30. package/templates/agents/efcore/db-reset.md +96 -85
  31. package/templates/agents/efcore/db-seed.md +72 -61
  32. package/templates/agents/efcore/db-status.md +97 -86
  33. package/templates/agents/efcore/migration.md +197 -186
  34. package/templates/agents/efcore/rebase-snapshot.md +119 -108
  35. package/templates/agents/efcore/scan.md +103 -92
  36. package/templates/agents/efcore/squash.md +172 -161
  37. package/templates/agents/explore-codebase.md +66 -66
  38. package/templates/agents/explore-docs.md +98 -98
  39. package/templates/agents/fix-grammar.md +50 -50
  40. package/templates/agents/gitflow/abort.md +45 -45
  41. package/templates/agents/gitflow/cleanup.md +96 -96
  42. package/templates/agents/gitflow/commit.md +236 -236
  43. package/templates/agents/gitflow/exec.md +48 -48
  44. package/templates/agents/gitflow/finish.md +146 -146
  45. package/templates/agents/gitflow/init-clone.md +199 -199
  46. package/templates/agents/gitflow/init-detect.md +137 -137
  47. package/templates/agents/gitflow/init-validate.md +225 -225
  48. package/templates/agents/gitflow/init.md +340 -340
  49. package/templates/agents/gitflow/merge.md +145 -145
  50. package/templates/agents/gitflow/plan.md +42 -42
  51. package/templates/agents/gitflow/pr.md +191 -191
  52. package/templates/agents/gitflow/review.md +49 -49
  53. package/templates/agents/gitflow/start.md +147 -147
  54. package/templates/agents/gitflow/status.md +95 -95
  55. package/templates/agents/mcp-healthcheck.md +163 -163
  56. package/templates/agents/snipper.md +37 -37
  57. package/templates/agents/websearch.md +46 -46
  58. package/templates/hooks/appsettings-guard.sh +76 -76
  59. package/templates/hooks/docs-drift-check.md +96 -96
  60. package/templates/hooks/ef-migration-check.md +139 -139
  61. package/templates/hooks/hooks.json +58 -58
  62. package/templates/hooks/mcp-check.md +64 -64
  63. package/templates/hooks/ralph-mcp-logger.sh +46 -46
  64. package/templates/hooks/ralph-session-end.sh +69 -69
  65. package/templates/hooks/stop-hook.sh +177 -177
  66. package/templates/hooks/wsl-dotnet-cleanup.sh +24 -24
  67. package/templates/mcp-scaffolding/component.tsx.hbs +318 -318
  68. package/templates/mcp-scaffolding/controller.cs.hbs +192 -192
  69. package/templates/mcp-scaffolding/entity-extension.cs.hbs +239 -239
  70. package/templates/mcp-scaffolding/frontend/api-client.ts.hbs +116 -116
  71. package/templates/mcp-scaffolding/frontend/nav-routes.ts.hbs +133 -133
  72. package/templates/mcp-scaffolding/frontend/routes.tsx.hbs +126 -126
  73. package/templates/mcp-scaffolding/migrations/seed-roles.cs.hbs +261 -261
  74. package/templates/mcp-scaffolding/service-extension.cs.hbs +53 -53
  75. package/templates/mcp-scaffolding/tests/controller.test.cs.hbs +436 -436
  76. package/templates/mcp-scaffolding/tests/entity.test.cs.hbs +239 -239
  77. package/templates/mcp-scaffolding/tests/repository.test.cs.hbs +441 -441
  78. package/templates/mcp-scaffolding/tests/security.test.cs.hbs +442 -442
  79. package/templates/mcp-scaffolding/tests/service.test.cs.hbs +402 -402
  80. package/templates/mcp-scaffolding/tests/validator.test.cs.hbs +428 -428
  81. package/templates/project/DependencyInjection.Application.cs.template +25 -25
  82. package/templates/project/DependencyInjection.Infrastructure.cs.template +61 -61
  83. package/templates/project/DesignTimeExtensionsDbContextFactory.cs.template +70 -70
  84. package/templates/project/ExampleEntity.cs.template +116 -116
  85. package/templates/project/ExampleEntityConfiguration.cs.template +64 -64
  86. package/templates/project/ExampleService.cs.template +146 -146
  87. package/templates/project/ExtensionsDbContext.cs.template +41 -41
  88. package/templates/project/IExtensionsDbContext.cs.template +22 -22
  89. package/templates/project/Program.cs.template +47 -47
  90. package/templates/project/README.md +79 -79
  91. package/templates/project/api.ts.template +12 -12
  92. package/templates/project/appsettings.json.template +170 -170
  93. package/templates/project/claude-settings.json.template +5 -5
  94. package/templates/project/test-frontend/msw/handlers.ts +58 -58
  95. package/templates/project/test-frontend/msw/server.ts +25 -25
  96. package/templates/project/test-frontend/setup.ts +16 -16
  97. package/templates/project/test-frontend/test-utils.tsx +59 -59
  98. package/templates/project/test-frontend/vitest.config.ts +31 -31
  99. package/templates/ralph/README.md +93 -93
  100. package/templates/ralph/ralph.config.yaml +113 -113
  101. package/templates/scripts/setup-ralph-loop.sh +173 -173
  102. package/templates/skills/_resources/config-safety.md +61 -61
  103. package/templates/skills/_resources/context-digest-template.md +53 -53
  104. package/templates/skills/_resources/doc-context-cache.md +60 -60
  105. package/templates/skills/_resources/docs-manifest-schema.md +155 -155
  106. package/templates/skills/_resources/formatting-guide.md +124 -124
  107. package/templates/skills/_resources/mcp-validate-documentation-spec.md +181 -181
  108. package/templates/skills/_shared.md +228 -228
  109. package/templates/skills/admin/SKILL.md +48 -48
  110. package/templates/skills/ai-prompt/SKILL.md +107 -107
  111. package/templates/skills/ai-prompt/steps/step-00-init.md +47 -47
  112. package/templates/skills/ai-prompt/steps/step-01-implementation.md +122 -122
  113. package/templates/skills/apex/SKILL.md +168 -168
  114. package/templates/skills/apex/_shared.md +141 -141
  115. package/templates/skills/apex/references/agent-teams-protocol.md +164 -164
  116. package/templates/skills/apex/references/analysis-methods.md +141 -141
  117. package/templates/skills/apex/references/challenge-questions.md +145 -145
  118. package/templates/skills/apex/references/code-generation.md +412 -412
  119. package/templates/skills/apex/references/core-seed-data.md +1437 -1437
  120. package/templates/skills/apex/references/error-classification.md +144 -144
  121. package/templates/skills/apex/references/examine-build-validation.md +82 -82
  122. package/templates/skills/apex/references/execution-frontend-gates.md +177 -177
  123. package/templates/skills/apex/references/execution-frontend-patterns.md +105 -105
  124. package/templates/skills/apex/references/execution-layer1-rules.md +96 -96
  125. package/templates/skills/apex/references/initialization-challenge-flow.md +110 -110
  126. package/templates/skills/apex/references/planning-layer-mapping.md +151 -151
  127. package/templates/skills/apex/references/post-checks.md +1584 -1584
  128. package/templates/skills/apex/references/smartstack-api.md +1053 -1053
  129. package/templates/skills/apex/references/smartstack-frontend.md +1571 -1571
  130. package/templates/skills/apex/references/smartstack-layers.md +402 -402
  131. package/templates/skills/apex/steps/step-00-init.md +307 -307
  132. package/templates/skills/apex/steps/step-01-analyze.md +165 -165
  133. package/templates/skills/apex/steps/step-02-plan.md +144 -144
  134. package/templates/skills/apex/steps/step-03-execute.md +328 -328
  135. package/templates/skills/apex/steps/step-04-examine.md +263 -263
  136. package/templates/skills/apex/steps/step-05-deep-review.md +129 -129
  137. package/templates/skills/apex/steps/step-06-resolve.md +101 -101
  138. package/templates/skills/apex/steps/step-07-tests.md +238 -238
  139. package/templates/skills/apex/steps/step-08-run-tests.md +125 -125
  140. package/templates/skills/application/SKILL.md +4 -4
  141. package/templates/skills/application/references/application-roles-template.md +227 -227
  142. package/templates/skills/application/references/backend-controller-hierarchy.md +58 -58
  143. package/templates/skills/application/references/backend-entity-seeding.md +72 -72
  144. package/templates/skills/application/references/backend-seeding-and-dto-output.md +83 -83
  145. package/templates/skills/application/references/backend-table-prefix-mapping.md +79 -79
  146. package/templates/skills/application/references/backend-verification.md +88 -88
  147. package/templates/skills/application/references/frontend-i18n-and-output.md +67 -67
  148. package/templates/skills/application/references/frontend-route-naming.md +117 -117
  149. package/templates/skills/application/references/frontend-route-wiring-app-tsx.md +107 -107
  150. package/templates/skills/application/references/frontend-verification.md +156 -156
  151. package/templates/skills/application/references/migration-checklist-troubleshooting.md +1 -1
  152. package/templates/skills/application/references/provider-template.md +177 -177
  153. package/templates/skills/application/references/roles-client-project-handling.md +55 -55
  154. package/templates/skills/application/references/roles-fallback-procedure.md +149 -149
  155. package/templates/skills/application/references/test-coverage-requirements.md +213 -213
  156. package/templates/skills/application/references/test-frontend.md +73 -73
  157. package/templates/skills/application/references/test-prerequisites.md +72 -72
  158. package/templates/skills/application/steps/step-05-frontend.md +176 -176
  159. package/templates/skills/application/steps/step-06-migration.md +193 -193
  160. package/templates/skills/application/steps/step-07-tests.md +356 -356
  161. package/templates/skills/application/steps/step-08-documentation.md +137 -137
  162. package/templates/skills/application/templates-backend.md +463 -463
  163. package/templates/skills/application/templates-frontend.md +685 -685
  164. package/templates/skills/application/templates-i18n.md +520 -520
  165. package/templates/skills/application/templates-seed.md +1096 -1096
  166. package/templates/skills/business-analyse/SKILL.md +327 -327
  167. package/templates/skills/business-analyse/_architecture.md +123 -123
  168. package/templates/skills/business-analyse/_elicitation.md +206 -206
  169. package/templates/skills/business-analyse/_module-loop.md +115 -115
  170. package/templates/skills/business-analyse/_shared.md +383 -383
  171. package/templates/skills/business-analyse/_suggestions.md +34 -34
  172. package/templates/skills/business-analyse/html/ba-interactive.html +4477 -4477
  173. package/templates/skills/business-analyse/html/build-html.js +77 -77
  174. package/templates/skills/business-analyse/html/src/scripts/01-data-init.js +150 -150
  175. package/templates/skills/business-analyse/html/src/scripts/02-navigation.js +227 -227
  176. package/templates/skills/business-analyse/html/src/scripts/03-render-cadrage.js +199 -199
  177. package/templates/skills/business-analyse/html/src/scripts/04-render-modules.js +205 -205
  178. package/templates/skills/business-analyse/html/src/scripts/05-render-specs.js +647 -647
  179. package/templates/skills/business-analyse/html/src/scripts/06-render-consolidation.js +195 -195
  180. package/templates/skills/business-analyse/html/src/scripts/07-render-handoff.js +92 -92
  181. package/templates/skills/business-analyse/html/src/scripts/08-editing.js +135 -135
  182. package/templates/skills/business-analyse/html/src/scripts/09-export.js +168 -168
  183. package/templates/skills/business-analyse/html/src/scripts/10-comments.js +171 -171
  184. package/templates/skills/business-analyse/html/src/scripts/11-review-panel.js +166 -166
  185. package/templates/skills/business-analyse/html/src/styles/01-variables.css +38 -38
  186. package/templates/skills/business-analyse/html/src/styles/02-layout.css +101 -101
  187. package/templates/skills/business-analyse/html/src/styles/03-navigation.css +120 -120
  188. package/templates/skills/business-analyse/html/src/styles/04-cards.css +196 -196
  189. package/templates/skills/business-analyse/html/src/styles/05-modules.css +454 -454
  190. package/templates/skills/business-analyse/html/src/styles/06-wireframes.css +272 -272
  191. package/templates/skills/business-analyse/html/src/styles/07-comments.css +184 -184
  192. package/templates/skills/business-analyse/html/src/styles/08-review-panel.css +241 -241
  193. package/templates/skills/business-analyse/html/src/template.html +516 -516
  194. package/templates/skills/business-analyse/patterns/suggestion-catalog.md +546 -546
  195. package/templates/skills/business-analyse/questionnaire/00-application.md +160 -160
  196. package/templates/skills/business-analyse/questionnaire/00b-project.md +85 -85
  197. package/templates/skills/business-analyse/questionnaire/01-context.md +185 -185
  198. package/templates/skills/business-analyse/questionnaire/02-stakeholders.md +189 -189
  199. package/templates/skills/business-analyse/questionnaire/03-scope.md +164 -164
  200. package/templates/skills/business-analyse/questionnaire/04-data.md +88 -88
  201. package/templates/skills/business-analyse/questionnaire/05-integrations.md +58 -58
  202. package/templates/skills/business-analyse/questionnaire/06-security.md +68 -68
  203. package/templates/skills/business-analyse/questionnaire/07-ui.md +76 -76
  204. package/templates/skills/business-analyse/questionnaire/08-performance.md +42 -42
  205. package/templates/skills/business-analyse/questionnaire/09-constraints.md +45 -45
  206. package/templates/skills/business-analyse/questionnaire/10-documentation.md +43 -43
  207. package/templates/skills/business-analyse/questionnaire/11-data-lifecycle.md +59 -59
  208. package/templates/skills/business-analyse/questionnaire/12-migration.md +58 -58
  209. package/templates/skills/business-analyse/questionnaire/13-cross-module.md +69 -69
  210. package/templates/skills/business-analyse/questionnaire/14-risk-assumptions.md +135 -135
  211. package/templates/skills/business-analyse/questionnaire/15-success-metrics.md +136 -136
  212. package/templates/skills/business-analyse/questionnaire.md +337 -337
  213. package/templates/skills/business-analyse/react/application-viewer.md +242 -242
  214. package/templates/skills/business-analyse/react/components.md +551 -551
  215. package/templates/skills/business-analyse/react/i18n-template.md +306 -306
  216. package/templates/skills/business-analyse/references/acceptance-criteria.md +169 -169
  217. package/templates/skills/business-analyse/references/agent-module-prompt.md +362 -362
  218. package/templates/skills/business-analyse/references/agent-pooling-best-practices.md +557 -557
  219. package/templates/skills/business-analyse/references/analysis-semantic-checks.md +190 -190
  220. package/templates/skills/business-analyse/references/cache-warming-strategy.md +566 -566
  221. package/templates/skills/business-analyse/references/cadrage-challenge-patterns.md +41 -41
  222. package/templates/skills/business-analyse/references/cadrage-coverage-matrix.md +74 -74
  223. package/templates/skills/business-analyse/references/cadrage-pre-analysis.md +115 -115
  224. package/templates/skills/business-analyse/references/cadrage-shared-modules.md +68 -69
  225. package/templates/skills/business-analyse/references/cadrage-structure-cards.md +85 -85
  226. package/templates/skills/business-analyse/references/compilation-structure-cards.md +297 -297
  227. package/templates/skills/business-analyse/references/consolidation-structural-checks.md +107 -107
  228. package/templates/skills/business-analyse/references/deploy-data-build.md +180 -180
  229. package/templates/skills/business-analyse/references/deploy-modes.md +118 -118
  230. package/templates/skills/business-analyse/references/detection-strategies.md +424 -424
  231. package/templates/skills/business-analyse/references/entity-architecture-decision.md +218 -218
  232. package/templates/skills/business-analyse/references/handoff-file-templates.md +120 -120
  233. package/templates/skills/business-analyse/references/handoff-mappings.md +81 -81
  234. package/templates/skills/business-analyse/references/handoff-seeddata-generation.md +312 -312
  235. package/templates/skills/business-analyse/references/html-data-mapping.md +299 -299
  236. package/templates/skills/business-analyse/references/init-schema-deployment.md +65 -65
  237. package/templates/skills/business-analyse/references/naming-conventions.md +243 -243
  238. package/templates/skills/business-analyse/references/prd-generation.md +258 -258
  239. package/templates/skills/business-analyse/references/review-data-mapping.md +363 -363
  240. package/templates/skills/business-analyse/references/robustness-checks.md +542 -542
  241. package/templates/skills/business-analyse/references/spec-auto-inference.md +111 -111
  242. package/templates/skills/business-analyse/references/team-orchestration.md +1022 -1022
  243. package/templates/skills/business-analyse/references/ui-dashboard-spec.md +85 -85
  244. package/templates/skills/business-analyse/references/ui-resource-cards.md +259 -259
  245. package/templates/skills/business-analyse/references/validate-incremental-html.md +121 -121
  246. package/templates/skills/business-analyse/references/validation-checklist.md +347 -347
  247. package/templates/skills/business-analyse/references/wireframe-svg-style-guide.md +335 -335
  248. package/templates/skills/business-analyse/schemas/application-schema.json +453 -453
  249. package/templates/skills/business-analyse/schemas/feature-schema.json +53 -53
  250. package/templates/skills/business-analyse/schemas/project-schema.json +485 -485
  251. package/templates/skills/business-analyse/schemas/sections/analysis-schema.json +201 -201
  252. package/templates/skills/business-analyse/schemas/sections/discovery-schema.json +82 -82
  253. package/templates/skills/business-analyse/schemas/sections/handoff-schema.json +80 -80
  254. package/templates/skills/business-analyse/schemas/sections/metadata-schema.json +70 -70
  255. package/templates/skills/business-analyse/schemas/sections/specification-schema.json +547 -547
  256. package/templates/skills/business-analyse/schemas/sections/validation-schema.json +93 -93
  257. package/templates/skills/business-analyse/schemas/shared/common-defs.json +226 -226
  258. package/templates/skills/business-analyse/steps/step-00-init.md +575 -576
  259. package/templates/skills/business-analyse/steps/step-01-cadrage.md +767 -767
  260. package/templates/skills/business-analyse/steps/step-01b-applications.md +419 -419
  261. package/templates/skills/business-analyse/steps/step-02-decomposition.md +387 -387
  262. package/templates/skills/business-analyse/steps/step-03a-data.md +16 -16
  263. package/templates/skills/business-analyse/steps/step-03a1-setup.md +506 -506
  264. package/templates/skills/business-analyse/steps/step-03a2-analysis.md +252 -252
  265. package/templates/skills/business-analyse/steps/step-03b-ui.md +425 -425
  266. package/templates/skills/business-analyse/steps/step-03c-compile.md +611 -611
  267. package/templates/skills/business-analyse/steps/step-03d-validate.md +783 -783
  268. package/templates/skills/business-analyse/steps/step-04-consolidation.md +17 -17
  269. package/templates/skills/business-analyse/steps/step-04a-collect.md +415 -415
  270. package/templates/skills/business-analyse/steps/step-04b-analyze.md +163 -163
  271. package/templates/skills/business-analyse/steps/step-04c-decide.md +186 -186
  272. package/templates/skills/business-analyse/steps/step-05a-handoff.md +840 -840
  273. package/templates/skills/business-analyse/steps/step-05b-deploy.md +522 -522
  274. package/templates/skills/business-analyse/steps/step-05c-ralph-readiness.md +703 -703
  275. package/templates/skills/business-analyse/steps/step-06-review.md +278 -278
  276. package/templates/skills/business-analyse/templates/tpl-frd.md +168 -168
  277. package/templates/skills/business-analyse/templates/tpl-handoff.md +186 -186
  278. package/templates/skills/business-analyse/templates/tpl-launch-displays.md +59 -59
  279. package/templates/skills/business-analyse/templates/tpl-progress.md +172 -172
  280. package/templates/skills/business-analyse/templates-frd.md +476 -476
  281. package/templates/skills/business-analyse/templates-react.md +574 -574
  282. package/templates/skills/cc-agent/SKILL.md +129 -129
  283. package/templates/skills/cc-agent/references/agent-behavior-patterns.md +95 -95
  284. package/templates/skills/cc-agent/references/agent-frontmatter.md +213 -213
  285. package/templates/skills/cc-agent/references/permission-modes.md +102 -102
  286. package/templates/skills/cc-agent/references/tools-reference.md +144 -144
  287. package/templates/skills/cc-agent/steps/step-00-init.md +134 -134
  288. package/templates/skills/cc-agent/steps/step-01-design.md +186 -186
  289. package/templates/skills/cc-agent/steps/step-02-generate.md +131 -131
  290. package/templates/skills/cc-agent/steps/step-03-validate.md +130 -130
  291. package/templates/skills/cc-agent/templates/agent-categorized.md +67 -67
  292. package/templates/skills/cc-agent/templates/agent-standalone.md +56 -56
  293. package/templates/skills/cc-agent/templates/agent-with-skills.md +94 -94
  294. package/templates/skills/cc-audit/SKILL.md +108 -108
  295. package/templates/skills/cc-audit/references/agent-checklist.md +91 -91
  296. package/templates/skills/cc-audit/references/hook-checklist.md +110 -110
  297. package/templates/skills/cc-audit/references/skill-checklist.md +70 -70
  298. package/templates/skills/cc-audit/steps/step-00-init.md +98 -98
  299. package/templates/skills/cc-audit/steps/step-01-scan.md +142 -142
  300. package/templates/skills/cc-audit/steps/step-02-analyze.md +158 -158
  301. package/templates/skills/cc-audit/steps/step-03-report.md +142 -142
  302. package/templates/skills/cc-skill/SKILL.md +134 -134
  303. package/templates/skills/cc-skill/references/best-practices.md +167 -167
  304. package/templates/skills/cc-skill/references/frontmatter-reference.md +182 -182
  305. package/templates/skills/cc-skill/references/skill-patterns.md +199 -199
  306. package/templates/skills/cc-skill/steps/step-00-init.md +119 -119
  307. package/templates/skills/cc-skill/steps/step-01-design.md +199 -199
  308. package/templates/skills/cc-skill/steps/step-02-generate.md +145 -145
  309. package/templates/skills/cc-skill/steps/step-03-steps.md +151 -151
  310. package/templates/skills/cc-skill/steps/step-04-validate.md +124 -124
  311. package/templates/skills/cc-skill/templates/skill-forked.md +85 -85
  312. package/templates/skills/cc-skill/templates/skill-progressive.md +102 -102
  313. package/templates/skills/cc-skill/templates/skill-simple.md +75 -75
  314. package/templates/skills/cc-skill/templates/step-template.md +82 -82
  315. package/templates/skills/check-version/SKILL.md +196 -196
  316. package/templates/skills/controller/SKILL.md +162 -162
  317. package/templates/skills/controller/postman-templates.md +614 -614
  318. package/templates/skills/controller/references/controller-code-templates.md +159 -159
  319. package/templates/skills/controller/references/mcp-scaffold-workflow.md +209 -209
  320. package/templates/skills/controller/references/permission-sync-templates.md +149 -149
  321. package/templates/skills/controller/steps/step-00-init.md +193 -191
  322. package/templates/skills/controller/steps/step-01-analyze.md +146 -146
  323. package/templates/skills/controller/steps/step-02-plan.md +176 -176
  324. package/templates/skills/controller/steps/step-03-generate.md +189 -189
  325. package/templates/skills/controller/steps/step-04-perms.md +80 -80
  326. package/templates/skills/controller/steps/step-05-validate.md +107 -107
  327. package/templates/skills/controller/templates.md +1555 -1555
  328. package/templates/skills/debug/SKILL.md +70 -70
  329. package/templates/skills/debug/references/team-protocol.md +232 -232
  330. package/templates/skills/debug/steps/step-00-init.md +57 -57
  331. package/templates/skills/debug/steps/step-01-analyze.md +219 -219
  332. package/templates/skills/debug/steps/step-02-resolve.md +85 -85
  333. package/templates/skills/documentation/SKILL.md +132 -132
  334. package/templates/skills/documentation/data-schema.md +227 -227
  335. package/templates/skills/documentation/steps/step-00-init.md +70 -70
  336. package/templates/skills/documentation/steps/step-01-scan.md +113 -113
  337. package/templates/skills/documentation/steps/step-02-generate.md +231 -231
  338. package/templates/skills/documentation/steps/step-03-validate.md +251 -238
  339. package/templates/skills/documentation/templates.md +662 -663
  340. package/templates/skills/efcore/SKILL.md +168 -167
  341. package/templates/skills/efcore/references/both-contexts.md +32 -32
  342. package/templates/skills/efcore/references/database-operations.md +67 -67
  343. package/templates/skills/efcore/references/destructive-operations.md +38 -38
  344. package/templates/skills/efcore/references/reset-operations.md +81 -81
  345. package/templates/skills/efcore/references/seed-methods.md +86 -86
  346. package/templates/skills/efcore/references/shared-init-functions.md +250 -250
  347. package/templates/skills/efcore/references/sql-objects-injection.md +61 -61
  348. package/templates/skills/efcore/references/troubleshooting.md +81 -81
  349. package/templates/skills/efcore/references/zero-downtime-patterns.md +227 -227
  350. package/templates/skills/efcore/steps/db/step-deploy.md +217 -217
  351. package/templates/skills/efcore/steps/db/step-reset.md +186 -186
  352. package/templates/skills/efcore/steps/db/step-seed.md +166 -166
  353. package/templates/skills/efcore/steps/db/step-status.md +173 -173
  354. package/templates/skills/efcore/steps/migration/step-00-init.md +102 -102
  355. package/templates/skills/efcore/steps/migration/step-01-check.md +164 -164
  356. package/templates/skills/efcore/steps/migration/step-02-create.md +160 -160
  357. package/templates/skills/efcore/steps/migration/step-03-validate.md +168 -168
  358. package/templates/skills/efcore/steps/rebase-snapshot/step-00-init.md +173 -173
  359. package/templates/skills/efcore/steps/rebase-snapshot/step-01-backup.md +100 -100
  360. package/templates/skills/efcore/steps/rebase-snapshot/step-02-fetch.md +115 -115
  361. package/templates/skills/efcore/steps/rebase-snapshot/step-03-create.md +112 -112
  362. package/templates/skills/efcore/steps/rebase-snapshot/step-04-validate.md +157 -157
  363. package/templates/skills/efcore/steps/shared/step-00-init.md +131 -131
  364. package/templates/skills/efcore/steps/squash/step-00-init.md +141 -141
  365. package/templates/skills/efcore/steps/squash/step-01-backup.md +120 -120
  366. package/templates/skills/efcore/steps/squash/step-02-fetch.md +168 -168
  367. package/templates/skills/efcore/steps/squash/step-03-create.md +184 -184
  368. package/templates/skills/efcore/steps/squash/step-04-validate.md +174 -174
  369. package/templates/skills/explore/SKILL.md +98 -98
  370. package/templates/skills/feature-full/SKILL.md +111 -111
  371. package/templates/skills/feature-full/steps/step-00-init.md +57 -57
  372. package/templates/skills/feature-full/steps/step-01-implementation.md +120 -120
  373. package/templates/skills/gitflow/SKILL.md +377 -377
  374. package/templates/skills/gitflow/_shared.md +620 -620
  375. package/templates/skills/gitflow/phases/abort.md +189 -189
  376. package/templates/skills/gitflow/phases/cleanup.md +234 -234
  377. package/templates/skills/gitflow/phases/status.md +192 -192
  378. package/templates/skills/gitflow/references/commit-message-generation.md +58 -58
  379. package/templates/skills/gitflow/references/commit-migration-validation.md +49 -49
  380. package/templates/skills/gitflow/references/finish-cleanup.md +55 -55
  381. package/templates/skills/gitflow/references/finish-version-bumping.md +45 -45
  382. package/templates/skills/gitflow/references/init-config-template.md +135 -135
  383. package/templates/skills/gitflow/references/init-environment-detection.md +41 -41
  384. package/templates/skills/gitflow/references/init-name-normalization.md +103 -103
  385. package/templates/skills/gitflow/references/init-questions.md +185 -185
  386. package/templates/skills/gitflow/references/init-structure-creation.md +75 -75
  387. package/templates/skills/gitflow/references/init-version-detection.md +21 -21
  388. package/templates/skills/gitflow/references/init-workspace-detection.md +43 -43
  389. package/templates/skills/gitflow/references/merge-ci-status.md +36 -36
  390. package/templates/skills/gitflow/references/merge-execution.md +62 -62
  391. package/templates/skills/gitflow/references/merge-pr-context.md +76 -76
  392. package/templates/skills/gitflow/references/plan-template.md +69 -69
  393. package/templates/skills/gitflow/references/pr-build-checks.md +60 -60
  394. package/templates/skills/gitflow/references/pr-generation.md +58 -58
  395. package/templates/skills/gitflow/references/start-branch-normalization.md +28 -28
  396. package/templates/skills/gitflow/references/start-efcore-preflight.md +70 -70
  397. package/templates/skills/gitflow/references/start-local-config.md +113 -113
  398. package/templates/skills/gitflow/references/start-worktree-creation.md +50 -50
  399. package/templates/skills/gitflow/references/sync-push-verify.md +44 -44
  400. package/templates/skills/gitflow/references/sync-rebase-conflicts.md +38 -38
  401. package/templates/skills/gitflow/steps/step-commit.md +199 -199
  402. package/templates/skills/gitflow/steps/step-finish.md +147 -147
  403. package/templates/skills/gitflow/steps/step-init.md +190 -190
  404. package/templates/skills/gitflow/steps/step-merge.md +85 -85
  405. package/templates/skills/gitflow/steps/step-plan.md +151 -151
  406. package/templates/skills/gitflow/steps/step-pr.md +199 -199
  407. package/templates/skills/gitflow/steps/step-start.md +195 -195
  408. package/templates/skills/gitflow/steps/step-sync.md +161 -161
  409. package/templates/skills/gitflow/templates/config.json +72 -72
  410. package/templates/skills/mcp/SKILL.md +62 -62
  411. package/templates/skills/mcp/steps/step-01-healthcheck.md +108 -108
  412. package/templates/skills/mcp/steps/step-02-tools.md +73 -73
  413. package/templates/skills/notification/SKILL.md +173 -173
  414. package/templates/skills/quick-search/SKILL.md +99 -99
  415. package/templates/skills/ralph-loop/SKILL.md +234 -234
  416. package/templates/skills/ralph-loop/references/category-completeness.md +185 -185
  417. package/templates/skills/ralph-loop/references/category-rules.md +96 -96
  418. package/templates/skills/ralph-loop/references/compact-loop.md +300 -300
  419. package/templates/skills/ralph-loop/references/init-resume-recovery.md +127 -127
  420. package/templates/skills/ralph-loop/references/module-transition.md +151 -151
  421. package/templates/skills/ralph-loop/references/multi-module-queue.md +171 -171
  422. package/templates/skills/ralph-loop/references/parallel-execution.md +246 -246
  423. package/templates/skills/ralph-loop/references/section-splitting.md +439 -439
  424. package/templates/skills/ralph-loop/references/task-transform-legacy.md +256 -256
  425. package/templates/skills/ralph-loop/references/team-orchestration.md +547 -547
  426. package/templates/skills/ralph-loop/steps/step-00-init.md +150 -150
  427. package/templates/skills/ralph-loop/steps/step-01-task.md +174 -174
  428. package/templates/skills/ralph-loop/steps/step-02-execute.md +177 -177
  429. package/templates/skills/ralph-loop/steps/step-03-commit.md +92 -92
  430. package/templates/skills/ralph-loop/steps/step-04-check.md +207 -207
  431. package/templates/skills/ralph-loop/steps/step-05-report.md +175 -175
  432. package/templates/skills/refactor/SKILL.md +56 -56
  433. package/templates/skills/refactor/steps/step-01-discover.md +60 -60
  434. package/templates/skills/refactor/steps/step-02-execute.md +67 -67
  435. package/templates/skills/review-code/SKILL.md +95 -94
  436. package/templates/skills/review-code/references/clean-code-principles.md +292 -292
  437. package/templates/skills/review-code/references/code-quality-metrics.md +174 -174
  438. package/templates/skills/review-code/references/feedback-patterns.md +149 -149
  439. package/templates/skills/review-code/references/owasp-api-top10.md +243 -243
  440. package/templates/skills/review-code/references/security-checklist.md +212 -212
  441. package/templates/skills/review-code/steps/step-01-smartstack.md +96 -96
  442. package/templates/skills/review-code/steps/step-02-detailed-review.md +80 -80
  443. package/templates/skills/review-code/steps/step-03-react.md +44 -44
  444. package/templates/skills/ui-components/SKILL.md +137 -137
  445. package/templates/skills/ui-components/accessibility.md +170 -170
  446. package/templates/skills/ui-components/patterns/dashboard-chart.md +327 -327
  447. package/templates/skills/ui-components/patterns/data-table.md +39 -39
  448. package/templates/skills/ui-components/patterns/entity-card.md +77 -77
  449. package/templates/skills/ui-components/patterns/grid-layout.md +91 -91
  450. package/templates/skills/ui-components/patterns/kanban.md +43 -43
  451. package/templates/skills/ui-components/responsive-guidelines.md +278 -278
  452. package/templates/skills/ui-components/style-guide.md +113 -113
  453. package/templates/skills/utils/SKILL.md +44 -44
  454. package/templates/skills/utils/subcommands/test-web-config.md +152 -152
  455. package/templates/skills/utils/subcommands/test-web.md +123 -123
  456. package/templates/skills/validate/SKILL.md +181 -181
  457. package/templates/skills/validate-feature/SKILL.md +101 -101
  458. package/templates/skills/validate-feature/references/api-smoke-tests.md +140 -140
  459. package/templates/skills/validate-feature/references/db-validation-checks.md +180 -180
  460. package/templates/skills/validate-feature/steps/step-00-dependencies.md +121 -121
  461. package/templates/skills/validate-feature/steps/step-01-compile.md +39 -39
  462. package/templates/skills/validate-feature/steps/step-02-unit-tests.md +45 -45
  463. package/templates/skills/validate-feature/steps/step-03-integration-tests.md +53 -53
  464. package/templates/skills/validate-feature/steps/step-04-api-smoke.md +94 -94
  465. package/templates/skills/validate-feature/steps/step-05-db-validation.md +149 -149
  466. package/templates/skills/workflow/SKILL.md +127 -127
  467. package/templates/skills/workflow/steps/step-00-init.md +57 -57
  468. package/templates/skills/workflow/steps/step-01-implementation.md +84 -84
  469. package/templates/test-web/api-health.json +38 -38
  470. package/templates/test-web/minimal.json +19 -19
  471. package/templates/test-web/npm-package.json +46 -46
  472. package/templates/test-web/seo-check.json +54 -54
@@ -1,576 +1,575 @@
1
- ---
2
- name: step-00-init
3
- description: Initialize Business Analysis - Auto-detect new/update, create feature.json
4
- model: sonnet
5
- next_step: steps/step-01-cadrage.md
6
- ---
7
-
8
- > **Context files:** `_shared.md`
9
-
10
- # Step 00: Initialize Business Analysis
11
-
12
- **Before anything else**, display the version banner:
13
-
14
- ```
15
- ═══════════════════════════════════════════════════════════════
16
- SmartStack Business Analyse — v{{SMARTSTACK_VERSION}}
17
- ═══════════════════════════════════════════════════════════════
18
- ```
19
-
20
- Initialize the business analysis workflow by auto-detecting whether this is a new application or an update to an existing one, then creating the initial feature.json structure.
21
-
22
- ## Flow
23
-
24
- 1. MCP health check (blocking)
25
- 2. Scan existing applications in `docs/`
26
- 3. Auto-detect: new application or update
27
- 4. Determine application name
28
- 5. Select language
29
- 6. Generate feature ID
30
- 7. Create output directory structure
31
- 8. Deploy JSON schemas
32
- 9. Create master feature.json
33
- 10. Update config
34
- 11. Display summary
35
- 12. Load next step
36
-
37
- ## Step 1: MCP Prerequisite Check (BLOCKING)
38
-
39
- Verify MCP availability. **This check is BLOCKING** - the skill cannot proceed without MCP.
40
-
41
- > See `_shared.md` → "MCP Prerequisite Guard (BLOCKING)" for the full pattern.
42
-
43
- **Detection:** Call MCP with minimal parameters:
44
-
45
- ```
46
- mcp__smartstack__validate_conventions({ checks: ["tables"] })
47
- ```
48
-
49
- **Decision matrix:**
50
-
51
- | Result | Action |
52
- |--------|--------|
53
- | Success response | Set `mcp_available = true`, continue to Step 2 |
54
- | Connection error / tool not found | **STOP EXECUTION** - display error below |
55
-
56
- **On failure (STOP):**
57
-
58
- ```
59
- ═══════════════════════════════════════════════════════════════
60
- MCP SMARTSTACK NOT AVAILABLE - SKILL BLOCKED
61
- ═══════════════════════════════════════════════════════════════
62
-
63
- The SmartStack MCP server is required for business-analyse
64
- but could not be reached.
65
-
66
- To install:
67
- claude mcp add smartstack -- npx --package @atlashub/smartstack-cli smartstack-mcp
68
-
69
- To verify:
70
- /mcp:healthcheck
71
-
72
- After installation, restart Claude Code and retry.
73
-
74
- ═══════════════════════════════════════════════════════════════
75
- ```
76
-
77
- **DO NOT** continue to any subsequent step.
78
- **STOP the skill immediately.**
79
-
80
- ## Step 2-3: Workflow Detection (Review / New / Update)
81
-
82
- **Objective:** Detect workflow type and match against existing applications.
83
-
84
- **Process:**
85
-
86
- Execute workflow detection algorithm:
87
- 1. **Review Mode Detection:** Check if `{feature_description}` starts with `-review`
88
- 2. **Existing Projects Scanner:** Glob `docs/business-analyse/*/feature.json` (project-level)
89
- 2b. **Existing Applications Scanner:** Glob `docs/*/business-analyse/*/feature.json`
90
- 3. **Similarity Analysis:** Score user intent against existing apps (>= 80 = strong match)
91
- 4. **Decision Tree:** Prompt user with relevant options
92
-
93
- ```javascript
94
- const detectionResult = detectWorkflowType(feature_description, existingApps);
95
-
96
- IF detectionResult.error OR detectionResult.ambiguous:
97
- // CONDITIONAL LOAD: Only load detection strategies on error or ambiguity
98
- Read references/detection-strategies.md
99
- Display:
100
- - Detailed similarity scoring algorithm
101
- - Decision tree with thresholds
102
- - Error handling procedures
103
- - Review mode troubleshooting (if review mode failed)
104
-
105
- → Resolve ambiguity with user clarification
106
-
107
- ELSE:
108
- Workflow detected: {detectionResult.workflow_type} ✓
109
- → Continue to application name determination
110
- ```
111
-
112
- **Key decision points:**
113
- 1. IF review mode → load ba-review.json, skip to step-06-review.md
114
- 2. IF no existing apps → workflow_type = "new"
115
- 3. IF existing apps → analyze similarity → prompt user
116
-
117
- **Optimization:** The detailed 400-line detection-strategies.md is loaded **only when detection fails or is ambiguous** (saves ~15,000 tokens on clear detection path).
118
-
119
- **Store:**
120
- ```yaml
121
- workflow_type: "new" | "update" | "review"
122
- existing_feature_id: string | null
123
- existing_project_id: string | null # PROJ-NNN if resuming a project
124
- version: "1.0" (new) | "1.1"+ (update)
125
- review_json_path: string | null (review only)
126
- existing_apps: array of { app, featureId, description, version }
127
- existing_projects: array of { projectName, projectId, applications[], version }
128
- ```
129
-
130
- > **Project Resume Detection:** If a project-level feature.json is found at `docs/business-analyse/*/feature.json`, check its `metadata.workflow` to determine resume point. The project may have partially completed applications.
131
-
132
- ## Step 3b: Early Multi-Application Detection from Prompt (NEW)
133
-
134
- > **Detect multi-app structure BEFORE asking for a single application name.**
135
- > When the user's prompt explicitly describes multiple applications, we must recognize this immediately
136
- > and set `workflow.mode = "project"` to avoid doing cadrage for a single app.
137
-
138
- **Detection patterns (ANY match = multi-app detected):**
139
-
140
- ```javascript
141
- const multiAppPatterns = [
142
- // French patterns
143
- /une\s+application\s+\w+.*une\s+application\s+\w+/is,
144
- /application\s*\d?\s*[:]\s*\w+.*application\s*\d?\s*[:]\s*\w+/is,
145
- /premier[e]?\s+application.*deuxième\s+application/is,
146
- /app\s*1\s*[:.].*app\s*2\s*[:.]*/is,
147
- // English patterns
148
- /an?\s+application\s+(for\s+)?\w+.*an?\s+application\s+(for\s+)?\w+/is,
149
- /application\s*#?\d\s*[:.].*application\s*#?\d\s*[:.]*/is,
150
- /first\s+app.*second\s+app/is,
151
- ];
152
-
153
- const isMultiApp = multiAppPatterns.some(p => p.test(feature_description));
154
- ```
155
-
156
- **IF multi-app detected:**
157
-
158
- 1. Extract candidate applications from the prompt:
159
-
160
- ```javascript
161
- // Parse the prompt to identify application boundaries
162
- // Each "une application X" / "an application X" block = one candidate
163
- const candidates = extractApplicationCandidates(feature_description);
164
- // Result example:
165
- // [
166
- // { name: "RH", description: "gestion des employes, conges, temps", modules: ["Employes", "Conges", "Temps"] },
167
- // { name: "Projet", description: "gestion des projets, saisie du temps", modules: ["Projets", "Temps"] }
168
- // ]
169
- ```
170
-
171
- 2. Detect shared modules across candidates:
172
-
173
- ```javascript
174
- const allModules = candidates.flatMap(c => c.modules);
175
- const sharedModules = allModules.filter((m, i) => allModules.indexOf(m) !== i);
176
- // Example: sharedModules = ["Temps"] → appears in both RH and Projet
177
- ```
178
-
179
- 3. Display detection result and confirm:
180
-
181
- ```
182
- {language == "fr"
183
- ? "### Détection multi-application\n\nJ'ai détecté **{candidates.length} applications** dans votre description :"
184
- : "### Multi-application detection\n\nI detected **{candidates.length} applications** in your description:"}
185
-
186
- | # | Application | Modules identifiés |
187
- |---|-------------|-------------------|
188
- {for each candidate: index | name | modules.join(", ")}
189
-
190
- {sharedModules.length > 0
191
- ? "⚠️ **Modules partagés détectés :** {sharedModules.join(', ')} — ces modules apparaissent dans plusieurs applications. Ils pourraient constituer une application transversale dédiée."
192
- : ""}
193
- ```
194
-
195
- Ask via AskUserQuestion:
196
- ```
197
- question: "{language == 'fr' ? 'Confirmez-vous cette structure multi-application ?' : 'Do you confirm this multi-application structure?'}"
198
- header: "Architecture"
199
- options:
200
- - label: "{language == 'fr' ? 'Oui, {candidates.length} applications' : 'Yes, {candidates.length} applications'}"
201
- description: "{language == 'fr' ? 'Créer un projet avec les applications identifiées' : 'Create a project with the identified applications'}"
202
- - label: "{language == 'fr' ? 'Extraire les modules partagés' : 'Extract shared modules'}" (only if sharedModules.length > 0)
203
- description: "{language == 'fr' ? 'Créer une application dédiée pour {sharedModules.join(', ')} ({candidates.length + 1} applications au total)' : 'Create a dedicated app for {sharedModules.join(', ')} ({candidates.length + 1} total)'}"
204
- - label: "{language == 'fr' ? 'Application unique' : 'Single application'}"
205
- description: "{language == 'fr' ? 'Tout regrouper en une seule application avec plusieurs modules' : 'Group everything into one application with multiple modules'}"
206
- ```
207
-
208
- **IF "Oui, N applications" or "Extraire les modules partagés":**
209
-
210
- ```yaml
211
- workflow_mode: "project"
212
- project_name: derived from feature_description
213
- candidate_applications: [{ name, description, modules, context }]
214
- shared_modules_extracted: boolean # true if user chose extraction
215
- ```
216
-
217
- → Skip step 4 (application name) — applications will be confirmed in step-01b
218
- → Continue to step 5 (language selection)
219
-
220
- **IF "Application unique":**
221
-
222
- ```yaml
223
- workflow_mode: "application"
224
- ```
225
-
226
- → Continue to step 4 normally
227
-
228
- **IF no multi-app patterns detected:**
229
- → Continue to step 4 normally
230
-
231
- ## Step 4: Determine Application Name
232
-
233
- > **This step is SKIPPED if `workflow_mode = "project"` (multi-app detected in step 3b).**
234
-
235
- ```
236
- IF workflow_mode = "project":
237
- application_name = project_name // Project-level name, not a single app name
238
- context = "business" // Default, each app can have its own context
239
- → Skip to step 5
240
-
241
- ELSE IF workflow_type = "update":
242
- application_name = existing app name (from step 3)
243
- ELSE:
244
- Analyze {feature_description} to extract application name
245
- Ask via AskUserQuestion:
246
- question: "Quel nom pour cette application ?"
247
- header: "Application"
248
- options:
249
- - label: "{detected_name}"
250
- description: "Nom détecté depuis votre description"
251
- - label: "Autre"
252
- description: "Saisir un nom personnalisé"
253
- ```
254
-
255
- **Store:**
256
- ```yaml
257
- application_name: string # or project_name if project mode
258
- ```
259
-
260
- ## Step 5: Select Language
261
-
262
- Determine the language for analysis and code generation.
263
-
264
- **Check config:**
265
- - Retrieve `language` from `.business-analyse/config.json`
266
- - Default: "fr" (Francais)
267
-
268
- **If not in config:**
269
- ```
270
- Ask via AskUserQuestion:
271
- question: "Quelle langue pour l'analyse ?"
272
- header: "Langue"
273
- options:
274
- - label: "Francais (fr)"
275
- - label: "English (en)"
276
- - label: "Italiano (it)"
277
- - label: "Deutsch (de)"
278
- ```
279
-
280
- **Store:**
281
- ```yaml
282
- language: string (code, e.g., "en", "fr")
283
- ```
284
-
285
- ## Step 5b: Analysis Mode
286
-
287
- > The analysis phase is ALWAYS interactive the AI listens, reformulates,
288
- > challenges, and validates with the user. This is non-negotiable regardless
289
- > of development mode. Vibe coding applies to code execution (step-03+), NOT to analysis.
290
-
291
- **Set directly (no question):**
292
-
293
- ```yaml
294
- analysisMode: "interactive" # Always interactive for cadrage
295
- ```
296
-
297
- ## Step 6: Generate Feature ID
298
-
299
- Create a unique feature identifier.
300
-
301
- ```
302
- IF workflow_type = "update":
303
- feature_id = existing_feature_id (from step 3)
304
- ELSE:
305
- feature_id = generate_feature_id()
306
- Read .business-analyse/config.json lastFeatureId
307
- → Increment and format as FEAT-NNN
308
- ```
309
-
310
- **Store:**
311
- ```yaml
312
- feature_id: string
313
- ```
314
-
315
- ## Step 7: Create Output Directory Structure
316
-
317
- ```
318
- IF workflow_mode = "project":
319
- // Project mode: create project-level directory + per-app directories later (in step-01b)
320
- mkdir -p docs/business-analyse/v1.0
321
- docs_dir = "docs/business-analyse/v{version}"
322
-
323
- ELSE IF workflow_type = "new":
324
- mkdir -p docs/{application_name}/business-analyse/v1.0
325
- docs_dir = "docs/{app}/business-analyse/v{version}"
326
-
327
- ELSE:
328
- Directory already exists from ba-writer.createVersion()
329
- ```
330
-
331
- **Store:**
332
- ```yaml
333
- docs_dir: string
334
- ```
335
-
336
- ## Step 8: Deploy JSON Schemas to Project (MANDATORY)
337
-
338
- > **The JSON Schemas MUST be present in the project alongside the generated feature.json files.**
339
- > Without schemas, feature.json files cannot be validated and have no structural reference.
340
-
341
- See [references/init-schema-deployment.md](../references/init-schema-deployment.md) for cache-based deployment logic (9 schema files, version-checked via `.schema-cache.json`).
342
-
343
- ## Step 8b: Cache Warming (PERFORMANCE OPTIMIZATION)
344
-
345
- > **Objective:** Pre-load frequently-used templates and context files to reduce redundant reads.
346
- > **Expected token savings:** 15-20% across entire BA session
347
-
348
- **Implementation:**
349
-
350
- ```javascript
351
- // Pre-load CRITICAL (schemas) and HIGH (questionnaires) priority buckets
352
- const schemaFiles = glob("docs/{app}/business-analyse/schemas/**/*.json");
353
- for (const file of schemaFiles) {
354
- read(file); // Triggers cache
355
- }
356
-
357
- const questionnaireFiles = glob("~/.claude/skills/business-analyse/questionnaire/*.md");
358
- for (const file of questionnaireFiles) {
359
- read(file); // Triggers cache
360
- }
361
-
362
- read("~/.claude/skills/business-analyse/patterns/suggestion-catalog.md");
363
-
364
- // Display status
365
- console.log(`
366
- Cache warmed: 9 schemas + 16 questionnaires + 1 catalog
367
- Expected savings: 15-20% session tokens
368
- Retention: schemas (session-wide), questionnaires (until step-02)
369
- `);
370
- ```
371
-
372
- **Bucket Strategy:**
373
-
374
- See [references/cache-warming-strategy.md](../references/cache-warming-strategy.md) for complete documentation on:
375
- - 5 cache buckets (schemas, questionnaires, moduleSpec, handoff, etc.)
376
- - Retention policies and clearing rules
377
- - Token savings calculations (baseline vs optimized)
378
- - Monitoring cache efficiency
379
- - When to pre-load vs lazy-load
380
-
381
- ## Step 9: Create Master feature.json
382
-
383
- Create the master feature document using ba-writer agent.
384
-
385
- ```
386
- IF workflow_mode = "project":
387
- // PROJECT MODE: Create project-level feature.json
388
- ba-writer.createProjectFeature({
389
- id: generate_project_id(), // PROJ-NNN
390
- version: {version},
391
- scope: "project",
392
- status: "draft",
393
- metadata: {
394
- projectName: {project_name},
395
- language: {language},
396
- featureDescription: {feature_description},
397
- workflowType: {workflow_type},
398
- analysisMode: "interactive",
399
- mcpAvailable: true,
400
- candidateApplications: {candidate_applications}, // From step 3b detection
401
- sharedModulesExtracted: {shared_modules_extracted},
402
- workflow: {
403
- mode: "project",
404
- applicationOrder: [],
405
- currentApplicationIndex: 0,
406
- completedApplications: []
407
- }
408
- }
409
- })
410
-
411
- Output path: docs/business-analyse/v{version}/feature.json
412
-
413
- Store:
414
- project_id: string // PROJ-NNN
415
- feature_id: project_id // In project mode, feature_id = project_id for step-01
416
-
417
- ELSE:
418
- // SINGLE-APP MODE: Create application-level feature.json
419
- ba-writer.createApplicationFeature({
420
- id: {feature_id},
421
- version: {version},
422
- scope: "application",
423
- status: "draft",
424
- metadata: {
425
- application: {application_name},
426
- language: {language},
427
- featureDescription: {feature_description},
428
- workflowType: {workflow_type},
429
- analysisMode: "interactive",
430
- mcpAvailable: true,
431
- workflow: {
432
- mode: "application",
433
- moduleOrder: [],
434
- currentModuleIndex: 0,
435
- completedModules: [],
436
- currentModule: null
437
- }
438
- }
439
- })
440
-
441
- Output path: docs/{app}/business-analyse/v{version}/feature.json
442
- ```
443
-
444
- > **Note:** In project mode, per-application feature.json files are created later in step-01b.
445
- > In single-app mode, step-02 (decomposition) determines if it's single or multi-module.
446
-
447
- ## Step 10: Update Config
448
-
449
- Update `.business-analyse/config.json` with new feature information.
450
-
451
- ```json
452
- {
453
- "currentFeature": {
454
- "id": "{feature_id}",
455
- "version": "{version}",
456
- "docsDir": "{docs_dir}",
457
- "workflowType": "{workflow_type}",
458
- "application": "{application_name}"
459
- },
460
- "lastInitialized": "{ISO timestamp}"
461
- }
462
- ```
463
-
464
- ## Step 11: Display Summary
465
-
466
- ```
467
- ═══════════════════════════════════════════════════════════════
468
- BUSINESS ANALYSIS INITIALIZATION COMPLETE
469
- SmartStack CLI v{{SMARTSTACK_VERSION}}
470
- ═══════════════════════════════════════════════════════════════
471
-
472
- | Field | Value |
473
- |--------------------|----------------------------------------------|
474
- | Feature ID | {feature_id} |
475
- | Workflow | {workflow_type} |
476
- | Mode | {workflow_mode === "project" ? "Multi-application project" : "Single application"} |
477
- | Application/Project| {workflow_mode === "project" ? project_name + " (" + candidate_applications.length + " apps)" : application_name} |
478
- | Output Path | {docs_dir}/feature.json |
479
- | Language | {language} |
480
- | Version | {version} |
481
- | MCP Available | true |
482
- | Analysis Mode | Interactive (always) |
483
-
484
- {workflow_mode === "project"
485
- ? "Candidate applications: " + candidate_applications.map(a => a.name).join(", ")
486
- : ""}
487
-
488
- NEXT STEP: step-01-cadrage
489
- ═══════════════════════════════════════════════════════════════
490
- ```
491
-
492
- ## Step 12: Load Next Step
493
-
494
- After showing initialization summary, proceed to `./step-01-cadrage.md`
495
-
496
- **Pass context variables:**
497
- ```yaml
498
- feature_id: string # FEAT-NNN (single-app) or PROJ-NNN (project)
499
- feature_description: string
500
- workflow_type: "new" | "update"
501
- workflow_mode: "application" | "project"
502
- application_name: string # Single-app: app name. Project: project name.
503
- applicationCode: string # PascalCase derived from application_name (preliminary, confirmed in step-01b)
504
- project_id: string | null # PROJ-NNN if project mode, null if single-app
505
- candidate_applications: array | null # Pre-identified apps from prompt (project mode only)
506
- shared_modules_extracted: boolean # True if user chose to extract shared modules as new app
507
- language: string
508
- docs_dir: string
509
- mcp_available: boolean
510
- analysisMode: "interactive"
511
- version: string
512
- ```
513
-
514
- ## Error Handling
515
-
516
- | Error | Action |
517
- |-------|--------|
518
- | Config missing | Create fresh with defaults, continue |
519
- | Directory creation fails | Check permissions, display error, EXIT |
520
- | feature.json creation fails | Validate ba-writer, retry or fallback |
521
- | Feature ID not unique | Generate new ID, retry |
522
-
523
- ### Resume After Interruption
524
-
525
- If initialization was interrupted:
526
-
527
- 1. Check `.business-analyse/config.json` for currentFeature or currentProject
528
- 2. If project ID exists, search for project feature.json in `docs/business-analyse/`
529
- - If found with scope = "project": resume project mode (see Project Resume below)
530
- 3. If feature ID exists, search for feature.json in `docs/`
531
- 4. If found, check status and `metadata.workflow.lastCompletedStep`:
532
-
533
- **Status-based resume routing (check in this order):**
534
-
535
- - If status = `"handed-off"` AND `ba-interactive.html` missing:
536
- Resume at `step-05b-deploy.md` (deploy artifacts + HTML)
537
- → Display: "Handoff complete but HTML/artifacts missing — deploying..."
538
-
539
- - If status = `"handed-off"` AND `.ralph/prd-*.json` files missing:
540
- Resume at `step-05b-deploy.md` (only deploy artifacts needed)
541
- → Display: "Handoff complete but PRD files missing — deploying..."
542
-
543
- - If status = `"consolidated"` OR lastCompletedStep = `"step-04-consolidation"`:
544
- Resume directly at `step-05a-handoff.md` (skip steps 00-04)
545
- → Display: "Resuming from consolidation — proceeding to handoff..."
546
-
547
- - If status = `"specified"` AND `metadata.workflow.allModulesSpecified === true`:
548
- Resume at `step-04a-collect.md` (consolidation phase)
549
- → Display: "All modules specified — resuming at consolidation..."
550
-
551
- - If status = `"specified"` AND `metadata.workflow.completedModules.length > 0` AND `metadata.workflow.completedModules.length < metadata.workflow.moduleOrder.length`:
552
- Resume at `step-03a1-setup.md` (continue specifying remaining modules)
553
- → Display: "Resuming module specification ({completedCount}/{totalCount})..."
554
-
555
- - Otherwise: offer to resume from last completed step
556
-
557
- 4. If not found, create fresh feature.json
558
-
559
- **Project Resume (project mode):**
560
-
561
- If a project-level feature.json is found (scope = "project"):
562
-
563
- - If status = `"draft"` or `"framed"`:
564
- → Resume at `step-01-cadrage.md` or `step-01b-applications.md`
565
-
566
- - If status = `"decomposed"`:
567
- Check `metadata.workflow.currentApplicationIndex` and `completedApplications[]`
568
- → Resume module specification for current application (step-02 or step-03)
569
-
570
- - If status = `"specified"`:
571
- → All applications specified → Resume at `step-04a-collect.md`
572
-
573
- - If status = `"consolidated"`:
574
- → Resume at `step-05a-handoff.md`
575
-
576
- Follow `_module-loop.md` "Project Mode (multi app)" resume logic for detailed routing.
1
+ ---
2
+ name: step-00-init
3
+ description: Initialize Business Analysis - Auto-detect new/update, create feature.json
4
+ model: sonnet
5
+ next_step: steps/step-01-cadrage.md
6
+ ---
7
+
8
+ > **Context files:** `_shared.md`
9
+
10
+ # Step 00: Initialize Business Analysis
11
+
12
+ **Before anything else**, display the version banner:
13
+
14
+ ```
15
+ ═══════════════════════════════════════════════════════════════
16
+ SmartStack Business Analyse — v{{SMARTSTACK_VERSION}}
17
+ ═══════════════════════════════════════════════════════════════
18
+ ```
19
+
20
+ Initialize the business analysis workflow by auto-detecting whether this is a new application or an update to an existing one, then creating the initial feature.json structure.
21
+
22
+ ## Flow
23
+
24
+ 1. MCP health check (blocking)
25
+ 2. Scan existing applications in `docs/`
26
+ 3. Auto-detect: new application or update
27
+ 4. Determine application name
28
+ 5. Select language
29
+ 6. Generate feature ID
30
+ 7. Create output directory structure
31
+ 8. Deploy JSON schemas
32
+ 9. Create master feature.json
33
+ 10. Update config
34
+ 11. Display summary
35
+ 12. Load next step
36
+
37
+ ## Step 1: MCP Prerequisite Check (BLOCKING)
38
+
39
+ Verify MCP availability. **This check is BLOCKING** - the skill cannot proceed without MCP.
40
+
41
+ > See `_shared.md` → "MCP Prerequisite Guard (BLOCKING)" for the full pattern.
42
+
43
+ **Detection:** Call MCP with minimal parameters:
44
+
45
+ ```
46
+ mcp__smartstack__validate_conventions({ checks: ["tables"] })
47
+ ```
48
+
49
+ **Decision matrix:**
50
+
51
+ | Result | Action |
52
+ |--------|--------|
53
+ | Success response | Set `mcp_available = true`, continue to Step 2 |
54
+ | Connection error / tool not found | **STOP EXECUTION** - display error below |
55
+
56
+ **On failure (STOP):**
57
+
58
+ ```
59
+ ═══════════════════════════════════════════════════════════════
60
+ MCP SMARTSTACK NOT AVAILABLE - SKILL BLOCKED
61
+ ═══════════════════════════════════════════════════════════════
62
+
63
+ The SmartStack MCP server is required for business-analyse
64
+ but could not be reached.
65
+
66
+ To install:
67
+ claude mcp add smartstack -- npx --package @atlashub/smartstack-cli smartstack-mcp
68
+
69
+ To verify:
70
+ /mcp healthcheck
71
+
72
+ After installation, restart Claude Code and retry.
73
+
74
+ ═══════════════════════════════════════════════════════════════
75
+ ```
76
+
77
+ **DO NOT** continue to any subsequent step.
78
+ **STOP the skill immediately.**
79
+
80
+ ## Step 2-3: Workflow Detection (Review / New / Update)
81
+
82
+ **Objective:** Detect workflow type and match against existing applications.
83
+
84
+ **Process:**
85
+
86
+ Execute workflow detection algorithm:
87
+ 1. **Review Mode Detection:** Check if `{feature_description}` starts with `-review`
88
+ 2. **Existing Projects Scanner:** Glob `docs/business-analyse/*/feature.json` (project-level)
89
+ 2b. **Existing Applications Scanner:** Glob `docs/*/business-analyse/*/feature.json`
90
+ 3. **Similarity Analysis:** Score user intent against existing apps (>= 80 = strong match)
91
+ 4. **Decision Tree:** Prompt user with relevant options
92
+
93
+ ```javascript
94
+ const detectionResult = detectWorkflowType(feature_description, existingApps);
95
+
96
+ IF detectionResult.error OR detectionResult.ambiguous:
97
+ // CONDITIONAL LOAD: Only load detection strategies on error or ambiguity
98
+ Read references/detection-strategies.md
99
+ Display:
100
+ - Detailed similarity scoring algorithm
101
+ - Decision tree with thresholds
102
+ - Error handling procedures
103
+ - Review mode troubleshooting (if review mode failed)
104
+
105
+ → Resolve ambiguity with user clarification
106
+
107
+ ELSE:
108
+ Workflow detected: {detectionResult.workflow_type} ✓
109
+ → Continue to application name determination
110
+ ```
111
+
112
+ **Key decision points:**
113
+ 1. IF review mode → load ba-review.json, skip to step-06-review.md
114
+ 2. IF no existing apps → workflow_type = "new"
115
+ 3. IF existing apps → analyze similarity → prompt user
116
+
117
+ **Optimization:** The detailed 400-line detection-strategies.md is loaded **only when detection fails or is ambiguous** (saves ~15,000 tokens on clear detection path).
118
+
119
+ **Store:**
120
+ ```yaml
121
+ workflow_type: "new" | "update" | "review"
122
+ existing_feature_id: string | null
123
+ existing_project_id: string | null # PROJ-NNN if resuming a project
124
+ version: "1.0" (new) | "1.1"+ (update)
125
+ review_json_path: string | null (review only)
126
+ existing_apps: array of { app, featureId, description, version }
127
+ existing_projects: array of { projectName, projectId, applications[], version }
128
+ ```
129
+
130
+ > **Project Resume Detection:** If a project-level feature.json is found at `docs/business-analyse/*/feature.json`, check its `metadata.workflow` to determine resume point. The project may have partially completed applications.
131
+
132
+ ## Step 3b: Early Multi-Application Detection from Prompt (NEW)
133
+
134
+ > **Detect multi-app structure BEFORE asking for a single application name.**
135
+ > When the user's prompt explicitly describes multiple applications, we must recognize this immediately
136
+ > and set `workflow.mode = "project"` to avoid doing cadrage for a single app.
137
+
138
+ **Detection patterns (ANY match = multi-app detected):**
139
+
140
+ ```javascript
141
+ const multiAppPatterns = [
142
+ // French patterns
143
+ /une\s+application\s+\w+.*une\s+application\s+\w+/is,
144
+ /application\s*\d?\s*[:]\s*\w+.*application\s*\d?\s*[:]\s*\w+/is,
145
+ /premier[e]?\s+application.*deuxième\s+application/is,
146
+ /app\s*1\s*[:.].*app\s*2\s*[:.]*/is,
147
+ // English patterns
148
+ /an?\s+application\s+(for\s+)?\w+.*an?\s+application\s+(for\s+)?\w+/is,
149
+ /application\s*#?\d\s*[:.].*application\s*#?\d\s*[:.]*/is,
150
+ /first\s+app.*second\s+app/is,
151
+ ];
152
+
153
+ const isMultiApp = multiAppPatterns.some(p => p.test(feature_description));
154
+ ```
155
+
156
+ **IF multi-app detected:**
157
+
158
+ 1. Extract candidate applications from the prompt:
159
+
160
+ ```javascript
161
+ // Parse the prompt to identify application boundaries
162
+ // Each "une application X" / "an application X" block = one candidate
163
+ const candidates = extractApplicationCandidates(feature_description);
164
+ // Result example:
165
+ // [
166
+ // { name: "RH", description: "gestion des employes, conges, temps", modules: ["Employes", "Conges", "Temps"] },
167
+ // { name: "Projet", description: "gestion des projets, saisie du temps", modules: ["Projets", "Temps"] }
168
+ // ]
169
+ ```
170
+
171
+ 2. Detect shared modules across candidates:
172
+
173
+ ```javascript
174
+ const allModules = candidates.flatMap(c => c.modules);
175
+ const sharedModules = allModules.filter((m, i) => allModules.indexOf(m) !== i);
176
+ // Example: sharedModules = ["Temps"] → appears in both RH and Projet
177
+ ```
178
+
179
+ 3. Display detection result and confirm:
180
+
181
+ ```
182
+ {language == "fr"
183
+ ? "### Détection multi-application\n\nJ'ai détecté **{candidates.length} applications** dans votre description :"
184
+ : "### Multi-application detection\n\nI detected **{candidates.length} applications** in your description:"}
185
+
186
+ | # | Application | Modules identifiés |
187
+ |---|-------------|-------------------|
188
+ {for each candidate: index | name | modules.join(", ")}
189
+
190
+ {sharedModules.length > 0
191
+ ? "⚠️ **Modules partagés détectés :** {sharedModules.join(', ')} — ces modules apparaissent dans plusieurs applications. Ils pourraient constituer une application transversale dédiée."
192
+ : ""}
193
+ ```
194
+
195
+ Ask via AskUserQuestion:
196
+ ```
197
+ question: "{language == 'fr' ? 'Confirmez-vous cette structure multi-application ?' : 'Do you confirm this multi-application structure?'}"
198
+ header: "Architecture"
199
+ options:
200
+ - label: "{language == 'fr' ? 'Oui, {candidates.length} applications' : 'Yes, {candidates.length} applications'}"
201
+ description: "{language == 'fr' ? 'Créer un projet avec les applications identifiées' : 'Create a project with the identified applications'}"
202
+ - label: "{language == 'fr' ? 'Extraire les modules partagés' : 'Extract shared modules'}" (only if sharedModules.length > 0)
203
+ description: "{language == 'fr' ? 'Créer une application dédiée pour {sharedModules.join(', ')} ({candidates.length + 1} applications au total)' : 'Create a dedicated app for {sharedModules.join(', ')} ({candidates.length + 1} total)'}"
204
+ - label: "{language == 'fr' ? 'Application unique' : 'Single application'}"
205
+ description: "{language == 'fr' ? 'Tout regrouper en une seule application avec plusieurs modules' : 'Group everything into one application with multiple modules'}"
206
+ ```
207
+
208
+ **IF "Oui, N applications" or "Extraire les modules partagés":**
209
+
210
+ ```yaml
211
+ workflow_mode: "project"
212
+ project_name: derived from feature_description
213
+ candidate_applications: [{ name, description, modules, context }]
214
+ shared_modules_extracted: boolean # true if user chose extraction
215
+ ```
216
+
217
+ → Skip step 4 (application name) — applications will be confirmed in step-01b
218
+ → Continue to step 5 (language selection)
219
+
220
+ **IF "Application unique":**
221
+
222
+ ```yaml
223
+ workflow_mode: "application"
224
+ ```
225
+
226
+ → Continue to step 4 normally
227
+
228
+ **IF no multi-app patterns detected:**
229
+ → Continue to step 4 normally
230
+
231
+ ## Step 4: Determine Application Name
232
+
233
+ > **This step is SKIPPED if `workflow_mode = "project"` (multi-app detected in step 3b).**
234
+
235
+ ```
236
+ IF workflow_mode = "project":
237
+ application_name = project_name // Project-level name, not a single app name
238
+ Skip to step 5
239
+
240
+ ELSE IF workflow_type = "update":
241
+ application_name = existing app name (from step 3)
242
+ ELSE:
243
+ Analyze {feature_description} to extract application name
244
+ Ask via AskUserQuestion:
245
+ question: "Quel nom pour cette application ?"
246
+ header: "Application"
247
+ options:
248
+ - label: "{detected_name}"
249
+ description: "Nom détecté depuis votre description"
250
+ - label: "Autre"
251
+ description: "Saisir un nom personnalisé"
252
+ ```
253
+
254
+ **Store:**
255
+ ```yaml
256
+ application_name: string # or project_name if project mode
257
+ ```
258
+
259
+ ## Step 5: Select Language
260
+
261
+ Determine the language for analysis and code generation.
262
+
263
+ **Check config:**
264
+ - Retrieve `language` from `.business-analyse/config.json`
265
+ - Default: "fr" (Francais)
266
+
267
+ **If not in config:**
268
+ ```
269
+ Ask via AskUserQuestion:
270
+ question: "Quelle langue pour l'analyse ?"
271
+ header: "Langue"
272
+ options:
273
+ - label: "Francais (fr)"
274
+ - label: "English (en)"
275
+ - label: "Italiano (it)"
276
+ - label: "Deutsch (de)"
277
+ ```
278
+
279
+ **Store:**
280
+ ```yaml
281
+ language: string (code, e.g., "en", "fr")
282
+ ```
283
+
284
+ ## Step 5b: Analysis Mode
285
+
286
+ > The analysis phase is ALWAYS interactive — the AI listens, reformulates,
287
+ > challenges, and validates with the user. This is non-negotiable regardless
288
+ > of development mode. Vibe coding applies to code execution (step-03+), NOT to analysis.
289
+
290
+ **Set directly (no question):**
291
+
292
+ ```yaml
293
+ analysisMode: "interactive" # Always interactive for cadrage
294
+ ```
295
+
296
+ ## Step 6: Generate Feature ID
297
+
298
+ Create a unique feature identifier.
299
+
300
+ ```
301
+ IF workflow_type = "update":
302
+ feature_id = existing_feature_id (from step 3)
303
+ ELSE:
304
+ feature_id = generate_feature_id()
305
+ Read .business-analyse/config.json → lastFeatureId
306
+ Increment and format as FEAT-NNN
307
+ ```
308
+
309
+ **Store:**
310
+ ```yaml
311
+ feature_id: string
312
+ ```
313
+
314
+ ## Step 7: Create Output Directory Structure
315
+
316
+ ```
317
+ IF workflow_mode = "project":
318
+ // Project mode: create project-level directory + per-app directories later (in step-01b)
319
+ mkdir -p docs/business-analyse/v1.0
320
+ docs_dir = "docs/business-analyse/v{version}"
321
+
322
+ ELSE IF workflow_type = "new":
323
+ mkdir -p docs/{application_name}/business-analyse/v1.0
324
+ docs_dir = "docs/{app}/business-analyse/v{version}"
325
+
326
+ ELSE:
327
+ Directory already exists from ba-writer.createVersion()
328
+ ```
329
+
330
+ **Store:**
331
+ ```yaml
332
+ docs_dir: string
333
+ ```
334
+
335
+ ## Step 8: Deploy JSON Schemas to Project (MANDATORY)
336
+
337
+ > **The JSON Schemas MUST be present in the project alongside the generated feature.json files.**
338
+ > Without schemas, feature.json files cannot be validated and have no structural reference.
339
+
340
+ See [references/init-schema-deployment.md](../references/init-schema-deployment.md) for cache-based deployment logic (9 schema files, version-checked via `.schema-cache.json`).
341
+
342
+ ## Step 8b: Cache Warming (PERFORMANCE OPTIMIZATION)
343
+
344
+ > **Objective:** Pre-load frequently-used templates and context files to reduce redundant reads.
345
+ > **Expected token savings:** 15-20% across entire BA session
346
+
347
+ **Implementation:**
348
+
349
+ ```javascript
350
+ // Pre-load CRITICAL (schemas) and HIGH (questionnaires) priority buckets
351
+ const schemaFiles = glob("docs/{app}/business-analyse/schemas/**/*.json");
352
+ for (const file of schemaFiles) {
353
+ read(file); // Triggers cache
354
+ }
355
+
356
+ const questionnaireFiles = glob("~/.claude/skills/business-analyse/questionnaire/*.md");
357
+ for (const file of questionnaireFiles) {
358
+ read(file); // Triggers cache
359
+ }
360
+
361
+ read("~/.claude/skills/business-analyse/patterns/suggestion-catalog.md");
362
+
363
+ // Display status
364
+ console.log(`
365
+ ✓ Cache warmed: 9 schemas + 16 questionnaires + 1 catalog
366
+ Expected savings: 15-20% session tokens
367
+ Retention: schemas (session-wide), questionnaires (until step-02)
368
+ `);
369
+ ```
370
+
371
+ **Bucket Strategy:**
372
+
373
+ See [references/cache-warming-strategy.md](../references/cache-warming-strategy.md) for complete documentation on:
374
+ - 5 cache buckets (schemas, questionnaires, moduleSpec, handoff, etc.)
375
+ - Retention policies and clearing rules
376
+ - Token savings calculations (baseline vs optimized)
377
+ - Monitoring cache efficiency
378
+ - When to pre-load vs lazy-load
379
+
380
+ ## Step 9: Create Master feature.json
381
+
382
+ Create the master feature document using ba-writer agent.
383
+
384
+ ```
385
+ IF workflow_mode = "project":
386
+ // PROJECT MODE: Create project-level feature.json
387
+ ba-writer.createProjectFeature({
388
+ id: generate_project_id(), // PROJ-NNN
389
+ version: {version},
390
+ scope: "project",
391
+ status: "draft",
392
+ metadata: {
393
+ projectName: {project_name},
394
+ language: {language},
395
+ featureDescription: {feature_description},
396
+ workflowType: {workflow_type},
397
+ analysisMode: "interactive",
398
+ mcpAvailable: true,
399
+ candidateApplications: {candidate_applications}, // From step 3b detection
400
+ sharedModulesExtracted: {shared_modules_extracted},
401
+ workflow: {
402
+ mode: "project",
403
+ applicationOrder: [],
404
+ currentApplicationIndex: 0,
405
+ completedApplications: []
406
+ }
407
+ }
408
+ })
409
+
410
+ Output path: docs/business-analyse/v{version}/feature.json
411
+
412
+ Store:
413
+ project_id: string // PROJ-NNN
414
+ feature_id: project_id // In project mode, feature_id = project_id for step-01
415
+
416
+ ELSE:
417
+ // SINGLE-APP MODE: Create application-level feature.json
418
+ ba-writer.createApplicationFeature({
419
+ id: {feature_id},
420
+ version: {version},
421
+ scope: "application",
422
+ status: "draft",
423
+ metadata: {
424
+ application: {application_name},
425
+ language: {language},
426
+ featureDescription: {feature_description},
427
+ workflowType: {workflow_type},
428
+ analysisMode: "interactive",
429
+ mcpAvailable: true,
430
+ workflow: {
431
+ mode: "application",
432
+ moduleOrder: [],
433
+ currentModuleIndex: 0,
434
+ completedModules: [],
435
+ currentModule: null
436
+ }
437
+ }
438
+ })
439
+
440
+ Output path: docs/{app}/business-analyse/v{version}/feature.json
441
+ ```
442
+
443
+ > **Note:** In project mode, per-application feature.json files are created later in step-01b.
444
+ > In single-app mode, step-02 (decomposition) determines if it's single or multi-module.
445
+
446
+ ## Step 10: Update Config
447
+
448
+ Update `.business-analyse/config.json` with new feature information.
449
+
450
+ ```json
451
+ {
452
+ "currentFeature": {
453
+ "id": "{feature_id}",
454
+ "version": "{version}",
455
+ "docsDir": "{docs_dir}",
456
+ "workflowType": "{workflow_type}",
457
+ "application": "{application_name}"
458
+ },
459
+ "lastInitialized": "{ISO timestamp}"
460
+ }
461
+ ```
462
+
463
+ ## Step 11: Display Summary
464
+
465
+ ```
466
+ ═══════════════════════════════════════════════════════════════
467
+ BUSINESS ANALYSIS INITIALIZATION COMPLETE
468
+ SmartStack CLI v{{SMARTSTACK_VERSION}}
469
+ ═══════════════════════════════════════════════════════════════
470
+
471
+ | Field | Value |
472
+ |--------------------|----------------------------------------------|
473
+ | Feature ID | {feature_id} |
474
+ | Workflow | {workflow_type} |
475
+ | Mode | {workflow_mode === "project" ? "Multi-application project" : "Single application"} |
476
+ | Application/Project| {workflow_mode === "project" ? project_name + " (" + candidate_applications.length + " apps)" : application_name} |
477
+ | Output Path | {docs_dir}/feature.json |
478
+ | Language | {language} |
479
+ | Version | {version} |
480
+ | MCP Available | true |
481
+ | Analysis Mode | Interactive (always) |
482
+
483
+ {workflow_mode === "project"
484
+ ? "Candidate applications: " + candidate_applications.map(a => a.name).join(", ")
485
+ : ""}
486
+
487
+ NEXT STEP: step-01-cadrage
488
+ ═══════════════════════════════════════════════════════════════
489
+ ```
490
+
491
+ ## Step 12: Load Next Step
492
+
493
+ After showing initialization summary, proceed to `./step-01-cadrage.md`
494
+
495
+ **Pass context variables:**
496
+ ```yaml
497
+ feature_id: string # FEAT-NNN (single-app) or PROJ-NNN (project)
498
+ feature_description: string
499
+ workflow_type: "new" | "update"
500
+ workflow_mode: "application" | "project"
501
+ application_name: string # Single-app: app name. Project: project name.
502
+ applicationCode: string # PascalCase derived from application_name (preliminary, confirmed in step-01b)
503
+ project_id: string | null # PROJ-NNN if project mode, null if single-app
504
+ candidate_applications: array | null # Pre-identified apps from prompt (project mode only)
505
+ shared_modules_extracted: boolean # True if user chose to extract shared modules as new app
506
+ language: string
507
+ docs_dir: string
508
+ mcp_available: boolean
509
+ analysisMode: "interactive"
510
+ version: string
511
+ ```
512
+
513
+ ## Error Handling
514
+
515
+ | Error | Action |
516
+ |-------|--------|
517
+ | Config missing | Create fresh with defaults, continue |
518
+ | Directory creation fails | Check permissions, display error, EXIT |
519
+ | feature.json creation fails | Validate ba-writer, retry or fallback |
520
+ | Feature ID not unique | Generate new ID, retry |
521
+
522
+ ### Resume After Interruption
523
+
524
+ If initialization was interrupted:
525
+
526
+ 1. Check `.business-analyse/config.json` for currentFeature or currentProject
527
+ 2. If project ID exists, search for project feature.json in `docs/business-analyse/`
528
+ - If found with scope = "project": resume project mode (see Project Resume below)
529
+ 3. If feature ID exists, search for feature.json in `docs/`
530
+ 4. If found, check status and `metadata.workflow.lastCompletedStep`:
531
+
532
+ **Status-based resume routing (check in this order):**
533
+
534
+ - If status = `"handed-off"` AND `ba-interactive.html` missing:
535
+ Resume at `step-05b-deploy.md` (deploy artifacts + HTML)
536
+ Display: "Handoff complete but HTML/artifacts missing — deploying..."
537
+
538
+ - If status = `"handed-off"` AND `.ralph/prd-*.json` files missing:
539
+ Resume at `step-05b-deploy.md` (only deploy artifacts needed)
540
+ Display: "Handoff complete but PRD files missing — deploying..."
541
+
542
+ - If status = `"consolidated"` OR lastCompletedStep = `"step-04-consolidation"`:
543
+ Resume directly at `step-05a-handoff.md` (skip steps 00-04)
544
+ Display: "Resuming from consolidation proceeding to handoff..."
545
+
546
+ - If status = `"specified"` AND `metadata.workflow.allModulesSpecified === true`:
547
+ Resume at `step-04a-collect.md` (consolidation phase)
548
+ Display: "All modules specified — resuming at consolidation..."
549
+
550
+ - If status = `"specified"` AND `metadata.workflow.completedModules.length > 0` AND `metadata.workflow.completedModules.length < metadata.workflow.moduleOrder.length`:
551
+ Resume at `step-03a1-setup.md` (continue specifying remaining modules)
552
+ Display: "Resuming module specification ({completedCount}/{totalCount})..."
553
+
554
+ - Otherwise: offer to resume from last completed step
555
+
556
+ 4. If not found, create fresh feature.json
557
+
558
+ **Project Resume (project mode):**
559
+
560
+ If a project-level feature.json is found (scope = "project"):
561
+
562
+ - If status = `"draft"` or `"framed"`:
563
+ Resume at `step-01-cadrage.md` or `step-01b-applications.md`
564
+
565
+ - If status = `"decomposed"`:
566
+ Check `metadata.workflow.currentApplicationIndex` and `completedApplications[]`
567
+ Resume module specification for current application (step-02 or step-03)
568
+
569
+ - If status = `"specified"`:
570
+ All applications specified → Resume at `step-04a-collect.md`
571
+
572
+ - If status = `"consolidated"`:
573
+ Resume at `step-05a-handoff.md`
574
+
575
+ Follow `_module-loop.md` "Project Mode (multi app)" resume logic for detailed routing.