@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,180 +1,180 @@
|
|
|
1
|
-
# Database Validation Checks (SQL Server)
|
|
2
|
-
|
|
3
|
-
> **Reference for:** step-05-db-validation.md
|
|
4
|
-
> **Purpose:** Validate migrations, LINQ→SQL translation, multi-tenant isolation, seed data
|
|
5
|
-
> **Scope:** LocalDB availability, pending changes, migration application, integration tests, seed data config
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Check 1: LocalDB Availability
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
sqllocaldb info MSSQLLocalDB
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
**If NOT available:** Skip DB validation, set `DB_VALIDATION = SKIPPED`
|
|
16
|
-
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
## Check 2: Pending Model Changes
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
dotnet ef migrations has-pending-model-changes \
|
|
23
|
-
--project "$INFRA_PROJECT" \
|
|
24
|
-
--startup-project "$API_PROJECT"
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
| Exit Code | Meaning | Action |
|
|
28
|
-
|-----------|---------|--------|
|
|
29
|
-
| 0 | No pending | PASS — continue |
|
|
30
|
-
| Non-zero | Changes not in migration | **FAIL — create migration** |
|
|
31
|
-
|
|
32
|
-
**If FAIL:**
|
|
33
|
-
```bash
|
|
34
|
-
dotnet ef migrations add {SuggestedName} \
|
|
35
|
-
--project {InfraProject} \
|
|
36
|
-
--startup-project {ApiProject} \
|
|
37
|
-
-o Persistence/Migrations
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
## Check 3: Apply Migrations on Temp DB
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
DB_NAME="SmartStack_Validate_$(date +%s)"
|
|
46
|
-
CONN_STRING="Server=(localdb)\\MSSQLLocalDB;Database=$DB_NAME;Integrated Security=true;TrustServerCertificate=true;Connect Timeout=120;"
|
|
47
|
-
|
|
48
|
-
dotnet ef database update \
|
|
49
|
-
--connection "$CONN_STRING" \
|
|
50
|
-
--project "$INFRA_PROJECT" \
|
|
51
|
-
--startup-project "$API_PROJECT"
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
**Common failures:**
|
|
55
|
-
- `Invalid column name` → migration ordering issue
|
|
56
|
-
- `There is already an object named` → duplicate migration
|
|
57
|
-
- `Cannot insert duplicate key` → seed data conflict
|
|
58
|
-
|
|
59
|
-
---
|
|
60
|
-
|
|
61
|
-
## Check 4: Integration Tests vs SQL Server
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
TEST_PROJECT=$(ls tests/*Tests.Integration*/*.csproj 2>/dev/null | head -1)
|
|
65
|
-
dotnet test "$TEST_PROJECT" --no-build --verbosity normal
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
**Validates:**
|
|
69
|
-
- LINQ → SQL translation on real SQL Server (not SQLite)
|
|
70
|
-
- Multi-tenant isolation (global query filters)
|
|
71
|
-
- Soft delete (IsDeleted filter)
|
|
72
|
-
- EF Core configuration (indexes, relationships, constraints)
|
|
73
|
-
|
|
74
|
-
**SQLite → SQL Server differences caught:**
|
|
75
|
-
- `LIKE` case sensitivity
|
|
76
|
-
- Date functions (`date('now')` vs `GETUTCDATE()`)
|
|
77
|
-
- String concatenation (`||` vs `+`)
|
|
78
|
-
- `LIMIT` vs `TOP`
|
|
79
|
-
- `AUTOINCREMENT` vs `IDENTITY`
|
|
80
|
-
|
|
81
|
-
---
|
|
82
|
-
|
|
83
|
-
## Check 5: Dev Seeding Configuration
|
|
84
|
-
|
|
85
|
-
```bash
|
|
86
|
-
# Check appsettings for EnableDevSeeding
|
|
87
|
-
APPSETTINGS=$(ls appsettings.Development.json 2>/dev/null || ls appsettings.json 2>/dev/null)
|
|
88
|
-
PROGRAM_CS=$(find . -name "Program.cs" -path "*/Api/*" 2>/dev/null | head -1)
|
|
89
|
-
|
|
90
|
-
# Result: SEEDING_ENABLED = true/false
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
| Config | Meaning | Action |
|
|
94
|
-
|--------|---------|--------|
|
|
95
|
-
| Program.cs override | PASS | Active in Development |
|
|
96
|
-
| appsettings EnableDevSeeding = true | PASS | Active |
|
|
97
|
-
| appsettings FALSE + no override | WARNING | DevDataSeeder won't run |
|
|
98
|
-
|
|
99
|
-
**Fix:** Add to Program.cs:
|
|
100
|
-
```csharp
|
|
101
|
-
options.EnableDevSeeding = builder.Environment.IsDevelopment();
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
---
|
|
105
|
-
|
|
106
|
-
## Check 6: DefaultTenantId FK Validation
|
|
107
|
-
|
|
108
|
-
```bash
|
|
109
|
-
SEED_CONSTANTS=$(find . -path "*/SeedConstants.cs" 2>/dev/null | head -1)
|
|
110
|
-
TENANT_GUID=$(grep -oP 'DefaultTenantId\s*=\s*Guid\.Parse\("([^"]+)"\)' "$SEED_CONSTANTS" | grep -oP '"[^"]+"' | tr -d '"')
|
|
111
|
-
|
|
112
|
-
# Verify GUID exists in database
|
|
113
|
-
sqlcmd -S "(localdb)\MSSQLLocalDB" -d "$DB_NAME" -Q "
|
|
114
|
-
SET NOCOUNT ON;
|
|
115
|
-
SELECT COUNT(*) FROM core.tenant_Tenants WHERE Id = '$TENANT_GUID'
|
|
116
|
-
"
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
| Result | Status | Meaning |
|
|
120
|
-
|--------|--------|---------|
|
|
121
|
-
| COUNT > 0 | PASS | DefaultTenantId is valid |
|
|
122
|
-
| COUNT = 0 | FAIL | FK phantom: DevDataSeeder uses invalid TenantId → 500 errors |
|
|
123
|
-
|
|
124
|
-
**Fix:** Use a TenantId that is seeded by `InitializeSmartStackAsync()`
|
|
125
|
-
|
|
126
|
-
---
|
|
127
|
-
|
|
128
|
-
## Check 7: Seed Data Accessibility
|
|
129
|
-
|
|
130
|
-
```bash
|
|
131
|
-
# Start API with temp DB
|
|
132
|
-
dotnet run --project "$API_PROJECT" \
|
|
133
|
-
--urls "http://localhost:5097" \
|
|
134
|
-
-- --ConnectionStrings:DefaultConnection="$CONN_STRING" &
|
|
135
|
-
SEED_PID=$!
|
|
136
|
-
|
|
137
|
-
# Verify seed data via API
|
|
138
|
-
TOKEN=$(curl -s -X POST http://localhost:5097/api/auth/login -H "Content-Type: application/json" -d '{"email":"admin@smartstack.io","password":"Admin123!"}' | jq -r '.accessToken')
|
|
139
|
-
|
|
140
|
-
NAV_STATUS=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:5097/api/
|
|
141
|
-
-H "Authorization: Bearer $TOKEN" \
|
|
142
|
-
-H "X-Tenant-Id: 11111111-1111-1111-1111-111111111111")
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
| Status | Meaning |
|
|
146
|
-
|--------|---------|
|
|
147
|
-
| 200 | PASS — core seed data verified |
|
|
148
|
-
| 401 | WARNING — authentication issue, seed data check skipped |
|
|
149
|
-
| 404 | WARNING — API endpoint not available |
|
|
150
|
-
|
|
151
|
-
---
|
|
152
|
-
|
|
153
|
-
## Check 8: Cleanup
|
|
154
|
-
|
|
155
|
-
```bash
|
|
156
|
-
# Drop temp database
|
|
157
|
-
sqlcmd -S "(localdb)\MSSQLLocalDB" -Q "
|
|
158
|
-
IF DB_ID('$DB_NAME') IS NOT NULL
|
|
159
|
-
BEGIN
|
|
160
|
-
ALTER DATABASE [$DB_NAME] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
|
|
161
|
-
DROP DATABASE [$DB_NAME];
|
|
162
|
-
END
|
|
163
|
-
"
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
---
|
|
167
|
-
|
|
168
|
-
## Error Reference Table
|
|
169
|
-
|
|
170
|
-
| Error Pattern | Category | Fix |
|
|
171
|
-
|---------------|----------|-----|
|
|
172
|
-
| `Invalid column name '{Column}'` | Migration ordering | Reorder migration or split |
|
|
173
|
-
| `Cannot insert duplicate key` | Seed data conflict | Make seed data idempotent |
|
|
174
|
-
| `String or binary data would be truncated` | Column length | Increase MaxLength in EF config |
|
|
175
|
-
| `INSERT conflicted with FOREIGN KEY constraint` | Missing parent | Ensure parent entities seeded first |
|
|
176
|
-
| `NULL into column '{Column}'` | Missing default | Add default value or make nullable |
|
|
177
|
-
| `Login failed for user` | LocalDB auth | Run `sqllocaldb start MSSQLLocalDB` |
|
|
178
|
-
| `A network-related or instance-specific error` | LocalDB not running | Run `sqllocaldb start MSSQLLocalDB` |
|
|
179
|
-
| `DefaultTenantId does NOT exist in core.tenant_Tenants` | Phantom FK | Use valid TenantId from InitializeSmartStackAsync() |
|
|
180
|
-
| `EnableDevSeeding is FALSE` + empty tables | Seeding disabled | Add Program.cs override for Development |
|
|
1
|
+
# Database Validation Checks (SQL Server)
|
|
2
|
+
|
|
3
|
+
> **Reference for:** step-05-db-validation.md
|
|
4
|
+
> **Purpose:** Validate migrations, LINQ→SQL translation, multi-tenant isolation, seed data
|
|
5
|
+
> **Scope:** LocalDB availability, pending changes, migration application, integration tests, seed data config
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Check 1: LocalDB Availability
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
sqllocaldb info MSSQLLocalDB
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
**If NOT available:** Skip DB validation, set `DB_VALIDATION = SKIPPED`
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Check 2: Pending Model Changes
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
dotnet ef migrations has-pending-model-changes \
|
|
23
|
+
--project "$INFRA_PROJECT" \
|
|
24
|
+
--startup-project "$API_PROJECT"
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
| Exit Code | Meaning | Action |
|
|
28
|
+
|-----------|---------|--------|
|
|
29
|
+
| 0 | No pending | PASS — continue |
|
|
30
|
+
| Non-zero | Changes not in migration | **FAIL — create migration** |
|
|
31
|
+
|
|
32
|
+
**If FAIL:**
|
|
33
|
+
```bash
|
|
34
|
+
dotnet ef migrations add {SuggestedName} \
|
|
35
|
+
--project {InfraProject} \
|
|
36
|
+
--startup-project {ApiProject} \
|
|
37
|
+
-o Persistence/Migrations
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Check 3: Apply Migrations on Temp DB
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
DB_NAME="SmartStack_Validate_$(date +%s)"
|
|
46
|
+
CONN_STRING="Server=(localdb)\\MSSQLLocalDB;Database=$DB_NAME;Integrated Security=true;TrustServerCertificate=true;Connect Timeout=120;"
|
|
47
|
+
|
|
48
|
+
dotnet ef database update \
|
|
49
|
+
--connection "$CONN_STRING" \
|
|
50
|
+
--project "$INFRA_PROJECT" \
|
|
51
|
+
--startup-project "$API_PROJECT"
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Common failures:**
|
|
55
|
+
- `Invalid column name` → migration ordering issue
|
|
56
|
+
- `There is already an object named` → duplicate migration
|
|
57
|
+
- `Cannot insert duplicate key` → seed data conflict
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Check 4: Integration Tests vs SQL Server
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
TEST_PROJECT=$(ls tests/*Tests.Integration*/*.csproj 2>/dev/null | head -1)
|
|
65
|
+
dotnet test "$TEST_PROJECT" --no-build --verbosity normal
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**Validates:**
|
|
69
|
+
- LINQ → SQL translation on real SQL Server (not SQLite)
|
|
70
|
+
- Multi-tenant isolation (global query filters)
|
|
71
|
+
- Soft delete (IsDeleted filter)
|
|
72
|
+
- EF Core configuration (indexes, relationships, constraints)
|
|
73
|
+
|
|
74
|
+
**SQLite → SQL Server differences caught:**
|
|
75
|
+
- `LIKE` case sensitivity
|
|
76
|
+
- Date functions (`date('now')` vs `GETUTCDATE()`)
|
|
77
|
+
- String concatenation (`||` vs `+`)
|
|
78
|
+
- `LIMIT` vs `TOP`
|
|
79
|
+
- `AUTOINCREMENT` vs `IDENTITY`
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Check 5: Dev Seeding Configuration
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# Check appsettings for EnableDevSeeding
|
|
87
|
+
APPSETTINGS=$(ls appsettings.Development.json 2>/dev/null || ls appsettings.json 2>/dev/null)
|
|
88
|
+
PROGRAM_CS=$(find . -name "Program.cs" -path "*/Api/*" 2>/dev/null | head -1)
|
|
89
|
+
|
|
90
|
+
# Result: SEEDING_ENABLED = true/false
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
| Config | Meaning | Action |
|
|
94
|
+
|--------|---------|--------|
|
|
95
|
+
| Program.cs override | PASS | Active in Development |
|
|
96
|
+
| appsettings EnableDevSeeding = true | PASS | Active |
|
|
97
|
+
| appsettings FALSE + no override | WARNING | DevDataSeeder won't run |
|
|
98
|
+
|
|
99
|
+
**Fix:** Add to Program.cs:
|
|
100
|
+
```csharp
|
|
101
|
+
options.EnableDevSeeding = builder.Environment.IsDevelopment();
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Check 6: DefaultTenantId FK Validation
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
SEED_CONSTANTS=$(find . -path "*/SeedConstants.cs" 2>/dev/null | head -1)
|
|
110
|
+
TENANT_GUID=$(grep -oP 'DefaultTenantId\s*=\s*Guid\.Parse\("([^"]+)"\)' "$SEED_CONSTANTS" | grep -oP '"[^"]+"' | tr -d '"')
|
|
111
|
+
|
|
112
|
+
# Verify GUID exists in database
|
|
113
|
+
sqlcmd -S "(localdb)\MSSQLLocalDB" -d "$DB_NAME" -Q "
|
|
114
|
+
SET NOCOUNT ON;
|
|
115
|
+
SELECT COUNT(*) FROM core.tenant_Tenants WHERE Id = '$TENANT_GUID'
|
|
116
|
+
"
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
| Result | Status | Meaning |
|
|
120
|
+
|--------|--------|---------|
|
|
121
|
+
| COUNT > 0 | PASS | DefaultTenantId is valid |
|
|
122
|
+
| COUNT = 0 | FAIL | FK phantom: DevDataSeeder uses invalid TenantId → 500 errors |
|
|
123
|
+
|
|
124
|
+
**Fix:** Use a TenantId that is seeded by `InitializeSmartStackAsync()`
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Check 7: Seed Data Accessibility
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
# Start API with temp DB
|
|
132
|
+
dotnet run --project "$API_PROJECT" \
|
|
133
|
+
--urls "http://localhost:5097" \
|
|
134
|
+
-- --ConnectionStrings:DefaultConnection="$CONN_STRING" &
|
|
135
|
+
SEED_PID=$!
|
|
136
|
+
|
|
137
|
+
# Verify seed data via API
|
|
138
|
+
TOKEN=$(curl -s -X POST http://localhost:5097/api/auth/login -H "Content-Type: application/json" -d '{"email":"admin@smartstack.io","password":"Admin123!"}' | jq -r '.accessToken')
|
|
139
|
+
|
|
140
|
+
NAV_STATUS=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:5097/api/navigation/modules \
|
|
141
|
+
-H "Authorization: Bearer $TOKEN" \
|
|
142
|
+
-H "X-Tenant-Id: 11111111-1111-1111-1111-111111111111")
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
| Status | Meaning |
|
|
146
|
+
|--------|---------|
|
|
147
|
+
| 200 | PASS — core seed data verified |
|
|
148
|
+
| 401 | WARNING — authentication issue, seed data check skipped |
|
|
149
|
+
| 404 | WARNING — API endpoint not available |
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Check 8: Cleanup
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
# Drop temp database
|
|
157
|
+
sqlcmd -S "(localdb)\MSSQLLocalDB" -Q "
|
|
158
|
+
IF DB_ID('$DB_NAME') IS NOT NULL
|
|
159
|
+
BEGIN
|
|
160
|
+
ALTER DATABASE [$DB_NAME] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
|
|
161
|
+
DROP DATABASE [$DB_NAME];
|
|
162
|
+
END
|
|
163
|
+
"
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## Error Reference Table
|
|
169
|
+
|
|
170
|
+
| Error Pattern | Category | Fix |
|
|
171
|
+
|---------------|----------|-----|
|
|
172
|
+
| `Invalid column name '{Column}'` | Migration ordering | Reorder migration or split |
|
|
173
|
+
| `Cannot insert duplicate key` | Seed data conflict | Make seed data idempotent |
|
|
174
|
+
| `String or binary data would be truncated` | Column length | Increase MaxLength in EF config |
|
|
175
|
+
| `INSERT conflicted with FOREIGN KEY constraint` | Missing parent | Ensure parent entities seeded first |
|
|
176
|
+
| `NULL into column '{Column}'` | Missing default | Add default value or make nullable |
|
|
177
|
+
| `Login failed for user` | LocalDB auth | Run `sqllocaldb start MSSQLLocalDB` |
|
|
178
|
+
| `A network-related or instance-specific error` | LocalDB not running | Run `sqllocaldb start MSSQLLocalDB` |
|
|
179
|
+
| `DefaultTenantId does NOT exist in core.tenant_Tenants` | Phantom FK | Use valid TenantId from InitializeSmartStackAsync() |
|
|
180
|
+
| `EnableDevSeeding is FALSE` + empty tables | Seeding disabled | Add Program.cs override for Development |
|
|
@@ -1,121 +1,121 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: step-00-dependencies
|
|
3
|
-
description: Pre-flight dependency check - verify NuGet packages and runtime assembly resolution
|
|
4
|
-
next_step: steps/step-01-compile.md
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Step 0: Dependency Pre-Flight Check
|
|
8
|
-
|
|
9
|
-
## BLOCKING - Must pass before proceeding to compilation
|
|
10
|
-
|
|
11
|
-
### 1. Locate the solution file
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
ls *.sln 2>/dev/null || find . -maxdepth 2 -name "*.sln" -type f
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
Store as `{solution_file}`.
|
|
18
|
-
|
|
19
|
-
### 2. Restore packages with diagnostic output
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
dotnet restore {SolutionFile} --verbosity normal 2>&1
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
**Parse the output for these NuGet warnings:**
|
|
26
|
-
|
|
27
|
-
| Warning Code | Meaning | Action |
|
|
28
|
-
|-------------|---------|--------|
|
|
29
|
-
| `NU1603` | Package version resolved to different version than requested | Version mismatch -- verify package versions in .csproj |
|
|
30
|
-
| `NU1605` | Downgrade detected | Package version conflict -- update to consistent version |
|
|
31
|
-
| `NU1608` | Package version outside dependency constraint | Incompatible dependency versions |
|
|
32
|
-
| `NU1701` | Package restored using fallback target framework | Potential runtime incompatibility |
|
|
33
|
-
| `NU1902` | Package version range could not be satisfied | Missing package source |
|
|
34
|
-
|
|
35
|
-
**If ANY NU1603/NU1605/NU1608 warnings are found:**
|
|
36
|
-
- List each warning with the affected package name and versions
|
|
37
|
-
- Suggest fix command: `dotnet add {ProjectFile} package {PackageName} --version {CorrectVersion}`
|
|
38
|
-
- This is a WARNING (proceed with caution, may cause runtime errors)
|
|
39
|
-
|
|
40
|
-
### 3. Quick startup smoke test (runtime assembly validation)
|
|
41
|
-
|
|
42
|
-
> **CRITICAL:** This step catches errors that `dotnet build` alone misses.
|
|
43
|
-
> A successful build does NOT guarantee all assemblies are resolvable at runtime.
|
|
44
|
-
> Example: `FileNotFoundException: Could not load file or assembly 'X'` only appears at runtime.
|
|
45
|
-
|
|
46
|
-
```bash
|
|
47
|
-
# Find the API project
|
|
48
|
-
API_PROJECT=$(ls src/*Api*/*.csproj 2>/dev/null | head -1)
|
|
49
|
-
|
|
50
|
-
if [ -n "$API_PROJECT" ]; then
|
|
51
|
-
# Build first (quick, no restore)
|
|
52
|
-
dotnet build "$API_PROJECT" --no-restore --verbosity quiet 2>&1
|
|
53
|
-
|
|
54
|
-
# Start the API and capture output
|
|
55
|
-
dotnet run --project "$API_PROJECT" --urls "http://localhost:5098" > /tmp/ss-dep-check.log 2>&1 &
|
|
56
|
-
STARTUP_PID=$!
|
|
57
|
-
|
|
58
|
-
# Wait up to 10 seconds for either: process exits (crash) or health responds (success)
|
|
59
|
-
STARTUP_OK=false
|
|
60
|
-
for i in $(seq 1 10); do
|
|
61
|
-
# Check if process is still alive
|
|
62
|
-
if ! kill -0 $STARTUP_PID 2>/dev/null; then
|
|
63
|
-
# Process died - read the output for error classification
|
|
64
|
-
echo "API STARTUP CRASH DETECTED"
|
|
65
|
-
cat /tmp/ss-dep-check.log
|
|
66
|
-
break
|
|
67
|
-
fi
|
|
68
|
-
|
|
69
|
-
# Check if health endpoint responds
|
|
70
|
-
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:5098/health 2>/dev/null)
|
|
71
|
-
if [ "$HTTP_CODE" != "000" ]; then
|
|
72
|
-
STARTUP_OK=true
|
|
73
|
-
break
|
|
74
|
-
fi
|
|
75
|
-
sleep 1
|
|
76
|
-
done
|
|
77
|
-
|
|
78
|
-
# Cleanup
|
|
79
|
-
kill $STARTUP_PID 2>/dev/null
|
|
80
|
-
wait $STARTUP_PID 2>/dev/null
|
|
81
|
-
rm -f /tmp/ss-dep-check.log
|
|
82
|
-
fi
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
### 4. Classify startup errors (if crash detected)
|
|
86
|
-
|
|
87
|
-
If the API process crashed, read the output and classify:
|
|
88
|
-
|
|
89
|
-
| Error Pattern | Classification | Fix Command |
|
|
90
|
-
|--------------|----------------|-------------|
|
|
91
|
-
| `FileNotFoundException: Could not load file or assembly '{Name}, Version={V}'` | **MISSING_PACKAGE** | `dotnet add {ApiProject} package {Name} --version {V.Major}.{V.Minor}.{V.Patch}` |
|
|
92
|
-
| `FileNotFoundException: Could not load file or assembly '{Name}'` (no version) | **MISSING_ASSEMBLY** | Check .csproj references and `PrivateAssets` settings |
|
|
93
|
-
| `TypeLoadException: Could not load type '{Type}' from assembly '{Asm}'` | **VERSION_MISMATCH** | `dotnet add {ApiProject} package {Asm} --version {CorrectVersion}` |
|
|
94
|
-
| `MissingMethodException: Method not found: '{Method}'` | **VERSION_MISMATCH** | Update package to matching version |
|
|
95
|
-
| `InvalidOperationException: Unable to resolve service for type '{Type}'` | **MISSING_DI** | Add `services.AddScoped<{Interface}, {Implementation}>()` in DI setup |
|
|
96
|
-
| `InvalidOperationException: The ConnectionString property has not been initialized` | **MISSING_CONFIG** | Add connection string to `appsettings.json` |
|
|
97
|
-
|
|
98
|
-
**For MISSING_PACKAGE specifically:**
|
|
99
|
-
1. Extract the assembly name from the error (text between quotes after "file or assembly")
|
|
100
|
-
2. The NuGet package name is usually identical to the assembly name (e.g., `Microsoft.Extensions.Http.Resilience`)
|
|
101
|
-
3. Extract the version: `Version=X.X.X.X` -> take first 3 segments as NuGet version
|
|
102
|
-
4. Provide exact fix: `dotnet add {ApiProject} package {PackageName} --version {Major.Minor.Patch}`
|
|
103
|
-
5. **If assembly starts with `SmartStack.`**: this is a framework bug in SmartStack.csproj, not a client project issue
|
|
104
|
-
|
|
105
|
-
### 5. Evaluate result
|
|
106
|
-
|
|
107
|
-
| Scenario | Action |
|
|
108
|
-
|----------|--------|
|
|
109
|
-
| No warnings, startup OK | PASS -> proceed to step 1 (compile) |
|
|
110
|
-
| Warnings only, startup OK | WARNING -> display warnings, proceed to step 1 |
|
|
111
|
-
| Startup crash with classified error | **FAIL** -> display classification + fix command, **STOP** |
|
|
112
|
-
| Startup crash with unclassified error | **FAIL** -> display full output, **STOP** for investigation |
|
|
113
|
-
|
|
114
|
-
### 6. Store state
|
|
115
|
-
|
|
116
|
-
```
|
|
117
|
-
{dependency_check_result} = PASS | WARNING | FAIL
|
|
118
|
-
{dependency_warnings} = list of warnings (if any)
|
|
119
|
-
{startup_error_class} = classification (if crash detected)
|
|
120
|
-
{startup_fix_command} = suggested fix command (if crash detected)
|
|
121
|
-
```
|
|
1
|
+
---
|
|
2
|
+
name: step-00-dependencies
|
|
3
|
+
description: Pre-flight dependency check - verify NuGet packages and runtime assembly resolution
|
|
4
|
+
next_step: steps/step-01-compile.md
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Step 0: Dependency Pre-Flight Check
|
|
8
|
+
|
|
9
|
+
## BLOCKING - Must pass before proceeding to compilation
|
|
10
|
+
|
|
11
|
+
### 1. Locate the solution file
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
ls *.sln 2>/dev/null || find . -maxdepth 2 -name "*.sln" -type f
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Store as `{solution_file}`.
|
|
18
|
+
|
|
19
|
+
### 2. Restore packages with diagnostic output
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
dotnet restore {SolutionFile} --verbosity normal 2>&1
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**Parse the output for these NuGet warnings:**
|
|
26
|
+
|
|
27
|
+
| Warning Code | Meaning | Action |
|
|
28
|
+
|-------------|---------|--------|
|
|
29
|
+
| `NU1603` | Package version resolved to different version than requested | Version mismatch -- verify package versions in .csproj |
|
|
30
|
+
| `NU1605` | Downgrade detected | Package version conflict -- update to consistent version |
|
|
31
|
+
| `NU1608` | Package version outside dependency constraint | Incompatible dependency versions |
|
|
32
|
+
| `NU1701` | Package restored using fallback target framework | Potential runtime incompatibility |
|
|
33
|
+
| `NU1902` | Package version range could not be satisfied | Missing package source |
|
|
34
|
+
|
|
35
|
+
**If ANY NU1603/NU1605/NU1608 warnings are found:**
|
|
36
|
+
- List each warning with the affected package name and versions
|
|
37
|
+
- Suggest fix command: `dotnet add {ProjectFile} package {PackageName} --version {CorrectVersion}`
|
|
38
|
+
- This is a WARNING (proceed with caution, may cause runtime errors)
|
|
39
|
+
|
|
40
|
+
### 3. Quick startup smoke test (runtime assembly validation)
|
|
41
|
+
|
|
42
|
+
> **CRITICAL:** This step catches errors that `dotnet build` alone misses.
|
|
43
|
+
> A successful build does NOT guarantee all assemblies are resolvable at runtime.
|
|
44
|
+
> Example: `FileNotFoundException: Could not load file or assembly 'X'` only appears at runtime.
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
# Find the API project
|
|
48
|
+
API_PROJECT=$(ls src/*Api*/*.csproj 2>/dev/null | head -1)
|
|
49
|
+
|
|
50
|
+
if [ -n "$API_PROJECT" ]; then
|
|
51
|
+
# Build first (quick, no restore)
|
|
52
|
+
dotnet build "$API_PROJECT" --no-restore --verbosity quiet 2>&1
|
|
53
|
+
|
|
54
|
+
# Start the API and capture output
|
|
55
|
+
dotnet run --project "$API_PROJECT" --urls "http://localhost:5098" > /tmp/ss-dep-check.log 2>&1 &
|
|
56
|
+
STARTUP_PID=$!
|
|
57
|
+
|
|
58
|
+
# Wait up to 10 seconds for either: process exits (crash) or health responds (success)
|
|
59
|
+
STARTUP_OK=false
|
|
60
|
+
for i in $(seq 1 10); do
|
|
61
|
+
# Check if process is still alive
|
|
62
|
+
if ! kill -0 $STARTUP_PID 2>/dev/null; then
|
|
63
|
+
# Process died - read the output for error classification
|
|
64
|
+
echo "API STARTUP CRASH DETECTED"
|
|
65
|
+
cat /tmp/ss-dep-check.log
|
|
66
|
+
break
|
|
67
|
+
fi
|
|
68
|
+
|
|
69
|
+
# Check if health endpoint responds
|
|
70
|
+
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:5098/health 2>/dev/null)
|
|
71
|
+
if [ "$HTTP_CODE" != "000" ]; then
|
|
72
|
+
STARTUP_OK=true
|
|
73
|
+
break
|
|
74
|
+
fi
|
|
75
|
+
sleep 1
|
|
76
|
+
done
|
|
77
|
+
|
|
78
|
+
# Cleanup
|
|
79
|
+
kill $STARTUP_PID 2>/dev/null
|
|
80
|
+
wait $STARTUP_PID 2>/dev/null
|
|
81
|
+
rm -f /tmp/ss-dep-check.log
|
|
82
|
+
fi
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### 4. Classify startup errors (if crash detected)
|
|
86
|
+
|
|
87
|
+
If the API process crashed, read the output and classify:
|
|
88
|
+
|
|
89
|
+
| Error Pattern | Classification | Fix Command |
|
|
90
|
+
|--------------|----------------|-------------|
|
|
91
|
+
| `FileNotFoundException: Could not load file or assembly '{Name}, Version={V}'` | **MISSING_PACKAGE** | `dotnet add {ApiProject} package {Name} --version {V.Major}.{V.Minor}.{V.Patch}` |
|
|
92
|
+
| `FileNotFoundException: Could not load file or assembly '{Name}'` (no version) | **MISSING_ASSEMBLY** | Check .csproj references and `PrivateAssets` settings |
|
|
93
|
+
| `TypeLoadException: Could not load type '{Type}' from assembly '{Asm}'` | **VERSION_MISMATCH** | `dotnet add {ApiProject} package {Asm} --version {CorrectVersion}` |
|
|
94
|
+
| `MissingMethodException: Method not found: '{Method}'` | **VERSION_MISMATCH** | Update package to matching version |
|
|
95
|
+
| `InvalidOperationException: Unable to resolve service for type '{Type}'` | **MISSING_DI** | Add `services.AddScoped<{Interface}, {Implementation}>()` in DI setup |
|
|
96
|
+
| `InvalidOperationException: The ConnectionString property has not been initialized` | **MISSING_CONFIG** | Add connection string to `appsettings.json` |
|
|
97
|
+
|
|
98
|
+
**For MISSING_PACKAGE specifically:**
|
|
99
|
+
1. Extract the assembly name from the error (text between quotes after "file or assembly")
|
|
100
|
+
2. The NuGet package name is usually identical to the assembly name (e.g., `Microsoft.Extensions.Http.Resilience`)
|
|
101
|
+
3. Extract the version: `Version=X.X.X.X` -> take first 3 segments as NuGet version
|
|
102
|
+
4. Provide exact fix: `dotnet add {ApiProject} package {PackageName} --version {Major.Minor.Patch}`
|
|
103
|
+
5. **If assembly starts with `SmartStack.`**: this is a framework bug in SmartStack.csproj, not a client project issue
|
|
104
|
+
|
|
105
|
+
### 5. Evaluate result
|
|
106
|
+
|
|
107
|
+
| Scenario | Action |
|
|
108
|
+
|----------|--------|
|
|
109
|
+
| No warnings, startup OK | PASS -> proceed to step 1 (compile) |
|
|
110
|
+
| Warnings only, startup OK | WARNING -> display warnings, proceed to step 1 |
|
|
111
|
+
| Startup crash with classified error | **FAIL** -> display classification + fix command, **STOP** |
|
|
112
|
+
| Startup crash with unclassified error | **FAIL** -> display full output, **STOP** for investigation |
|
|
113
|
+
|
|
114
|
+
### 6. Store state
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
{dependency_check_result} = PASS | WARNING | FAIL
|
|
118
|
+
{dependency_warnings} = list of warnings (if any)
|
|
119
|
+
{startup_error_class} = classification (if crash detected)
|
|
120
|
+
{startup_fix_command} = suggested fix command (if crash detected)
|
|
121
|
+
```
|