@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,107 +1,107 @@
|
|
|
1
|
-
# Consolidation Structural Schema Conformity Checks
|
|
2
|
-
|
|
3
|
-
> Post-generation validation. After semantic checks, verify ALL module feature.json files conform to JSON schema.
|
|
4
|
-
|
|
5
|
-
## A. Required Sections Presence
|
|
6
|
-
|
|
7
|
-
| Section | Required | Check |
|
|
8
|
-
|---------|----------|-------|
|
|
9
|
-
| `metadata` | YES | Must have: app, module, language, featureDescription, featureType |
|
|
10
|
-
| `discovery` | YES | Must exist (even if minimal) |
|
|
11
|
-
| `analysis.entities[]` | YES | Must have >=1 entity |
|
|
12
|
-
| `analysis.businessRules[]` | YES | Must have >=1 BR |
|
|
13
|
-
| `analysis.objectives[]` | YES | Must have >=1 objective |
|
|
14
|
-
| `analysis.processFlow` | YES | Must have entryPoints, mainFlow, decisionPoints |
|
|
15
|
-
| `analysis.dataLifecycle` | YES | Must have retention, archival, deletion, gdprRelevant |
|
|
16
|
-
| `specification.useCases[]` | YES | Must have >=1 UC |
|
|
17
|
-
| `specification.functionalRequirements[]` | YES | Must have >=1 FR |
|
|
18
|
-
| `specification.permissionMatrix` | YES | Must be `{permissions[], roleAssignments[]}` (NOT flat array) |
|
|
19
|
-
| `specification.sections[]` | YES | Must have >=1 section with resources |
|
|
20
|
-
| `specification.uiWireframes[]` | YES | Must have >=1 wireframe with `layout` object |
|
|
21
|
-
| `specification.lifeCycles[]` | IF entities have status | States must be objects (NOT strings) |
|
|
22
|
-
| `specification.seedDataCore` | YES | Must have 7 arrays: navigationModules, navigationSections, navigationResources, navigationTranslations, permissions, rolePermissions, permissionConstants |
|
|
23
|
-
| `specification.seedDataBusiness` | NO (WARNING) | Business seed data is generated during implementation (ralph-loop), not during BA. If present, validates format. |
|
|
24
|
-
| `specification.gherkinScenarios` | YES | Must be `{feature, scenarios[]}` (NOT flat array) |
|
|
25
|
-
| `specification.navigation` | YES | Must have entries[] |
|
|
26
|
-
| `specification.i18nKeys[]` | YES | Must have >=1 key with fr, en, it, de |
|
|
27
|
-
| `validation` | YES | Must have completenessChecks, consistencyChecks, semanticChecks, decision |
|
|
28
|
-
|
|
29
|
-
## B. Field Name Conformity
|
|
30
|
-
|
|
31
|
-
> **Two-phase entity schema:** In the **analysis** phase (step-03a2), entity attributes use a business-friendly format WITHOUT `type`.
|
|
32
|
-
> In the **compilation** phase (step-03c), `type` is auto-inferred and added to each attribute.
|
|
33
|
-
> Therefore `type` is FORBIDDEN in the raw analysis input but MANDATORY after compilation.
|
|
34
|
-
|
|
35
|
-
| Section | FORBIDDEN fields | Correct fields |
|
|
36
|
-
|---------|-----------------|----------------|
|
|
37
|
-
| `entities[].attributes[]` | `values`, `rules` | `type` (added by step-03c compilation), `description`, `unique`, `validation` |
|
|
38
|
-
| `businessRules[]` | `rule`, `condition` (singular) | `name`, `statement`, `conditions[]` |
|
|
39
|
-
| `useCases[]` | `actor`, `linkedBRs`, `linkedFRs` | `primaryActor`, `linkedRules` |
|
|
40
|
-
| `functionalRequirements[]` | `name`, `description`, `linkedUCs`, `linkedBRs` | `statement`, `linkedUseCases`, `linkedRules` |
|
|
41
|
-
| `permissionMatrix` | flat array with `resource`/`roles` | `{permissions[], roleAssignments[]}` |
|
|
42
|
-
| `lifeCycles[].states[]` | string values like `"Active"` | objects with `{id, displayName, color, isTerminal}` |
|
|
43
|
-
| `seedDataCore` | flat object, string values | 7 typed arrays |
|
|
44
|
-
| `gherkinScenarios` | flat scenario array | `{feature, scenarios[]}` nested |
|
|
45
|
-
|
|
46
|
-
## C. ID Pattern Conformity
|
|
47
|
-
|
|
48
|
-
| ID Type | Pattern | Example |
|
|
49
|
-
|---------|---------|---------|
|
|
50
|
-
| BR | `BR-(VAL\|CALC\|WF\|SEC\|DATA)-{PREFIX}-\d{3}` | BR-VAL-RM-001 |
|
|
51
|
-
| UC | `UC-{PREFIX}-\d{3}` | UC-RM-001 |
|
|
52
|
-
| FR | `FR-{PREFIX}-\d{3}` | FR-RM-001 |
|
|
53
|
-
| Permissions (module) | `{app}.{module}.{action}` | freebike.repairs.create |
|
|
54
|
-
| Permissions (section) | `{app}.{module}.{section}.{action}` | freebike.repairs.dashboard.read |
|
|
55
|
-
|
|
56
|
-
## D. Cross-Module ID Uniqueness
|
|
57
|
-
|
|
58
|
-
```
|
|
59
|
-
SET all_ids = {}
|
|
60
|
-
FOR each module:
|
|
61
|
-
FOR each BR, UC, FR id:
|
|
62
|
-
IF id IN all_ids -> ERROR: "Duplicate {id} in {module1} and {module2}"
|
|
63
|
-
ADD id to all_ids
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
## E. Wireframe Layout Completeness
|
|
67
|
-
|
|
68
|
-
```
|
|
69
|
-
IF missing componentMapping[] -> ERROR
|
|
70
|
-
IF missing layout object -> ERROR
|
|
71
|
-
IF missing layout.regions[] -> ERROR
|
|
72
|
-
FOR each region: IF missing position or components[] -> ERROR
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
## F. SeedDataCore Translation Coverage
|
|
76
|
-
|
|
77
|
-
```
|
|
78
|
-
FOR each navigationModules[].code:
|
|
79
|
-
FOR each language in [fr, en, it, de]:
|
|
80
|
-
IF NOT EXISTS navigationTranslations[] with moduleCode AND language -> ERROR
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
## G. API Endpoint Coverage
|
|
84
|
-
|
|
85
|
-
```
|
|
86
|
-
FOR each entity in analysis.entities[]:
|
|
87
|
-
endpoints = specification.apiEndpoints[].filter(e => e.path.includes(entity.name.toLowerCase()))
|
|
88
|
-
IF endpoints.length < 5 -> WARNING: "Entity {entity.name} has <5 endpoints (expected: GET list, GET id, POST, PUT, DELETE)"
|
|
89
|
-
IF endpoints.length === 0 -> ERROR: "Entity {entity.name} has NO endpoints — missing controller"
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
## Result Aggregation
|
|
93
|
-
|
|
94
|
-
```json
|
|
95
|
-
{
|
|
96
|
-
"structuralChecks": [
|
|
97
|
-
{ "check": "required-sections", "module": "...", "status": "PASS|ERROR", "details": "..." },
|
|
98
|
-
{ "check": "field-names", "module": "...", "status": "PASS|ERROR", "details": "..." },
|
|
99
|
-
{ "check": "id-patterns", "module": "...", "status": "PASS|ERROR", "details": "..." },
|
|
100
|
-
{ "check": "id-uniqueness", "module": "...", "status": "PASS|ERROR", "details": "..." },
|
|
101
|
-
{ "check": "wireframe-layout", "module": "...", "status": "PASS|ERROR", "details": "..." },
|
|
102
|
-
{ "check": "seeddata-translations", "module": "...", "status": "PASS|ERROR", "details": "..." }
|
|
103
|
-
]
|
|
104
|
-
}
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
**Blocking rule:** 0 ERROR -> PASS. >=1 ERROR -> BLOCK (attempt auto-fix, re-write, re-check).
|
|
1
|
+
# Consolidation Structural Schema Conformity Checks
|
|
2
|
+
|
|
3
|
+
> Post-generation validation. After semantic checks, verify ALL module feature.json files conform to JSON schema.
|
|
4
|
+
|
|
5
|
+
## A. Required Sections Presence
|
|
6
|
+
|
|
7
|
+
| Section | Required | Check |
|
|
8
|
+
|---------|----------|-------|
|
|
9
|
+
| `metadata` | YES | Must have: app, module, language, featureDescription, featureType |
|
|
10
|
+
| `discovery` | YES | Must exist (even if minimal) |
|
|
11
|
+
| `analysis.entities[]` | YES | Must have >=1 entity |
|
|
12
|
+
| `analysis.businessRules[]` | YES | Must have >=1 BR |
|
|
13
|
+
| `analysis.objectives[]` | YES | Must have >=1 objective |
|
|
14
|
+
| `analysis.processFlow` | YES | Must have entryPoints, mainFlow, decisionPoints |
|
|
15
|
+
| `analysis.dataLifecycle` | YES | Must have retention, archival, deletion, gdprRelevant |
|
|
16
|
+
| `specification.useCases[]` | YES | Must have >=1 UC |
|
|
17
|
+
| `specification.functionalRequirements[]` | YES | Must have >=1 FR |
|
|
18
|
+
| `specification.permissionMatrix` | YES | Must be `{permissions[], roleAssignments[]}` (NOT flat array) |
|
|
19
|
+
| `specification.sections[]` | YES | Must have >=1 section with resources |
|
|
20
|
+
| `specification.uiWireframes[]` | YES | Must have >=1 wireframe with `layout` object |
|
|
21
|
+
| `specification.lifeCycles[]` | IF entities have status | States must be objects (NOT strings) |
|
|
22
|
+
| `specification.seedDataCore` | YES | Must have 7 arrays: navigationModules, navigationSections, navigationResources, navigationTranslations, permissions, rolePermissions, permissionConstants |
|
|
23
|
+
| `specification.seedDataBusiness` | NO (WARNING) | Business seed data is generated during implementation (ralph-loop), not during BA. If present, validates format. |
|
|
24
|
+
| `specification.gherkinScenarios` | YES | Must be `{feature, scenarios[]}` (NOT flat array) |
|
|
25
|
+
| `specification.navigation` | YES | Must have entries[] |
|
|
26
|
+
| `specification.i18nKeys[]` | YES | Must have >=1 key with fr, en, it, de |
|
|
27
|
+
| `validation` | YES | Must have completenessChecks, consistencyChecks, semanticChecks, decision |
|
|
28
|
+
|
|
29
|
+
## B. Field Name Conformity
|
|
30
|
+
|
|
31
|
+
> **Two-phase entity schema:** In the **analysis** phase (step-03a2), entity attributes use a business-friendly format WITHOUT `type`.
|
|
32
|
+
> In the **compilation** phase (step-03c), `type` is auto-inferred and added to each attribute.
|
|
33
|
+
> Therefore `type` is FORBIDDEN in the raw analysis input but MANDATORY after compilation.
|
|
34
|
+
|
|
35
|
+
| Section | FORBIDDEN fields | Correct fields |
|
|
36
|
+
|---------|-----------------|----------------|
|
|
37
|
+
| `entities[].attributes[]` | `values`, `rules` | `type` (added by step-03c compilation), `description`, `unique`, `validation` |
|
|
38
|
+
| `businessRules[]` | `rule`, `condition` (singular) | `name`, `statement`, `conditions[]` |
|
|
39
|
+
| `useCases[]` | `actor`, `linkedBRs`, `linkedFRs` | `primaryActor`, `linkedRules` |
|
|
40
|
+
| `functionalRequirements[]` | `name`, `description`, `linkedUCs`, `linkedBRs` | `statement`, `linkedUseCases`, `linkedRules` |
|
|
41
|
+
| `permissionMatrix` | flat array with `resource`/`roles` | `{permissions[], roleAssignments[]}` |
|
|
42
|
+
| `lifeCycles[].states[]` | string values like `"Active"` | objects with `{id, displayName, color, isTerminal}` |
|
|
43
|
+
| `seedDataCore` | flat object, string values | 7 typed arrays |
|
|
44
|
+
| `gherkinScenarios` | flat scenario array | `{feature, scenarios[]}` nested |
|
|
45
|
+
|
|
46
|
+
## C. ID Pattern Conformity
|
|
47
|
+
|
|
48
|
+
| ID Type | Pattern | Example |
|
|
49
|
+
|---------|---------|---------|
|
|
50
|
+
| BR | `BR-(VAL\|CALC\|WF\|SEC\|DATA)-{PREFIX}-\d{3}` | BR-VAL-RM-001 |
|
|
51
|
+
| UC | `UC-{PREFIX}-\d{3}` | UC-RM-001 |
|
|
52
|
+
| FR | `FR-{PREFIX}-\d{3}` | FR-RM-001 |
|
|
53
|
+
| Permissions (module) | `{app}.{module}.{action}` | freebike.repairs.create |
|
|
54
|
+
| Permissions (section) | `{app}.{module}.{section}.{action}` | freebike.repairs.dashboard.read |
|
|
55
|
+
|
|
56
|
+
## D. Cross-Module ID Uniqueness
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
SET all_ids = {}
|
|
60
|
+
FOR each module:
|
|
61
|
+
FOR each BR, UC, FR id:
|
|
62
|
+
IF id IN all_ids -> ERROR: "Duplicate {id} in {module1} and {module2}"
|
|
63
|
+
ADD id to all_ids
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## E. Wireframe Layout Completeness
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
IF missing componentMapping[] -> ERROR
|
|
70
|
+
IF missing layout object -> ERROR
|
|
71
|
+
IF missing layout.regions[] -> ERROR
|
|
72
|
+
FOR each region: IF missing position or components[] -> ERROR
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## F. SeedDataCore Translation Coverage
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
FOR each navigationModules[].code:
|
|
79
|
+
FOR each language in [fr, en, it, de]:
|
|
80
|
+
IF NOT EXISTS navigationTranslations[] with moduleCode AND language -> ERROR
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## G. API Endpoint Coverage
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
FOR each entity in analysis.entities[]:
|
|
87
|
+
endpoints = specification.apiEndpoints[].filter(e => e.path.includes(entity.name.toLowerCase()))
|
|
88
|
+
IF endpoints.length < 5 -> WARNING: "Entity {entity.name} has <5 endpoints (expected: GET list, GET id, POST, PUT, DELETE)"
|
|
89
|
+
IF endpoints.length === 0 -> ERROR: "Entity {entity.name} has NO endpoints — missing controller"
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Result Aggregation
|
|
93
|
+
|
|
94
|
+
```json
|
|
95
|
+
{
|
|
96
|
+
"structuralChecks": [
|
|
97
|
+
{ "check": "required-sections", "module": "...", "status": "PASS|ERROR", "details": "..." },
|
|
98
|
+
{ "check": "field-names", "module": "...", "status": "PASS|ERROR", "details": "..." },
|
|
99
|
+
{ "check": "id-patterns", "module": "...", "status": "PASS|ERROR", "details": "..." },
|
|
100
|
+
{ "check": "id-uniqueness", "module": "...", "status": "PASS|ERROR", "details": "..." },
|
|
101
|
+
{ "check": "wireframe-layout", "module": "...", "status": "PASS|ERROR", "details": "..." },
|
|
102
|
+
{ "check": "seeddata-translations", "module": "...", "status": "PASS|ERROR", "details": "..." }
|
|
103
|
+
]
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**Blocking rule:** 0 ERROR -> PASS. >=1 ERROR -> BLOCK (attempt auto-fix, re-write, re-check).
|
|
@@ -1,180 +1,180 @@
|
|
|
1
|
-
# FEATURE_DATA & EMBEDDED_ARTIFACTS Build Reference
|
|
2
|
-
|
|
3
|
-
> Reference for step-05b-deploy.md — complete mapping specification for the interactive HTML.
|
|
4
|
-
|
|
5
|
-
## FEATURE_DATA Object
|
|
6
|
-
|
|
7
|
-
```javascript
|
|
8
|
-
const FEATURE_DATA = {
|
|
9
|
-
metadata: {
|
|
10
|
-
applicationName: master.application_name,
|
|
11
|
-
applicationId: master.feature_id,
|
|
12
|
-
version: master.version,
|
|
13
|
-
createdAt: ISO_TIMESTAMP,
|
|
14
|
-
analysisMode: master.metadata.analysisMode || "interactive" // always "interactive" — analysis is always interactive
|
|
15
|
-
},
|
|
16
|
-
cadrage: {
|
|
17
|
-
// CONTEXT SECTION — merged from problem/asIs/toBe (lean cadrage)
|
|
18
|
-
context: {
|
|
19
|
-
problem: master.cadrage.problem || "", // flat string from feature.json
|
|
20
|
-
trigger: master.cadrage.trigger || "", // flat string from feature.json
|
|
21
|
-
currentSituation: master.cadrage.asIs || "", // flat string from feature.json
|
|
22
|
-
desiredSituation: master.cadrage.toBe || "", // flat string from feature.json
|
|
23
|
-
painPoints: (master.cadrage.stakeholders || []).flatMap(s => s.painPoints || []),
|
|
24
|
-
acceptanceCriteria: (master.cadrage.acceptanceCriteria || []).map(c => c.criterion)
|
|
25
|
-
},
|
|
26
|
-
scope: {
|
|
27
|
-
// CONVERT feature.json keys to HTML keys:
|
|
28
|
-
// mustHave → vital, shouldHave → important, couldHave → optional, outOfScope → excluded
|
|
29
|
-
// CRITICAL: Preserve per-item `module` assignment from coverageMatrix (NOT modules[0])
|
|
30
|
-
vital: (master.cadrage.globalScope?.mustHave || master.cadrage.coverageMatrix?.filter(i => i.category === "mustHave") || [])
|
|
31
|
-
.map(item => typeof item === 'string' ? { name: item, description: "", module: null } : { name: item.item || item, description: item.notes || "", module: item.module || null }),
|
|
32
|
-
important: (master.cadrage.globalScope?.shouldHave || master.cadrage.coverageMatrix?.filter(i => i.category === "shouldHave") || [])
|
|
33
|
-
.map(item => typeof item === 'string' ? { name: item, description: "", module: null } : { name: item.item || item, description: item.notes || "", module: item.module || null }),
|
|
34
|
-
optional: (master.cadrage.globalScope?.couldHave || master.cadrage.coverageMatrix?.filter(i => i.category === "couldHave") || [])
|
|
35
|
-
.map(item => typeof item === 'string' ? { name: item, description: "", module: null } : { name: item.item || item, description: item.notes || "", module: item.module || null }),
|
|
36
|
-
excluded: (master.cadrage.globalScope?.outOfScope || master.cadrage.coverageMatrix?.filter(i => i.category === "outOfScope") || [])
|
|
37
|
-
.map(item => typeof item === 'string' ? { name: item, description: "", module: null } : { name: item.item || item, description: item.notes || "", module: item.module || null })
|
|
38
|
-
},
|
|
39
|
-
risks: (master.cadrage.risks || []).map(r => ({
|
|
40
|
-
description: r.description,
|
|
41
|
-
probability: r.probability,
|
|
42
|
-
impact: r.impact,
|
|
43
|
-
mitigation: r.mitigation
|
|
44
|
-
})),
|
|
45
|
-
stakeholders: (master.cadrage.stakeholders || []).map(s => ({
|
|
46
|
-
role: s.role,
|
|
47
|
-
function: s.function,
|
|
48
|
-
tasks: s.tasks || [],
|
|
49
|
-
frequency: s.frequency || "",
|
|
50
|
-
access: s.involvement || "",
|
|
51
|
-
frustrations: (s.painPoints || []).join("\n")
|
|
52
|
-
}))
|
|
53
|
-
},
|
|
54
|
-
modules: [
|
|
55
|
-
// FOR EACH module in master.modules[]:
|
|
56
|
-
{
|
|
57
|
-
code: module.code, // PascalCase key (e.g., "GestionTemps")
|
|
58
|
-
name: module.name || module.code, // Display name (e.g., "Gestion du temps") — MANDATORY
|
|
59
|
-
description: module.description || "",
|
|
60
|
-
featureType: module.featureType || "data-centric",
|
|
61
|
-
priority: module.priority || "must",
|
|
62
|
-
estimatedComplexity: module.estimatedComplexity || "medium",
|
|
63
|
-
entities: module.entities || [],
|
|
64
|
-
anticipatedSections: module.anticipatedSections || [],
|
|
65
|
-
dependencies: module.dependencies || [],
|
|
66
|
-
dependents: module.dependents || []
|
|
67
|
-
}
|
|
68
|
-
],
|
|
69
|
-
moduleSpecs: {
|
|
70
|
-
// CRITICAL: Must have ONE entry per module with ALL module data
|
|
71
|
-
"{moduleCode}": {
|
|
72
|
-
useCases: module.specification.useCases || [],
|
|
73
|
-
businessRules: module.analysis.businessRules || [],
|
|
74
|
-
// ENTITY SAFETY NET: map fields[] → attributes[] if agent deviated from canonical format
|
|
75
|
-
entities: (module.analysis.entities || []).map(ent => ({
|
|
76
|
-
name: ent.name,
|
|
77
|
-
description: ent.description || "",
|
|
78
|
-
attributes: (ent.attributes || []).length > 0
|
|
79
|
-
? ent.attributes.map(a => ({ name: a.name, description: a.description || "" }))
|
|
80
|
-
: (ent.fields || []).map(f => ({ name: f.name, description: f.description || f.type || "" })),
|
|
81
|
-
relationships: (ent.relationships || []).length > 0
|
|
82
|
-
? ent.relationships.map(r =>
|
|
83
|
-
typeof r === 'string' ? r : `${r.target} (${r.type}) - ${r.description || ""}`)
|
|
84
|
-
: (ent.fields || []).filter(f => f.foreignKey)
|
|
85
|
-
.map(f => `${f.foreignKey.table} (N:1) - ${f.description || f.name}`)
|
|
86
|
-
})),
|
|
87
|
-
permissions: module.specification.permissions || [],
|
|
88
|
-
apiEndpoints: module.specification.apiEndpoints || []
|
|
89
|
-
}
|
|
90
|
-
},
|
|
91
|
-
consolidation: {
|
|
92
|
-
integrations: master.consolidation.integrations || [],
|
|
93
|
-
sharedEntities: master.consolidation.sharedEntities || [],
|
|
94
|
-
sequenceDiagrams: master.consolidation.e2eFlows || []
|
|
95
|
-
},
|
|
96
|
-
handoff: {
|
|
97
|
-
complexity: master.handoff.complexity,
|
|
98
|
-
implementationStrategy: master.handoff.implementationStrategy,
|
|
99
|
-
moduleOrder: master.handoff.moduleOrder,
|
|
100
|
-
filesToCreate: master.handoff.filesToCreate,
|
|
101
|
-
brToCodeMapping: master.handoff.brToCodeMapping,
|
|
102
|
-
apiEndpointSummary: master.handoff.apiEndpointSummary
|
|
103
|
-
}
|
|
104
|
-
};
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
### Build Process
|
|
108
|
-
|
|
109
|
-
1. Extract metadata from master feature.json
|
|
110
|
-
2. Extract cadrage from master feature.json (CONVERT scope keys)
|
|
111
|
-
3. Extract stakeholders from master.stakeholders
|
|
112
|
-
4. Iterate ALL modules and populate moduleSpecs (THIS IS CRITICAL — empty moduleSpecs = BUG)
|
|
113
|
-
5. For EACH module, extract: useCases, businessRules, entities, permissions, apiEndpoints
|
|
114
|
-
6. Extract consolidation data (integrations, shared entities, E2E flows)
|
|
115
|
-
7. Extract handoff section (complexity, strategy, module order, file counts)
|
|
116
|
-
|
|
117
|
-
## EMBEDDED_ARTIFACTS Object
|
|
118
|
-
|
|
119
|
-
> **CRITICAL:** The wireframes object is keyed by moduleCode (NOT a flat array).
|
|
120
|
-
> Field names MUST be renamed from feature.json: `mockupFormat` → `format`, `mockup` → `content`.
|
|
121
|
-
> The HTML renderer reads `wf.format` and `wf.content` — using feature.json names will produce EMPTY mockups.
|
|
122
|
-
|
|
123
|
-
```javascript
|
|
124
|
-
const EMBEDDED_ARTIFACTS = {
|
|
125
|
-
wireframes: {
|
|
126
|
-
// PER-MODULE keyed object (NOT a flat array)
|
|
127
|
-
// FOR EACH module: extract from specification.uiWireframes[] OR specification.wireframes[] (SAFETY NET)
|
|
128
|
-
// IMPORTANT: The agent may write wireframes under either key name — always check BOTH
|
|
129
|
-
[moduleCode]: (moduleFeature.specification.uiWireframes || moduleFeature.specification.wireframes || []).map(wf => ({
|
|
130
|
-
screen: wf.screen || wf.name || wf.title || wf.id || "", // SAFETY NET: fallback name/title/id → screen
|
|
131
|
-
section: wf.section || "", // e.g. "list"
|
|
132
|
-
format: wf.mockupFormat || "ascii", // RENAME: mockupFormat → format
|
|
133
|
-
content: wf.mockup || wf.ascii || wf.content || "", // SAFETY NET: mockup/ascii/content → content
|
|
134
|
-
svgContent: null, // Populated by SVG generation step (see wireframe-svg-style-guide.md)
|
|
135
|
-
description: wf.description || "",
|
|
136
|
-
elements: wf.elements || [], // [{ id, type, label }] or ["DataGrid", ...]
|
|
137
|
-
actions: wf.actions || [], // [{ trigger, action }] or ["filter", ...]
|
|
138
|
-
// SAFETY NET: convert object → array format if agent used { "Header": "PageHeader" } instead of [{ wireframeElement, reactComponent }]
|
|
139
|
-
componentMapping: Array.isArray(wf.componentMapping) ? wf.componentMapping
|
|
140
|
-
: typeof wf.componentMapping === 'object' && wf.componentMapping !== null
|
|
141
|
-
? Object.entries(wf.componentMapping).map(([k, v]) => ({ wireframeElement: k, reactComponent: v }))
|
|
142
|
-
: [],
|
|
143
|
-
layout: typeof wf.layout === 'object' ? wf.layout : null, // SAFETY NET: ignore string layout ("grid")
|
|
144
|
-
permissionsRequired: wf.permissionsRequired || []
|
|
145
|
-
}))
|
|
146
|
-
},
|
|
147
|
-
e2eFlows: (master.consolidation?.e2eFlows || []).map(flow => ({
|
|
148
|
-
name: flow.name,
|
|
149
|
-
diagram: flow.steps.map(s => `${s.action}(${s.module})`).join(" ──→ "),
|
|
150
|
-
steps: flow.steps || [],
|
|
151
|
-
actors: [...new Set(flow.steps.map(s => s.permission?.split(".")[0]).filter(Boolean))].join(", "),
|
|
152
|
-
modules: [...new Set(flow.steps.map(s => s.module))].join(" → ")
|
|
153
|
-
})),
|
|
154
|
-
dependencyGraph: {
|
|
155
|
-
nodes: (master.modules || []).map(m => ({
|
|
156
|
-
id: m.code, label: m.code, type: m.featureType || "data-centric"
|
|
157
|
-
})),
|
|
158
|
-
edges: (master.dependencyGraph?.edges || []).map(e => ({
|
|
159
|
-
from: e.from, to: e.to, description: e.description || ""
|
|
160
|
-
}))
|
|
161
|
-
}
|
|
162
|
-
};
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
### Artifact Gathering
|
|
166
|
-
|
|
167
|
-
1. For EACH module: read `specification.uiWireframes[]` OR `specification.wireframes[]` (check BOTH keys — agent may use either), **rename fields** (`mockupFormat`→`format`, `mockup`/`ascii`/`content`→`content`, `screen`/`name`/`title`→`screen`), store under `wireframes[moduleCode]`
|
|
168
|
-
2. Read master's `consolidation.e2eFlows[]` and build e2eFlows array with diagram generation
|
|
169
|
-
3. Read master's `dependencyGraph` and build nodes/edges
|
|
170
|
-
4. Serialize as JSON with 2-space indentation
|
|
171
|
-
5. **SVG Wireframe Enrichment** (after wireframe extraction): For EACH wireframe with `content` (ASCII) and `svgContent === null`, generate SVG using parallel Task(sonnet) agents. See [wireframe-svg-style-guide.md](wireframe-svg-style-guide.md) for the complete prompt template and orchestration process. If generation fails for any wireframe → leave `svgContent` as null (graceful fallback to ASCII).
|
|
172
|
-
|
|
173
|
-
## Placeholder Replacement
|
|
174
|
-
|
|
175
|
-
1. Serialize FEATURE_DATA as JSON (2-space indent)
|
|
176
|
-
2. Serialize EMBEDDED_ARTIFACTS as JSON (2-space indent)
|
|
177
|
-
3. Replace `{{FEATURE_DATA}}` with serialized FEATURE_DATA
|
|
178
|
-
4. Replace `{{EMBEDDED_ARTIFACTS}}` with serialized EMBEDDED_ARTIFACTS
|
|
179
|
-
5. Replace `{{APPLICATION_NAME}}`, `{{APPLICATION_ID}}`, `{{VERSION}}`, `{{CREATED_AT}}`
|
|
180
|
-
6. Verify: grep for `{{` to confirm all placeholders replaced
|
|
1
|
+
# FEATURE_DATA & EMBEDDED_ARTIFACTS Build Reference
|
|
2
|
+
|
|
3
|
+
> Reference for step-05b-deploy.md — complete mapping specification for the interactive HTML.
|
|
4
|
+
|
|
5
|
+
## FEATURE_DATA Object
|
|
6
|
+
|
|
7
|
+
```javascript
|
|
8
|
+
const FEATURE_DATA = {
|
|
9
|
+
metadata: {
|
|
10
|
+
applicationName: master.application_name,
|
|
11
|
+
applicationId: master.feature_id,
|
|
12
|
+
version: master.version,
|
|
13
|
+
createdAt: ISO_TIMESTAMP,
|
|
14
|
+
analysisMode: master.metadata.analysisMode || "interactive" // always "interactive" — analysis is always interactive
|
|
15
|
+
},
|
|
16
|
+
cadrage: {
|
|
17
|
+
// CONTEXT SECTION — merged from problem/asIs/toBe (lean cadrage)
|
|
18
|
+
context: {
|
|
19
|
+
problem: master.cadrage.problem || "", // flat string from feature.json
|
|
20
|
+
trigger: master.cadrage.trigger || "", // flat string from feature.json
|
|
21
|
+
currentSituation: master.cadrage.asIs || "", // flat string from feature.json
|
|
22
|
+
desiredSituation: master.cadrage.toBe || "", // flat string from feature.json
|
|
23
|
+
painPoints: (master.cadrage.stakeholders || []).flatMap(s => s.painPoints || []),
|
|
24
|
+
acceptanceCriteria: (master.cadrage.acceptanceCriteria || []).map(c => c.criterion)
|
|
25
|
+
},
|
|
26
|
+
scope: {
|
|
27
|
+
// CONVERT feature.json keys to HTML keys:
|
|
28
|
+
// mustHave → vital, shouldHave → important, couldHave → optional, outOfScope → excluded
|
|
29
|
+
// CRITICAL: Preserve per-item `module` assignment from coverageMatrix (NOT modules[0])
|
|
30
|
+
vital: (master.cadrage.globalScope?.mustHave || master.cadrage.coverageMatrix?.filter(i => i.category === "mustHave") || [])
|
|
31
|
+
.map(item => typeof item === 'string' ? { name: item, description: "", module: null } : { name: item.item || item, description: item.notes || "", module: item.module || null }),
|
|
32
|
+
important: (master.cadrage.globalScope?.shouldHave || master.cadrage.coverageMatrix?.filter(i => i.category === "shouldHave") || [])
|
|
33
|
+
.map(item => typeof item === 'string' ? { name: item, description: "", module: null } : { name: item.item || item, description: item.notes || "", module: item.module || null }),
|
|
34
|
+
optional: (master.cadrage.globalScope?.couldHave || master.cadrage.coverageMatrix?.filter(i => i.category === "couldHave") || [])
|
|
35
|
+
.map(item => typeof item === 'string' ? { name: item, description: "", module: null } : { name: item.item || item, description: item.notes || "", module: item.module || null }),
|
|
36
|
+
excluded: (master.cadrage.globalScope?.outOfScope || master.cadrage.coverageMatrix?.filter(i => i.category === "outOfScope") || [])
|
|
37
|
+
.map(item => typeof item === 'string' ? { name: item, description: "", module: null } : { name: item.item || item, description: item.notes || "", module: item.module || null })
|
|
38
|
+
},
|
|
39
|
+
risks: (master.cadrage.risks || []).map(r => ({
|
|
40
|
+
description: r.description,
|
|
41
|
+
probability: r.probability,
|
|
42
|
+
impact: r.impact,
|
|
43
|
+
mitigation: r.mitigation
|
|
44
|
+
})),
|
|
45
|
+
stakeholders: (master.cadrage.stakeholders || []).map(s => ({
|
|
46
|
+
role: s.role,
|
|
47
|
+
function: s.function,
|
|
48
|
+
tasks: s.tasks || [],
|
|
49
|
+
frequency: s.frequency || "",
|
|
50
|
+
access: s.involvement || "",
|
|
51
|
+
frustrations: (s.painPoints || []).join("\n")
|
|
52
|
+
}))
|
|
53
|
+
},
|
|
54
|
+
modules: [
|
|
55
|
+
// FOR EACH module in master.modules[]:
|
|
56
|
+
{
|
|
57
|
+
code: module.code, // PascalCase key (e.g., "GestionTemps")
|
|
58
|
+
name: module.name || module.code, // Display name (e.g., "Gestion du temps") — MANDATORY
|
|
59
|
+
description: module.description || "",
|
|
60
|
+
featureType: module.featureType || "data-centric",
|
|
61
|
+
priority: module.priority || "must",
|
|
62
|
+
estimatedComplexity: module.estimatedComplexity || "medium",
|
|
63
|
+
entities: module.entities || [],
|
|
64
|
+
anticipatedSections: module.anticipatedSections || [],
|
|
65
|
+
dependencies: module.dependencies || [],
|
|
66
|
+
dependents: module.dependents || []
|
|
67
|
+
}
|
|
68
|
+
],
|
|
69
|
+
moduleSpecs: {
|
|
70
|
+
// CRITICAL: Must have ONE entry per module with ALL module data
|
|
71
|
+
"{moduleCode}": {
|
|
72
|
+
useCases: module.specification.useCases || [],
|
|
73
|
+
businessRules: module.analysis.businessRules || [],
|
|
74
|
+
// ENTITY SAFETY NET: map fields[] → attributes[] if agent deviated from canonical format
|
|
75
|
+
entities: (module.analysis.entities || []).map(ent => ({
|
|
76
|
+
name: ent.name,
|
|
77
|
+
description: ent.description || "",
|
|
78
|
+
attributes: (ent.attributes || []).length > 0
|
|
79
|
+
? ent.attributes.map(a => ({ name: a.name, description: a.description || "" }))
|
|
80
|
+
: (ent.fields || []).map(f => ({ name: f.name, description: f.description || f.type || "" })),
|
|
81
|
+
relationships: (ent.relationships || []).length > 0
|
|
82
|
+
? ent.relationships.map(r =>
|
|
83
|
+
typeof r === 'string' ? r : `${r.target} (${r.type}) - ${r.description || ""}`)
|
|
84
|
+
: (ent.fields || []).filter(f => f.foreignKey)
|
|
85
|
+
.map(f => `${f.foreignKey.table} (N:1) - ${f.description || f.name}`)
|
|
86
|
+
})),
|
|
87
|
+
permissions: module.specification.permissions || [],
|
|
88
|
+
apiEndpoints: module.specification.apiEndpoints || []
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
consolidation: {
|
|
92
|
+
integrations: master.consolidation.integrations || [],
|
|
93
|
+
sharedEntities: master.consolidation.sharedEntities || [],
|
|
94
|
+
sequenceDiagrams: master.consolidation.e2eFlows || []
|
|
95
|
+
},
|
|
96
|
+
handoff: {
|
|
97
|
+
complexity: master.handoff.complexity,
|
|
98
|
+
implementationStrategy: master.handoff.implementationStrategy,
|
|
99
|
+
moduleOrder: master.handoff.moduleOrder,
|
|
100
|
+
filesToCreate: master.handoff.filesToCreate,
|
|
101
|
+
brToCodeMapping: master.handoff.brToCodeMapping,
|
|
102
|
+
apiEndpointSummary: master.handoff.apiEndpointSummary
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Build Process
|
|
108
|
+
|
|
109
|
+
1. Extract metadata from master feature.json
|
|
110
|
+
2. Extract cadrage from master feature.json (CONVERT scope keys)
|
|
111
|
+
3. Extract stakeholders from master.stakeholders
|
|
112
|
+
4. Iterate ALL modules and populate moduleSpecs (THIS IS CRITICAL — empty moduleSpecs = BUG)
|
|
113
|
+
5. For EACH module, extract: useCases, businessRules, entities, permissions, apiEndpoints
|
|
114
|
+
6. Extract consolidation data (integrations, shared entities, E2E flows)
|
|
115
|
+
7. Extract handoff section (complexity, strategy, module order, file counts)
|
|
116
|
+
|
|
117
|
+
## EMBEDDED_ARTIFACTS Object
|
|
118
|
+
|
|
119
|
+
> **CRITICAL:** The wireframes object is keyed by moduleCode (NOT a flat array).
|
|
120
|
+
> Field names MUST be renamed from feature.json: `mockupFormat` → `format`, `mockup` → `content`.
|
|
121
|
+
> The HTML renderer reads `wf.format` and `wf.content` — using feature.json names will produce EMPTY mockups.
|
|
122
|
+
|
|
123
|
+
```javascript
|
|
124
|
+
const EMBEDDED_ARTIFACTS = {
|
|
125
|
+
wireframes: {
|
|
126
|
+
// PER-MODULE keyed object (NOT a flat array)
|
|
127
|
+
// FOR EACH module: extract from specification.uiWireframes[] OR specification.wireframes[] (SAFETY NET)
|
|
128
|
+
// IMPORTANT: The agent may write wireframes under either key name — always check BOTH
|
|
129
|
+
[moduleCode]: (moduleFeature.specification.uiWireframes || moduleFeature.specification.wireframes || []).map(wf => ({
|
|
130
|
+
screen: wf.screen || wf.name || wf.title || wf.id || "", // SAFETY NET: fallback name/title/id → screen
|
|
131
|
+
section: wf.section || "", // e.g. "list"
|
|
132
|
+
format: wf.mockupFormat || "ascii", // RENAME: mockupFormat → format
|
|
133
|
+
content: wf.mockup || wf.ascii || wf.content || "", // SAFETY NET: mockup/ascii/content → content
|
|
134
|
+
svgContent: null, // Populated by SVG generation step (see wireframe-svg-style-guide.md)
|
|
135
|
+
description: wf.description || "",
|
|
136
|
+
elements: wf.elements || [], // [{ id, type, label }] or ["DataGrid", ...]
|
|
137
|
+
actions: wf.actions || [], // [{ trigger, action }] or ["filter", ...]
|
|
138
|
+
// SAFETY NET: convert object → array format if agent used { "Header": "PageHeader" } instead of [{ wireframeElement, reactComponent }]
|
|
139
|
+
componentMapping: Array.isArray(wf.componentMapping) ? wf.componentMapping
|
|
140
|
+
: typeof wf.componentMapping === 'object' && wf.componentMapping !== null
|
|
141
|
+
? Object.entries(wf.componentMapping).map(([k, v]) => ({ wireframeElement: k, reactComponent: v }))
|
|
142
|
+
: [],
|
|
143
|
+
layout: typeof wf.layout === 'object' ? wf.layout : null, // SAFETY NET: ignore string layout ("grid")
|
|
144
|
+
permissionsRequired: wf.permissionsRequired || []
|
|
145
|
+
}))
|
|
146
|
+
},
|
|
147
|
+
e2eFlows: (master.consolidation?.e2eFlows || []).map(flow => ({
|
|
148
|
+
name: flow.name,
|
|
149
|
+
diagram: flow.steps.map(s => `${s.action}(${s.module})`).join(" ──→ "),
|
|
150
|
+
steps: flow.steps || [],
|
|
151
|
+
actors: [...new Set(flow.steps.map(s => s.permission?.split(".")[0]).filter(Boolean))].join(", "),
|
|
152
|
+
modules: [...new Set(flow.steps.map(s => s.module))].join(" → ")
|
|
153
|
+
})),
|
|
154
|
+
dependencyGraph: {
|
|
155
|
+
nodes: (master.modules || []).map(m => ({
|
|
156
|
+
id: m.code, label: m.code, type: m.featureType || "data-centric"
|
|
157
|
+
})),
|
|
158
|
+
edges: (master.dependencyGraph?.edges || []).map(e => ({
|
|
159
|
+
from: e.from, to: e.to, description: e.description || ""
|
|
160
|
+
}))
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Artifact Gathering
|
|
166
|
+
|
|
167
|
+
1. For EACH module: read `specification.uiWireframes[]` OR `specification.wireframes[]` (check BOTH keys — agent may use either), **rename fields** (`mockupFormat`→`format`, `mockup`/`ascii`/`content`→`content`, `screen`/`name`/`title`→`screen`), store under `wireframes[moduleCode]`
|
|
168
|
+
2. Read master's `consolidation.e2eFlows[]` and build e2eFlows array with diagram generation
|
|
169
|
+
3. Read master's `dependencyGraph` and build nodes/edges
|
|
170
|
+
4. Serialize as JSON with 2-space indentation
|
|
171
|
+
5. **SVG Wireframe Enrichment** (after wireframe extraction): For EACH wireframe with `content` (ASCII) and `svgContent === null`, generate SVG using parallel Task(sonnet) agents. See [wireframe-svg-style-guide.md](wireframe-svg-style-guide.md) for the complete prompt template and orchestration process. If generation fails for any wireframe → leave `svgContent` as null (graceful fallback to ASCII).
|
|
172
|
+
|
|
173
|
+
## Placeholder Replacement
|
|
174
|
+
|
|
175
|
+
1. Serialize FEATURE_DATA as JSON (2-space indent)
|
|
176
|
+
2. Serialize EMBEDDED_ARTIFACTS as JSON (2-space indent)
|
|
177
|
+
3. Replace `{{FEATURE_DATA}}` with serialized FEATURE_DATA
|
|
178
|
+
4. Replace `{{EMBEDDED_ARTIFACTS}}` with serialized EMBEDDED_ARTIFACTS
|
|
179
|
+
5. Replace `{{APPLICATION_NAME}}`, `{{APPLICATION_ID}}`, `{{VERSION}}`, `{{CREATED_AT}}`
|
|
180
|
+
6. Verify: grep for `{{` to confirm all placeholders replaced
|