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