@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,415 +1,415 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: step-04a-collect
|
|
3
|
-
description: Collect module summaries and cross-module interactions
|
|
4
|
-
model: opus
|
|
5
|
-
next_step: steps/step-04b-analyze.md
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
> **Context files:** `_shared.md` | `_suggestions.md`
|
|
9
|
-
|
|
10
|
-
# Step 4a: Collect - Module Summaries & Cross-Module Interactions
|
|
11
|
-
|
|
12
|
-
## MANDATORY EXECUTION RULES
|
|
13
|
-
- ALWAYS load summaries of ALL completed modules
|
|
14
|
-
- NEVER duplicate module content - work with summaries only
|
|
15
|
-
- This step auto-validates for single-module (trivial consolidation)
|
|
16
|
-
|
|
17
|
-
## YOUR TASK
|
|
18
|
-
Collect module summaries and identify all cross-module interactions (FK references, shared entities, events, shared data).
|
|
19
|
-
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
## EXECUTION SEQUENCE
|
|
23
|
-
|
|
24
|
-
### 1. Read Module Summaries
|
|
25
|
-
|
|
26
|
-
```
|
|
27
|
-
ba-reader.getCompletedModulesSummary({feature_id})
|
|
28
|
-
→ For each module: code, entities[], key BRs, permissions[], dependencies
|
|
29
|
-
→ Max 100 lines per module summary
|
|
30
|
-
|
|
31
|
-
ba-reader.readApplicationContext({feature_id})
|
|
32
|
-
→ cadrage.applicationRoles, modules[], dependencyGraph
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
IF status already "consolidated":
|
|
36
|
-
Display: "Consolidation already completed. Loading step-05a-handoff."
|
|
37
|
-
Load: steps/step-05a-handoff.md
|
|
38
|
-
STOP
|
|
39
|
-
|
|
40
|
-
### 2. Cross-Module Interactions
|
|
41
|
-
|
|
42
|
-
**2a. Foreign Key References**
|
|
43
|
-
|
|
44
|
-
For each dependency edge in dependencyGraph:
|
|
45
|
-
```json
|
|
46
|
-
{
|
|
47
|
-
"from": "Orders",
|
|
48
|
-
"to": "Customers",
|
|
49
|
-
"type": "FK",
|
|
50
|
-
"references": [
|
|
51
|
-
{
|
|
52
|
-
"sourceEntity": "Order",
|
|
53
|
-
"sourceField": "CustomerId",
|
|
54
|
-
"targetEntity": "Customer",
|
|
55
|
-
"targetField": "Id",
|
|
56
|
-
"cardinality": "N:1",
|
|
57
|
-
"cascadeDelete": false,
|
|
58
|
-
"required": true
|
|
59
|
-
}
|
|
60
|
-
]
|
|
61
|
-
}
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
Verify each FK reference exists in the corresponding module's entities.
|
|
65
|
-
IF missing → WARNING + ask user to confirm or add.
|
|
66
|
-
|
|
67
|
-
**2b. Shared Entities**
|
|
68
|
-
|
|
69
|
-
Detect entities referenced by multiple modules:
|
|
70
|
-
```json
|
|
71
|
-
{
|
|
72
|
-
"sharedEntities": [
|
|
73
|
-
{
|
|
74
|
-
"entity": "Customer",
|
|
75
|
-
"definedIn": "Customers",
|
|
76
|
-
"referencedBy": ["Orders", "Invoices"],
|
|
77
|
-
"referenceType": "FK"
|
|
78
|
-
}
|
|
79
|
-
]
|
|
80
|
-
}
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
**2c. Event-Based Interactions**
|
|
84
|
-
|
|
85
|
-
Identify event flows between modules:
|
|
86
|
-
```json
|
|
87
|
-
{
|
|
88
|
-
"events": [
|
|
89
|
-
{
|
|
90
|
-
"producer": "Orders",
|
|
91
|
-
"event": "OrderApproved",
|
|
92
|
-
"consumers": ["Invoices"],
|
|
93
|
-
"description": "When an order is approved, an invoice is auto-generated"
|
|
94
|
-
}
|
|
95
|
-
]
|
|
96
|
-
}
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
**2d. Shared Reference Data**
|
|
100
|
-
|
|
101
|
-
Identify shared lookup/reference tables:
|
|
102
|
-
```json
|
|
103
|
-
{
|
|
104
|
-
"sharedReferenceData": [
|
|
105
|
-
{
|
|
106
|
-
"table": "Currency",
|
|
107
|
-
"usedBy": ["Orders", "Invoices"],
|
|
108
|
-
"owner": "shared"
|
|
109
|
-
}
|
|
110
|
-
]
|
|
111
|
-
}
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
**2e. Cross-Module Reference Validation (ENHANCED)**
|
|
115
|
-
|
|
116
|
-
> **CRITICAL:** Verify ALL cross-module entity references are resolvable.
|
|
117
|
-
> **Purpose:** Prevent broken FK references and runtime errors in ralph-loop.
|
|
118
|
-
|
|
119
|
-
**Process:**
|
|
120
|
-
|
|
121
|
-
1. **Build Entity Registry:**
|
|
122
|
-
```javascript
|
|
123
|
-
const entityRegistry = {};
|
|
124
|
-
for (const module of completedModules) {
|
|
125
|
-
entityRegistry[module.code] = {
|
|
126
|
-
entities: module.analysis.entities.map(e => ({
|
|
127
|
-
name: e.name,
|
|
128
|
-
attributes: e.attributes.map(a => a.name),
|
|
129
|
-
pk: e.attributes.find(a => a.name === "Id" || a.unique)?.name || "Id"
|
|
130
|
-
}))
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
2. **Extract Cross-Module References:**
|
|
136
|
-
|
|
137
|
-
For EACH module, scan all entity relationships:
|
|
138
|
-
```javascript
|
|
139
|
-
for (const entity of module.analysis.entities) {
|
|
140
|
-
for (const rel of entity.relationships) {
|
|
141
|
-
// Detect cross-module reference
|
|
142
|
-
if (rel.target.includes(".")) {
|
|
143
|
-
// Format: "ModuleName.EntityName.FieldName" or "ModuleName.EntityName"
|
|
144
|
-
const [targetModule, targetEntity, targetField] = rel.target.split(".");
|
|
145
|
-
|
|
146
|
-
// Validate: target module exists
|
|
147
|
-
if (!entityRegistry[targetModule]) {
|
|
148
|
-
BLOCKING_ERROR(`Module ${module.code}: Entity ${entity.name} references non-existent module "${targetModule}"`);
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
// Validate: target entity exists in target module
|
|
152
|
-
const targetModuleEntities = entityRegistry[targetModule].entities;
|
|
153
|
-
const resolvedEntity = targetModuleEntities.find(e => e.name === targetEntity);
|
|
154
|
-
if (!resolvedEntity) {
|
|
155
|
-
BLOCKING_ERROR(`Module ${module.code}: Entity ${entity.name} references non-existent entity "${targetEntity}" in module "${targetModule}"`);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
// Validate: target field exists (if specified)
|
|
159
|
-
if (targetField && !resolvedEntity.attributes.includes(targetField)) {
|
|
160
|
-
BLOCKING_ERROR(`Module ${module.code}: Entity ${entity.name} references non-existent field "${targetField}" on "${targetModule}.${targetEntity}"`);
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
// Record valid reference
|
|
164
|
-
crossModuleReferences.push({
|
|
165
|
-
sourceModule: module.code,
|
|
166
|
-
sourceEntity: entity.name,
|
|
167
|
-
sourceField: rel.sourceField || `${targetEntity}Id`,
|
|
168
|
-
targetModule,
|
|
169
|
-
targetEntity,
|
|
170
|
-
targetField: targetField || resolvedEntity.pk,
|
|
171
|
-
type: rel.type,
|
|
172
|
-
cardinality: rel.cardinality || "N:1",
|
|
173
|
-
status: "RESOLVED"
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
3. **Validate Dependency Graph Alignment:**
|
|
181
|
-
|
|
182
|
-
```javascript
|
|
183
|
-
// For each cross-module reference, verify dependency edge exists
|
|
184
|
-
for (const ref of crossModuleReferences) {
|
|
185
|
-
const dependencyExists = dependencyGraph.edges.find(edge =>
|
|
186
|
-
edge.from === ref.sourceModule && edge.to === ref.targetModule
|
|
187
|
-
);
|
|
188
|
-
|
|
189
|
-
if (!dependencyExists) {
|
|
190
|
-
WARNING(`Dependency missing: ${ref.sourceModule} → ${ref.targetModule}`);
|
|
191
|
-
WARNING(`Reason: ${ref.sourceEntity}.${ref.sourceField} references ${ref.targetModule}.${ref.targetEntity}`);
|
|
192
|
-
|
|
193
|
-
// Auto-fix: add missing dependency edge
|
|
194
|
-
dependencyGraph.edges.push({
|
|
195
|
-
from: ref.sourceModule,
|
|
196
|
-
to: ref.targetModule,
|
|
197
|
-
type: "FK",
|
|
198
|
-
reason: `${ref.sourceEntity}.${ref.sourceField} → ${ref.targetEntity}`
|
|
199
|
-
});
|
|
200
|
-
|
|
201
|
-
// Recalculate topological order
|
|
202
|
-
topologicalOrder = calculateTopologicalOrder(dependencyGraph);
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
4. **Display Cross-Module Reference Map:**
|
|
208
|
-
|
|
209
|
-
```
|
|
210
|
-
═══════════════════════════════════════════════════════════════
|
|
211
|
-
CROSS-MODULE REFERENCES VALIDATED
|
|
212
|
-
═══════════════════════════════════════════════════════════════
|
|
213
|
-
|
|
214
|
-
| Source Module | Source Entity | Target | Type | Status |
|
|
215
|
-
|---------------|---------------|--------|------|--------|
|
|
216
|
-
| TimeTracking | TimeEntry | Projects.Project.Id | FK (N:1) | ✓ RESOLVED |
|
|
217
|
-
| LeaveManagement | LeaveRequest | Projects.Employee.Id | FK (N:1) | ✓ RESOLVED |
|
|
218
|
-
| AbsenceManagement | Absence | Projects.Employee.Id | FK (N:1) | ✓ RESOLVED |
|
|
219
|
-
| Reporting | ProjectReport | Projects.Project.Id | FK (N:1) | ✓ RESOLVED |
|
|
220
|
-
|
|
221
|
-
Total: {count} cross-module references
|
|
222
|
-
All references RESOLVED ✓
|
|
223
|
-
═══════════════════════════════════════════════════════════════
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
5. **Detect Circular Dependencies:**
|
|
227
|
-
|
|
228
|
-
```javascript
|
|
229
|
-
const cycles = detectCycles(dependencyGraph);
|
|
230
|
-
|
|
231
|
-
if (cycles.length > 0) {
|
|
232
|
-
BLOCKING_ERROR("Circular dependencies detected:");
|
|
233
|
-
for (const cycle of cycles) {
|
|
234
|
-
ERROR(` ${cycle.join(" → ")}`);
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
ACTIONS:
|
|
238
|
-
1. Review module dependencies
|
|
239
|
-
2. Break cycles by:
|
|
240
|
-
- Moving shared entities to a separate "Core" module
|
|
241
|
-
- Using event-driven communication instead of FK
|
|
242
|
-
- Removing unnecessary dependencies
|
|
243
|
-
3. Re-run step-02 decomposition with fixed dependencies
|
|
244
|
-
|
|
245
|
-
STOP - DO NOT PROCEED TO HANDOFF
|
|
246
|
-
}
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
6. **Store Cross-Module Interaction Data:**
|
|
250
|
-
|
|
251
|
-
```javascript
|
|
252
|
-
ba-writer.enrichSection({
|
|
253
|
-
featureId: {feature_id},
|
|
254
|
-
section: "consolidation",
|
|
255
|
-
data: {
|
|
256
|
-
crossModuleInteractions: crossModuleReferences.map(ref => ({
|
|
257
|
-
fromModule: ref.sourceModule,
|
|
258
|
-
toModule: ref.targetModule,
|
|
259
|
-
interactionType: "FK_REFERENCE",
|
|
260
|
-
description: `${ref.sourceEntity}.${ref.sourceField} → ${ref.targetModule}.${ref.targetEntity}.${ref.targetField}`,
|
|
261
|
-
entities: [ref.sourceEntity, ref.targetEntity],
|
|
262
|
-
cardinality: ref.cardinality,
|
|
263
|
-
status: ref.status
|
|
264
|
-
}))
|
|
265
|
-
}
|
|
266
|
-
});
|
|
267
|
-
```
|
|
268
|
-
|
|
269
|
-
**Success Criteria:**
|
|
270
|
-
- ✓ All cross-module references resolved
|
|
271
|
-
- ✓ Dependency graph aligned with actual references
|
|
272
|
-
- ✓ No circular dependencies
|
|
273
|
-
- ✓ Topological order valid
|
|
274
|
-
|
|
275
|
-
**Failure Handling:**
|
|
276
|
-
- BLOCKING errors for unresolved references
|
|
277
|
-
- Auto-fix missing dependency edges (with warning)
|
|
278
|
-
- Manual intervention required for circular dependencies
|
|
279
|
-
|
|
280
|
-
---
|
|
281
|
-
|
|
282
|
-
### 2f. Cross-Application Validation (Project Mode Only)
|
|
283
|
-
|
|
284
|
-
> **Only runs when `workflow.mode === "project"`** (multi-application feature).
|
|
285
|
-
> Validates cross-application interactions identified during step-01b.
|
|
286
|
-
|
|
287
|
-
```
|
|
288
|
-
IF workflow.mode !== "project":
|
|
289
|
-
SKIP this section entirely
|
|
290
|
-
→ Proceed to section 6 storage
|
|
291
|
-
```
|
|
292
|
-
|
|
293
|
-
**Process:**
|
|
294
|
-
|
|
295
|
-
1. **Load project feature.json:**
|
|
296
|
-
```
|
|
297
|
-
projectFeature = ba-reader.findProjectFeature()
|
|
298
|
-
applications = projectFeature.applications
|
|
299
|
-
applicationGraph = projectFeature.applicationDependencyGraph
|
|
300
|
-
```
|
|
301
|
-
|
|
302
|
-
2. **Cross-Application Shared Entities:**
|
|
303
|
-
```javascript
|
|
304
|
-
const crossAppSharedEntities = [];
|
|
305
|
-
for (const app1 of applications) {
|
|
306
|
-
for (const app2 of applications) {
|
|
307
|
-
if (app1.code === app2.code) continue;
|
|
308
|
-
for (const mod1 of app1.modules) {
|
|
309
|
-
for (const mod2 of app2.modules) {
|
|
310
|
-
// Detect entity name overlap or FK references across apps
|
|
311
|
-
const shared = findSharedEntities(mod1.entities, mod2.entities);
|
|
312
|
-
if (shared.length > 0) {
|
|
313
|
-
crossAppSharedEntities.push({
|
|
314
|
-
entity: shared[0].name,
|
|
315
|
-
definedInApp: app1.code,
|
|
316
|
-
definedInModule: mod1.code,
|
|
317
|
-
referencedByApp: app2.code,
|
|
318
|
-
referencedByModule: mod2.code,
|
|
319
|
-
referenceType: shared[0].type
|
|
320
|
-
});
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
```
|
|
327
|
-
|
|
328
|
-
3. **Cross-Application Permission Path Consistency:**
|
|
329
|
-
```javascript
|
|
330
|
-
// Verify permission paths use correct prefix per application
|
|
331
|
-
for (const app of applications) {
|
|
332
|
-
const expectedPrefix = toKebabCase(app.code);
|
|
333
|
-
for (const mod of app.modules) {
|
|
334
|
-
for (const perm of mod.permissions || []) {
|
|
335
|
-
if (!perm.path.startsWith(expectedPrefix)) {
|
|
336
|
-
WARNING(`Permission path mismatch in ${app.code}/${mod.code}: "${perm.path}" should start with "${expectedPrefix}"`);
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
```
|
|
342
|
-
|
|
343
|
-
4. **Cross-Application Role Name Consistency:**
|
|
344
|
-
```javascript
|
|
345
|
-
// Check for role name conflicts across applications
|
|
346
|
-
const allRoles = {};
|
|
347
|
-
for (const app of applications) {
|
|
348
|
-
for (const role of app.applicationRoles || []) {
|
|
349
|
-
if (allRoles[role.role] && allRoles[role.role].level !== role.level) {
|
|
350
|
-
WARNING(`Role "${role.role}" has different levels: ${allRoles[role.role].app}=${allRoles[role.role].level} vs ${app.code}=${role.level}`);
|
|
351
|
-
}
|
|
352
|
-
allRoles[role.role] = { app: app.code, level: role.level };
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
```
|
|
356
|
-
|
|
357
|
-
5. **Store Cross-Application Data:**
|
|
358
|
-
```javascript
|
|
359
|
-
ba-writer.enrichSection({
|
|
360
|
-
featureId: {project_id},
|
|
361
|
-
section: "consolidation.crossApplicationInteractions",
|
|
362
|
-
data: crossAppSharedEntities.map(shared => ({
|
|
363
|
-
fromApplication: shared.definedInApp,
|
|
364
|
-
fromModule: shared.definedInModule,
|
|
365
|
-
toApplication: shared.referencedByApp,
|
|
366
|
-
toModule: shared.referencedByModule,
|
|
367
|
-
interactionType: shared.referenceType,
|
|
368
|
-
entity: shared.entity,
|
|
369
|
-
description: `${shared.entity} defined in ${shared.definedInApp}/${shared.definedInModule}, referenced by ${shared.referencedByApp}/${shared.referencedByModule}`
|
|
370
|
-
}))
|
|
371
|
-
});
|
|
372
|
-
```
|
|
373
|
-
|
|
374
|
-
6. **Display Cross-Application Interaction Map:**
|
|
375
|
-
|
|
376
|
-
```
|
|
377
|
-
═══════════════════════════════════════════════════════════════
|
|
378
|
-
CROSS-APPLICATION INTERACTIONS
|
|
379
|
-
═══════════════════════════════════════════════════════════════
|
|
380
|
-
|
|
381
|
-
| Source App | Source Module | Target App | Target Module | Entity | Type |
|
|
382
|
-
|------------|-------------|------------|--------------|--------|------|
|
|
383
|
-
| HR | Employees | SelfService | LeaveRequests | Employee | FK |
|
|
384
|
-
|
|
385
|
-
Shared entities: {count}
|
|
386
|
-
Permission paths: {valid_count}/{total_count} consistent
|
|
387
|
-
Role conflicts: {conflict_count}
|
|
388
|
-
═══════════════════════════════════════════════════════════════
|
|
389
|
-
```
|
|
390
|
-
|
|
391
|
-
---
|
|
392
|
-
|
|
393
|
-
## SINGLE-MODULE MODE
|
|
394
|
-
|
|
395
|
-
When only 1 module:
|
|
396
|
-
1. Skip cross-module interactions (no other modules)
|
|
397
|
-
2. Display: "Module unique - interactions cross-module non applicables ✓"
|
|
398
|
-
3. Proceed directly to step-04c-decide.md (skip analysis)
|
|
399
|
-
|
|
400
|
-
---
|
|
401
|
-
|
|
402
|
-
## CONTEXT MANAGEMENT
|
|
403
|
-
|
|
404
|
-
| Loaded | Not Loaded |
|
|
405
|
-
|--------|------------|
|
|
406
|
-
| _shared.md | Full module feature.json files |
|
|
407
|
-
| Module summaries (100 lines each) | Questionnaires |
|
|
408
|
-
| Master feature.json | Templates |
|
|
409
|
-
| cadrage section | React viewer files |
|
|
410
|
-
|
|
411
|
-
---
|
|
412
|
-
|
|
413
|
-
## NEXT STEP
|
|
414
|
-
|
|
415
|
-
Load: `./step-04b-analyze.md`
|
|
1
|
+
---
|
|
2
|
+
name: step-04a-collect
|
|
3
|
+
description: Collect module summaries and cross-module interactions
|
|
4
|
+
model: opus
|
|
5
|
+
next_step: steps/step-04b-analyze.md
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
> **Context files:** `_shared.md` | `_suggestions.md`
|
|
9
|
+
|
|
10
|
+
# Step 4a: Collect - Module Summaries & Cross-Module Interactions
|
|
11
|
+
|
|
12
|
+
## MANDATORY EXECUTION RULES
|
|
13
|
+
- ALWAYS load summaries of ALL completed modules
|
|
14
|
+
- NEVER duplicate module content - work with summaries only
|
|
15
|
+
- This step auto-validates for single-module (trivial consolidation)
|
|
16
|
+
|
|
17
|
+
## YOUR TASK
|
|
18
|
+
Collect module summaries and identify all cross-module interactions (FK references, shared entities, events, shared data).
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## EXECUTION SEQUENCE
|
|
23
|
+
|
|
24
|
+
### 1. Read Module Summaries
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
ba-reader.getCompletedModulesSummary({feature_id})
|
|
28
|
+
→ For each module: code, entities[], key BRs, permissions[], dependencies
|
|
29
|
+
→ Max 100 lines per module summary
|
|
30
|
+
|
|
31
|
+
ba-reader.readApplicationContext({feature_id})
|
|
32
|
+
→ cadrage.applicationRoles, modules[], dependencyGraph
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
IF status already "consolidated":
|
|
36
|
+
Display: "Consolidation already completed. Loading step-05a-handoff."
|
|
37
|
+
Load: steps/step-05a-handoff.md
|
|
38
|
+
STOP
|
|
39
|
+
|
|
40
|
+
### 2. Cross-Module Interactions
|
|
41
|
+
|
|
42
|
+
**2a. Foreign Key References**
|
|
43
|
+
|
|
44
|
+
For each dependency edge in dependencyGraph:
|
|
45
|
+
```json
|
|
46
|
+
{
|
|
47
|
+
"from": "Orders",
|
|
48
|
+
"to": "Customers",
|
|
49
|
+
"type": "FK",
|
|
50
|
+
"references": [
|
|
51
|
+
{
|
|
52
|
+
"sourceEntity": "Order",
|
|
53
|
+
"sourceField": "CustomerId",
|
|
54
|
+
"targetEntity": "Customer",
|
|
55
|
+
"targetField": "Id",
|
|
56
|
+
"cardinality": "N:1",
|
|
57
|
+
"cascadeDelete": false,
|
|
58
|
+
"required": true
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Verify each FK reference exists in the corresponding module's entities.
|
|
65
|
+
IF missing → WARNING + ask user to confirm or add.
|
|
66
|
+
|
|
67
|
+
**2b. Shared Entities**
|
|
68
|
+
|
|
69
|
+
Detect entities referenced by multiple modules:
|
|
70
|
+
```json
|
|
71
|
+
{
|
|
72
|
+
"sharedEntities": [
|
|
73
|
+
{
|
|
74
|
+
"entity": "Customer",
|
|
75
|
+
"definedIn": "Customers",
|
|
76
|
+
"referencedBy": ["Orders", "Invoices"],
|
|
77
|
+
"referenceType": "FK"
|
|
78
|
+
}
|
|
79
|
+
]
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**2c. Event-Based Interactions**
|
|
84
|
+
|
|
85
|
+
Identify event flows between modules:
|
|
86
|
+
```json
|
|
87
|
+
{
|
|
88
|
+
"events": [
|
|
89
|
+
{
|
|
90
|
+
"producer": "Orders",
|
|
91
|
+
"event": "OrderApproved",
|
|
92
|
+
"consumers": ["Invoices"],
|
|
93
|
+
"description": "When an order is approved, an invoice is auto-generated"
|
|
94
|
+
}
|
|
95
|
+
]
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**2d. Shared Reference Data**
|
|
100
|
+
|
|
101
|
+
Identify shared lookup/reference tables:
|
|
102
|
+
```json
|
|
103
|
+
{
|
|
104
|
+
"sharedReferenceData": [
|
|
105
|
+
{
|
|
106
|
+
"table": "Currency",
|
|
107
|
+
"usedBy": ["Orders", "Invoices"],
|
|
108
|
+
"owner": "shared"
|
|
109
|
+
}
|
|
110
|
+
]
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**2e. Cross-Module Reference Validation (ENHANCED)**
|
|
115
|
+
|
|
116
|
+
> **CRITICAL:** Verify ALL cross-module entity references are resolvable.
|
|
117
|
+
> **Purpose:** Prevent broken FK references and runtime errors in ralph-loop.
|
|
118
|
+
|
|
119
|
+
**Process:**
|
|
120
|
+
|
|
121
|
+
1. **Build Entity Registry:**
|
|
122
|
+
```javascript
|
|
123
|
+
const entityRegistry = {};
|
|
124
|
+
for (const module of completedModules) {
|
|
125
|
+
entityRegistry[module.code] = {
|
|
126
|
+
entities: module.analysis.entities.map(e => ({
|
|
127
|
+
name: e.name,
|
|
128
|
+
attributes: e.attributes.map(a => a.name),
|
|
129
|
+
pk: e.attributes.find(a => a.name === "Id" || a.unique)?.name || "Id"
|
|
130
|
+
}))
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
2. **Extract Cross-Module References:**
|
|
136
|
+
|
|
137
|
+
For EACH module, scan all entity relationships:
|
|
138
|
+
```javascript
|
|
139
|
+
for (const entity of module.analysis.entities) {
|
|
140
|
+
for (const rel of entity.relationships) {
|
|
141
|
+
// Detect cross-module reference
|
|
142
|
+
if (rel.target.includes(".")) {
|
|
143
|
+
// Format: "ModuleName.EntityName.FieldName" or "ModuleName.EntityName"
|
|
144
|
+
const [targetModule, targetEntity, targetField] = rel.target.split(".");
|
|
145
|
+
|
|
146
|
+
// Validate: target module exists
|
|
147
|
+
if (!entityRegistry[targetModule]) {
|
|
148
|
+
BLOCKING_ERROR(`Module ${module.code}: Entity ${entity.name} references non-existent module "${targetModule}"`);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// Validate: target entity exists in target module
|
|
152
|
+
const targetModuleEntities = entityRegistry[targetModule].entities;
|
|
153
|
+
const resolvedEntity = targetModuleEntities.find(e => e.name === targetEntity);
|
|
154
|
+
if (!resolvedEntity) {
|
|
155
|
+
BLOCKING_ERROR(`Module ${module.code}: Entity ${entity.name} references non-existent entity "${targetEntity}" in module "${targetModule}"`);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// Validate: target field exists (if specified)
|
|
159
|
+
if (targetField && !resolvedEntity.attributes.includes(targetField)) {
|
|
160
|
+
BLOCKING_ERROR(`Module ${module.code}: Entity ${entity.name} references non-existent field "${targetField}" on "${targetModule}.${targetEntity}"`);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// Record valid reference
|
|
164
|
+
crossModuleReferences.push({
|
|
165
|
+
sourceModule: module.code,
|
|
166
|
+
sourceEntity: entity.name,
|
|
167
|
+
sourceField: rel.sourceField || `${targetEntity}Id`,
|
|
168
|
+
targetModule,
|
|
169
|
+
targetEntity,
|
|
170
|
+
targetField: targetField || resolvedEntity.pk,
|
|
171
|
+
type: rel.type,
|
|
172
|
+
cardinality: rel.cardinality || "N:1",
|
|
173
|
+
status: "RESOLVED"
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
3. **Validate Dependency Graph Alignment:**
|
|
181
|
+
|
|
182
|
+
```javascript
|
|
183
|
+
// For each cross-module reference, verify dependency edge exists
|
|
184
|
+
for (const ref of crossModuleReferences) {
|
|
185
|
+
const dependencyExists = dependencyGraph.edges.find(edge =>
|
|
186
|
+
edge.from === ref.sourceModule && edge.to === ref.targetModule
|
|
187
|
+
);
|
|
188
|
+
|
|
189
|
+
if (!dependencyExists) {
|
|
190
|
+
WARNING(`Dependency missing: ${ref.sourceModule} → ${ref.targetModule}`);
|
|
191
|
+
WARNING(`Reason: ${ref.sourceEntity}.${ref.sourceField} references ${ref.targetModule}.${ref.targetEntity}`);
|
|
192
|
+
|
|
193
|
+
// Auto-fix: add missing dependency edge
|
|
194
|
+
dependencyGraph.edges.push({
|
|
195
|
+
from: ref.sourceModule,
|
|
196
|
+
to: ref.targetModule,
|
|
197
|
+
type: "FK",
|
|
198
|
+
reason: `${ref.sourceEntity}.${ref.sourceField} → ${ref.targetEntity}`
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
// Recalculate topological order
|
|
202
|
+
topologicalOrder = calculateTopologicalOrder(dependencyGraph);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
4. **Display Cross-Module Reference Map:**
|
|
208
|
+
|
|
209
|
+
```
|
|
210
|
+
═══════════════════════════════════════════════════════════════
|
|
211
|
+
CROSS-MODULE REFERENCES VALIDATED
|
|
212
|
+
═══════════════════════════════════════════════════════════════
|
|
213
|
+
|
|
214
|
+
| Source Module | Source Entity | Target | Type | Status |
|
|
215
|
+
|---------------|---------------|--------|------|--------|
|
|
216
|
+
| TimeTracking | TimeEntry | Projects.Project.Id | FK (N:1) | ✓ RESOLVED |
|
|
217
|
+
| LeaveManagement | LeaveRequest | Projects.Employee.Id | FK (N:1) | ✓ RESOLVED |
|
|
218
|
+
| AbsenceManagement | Absence | Projects.Employee.Id | FK (N:1) | ✓ RESOLVED |
|
|
219
|
+
| Reporting | ProjectReport | Projects.Project.Id | FK (N:1) | ✓ RESOLVED |
|
|
220
|
+
|
|
221
|
+
Total: {count} cross-module references
|
|
222
|
+
All references RESOLVED ✓
|
|
223
|
+
═══════════════════════════════════════════════════════════════
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
5. **Detect Circular Dependencies:**
|
|
227
|
+
|
|
228
|
+
```javascript
|
|
229
|
+
const cycles = detectCycles(dependencyGraph);
|
|
230
|
+
|
|
231
|
+
if (cycles.length > 0) {
|
|
232
|
+
BLOCKING_ERROR("Circular dependencies detected:");
|
|
233
|
+
for (const cycle of cycles) {
|
|
234
|
+
ERROR(` ${cycle.join(" → ")}`);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
ACTIONS:
|
|
238
|
+
1. Review module dependencies
|
|
239
|
+
2. Break cycles by:
|
|
240
|
+
- Moving shared entities to a separate "Core" module
|
|
241
|
+
- Using event-driven communication instead of FK
|
|
242
|
+
- Removing unnecessary dependencies
|
|
243
|
+
3. Re-run step-02 decomposition with fixed dependencies
|
|
244
|
+
|
|
245
|
+
STOP - DO NOT PROCEED TO HANDOFF
|
|
246
|
+
}
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
6. **Store Cross-Module Interaction Data:**
|
|
250
|
+
|
|
251
|
+
```javascript
|
|
252
|
+
ba-writer.enrichSection({
|
|
253
|
+
featureId: {feature_id},
|
|
254
|
+
section: "consolidation",
|
|
255
|
+
data: {
|
|
256
|
+
crossModuleInteractions: crossModuleReferences.map(ref => ({
|
|
257
|
+
fromModule: ref.sourceModule,
|
|
258
|
+
toModule: ref.targetModule,
|
|
259
|
+
interactionType: "FK_REFERENCE",
|
|
260
|
+
description: `${ref.sourceEntity}.${ref.sourceField} → ${ref.targetModule}.${ref.targetEntity}.${ref.targetField}`,
|
|
261
|
+
entities: [ref.sourceEntity, ref.targetEntity],
|
|
262
|
+
cardinality: ref.cardinality,
|
|
263
|
+
status: ref.status
|
|
264
|
+
}))
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
**Success Criteria:**
|
|
270
|
+
- ✓ All cross-module references resolved
|
|
271
|
+
- ✓ Dependency graph aligned with actual references
|
|
272
|
+
- ✓ No circular dependencies
|
|
273
|
+
- ✓ Topological order valid
|
|
274
|
+
|
|
275
|
+
**Failure Handling:**
|
|
276
|
+
- BLOCKING errors for unresolved references
|
|
277
|
+
- Auto-fix missing dependency edges (with warning)
|
|
278
|
+
- Manual intervention required for circular dependencies
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
### 2f. Cross-Application Validation (Project Mode Only)
|
|
283
|
+
|
|
284
|
+
> **Only runs when `workflow.mode === "project"`** (multi-application feature).
|
|
285
|
+
> Validates cross-application interactions identified during step-01b.
|
|
286
|
+
|
|
287
|
+
```
|
|
288
|
+
IF workflow.mode !== "project":
|
|
289
|
+
SKIP this section entirely
|
|
290
|
+
→ Proceed to section 6 storage
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
**Process:**
|
|
294
|
+
|
|
295
|
+
1. **Load project feature.json:**
|
|
296
|
+
```
|
|
297
|
+
projectFeature = ba-reader.findProjectFeature()
|
|
298
|
+
applications = projectFeature.applications
|
|
299
|
+
applicationGraph = projectFeature.applicationDependencyGraph
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
2. **Cross-Application Shared Entities:**
|
|
303
|
+
```javascript
|
|
304
|
+
const crossAppSharedEntities = [];
|
|
305
|
+
for (const app1 of applications) {
|
|
306
|
+
for (const app2 of applications) {
|
|
307
|
+
if (app1.code === app2.code) continue;
|
|
308
|
+
for (const mod1 of app1.modules) {
|
|
309
|
+
for (const mod2 of app2.modules) {
|
|
310
|
+
// Detect entity name overlap or FK references across apps
|
|
311
|
+
const shared = findSharedEntities(mod1.entities, mod2.entities);
|
|
312
|
+
if (shared.length > 0) {
|
|
313
|
+
crossAppSharedEntities.push({
|
|
314
|
+
entity: shared[0].name,
|
|
315
|
+
definedInApp: app1.code,
|
|
316
|
+
definedInModule: mod1.code,
|
|
317
|
+
referencedByApp: app2.code,
|
|
318
|
+
referencedByModule: mod2.code,
|
|
319
|
+
referenceType: shared[0].type
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
3. **Cross-Application Permission Path Consistency:**
|
|
329
|
+
```javascript
|
|
330
|
+
// Verify permission paths use correct prefix per application
|
|
331
|
+
for (const app of applications) {
|
|
332
|
+
const expectedPrefix = toKebabCase(app.code);
|
|
333
|
+
for (const mod of app.modules) {
|
|
334
|
+
for (const perm of mod.permissions || []) {
|
|
335
|
+
if (!perm.path.startsWith(expectedPrefix)) {
|
|
336
|
+
WARNING(`Permission path mismatch in ${app.code}/${mod.code}: "${perm.path}" should start with "${expectedPrefix}"`);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
4. **Cross-Application Role Name Consistency:**
|
|
344
|
+
```javascript
|
|
345
|
+
// Check for role name conflicts across applications
|
|
346
|
+
const allRoles = {};
|
|
347
|
+
for (const app of applications) {
|
|
348
|
+
for (const role of app.applicationRoles || []) {
|
|
349
|
+
if (allRoles[role.role] && allRoles[role.role].level !== role.level) {
|
|
350
|
+
WARNING(`Role "${role.role}" has different levels: ${allRoles[role.role].app}=${allRoles[role.role].level} vs ${app.code}=${role.level}`);
|
|
351
|
+
}
|
|
352
|
+
allRoles[role.role] = { app: app.code, level: role.level };
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
5. **Store Cross-Application Data:**
|
|
358
|
+
```javascript
|
|
359
|
+
ba-writer.enrichSection({
|
|
360
|
+
featureId: {project_id},
|
|
361
|
+
section: "consolidation.crossApplicationInteractions",
|
|
362
|
+
data: crossAppSharedEntities.map(shared => ({
|
|
363
|
+
fromApplication: shared.definedInApp,
|
|
364
|
+
fromModule: shared.definedInModule,
|
|
365
|
+
toApplication: shared.referencedByApp,
|
|
366
|
+
toModule: shared.referencedByModule,
|
|
367
|
+
interactionType: shared.referenceType,
|
|
368
|
+
entity: shared.entity,
|
|
369
|
+
description: `${shared.entity} defined in ${shared.definedInApp}/${shared.definedInModule}, referenced by ${shared.referencedByApp}/${shared.referencedByModule}`
|
|
370
|
+
}))
|
|
371
|
+
});
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
6. **Display Cross-Application Interaction Map:**
|
|
375
|
+
|
|
376
|
+
```
|
|
377
|
+
═══════════════════════════════════════════════════════════════
|
|
378
|
+
CROSS-APPLICATION INTERACTIONS
|
|
379
|
+
═══════════════════════════════════════════════════════════════
|
|
380
|
+
|
|
381
|
+
| Source App | Source Module | Target App | Target Module | Entity | Type |
|
|
382
|
+
|------------|-------------|------------|--------------|--------|------|
|
|
383
|
+
| HR | Employees | SelfService | LeaveRequests | Employee | FK |
|
|
384
|
+
|
|
385
|
+
Shared entities: {count}
|
|
386
|
+
Permission paths: {valid_count}/{total_count} consistent
|
|
387
|
+
Role conflicts: {conflict_count}
|
|
388
|
+
═══════════════════════════════════════════════════════════════
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
---
|
|
392
|
+
|
|
393
|
+
## SINGLE-MODULE MODE
|
|
394
|
+
|
|
395
|
+
When only 1 module:
|
|
396
|
+
1. Skip cross-module interactions (no other modules)
|
|
397
|
+
2. Display: "Module unique - interactions cross-module non applicables ✓"
|
|
398
|
+
3. Proceed directly to step-04c-decide.md (skip analysis)
|
|
399
|
+
|
|
400
|
+
---
|
|
401
|
+
|
|
402
|
+
## CONTEXT MANAGEMENT
|
|
403
|
+
|
|
404
|
+
| Loaded | Not Loaded |
|
|
405
|
+
|--------|------------|
|
|
406
|
+
| _shared.md | Full module feature.json files |
|
|
407
|
+
| Module summaries (100 lines each) | Questionnaires |
|
|
408
|
+
| Master feature.json | Templates |
|
|
409
|
+
| cadrage section | React viewer files |
|
|
410
|
+
|
|
411
|
+
---
|
|
412
|
+
|
|
413
|
+
## NEXT STEP
|
|
414
|
+
|
|
415
|
+
Load: `./step-04b-analyze.md`
|