@atlashub/smartstack-cli 3.39.0 → 3.41.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 +6 -3
- 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 +95 -84
- package/templates/agents/efcore/db-deploy.md +85 -74
- package/templates/agents/efcore/db-reset.md +96 -85
- package/templates/agents/efcore/db-seed.md +72 -61
- package/templates/agents/efcore/db-status.md +97 -86
- package/templates/agents/efcore/migration.md +197 -186
- package/templates/agents/efcore/rebase-snapshot.md +119 -108
- package/templates/agents/efcore/scan.md +103 -92
- package/templates/agents/efcore/squash.md +172 -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 +168 -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 +95 -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,72 +1,72 @@
|
|
|
1
|
-
# Entity Seeding Pattern
|
|
2
|
-
|
|
3
|
-
> Reference: See `templates-seed.md` section "TEMPLATE: ENTITY SEED DATA (SeedData Provider)"
|
|
4
|
-
|
|
5
|
-
## SeedData File
|
|
6
|
-
|
|
7
|
-
**`Infrastructure/Persistence/Seeding/Data/{Domain}/{EntityName}SeedData.cs`**
|
|
8
|
-
|
|
9
|
-
Follow SmartStack.app pattern:
|
|
10
|
-
- Static class with `internal static IEnumerable<{EntityName}SeedItem> GetAll{EntityName}s()`
|
|
11
|
-
- Use deterministic GUIDs (NEVER `Guid.NewGuid()`)
|
|
12
|
-
- Include 3-5 sample entities with varied, realistic data
|
|
13
|
-
- For multi-tenant: organize by tenant using `GetTenant1{EntityName}s()` helpers
|
|
14
|
-
|
|
15
|
-
```csharp
|
|
16
|
-
public static class {EntityName}SeedData
|
|
17
|
-
{
|
|
18
|
-
public static readonly Guid Sample1Id = Guid.Parse("...");
|
|
19
|
-
public static readonly Guid Sample2Id = Guid.Parse("...");
|
|
20
|
-
public static readonly Guid Sample3Id = Guid.Parse("...");
|
|
21
|
-
|
|
22
|
-
internal static IEnumerable<{EntityName}SeedItem> GetAll{EntityName}s()
|
|
23
|
-
{
|
|
24
|
-
return new[]
|
|
25
|
-
{
|
|
26
|
-
new {EntityName}SeedItem { Id = Sample1Id, /* ... */ },
|
|
27
|
-
new {EntityName}SeedItem { Id = Sample2Id, /* ... */ },
|
|
28
|
-
new {EntityName}SeedItem { Id = Sample3Id, /* ... */ }
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
internal class {EntityName}SeedItem
|
|
34
|
-
{
|
|
35
|
-
public Guid Id { get; init; }
|
|
36
|
-
// ... all required entity properties
|
|
37
|
-
}
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
## DevDataSeeder Update
|
|
41
|
-
|
|
42
|
-
Add to `Infrastructure/Persistence/Seeding/DevDataSeeder.cs`:
|
|
43
|
-
- `using` for the new SeedData namespace
|
|
44
|
-
- `await Seed{EntityName}sAsync(cancellationToken);` in `SeedAsync()` method
|
|
45
|
-
|
|
46
|
-
```csharp
|
|
47
|
-
private async Task Seed{EntityName}sAsync(CancellationToken cancellationToken)
|
|
48
|
-
{
|
|
49
|
-
_logger.LogInformation("Seeding demo {EntityName}s...");
|
|
50
|
-
|
|
51
|
-
var existingCount = await _context.{EntityName}s.CountAsync(cancellationToken);
|
|
52
|
-
if (existingCount > 0)
|
|
53
|
-
{
|
|
54
|
-
_logger.LogWarning("{EntityName}s already seeded ({Count} exist), skipping.", existingCount);
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
var createdCount = 0;
|
|
59
|
-
foreach (var seedItem in {EntityName}SeedData.GetAll{EntityName}s())
|
|
60
|
-
{
|
|
61
|
-
var entity = {EntityName}.Create(/* map seedItem properties */);
|
|
62
|
-
typeof({EntityName}).GetProperty("Id")?.SetValue(entity, seedItem.Id);
|
|
63
|
-
_context.{EntityName}s.Add(entity);
|
|
64
|
-
createdCount++;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
if (createdCount > 0)
|
|
68
|
-
await _context.SaveChangesAsync(cancellationToken);
|
|
69
|
-
|
|
70
|
-
_logger.LogInformation("Created {Count} demo {EntityName}s.", createdCount);
|
|
71
|
-
}
|
|
72
|
-
```
|
|
1
|
+
# Entity Seeding Pattern
|
|
2
|
+
|
|
3
|
+
> Reference: See `templates-seed.md` section "TEMPLATE: ENTITY SEED DATA (SeedData Provider)"
|
|
4
|
+
|
|
5
|
+
## SeedData File
|
|
6
|
+
|
|
7
|
+
**`Infrastructure/Persistence/Seeding/Data/{Domain}/{EntityName}SeedData.cs`**
|
|
8
|
+
|
|
9
|
+
Follow SmartStack.app pattern:
|
|
10
|
+
- Static class with `internal static IEnumerable<{EntityName}SeedItem> GetAll{EntityName}s()`
|
|
11
|
+
- Use deterministic GUIDs (NEVER `Guid.NewGuid()`)
|
|
12
|
+
- Include 3-5 sample entities with varied, realistic data
|
|
13
|
+
- For multi-tenant: organize by tenant using `GetTenant1{EntityName}s()` helpers
|
|
14
|
+
|
|
15
|
+
```csharp
|
|
16
|
+
public static class {EntityName}SeedData
|
|
17
|
+
{
|
|
18
|
+
public static readonly Guid Sample1Id = Guid.Parse("...");
|
|
19
|
+
public static readonly Guid Sample2Id = Guid.Parse("...");
|
|
20
|
+
public static readonly Guid Sample3Id = Guid.Parse("...");
|
|
21
|
+
|
|
22
|
+
internal static IEnumerable<{EntityName}SeedItem> GetAll{EntityName}s()
|
|
23
|
+
{
|
|
24
|
+
return new[]
|
|
25
|
+
{
|
|
26
|
+
new {EntityName}SeedItem { Id = Sample1Id, /* ... */ },
|
|
27
|
+
new {EntityName}SeedItem { Id = Sample2Id, /* ... */ },
|
|
28
|
+
new {EntityName}SeedItem { Id = Sample3Id, /* ... */ }
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
internal class {EntityName}SeedItem
|
|
34
|
+
{
|
|
35
|
+
public Guid Id { get; init; }
|
|
36
|
+
// ... all required entity properties
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## DevDataSeeder Update
|
|
41
|
+
|
|
42
|
+
Add to `Infrastructure/Persistence/Seeding/DevDataSeeder.cs`:
|
|
43
|
+
- `using` for the new SeedData namespace
|
|
44
|
+
- `await Seed{EntityName}sAsync(cancellationToken);` in `SeedAsync()` method
|
|
45
|
+
|
|
46
|
+
```csharp
|
|
47
|
+
private async Task Seed{EntityName}sAsync(CancellationToken cancellationToken)
|
|
48
|
+
{
|
|
49
|
+
_logger.LogInformation("Seeding demo {EntityName}s...");
|
|
50
|
+
|
|
51
|
+
var existingCount = await _context.{EntityName}s.CountAsync(cancellationToken);
|
|
52
|
+
if (existingCount > 0)
|
|
53
|
+
{
|
|
54
|
+
_logger.LogWarning("{EntityName}s already seeded ({Count} exist), skipping.", existingCount);
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
var createdCount = 0;
|
|
59
|
+
foreach (var seedItem in {EntityName}SeedData.GetAll{EntityName}s())
|
|
60
|
+
{
|
|
61
|
+
var entity = {EntityName}.Create(/* map seedItem properties */);
|
|
62
|
+
typeof({EntityName}).GetProperty("Id")?.SetValue(entity, seedItem.Id);
|
|
63
|
+
_context.{EntityName}s.Add(entity);
|
|
64
|
+
createdCount++;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
if (createdCount > 0)
|
|
68
|
+
await _context.SaveChangesAsync(cancellationToken);
|
|
69
|
+
|
|
70
|
+
_logger.LogInformation("Created {Count} demo {EntityName}s.", createdCount);
|
|
71
|
+
}
|
|
72
|
+
```
|
|
@@ -1,83 +1,83 @@
|
|
|
1
|
-
# Backend Generation: Entity Seeding & Output Formatting
|
|
2
|
-
|
|
3
|
-
> Referenced from `steps/step-04-backend.md` — Optional seeding and MCP response handling.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Entity Seeding (Optional)
|
|
8
|
-
|
|
9
|
-
Ask the user if they want to seed initial data for the entity:
|
|
10
|
-
|
|
11
|
-
```yaml
|
|
12
|
-
questions:
|
|
13
|
-
- header: "Seed Data"
|
|
14
|
-
question: "Would you like to generate initial seed data for {EntityName}?"
|
|
15
|
-
options:
|
|
16
|
-
- label: "Yes - Generate SeedData provider"
|
|
17
|
-
description: "Creates {EntityName}SeedData.cs + registers in DevDataSeeder (same pattern as core)"
|
|
18
|
-
- label: "No - Skip seeding"
|
|
19
|
-
description: "Entity starts empty (can add seed data later)"
|
|
20
|
-
multiSelect: false
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
**If user selects YES:**
|
|
24
|
-
|
|
25
|
-
See [references/backend-entity-seeding.md](../references/backend-entity-seeding.md) for the full seeding pattern:
|
|
26
|
-
1. **SeedData file** (`{EntityName}SeedData.cs`) — static class with deterministic GUIDs, 3-5 samples
|
|
27
|
-
2. **DevDataSeeder update** — add `Seed{EntityName}sAsync()` method with idempotent check
|
|
28
|
-
|
|
29
|
-
**If user selects NO:**
|
|
30
|
-
|
|
31
|
-
Skip this section and proceed to storing entity info.
|
|
32
|
-
|
|
33
|
-
```markdown
|
|
34
|
-
> Skipping entity seed data. You can generate it later using the SeedData provider pattern
|
|
35
|
-
> documented in templates-seed.md.
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
---
|
|
39
|
-
|
|
40
|
-
## Presenting Output to User
|
|
41
|
-
|
|
42
|
-
Display generated backend code organized by layer:
|
|
43
|
-
|
|
44
|
-
### Domain Layer
|
|
45
|
-
- `Domain/{Application}/{Module}/{EntityName}.cs`
|
|
46
|
-
|
|
47
|
-
### Infrastructure Layer
|
|
48
|
-
- `Persistence/Configurations/{Application}/{Module}/{EntityName}Configuration.cs`
|
|
49
|
-
- `Services/{Application}/{Module}/{EntityName}Service.cs`
|
|
50
|
-
|
|
51
|
-
### Application Layer
|
|
52
|
-
- `Common/Interfaces/I{EntityName}Service.cs`
|
|
53
|
-
- `{Application}/{Module}/DTOs/{EntityName}ResponseDto.cs`
|
|
54
|
-
- `{Application}/{Module}/DTOs/Create{EntityName}Dto.cs`
|
|
55
|
-
- `{Application}/{Module}/DTOs/Update{EntityName}Dto.cs`
|
|
56
|
-
|
|
57
|
-
### API Layer
|
|
58
|
-
- `Controllers/{controller_folder}/{Application}/{EntityName}Controller.cs`
|
|
59
|
-
- NavRoute: `{full_path}`
|
|
60
|
-
- Endpoints:
|
|
61
|
-
- GET /api/{code} - List all
|
|
62
|
-
- GET /api/{code}/{id} - Get by ID
|
|
63
|
-
- POST /api/{code} - Create
|
|
64
|
-
- PUT /api/{code}/{id} - Update
|
|
65
|
-
- DELETE /api/{code}/{id} - Delete
|
|
66
|
-
|
|
67
|
-
### Next Steps
|
|
68
|
-
1. Add DbSet to ICoreDbContext: `public DbSet<{EntityName}> {EntityName}s => Set<{EntityName}>();`
|
|
69
|
-
2. Register service in DI: `services.AddScoped<I{EntityName}Service, {EntityName}Service>();`
|
|
70
|
-
3. Run: `dotnet ef migrations add core_vX.X.X_XXX_Add{EntityName}`
|
|
71
|
-
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
## Entity Info Storage
|
|
75
|
-
|
|
76
|
-
Store for use in frontend generation:
|
|
77
|
-
|
|
78
|
-
```
|
|
79
|
-
{entity_name} = "{EntityName}"
|
|
80
|
-
{entity_code} = "{code}"
|
|
81
|
-
{api_route} = "/api/{code}"
|
|
82
|
-
{has_seed_data} = true/false // Whether SeedData provider was generated
|
|
83
|
-
```
|
|
1
|
+
# Backend Generation: Entity Seeding & Output Formatting
|
|
2
|
+
|
|
3
|
+
> Referenced from `steps/step-04-backend.md` — Optional seeding and MCP response handling.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Entity Seeding (Optional)
|
|
8
|
+
|
|
9
|
+
Ask the user if they want to seed initial data for the entity:
|
|
10
|
+
|
|
11
|
+
```yaml
|
|
12
|
+
questions:
|
|
13
|
+
- header: "Seed Data"
|
|
14
|
+
question: "Would you like to generate initial seed data for {EntityName}?"
|
|
15
|
+
options:
|
|
16
|
+
- label: "Yes - Generate SeedData provider"
|
|
17
|
+
description: "Creates {EntityName}SeedData.cs + registers in DevDataSeeder (same pattern as core)"
|
|
18
|
+
- label: "No - Skip seeding"
|
|
19
|
+
description: "Entity starts empty (can add seed data later)"
|
|
20
|
+
multiSelect: false
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
**If user selects YES:**
|
|
24
|
+
|
|
25
|
+
See [references/backend-entity-seeding.md](../references/backend-entity-seeding.md) for the full seeding pattern:
|
|
26
|
+
1. **SeedData file** (`{EntityName}SeedData.cs`) — static class with deterministic GUIDs, 3-5 samples
|
|
27
|
+
2. **DevDataSeeder update** — add `Seed{EntityName}sAsync()` method with idempotent check
|
|
28
|
+
|
|
29
|
+
**If user selects NO:**
|
|
30
|
+
|
|
31
|
+
Skip this section and proceed to storing entity info.
|
|
32
|
+
|
|
33
|
+
```markdown
|
|
34
|
+
> Skipping entity seed data. You can generate it later using the SeedData provider pattern
|
|
35
|
+
> documented in templates-seed.md.
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Presenting Output to User
|
|
41
|
+
|
|
42
|
+
Display generated backend code organized by layer:
|
|
43
|
+
|
|
44
|
+
### Domain Layer
|
|
45
|
+
- `Domain/{Application}/{Module}/{EntityName}.cs`
|
|
46
|
+
|
|
47
|
+
### Infrastructure Layer
|
|
48
|
+
- `Persistence/Configurations/{Application}/{Module}/{EntityName}Configuration.cs`
|
|
49
|
+
- `Services/{Application}/{Module}/{EntityName}Service.cs`
|
|
50
|
+
|
|
51
|
+
### Application Layer
|
|
52
|
+
- `Common/Interfaces/I{EntityName}Service.cs`
|
|
53
|
+
- `{Application}/{Module}/DTOs/{EntityName}ResponseDto.cs`
|
|
54
|
+
- `{Application}/{Module}/DTOs/Create{EntityName}Dto.cs`
|
|
55
|
+
- `{Application}/{Module}/DTOs/Update{EntityName}Dto.cs`
|
|
56
|
+
|
|
57
|
+
### API Layer
|
|
58
|
+
- `Controllers/{controller_folder}/{Application}/{EntityName}Controller.cs`
|
|
59
|
+
- NavRoute: `{full_path}`
|
|
60
|
+
- Endpoints:
|
|
61
|
+
- GET /api/{code} - List all
|
|
62
|
+
- GET /api/{code}/{id} - Get by ID
|
|
63
|
+
- POST /api/{code} - Create
|
|
64
|
+
- PUT /api/{code}/{id} - Update
|
|
65
|
+
- DELETE /api/{code}/{id} - Delete
|
|
66
|
+
|
|
67
|
+
### Next Steps
|
|
68
|
+
1. Add DbSet to ICoreDbContext: `public DbSet<{EntityName}> {EntityName}s => Set<{EntityName}>();`
|
|
69
|
+
2. Register service in DI: `services.AddScoped<I{EntityName}Service, {EntityName}Service>();`
|
|
70
|
+
3. Run: `dotnet ef migrations add core_vX.X.X_XXX_Add{EntityName}`
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Entity Info Storage
|
|
75
|
+
|
|
76
|
+
Store for use in frontend generation:
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
{entity_name} = "{EntityName}"
|
|
80
|
+
{entity_code} = "{code}"
|
|
81
|
+
{api_route} = "/api/{code}"
|
|
82
|
+
{has_seed_data} = true/false // Whether SeedData provider was generated
|
|
83
|
+
```
|
|
@@ -1,79 +1,79 @@
|
|
|
1
|
-
# Backend: Table Prefix & Controller Folder Mapping
|
|
2
|
-
|
|
3
|
-
> Referenced from `steps/step-04-backend.md` — Deriving table prefixes and controller organization.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Table Prefix Priority
|
|
8
|
-
|
|
9
|
-
1. **If a `feature.json` exists** with `metadata.tablePrefix` → use that prefix (e.g., `rh_`, `fi_`)
|
|
10
|
-
2. **Otherwise**, derive from navigation context using the fallback table below
|
|
11
|
-
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
## Fallback Table (when no feature.json tablePrefix)
|
|
15
|
-
|
|
16
|
-
| Application | Table Prefix | Controller Folder | Example |
|
|
17
|
-
|---------|--------|-------------------|---------|
|
|
18
|
-
| `administration.*` | `auth_` or `cfg_` | `Administration` | Table: `auth_Tenants`, Controller: `Controllers/Administration/TenantsController.cs` |
|
|
19
|
-
| `support.*` | `support_` | `Support` | Table: `support_Tickets`, Controller: `Controllers/Support/TicketsController.cs` |
|
|
20
|
-
| `*` (business apps) | `ref_` or domain-specific | `{ApplicationPascal}` | Table: `ref_Products`, Controller: `Controllers/Sales/ProductsController.cs` |
|
|
21
|
-
| `myspace.*` | `usr_` | `MySpace` | Table: `usr_Preferences`, Controller: `Controllers/MySpace/PreferencesController.cs` |
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## Feature.json Table Prefix Detection
|
|
26
|
-
|
|
27
|
-
```
|
|
28
|
-
Search for feature.json in:
|
|
29
|
-
- docs/business/{application}/business-analyse/*/feature.json
|
|
30
|
-
- Read metadata.tablePrefix if exists
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
**Example from feature.json:**
|
|
34
|
-
|
|
35
|
-
```json
|
|
36
|
-
{
|
|
37
|
-
"metadata": {
|
|
38
|
-
"tablePrefix": "rh_",
|
|
39
|
-
"schema": "core"
|
|
40
|
-
},
|
|
41
|
-
"analysis": { ... }
|
|
42
|
-
}
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
## Implementation
|
|
48
|
-
|
|
49
|
-
```csharp
|
|
50
|
-
// Check for feature.json tablePrefix
|
|
51
|
-
Search for feature.json in:
|
|
52
|
-
- docs/business/{application}/business-analyse/*/feature.json
|
|
53
|
-
- Read metadata.tablePrefix if exists
|
|
54
|
-
|
|
55
|
-
IF metadata.tablePrefix exists:
|
|
56
|
-
{prefix} = metadata.tablePrefix # e.g., "rh_"
|
|
57
|
-
ELSE:
|
|
58
|
-
{prefix} = derived from context table above
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
Store: `{controller_folder}` = the Controller Folder from the table above.
|
|
62
|
-
|
|
63
|
-
---
|
|
64
|
-
|
|
65
|
-
## Usage in MCP Call
|
|
66
|
-
|
|
67
|
-
When calling `mcp__smartstack__scaffold_extension`:
|
|
68
|
-
|
|
69
|
-
```
|
|
70
|
-
Tool: mcp__smartstack__scaffold_extension
|
|
71
|
-
Args:
|
|
72
|
-
type: "feature"
|
|
73
|
-
name: "{entityName}"
|
|
74
|
-
options:
|
|
75
|
-
navRoute: "{full_path}"
|
|
76
|
-
tablePrefix: "{prefix}" ← Derived prefix
|
|
77
|
-
schema: "core"
|
|
78
|
-
...
|
|
79
|
-
```
|
|
1
|
+
# Backend: Table Prefix & Controller Folder Mapping
|
|
2
|
+
|
|
3
|
+
> Referenced from `steps/step-04-backend.md` — Deriving table prefixes and controller organization.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Table Prefix Priority
|
|
8
|
+
|
|
9
|
+
1. **If a `feature.json` exists** with `metadata.tablePrefix` → use that prefix (e.g., `rh_`, `fi_`)
|
|
10
|
+
2. **Otherwise**, derive from navigation context using the fallback table below
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Fallback Table (when no feature.json tablePrefix)
|
|
15
|
+
|
|
16
|
+
| Application | Table Prefix | Controller Folder | Example |
|
|
17
|
+
|---------|--------|-------------------|---------|
|
|
18
|
+
| `administration.*` | `auth_` or `cfg_` | `Administration` | Table: `auth_Tenants`, Controller: `Controllers/Administration/TenantsController.cs` |
|
|
19
|
+
| `support.*` | `support_` | `Support` | Table: `support_Tickets`, Controller: `Controllers/Support/TicketsController.cs` |
|
|
20
|
+
| `*` (business apps) | `ref_` or domain-specific | `{ApplicationPascal}` | Table: `ref_Products`, Controller: `Controllers/Sales/ProductsController.cs` |
|
|
21
|
+
| `myspace.*` | `usr_` | `MySpace` | Table: `usr_Preferences`, Controller: `Controllers/MySpace/PreferencesController.cs` |
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Feature.json Table Prefix Detection
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
Search for feature.json in:
|
|
29
|
+
- docs/business/{application}/business-analyse/*/feature.json
|
|
30
|
+
- Read metadata.tablePrefix if exists
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**Example from feature.json:**
|
|
34
|
+
|
|
35
|
+
```json
|
|
36
|
+
{
|
|
37
|
+
"metadata": {
|
|
38
|
+
"tablePrefix": "rh_",
|
|
39
|
+
"schema": "core"
|
|
40
|
+
},
|
|
41
|
+
"analysis": { ... }
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Implementation
|
|
48
|
+
|
|
49
|
+
```csharp
|
|
50
|
+
// Check for feature.json tablePrefix
|
|
51
|
+
Search for feature.json in:
|
|
52
|
+
- docs/business/{application}/business-analyse/*/feature.json
|
|
53
|
+
- Read metadata.tablePrefix if exists
|
|
54
|
+
|
|
55
|
+
IF metadata.tablePrefix exists:
|
|
56
|
+
{prefix} = metadata.tablePrefix # e.g., "rh_"
|
|
57
|
+
ELSE:
|
|
58
|
+
{prefix} = derived from context table above
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Store: `{controller_folder}` = the Controller Folder from the table above.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Usage in MCP Call
|
|
66
|
+
|
|
67
|
+
When calling `mcp__smartstack__scaffold_extension`:
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
Tool: mcp__smartstack__scaffold_extension
|
|
71
|
+
Args:
|
|
72
|
+
type: "feature"
|
|
73
|
+
name: "{entityName}"
|
|
74
|
+
options:
|
|
75
|
+
navRoute: "{full_path}"
|
|
76
|
+
tablePrefix: "{prefix}" ← Derived prefix
|
|
77
|
+
schema: "core"
|
|
78
|
+
...
|
|
79
|
+
```
|
|
@@ -1,88 +1,88 @@
|
|
|
1
|
-
# Backend Post-Generation Verification
|
|
2
|
-
|
|
3
|
-
**Run ALL checks before proceeding to next step.**
|
|
4
|
-
|
|
5
|
-
## Check 1: Backend Build (BLOCKING)
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
dotnet build {SolutionName}.sln --no-restore
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
IF build fails: Read errors, fix compilation issues, re-run until success.
|
|
12
|
-
|
|
13
|
-
## Check 2: DbSet Registration (BLOCKING)
|
|
14
|
-
|
|
15
|
-
Search for `DbSet<{EntityName}>` in `I{DbContextName}.cs` or `{DbContextName}.cs`.
|
|
16
|
-
|
|
17
|
-
IF NOT found, add:
|
|
18
|
-
```csharp
|
|
19
|
-
public DbSet<{EntityName}> {EntityName}s => Set<{EntityName}>();
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
## Check 3: DI Registration (BLOCKING)
|
|
23
|
-
|
|
24
|
-
Search for `I{EntityName}Service` in `DependencyInjection.cs`.
|
|
25
|
-
|
|
26
|
-
IF NOT found, add:
|
|
27
|
-
```csharp
|
|
28
|
-
services.AddScoped<I{EntityName}Service, {EntityName}Service>();
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## Check 4: RequirePermission Attributes (BLOCKING)
|
|
32
|
-
|
|
33
|
-
Each HTTP action MUST have `[RequirePermission(Permissions.{Application}.{Module}.{Action})]`.
|
|
34
|
-
|
|
35
|
-
## Check 5: Entity Configuration (BLOCKING)
|
|
36
|
-
|
|
37
|
-
Verify:
|
|
38
|
-
- `builder.ToTable("{table_prefix}{EntityName}s")` uses correct prefix
|
|
39
|
-
- `builder.HasKey(e => e.Id)` present
|
|
40
|
-
- `builder.HasIndex` for unique fields
|
|
41
|
-
|
|
42
|
-
## Check 5b: Seeding Infrastructure (first entity only)
|
|
43
|
-
|
|
44
|
-
**If this is the FIRST entity (no existing DevDataSeeder):**
|
|
45
|
-
|
|
46
|
-
1. **`Infrastructure/Persistence/Seeding/Data/SeedConstants.cs`**
|
|
47
|
-
```csharp
|
|
48
|
-
namespace {BaseNamespace}.Infrastructure.Persistence.Seeding.Data;
|
|
49
|
-
public static class SeedConstants
|
|
50
|
-
{
|
|
51
|
-
public static readonly DateTime SeedDate = new(2024, 1, 1, 0, 0, 0, DateTimeKind.Utc);
|
|
52
|
-
}
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
2. **`Infrastructure/Persistence/Seeding/DevDataSeeder.cs`**
|
|
56
|
-
```csharp
|
|
57
|
-
public class DevDataSeeder : IDevDataSeeder
|
|
58
|
-
{
|
|
59
|
-
private readonly ExtensionsDbContext _context;
|
|
60
|
-
private readonly ILogger<DevDataSeeder> _logger;
|
|
61
|
-
public DevDataSeeder(ExtensionsDbContext context, ILogger<DevDataSeeder> logger) { _context = context; _logger = logger; }
|
|
62
|
-
public async Task SeedAsync(CancellationToken cancellationToken = default)
|
|
63
|
-
{
|
|
64
|
-
_logger.LogInformation("Starting development data seeding...");
|
|
65
|
-
// Add Seed{Entity}sAsync calls here
|
|
66
|
-
_logger.LogInformation("Development data seeding complete.");
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
3. Register: `services.AddScoped<IDevDataSeeder, DevDataSeeder>();`
|
|
72
|
-
|
|
73
|
-
## Check 5c: SqlObjects Directory (first entity only)
|
|
74
|
-
|
|
75
|
-
**If no existing SqlObjectHelper:**
|
|
76
|
-
|
|
77
|
-
1. **`Infrastructure/Persistence/SqlObjects/SqlObjectHelper.cs`** - Helper for embedded SQL resources
|
|
78
|
-
2. Create `Infrastructure/Persistence/SqlObjects/Functions/` directory
|
|
79
|
-
3. Ensure `.csproj` has: `<EmbeddedResource Include="Persistence\SqlObjects\**\*.sql" />`
|
|
80
|
-
|
|
81
|
-
## Check 6: Convention Validation (RECOMMENDED)
|
|
82
|
-
|
|
83
|
-
```
|
|
84
|
-
Tool: mcp__smartstack__validate_conventions
|
|
85
|
-
Args: target: "backend", scope: "{entity_name}"
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
Verifies naming conventions, architecture layers, required attributes, DTO patterns.
|
|
1
|
+
# Backend Post-Generation Verification
|
|
2
|
+
|
|
3
|
+
**Run ALL checks before proceeding to next step.**
|
|
4
|
+
|
|
5
|
+
## Check 1: Backend Build (BLOCKING)
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
dotnet build {SolutionName}.sln --no-restore
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
IF build fails: Read errors, fix compilation issues, re-run until success.
|
|
12
|
+
|
|
13
|
+
## Check 2: DbSet Registration (BLOCKING)
|
|
14
|
+
|
|
15
|
+
Search for `DbSet<{EntityName}>` in `I{DbContextName}.cs` or `{DbContextName}.cs`.
|
|
16
|
+
|
|
17
|
+
IF NOT found, add:
|
|
18
|
+
```csharp
|
|
19
|
+
public DbSet<{EntityName}> {EntityName}s => Set<{EntityName}>();
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Check 3: DI Registration (BLOCKING)
|
|
23
|
+
|
|
24
|
+
Search for `I{EntityName}Service` in `DependencyInjection.cs`.
|
|
25
|
+
|
|
26
|
+
IF NOT found, add:
|
|
27
|
+
```csharp
|
|
28
|
+
services.AddScoped<I{EntityName}Service, {EntityName}Service>();
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Check 4: RequirePermission Attributes (BLOCKING)
|
|
32
|
+
|
|
33
|
+
Each HTTP action MUST have `[RequirePermission(Permissions.{Application}.{Module}.{Action})]`.
|
|
34
|
+
|
|
35
|
+
## Check 5: Entity Configuration (BLOCKING)
|
|
36
|
+
|
|
37
|
+
Verify:
|
|
38
|
+
- `builder.ToTable("{table_prefix}{EntityName}s")` uses correct prefix
|
|
39
|
+
- `builder.HasKey(e => e.Id)` present
|
|
40
|
+
- `builder.HasIndex` for unique fields
|
|
41
|
+
|
|
42
|
+
## Check 5b: Seeding Infrastructure (first entity only)
|
|
43
|
+
|
|
44
|
+
**If this is the FIRST entity (no existing DevDataSeeder):**
|
|
45
|
+
|
|
46
|
+
1. **`Infrastructure/Persistence/Seeding/Data/SeedConstants.cs`**
|
|
47
|
+
```csharp
|
|
48
|
+
namespace {BaseNamespace}.Infrastructure.Persistence.Seeding.Data;
|
|
49
|
+
public static class SeedConstants
|
|
50
|
+
{
|
|
51
|
+
public static readonly DateTime SeedDate = new(2024, 1, 1, 0, 0, 0, DateTimeKind.Utc);
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
2. **`Infrastructure/Persistence/Seeding/DevDataSeeder.cs`**
|
|
56
|
+
```csharp
|
|
57
|
+
public class DevDataSeeder : IDevDataSeeder
|
|
58
|
+
{
|
|
59
|
+
private readonly ExtensionsDbContext _context;
|
|
60
|
+
private readonly ILogger<DevDataSeeder> _logger;
|
|
61
|
+
public DevDataSeeder(ExtensionsDbContext context, ILogger<DevDataSeeder> logger) { _context = context; _logger = logger; }
|
|
62
|
+
public async Task SeedAsync(CancellationToken cancellationToken = default)
|
|
63
|
+
{
|
|
64
|
+
_logger.LogInformation("Starting development data seeding...");
|
|
65
|
+
// Add Seed{Entity}sAsync calls here
|
|
66
|
+
_logger.LogInformation("Development data seeding complete.");
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
3. Register: `services.AddScoped<IDevDataSeeder, DevDataSeeder>();`
|
|
72
|
+
|
|
73
|
+
## Check 5c: SqlObjects Directory (first entity only)
|
|
74
|
+
|
|
75
|
+
**If no existing SqlObjectHelper:**
|
|
76
|
+
|
|
77
|
+
1. **`Infrastructure/Persistence/SqlObjects/SqlObjectHelper.cs`** - Helper for embedded SQL resources
|
|
78
|
+
2. Create `Infrastructure/Persistence/SqlObjects/Functions/` directory
|
|
79
|
+
3. Ensure `.csproj` has: `<EmbeddedResource Include="Persistence\SqlObjects\**\*.sql" />`
|
|
80
|
+
|
|
81
|
+
## Check 6: Convention Validation (RECOMMENDED)
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
Tool: mcp__smartstack__validate_conventions
|
|
85
|
+
Args: target: "backend", scope: "{entity_name}"
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Verifies naming conventions, architecture layers, required attributes, DTO patterns.
|