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