@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,149 +1,149 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: step-05-db-validation
|
|
3
|
-
description: Validate database schema, migrations, seed data, and multi-tenant isolation against real SQL Server
|
|
4
|
-
prev_step: steps/step-04-api-smoke.md
|
|
5
|
-
next_step: null
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Step 5: Database Validation (SQL Server LocalDB)
|
|
9
|
-
|
|
10
|
-
> **Purpose:** Verify migrations apply correctly, seed data inserts, LINQ queries execute on SQL Server, multi-tenant isolation works on REAL SQL Server (not SQLite).
|
|
11
|
-
|
|
12
|
-
See `references/db-validation-checks.md` for detailed checks, error classification, and fixes.
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
## Procedure
|
|
17
|
-
|
|
18
|
-
### Check 1: LocalDB Available?
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
sqllocaldb info MSSQLLocalDB
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
If NOT available → Skip DB validation, set `DB_VALIDATION = SKIPPED`
|
|
25
|
-
|
|
26
|
-
### Check 2: Pending Model Changes?
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
dotnet ef migrations has-pending-model-changes --project "$INFRA_PROJECT" --startup-project "$API_PROJECT"
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
If exit code != 0 → Create missing migration:
|
|
33
|
-
```bash
|
|
34
|
-
dotnet ef migrations add {SuggestedName} --project {InfraProject} --startup-project {ApiProject} -o Persistence/Migrations
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
### Check 3: Apply Migrations on Temp DB
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
DB_NAME="SmartStack_Validate_$(date +%s)"
|
|
41
|
-
CONN_STRING="Server=(localdb)\\MSSQLLocalDB;Database=$DB_NAME;Integrated Security=true;TrustServerCertificate=true;Connect Timeout=120;"
|
|
42
|
-
|
|
43
|
-
dotnet ef database update --connection "$CONN_STRING" --project "$INFRA_PROJECT" --startup-project "$API_PROJECT"
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
If FAIL → Check for: migration ordering, duplicate migration, seed data conflict (see reference)
|
|
47
|
-
|
|
48
|
-
### Check 4: Integration Tests (SQL Server)
|
|
49
|
-
|
|
50
|
-
```bash
|
|
51
|
-
TEST_PROJECT=$(ls tests/*Tests.Integration*/*.csproj 2>/dev/null | head -1)
|
|
52
|
-
dotnet test "$TEST_PROJECT" --no-build --verbosity normal
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
Validates: LINQ→SQL, multi-tenant isolation, soft delete, EF configs, repositories on real SQL Server
|
|
56
|
-
|
|
57
|
-
### Check 5: Dev Seeding Enabled?
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
APPSETTINGS=$(ls appsettings.Development.json 2>/dev/null || ls appsettings.json 2>/dev/null)
|
|
61
|
-
PROGRAM_CS=$(find . -name "Program.cs" -path "*/Api/*" 2>/dev/null | head -1)
|
|
62
|
-
|
|
63
|
-
# Check for Program.cs override or appsettings EnableDevSeeding = true
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
If not enabled → Add to Program.cs:
|
|
67
|
-
```csharp
|
|
68
|
-
options.EnableDevSeeding = builder.Environment.IsDevelopment();
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
### Check 6: DefaultTenantId FK Validation
|
|
72
|
-
|
|
73
|
-
```bash
|
|
74
|
-
SEED_CONSTANTS=$(find . -path "*/SeedConstants.cs" 2>/dev/null | head -1)
|
|
75
|
-
TENANT_GUID=$(grep -oP 'DefaultTenantId\s*=\s*Guid\.Parse\("([^"]+)"\)' "$SEED_CONSTANTS" | grep -oP '"[^"]+"' | tr -d '"')
|
|
76
|
-
|
|
77
|
-
sqlcmd -S "(localdb)\MSSQLLocalDB" -d "$DB_NAME" -Q "
|
|
78
|
-
SET NOCOUNT ON;
|
|
79
|
-
SELECT COUNT(*) FROM core.tenant_Tenants WHERE Id = '$TENANT_GUID'
|
|
80
|
-
"
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
If COUNT = 0 → Use a TenantId seeded by `InitializeSmartStackAsync()`
|
|
84
|
-
|
|
85
|
-
### Check 7: Seed Data Accessible?
|
|
86
|
-
|
|
87
|
-
```bash
|
|
88
|
-
dotnet run --project "$API_PROJECT" --urls "http://localhost:5097" \
|
|
89
|
-
-- --ConnectionStrings:DefaultConnection="$CONN_STRING" &
|
|
90
|
-
|
|
91
|
-
# Verify seed data via API endpoint
|
|
92
|
-
# (See reference for full commands)
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
### Check 8: Cleanup
|
|
96
|
-
|
|
97
|
-
```bash
|
|
98
|
-
sqlcmd -S "(localdb)\MSSQLLocalDB" -Q "
|
|
99
|
-
IF DB_ID('$DB_NAME') IS NOT NULL
|
|
100
|
-
BEGIN
|
|
101
|
-
ALTER DATABASE [$DB_NAME] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
|
|
102
|
-
DROP DATABASE [$DB_NAME];
|
|
103
|
-
END
|
|
104
|
-
"
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
---
|
|
108
|
-
|
|
109
|
-
## Validation Summary
|
|
110
|
-
|
|
111
|
-
```
|
|
112
|
-
## DB Validation: {EntityName}
|
|
113
|
-
|
|
114
|
-
| Check | Result | Details |
|
|
115
|
-
|-------|--------|---------|
|
|
116
|
-
| LocalDB available | PASS/SKIP | sqllocaldb info MSSQLLocalDB |
|
|
117
|
-
| Pending model changes | PASS/FAIL | dotnet ef migrations has-pending |
|
|
118
|
-
| Migrations apply cleanly | PASS/FAIL | dotnet ef database update on temp DB |
|
|
119
|
-
| Integration tests (SQL Server) | PASS/FAIL | dotnet test --filter Integration |
|
|
120
|
-
| EnableDevSeeding active | PASS/WARN | Program.cs override or appsettings |
|
|
121
|
-
| DefaultTenantId FK valid | PASS/FAIL | SeedConstants GUID exists in tenant_Tenants |
|
|
122
|
-
| Seed data accessible | PASS/WARN | API endpoints return seeded data |
|
|
123
|
-
| Temp DB cleanup | PASS/WARN | Database dropped |
|
|
124
|
-
|
|
125
|
-
DB Validation Result: {PASS / FAIL / SKIPPED}
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
**Interpretation:**
|
|
129
|
-
- **PASS** — All checks covered: migrations, SQL Server, LINQ→SQL, isolation, seeding config
|
|
130
|
-
- **FAIL** — Fix before committing
|
|
131
|
-
- **SKIPPED** — LocalDB unavailable; tests ran on SQLite only (partial coverage)
|
|
132
|
-
|
|
133
|
-
---
|
|
134
|
-
|
|
135
|
-
## Error Reference
|
|
136
|
-
|
|
137
|
-
See `references/db-validation-checks.md` for complete error classification and fixes including:
|
|
138
|
-
- Migration ordering issues
|
|
139
|
-
- Seed data conflicts
|
|
140
|
-
- ForeignKey constraint violations
|
|
141
|
-
- LocalDB connectivity
|
|
142
|
-
- EnableDevSeeding configuration
|
|
143
|
-
- DefaultTenantId phantom FK
|
|
144
|
-
|
|
145
|
-
---
|
|
146
|
-
|
|
147
|
-
## NEXT STEP:
|
|
148
|
-
|
|
149
|
-
DB validation complete. Review all step results and generate final report.
|
|
1
|
+
---
|
|
2
|
+
name: step-05-db-validation
|
|
3
|
+
description: Validate database schema, migrations, seed data, and multi-tenant isolation against real SQL Server
|
|
4
|
+
prev_step: steps/step-04-api-smoke.md
|
|
5
|
+
next_step: null
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Step 5: Database Validation (SQL Server LocalDB)
|
|
9
|
+
|
|
10
|
+
> **Purpose:** Verify migrations apply correctly, seed data inserts, LINQ queries execute on SQL Server, multi-tenant isolation works on REAL SQL Server (not SQLite).
|
|
11
|
+
|
|
12
|
+
See `references/db-validation-checks.md` for detailed checks, error classification, and fixes.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Procedure
|
|
17
|
+
|
|
18
|
+
### Check 1: LocalDB Available?
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
sqllocaldb info MSSQLLocalDB
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
If NOT available → Skip DB validation, set `DB_VALIDATION = SKIPPED`
|
|
25
|
+
|
|
26
|
+
### Check 2: Pending Model Changes?
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
dotnet ef migrations has-pending-model-changes --project "$INFRA_PROJECT" --startup-project "$API_PROJECT"
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
If exit code != 0 → Create missing migration:
|
|
33
|
+
```bash
|
|
34
|
+
dotnet ef migrations add {SuggestedName} --project {InfraProject} --startup-project {ApiProject} -o Persistence/Migrations
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Check 3: Apply Migrations on Temp DB
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
DB_NAME="SmartStack_Validate_$(date +%s)"
|
|
41
|
+
CONN_STRING="Server=(localdb)\\MSSQLLocalDB;Database=$DB_NAME;Integrated Security=true;TrustServerCertificate=true;Connect Timeout=120;"
|
|
42
|
+
|
|
43
|
+
dotnet ef database update --connection "$CONN_STRING" --project "$INFRA_PROJECT" --startup-project "$API_PROJECT"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
If FAIL → Check for: migration ordering, duplicate migration, seed data conflict (see reference)
|
|
47
|
+
|
|
48
|
+
### Check 4: Integration Tests (SQL Server)
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
TEST_PROJECT=$(ls tests/*Tests.Integration*/*.csproj 2>/dev/null | head -1)
|
|
52
|
+
dotnet test "$TEST_PROJECT" --no-build --verbosity normal
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Validates: LINQ→SQL, multi-tenant isolation, soft delete, EF configs, repositories on real SQL Server
|
|
56
|
+
|
|
57
|
+
### Check 5: Dev Seeding Enabled?
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
APPSETTINGS=$(ls appsettings.Development.json 2>/dev/null || ls appsettings.json 2>/dev/null)
|
|
61
|
+
PROGRAM_CS=$(find . -name "Program.cs" -path "*/Api/*" 2>/dev/null | head -1)
|
|
62
|
+
|
|
63
|
+
# Check for Program.cs override or appsettings EnableDevSeeding = true
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
If not enabled → Add to Program.cs:
|
|
67
|
+
```csharp
|
|
68
|
+
options.EnableDevSeeding = builder.Environment.IsDevelopment();
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Check 6: DefaultTenantId FK Validation
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
SEED_CONSTANTS=$(find . -path "*/SeedConstants.cs" 2>/dev/null | head -1)
|
|
75
|
+
TENANT_GUID=$(grep -oP 'DefaultTenantId\s*=\s*Guid\.Parse\("([^"]+)"\)' "$SEED_CONSTANTS" | grep -oP '"[^"]+"' | tr -d '"')
|
|
76
|
+
|
|
77
|
+
sqlcmd -S "(localdb)\MSSQLLocalDB" -d "$DB_NAME" -Q "
|
|
78
|
+
SET NOCOUNT ON;
|
|
79
|
+
SELECT COUNT(*) FROM core.tenant_Tenants WHERE Id = '$TENANT_GUID'
|
|
80
|
+
"
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
If COUNT = 0 → Use a TenantId seeded by `InitializeSmartStackAsync()`
|
|
84
|
+
|
|
85
|
+
### Check 7: Seed Data Accessible?
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
dotnet run --project "$API_PROJECT" --urls "http://localhost:5097" \
|
|
89
|
+
-- --ConnectionStrings:DefaultConnection="$CONN_STRING" &
|
|
90
|
+
|
|
91
|
+
# Verify seed data via API endpoint
|
|
92
|
+
# (See reference for full commands)
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Check 8: Cleanup
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
sqlcmd -S "(localdb)\MSSQLLocalDB" -Q "
|
|
99
|
+
IF DB_ID('$DB_NAME') IS NOT NULL
|
|
100
|
+
BEGIN
|
|
101
|
+
ALTER DATABASE [$DB_NAME] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
|
|
102
|
+
DROP DATABASE [$DB_NAME];
|
|
103
|
+
END
|
|
104
|
+
"
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Validation Summary
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
## DB Validation: {EntityName}
|
|
113
|
+
|
|
114
|
+
| Check | Result | Details |
|
|
115
|
+
|-------|--------|---------|
|
|
116
|
+
| LocalDB available | PASS/SKIP | sqllocaldb info MSSQLLocalDB |
|
|
117
|
+
| Pending model changes | PASS/FAIL | dotnet ef migrations has-pending |
|
|
118
|
+
| Migrations apply cleanly | PASS/FAIL | dotnet ef database update on temp DB |
|
|
119
|
+
| Integration tests (SQL Server) | PASS/FAIL | dotnet test --filter Integration |
|
|
120
|
+
| EnableDevSeeding active | PASS/WARN | Program.cs override or appsettings |
|
|
121
|
+
| DefaultTenantId FK valid | PASS/FAIL | SeedConstants GUID exists in tenant_Tenants |
|
|
122
|
+
| Seed data accessible | PASS/WARN | API endpoints return seeded data |
|
|
123
|
+
| Temp DB cleanup | PASS/WARN | Database dropped |
|
|
124
|
+
|
|
125
|
+
DB Validation Result: {PASS / FAIL / SKIPPED}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
**Interpretation:**
|
|
129
|
+
- **PASS** — All checks covered: migrations, SQL Server, LINQ→SQL, isolation, seeding config
|
|
130
|
+
- **FAIL** — Fix before committing
|
|
131
|
+
- **SKIPPED** — LocalDB unavailable; tests ran on SQLite only (partial coverage)
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Error Reference
|
|
136
|
+
|
|
137
|
+
See `references/db-validation-checks.md` for complete error classification and fixes including:
|
|
138
|
+
- Migration ordering issues
|
|
139
|
+
- Seed data conflicts
|
|
140
|
+
- ForeignKey constraint violations
|
|
141
|
+
- LocalDB connectivity
|
|
142
|
+
- EnableDevSeeding configuration
|
|
143
|
+
- DefaultTenantId phantom FK
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## NEXT STEP:
|
|
148
|
+
|
|
149
|
+
DB validation complete. Review all step results and generate final report.
|
|
@@ -1,127 +1,127 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: workflow
|
|
3
|
-
description: |
|
|
4
|
-
Creates and configures automated SmartStack workflows.
|
|
5
|
-
Use this skill when:
|
|
6
|
-
- User wants to automate actions (emails, webhooks)
|
|
7
|
-
- User mentions "workflow", "automation", "trigger"
|
|
8
|
-
- Creating a business process with steps
|
|
9
|
-
- Integrating transactional emails
|
|
10
|
-
Types: SendEmail, Wait, Condition, Webhook
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
# Skill Workflow SmartStack
|
|
14
|
-
|
|
15
|
-
> **Architecture:** Trigger -> Steps -> Actions (Email/Wait/Condition/Webhook)
|
|
16
|
-
|
|
17
|
-
**Reference:** [_shared.md](../_shared.md) for common services
|
|
18
|
-
|
|
19
|
-
## When This Skill Activates
|
|
20
|
-
|
|
21
|
-
| Trigger | Example |
|
|
22
|
-
|---------|---------|
|
|
23
|
-
| Explicit request | "Create a workflow for registration" |
|
|
24
|
-
| Automatic email | "Send an email when a ticket is created" |
|
|
25
|
-
| Chaining | "After 24h without response, send a reminder" |
|
|
26
|
-
| Keywords | "workflow", "trigger", "automation", "email template" |
|
|
27
|
-
|
|
28
|
-
## Flow
|
|
29
|
-
|
|
30
|
-
```
|
|
31
|
-
EVENT -> WorkflowTrigger("user.registered")
|
|
32
|
-
|
|
|
33
|
-
IWorkflowService.TriggerAsync(code, variables)
|
|
34
|
-
|
|
|
35
|
-
Workflow Steps: SendEmail -> Wait -> Condition -> Webhook
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
## Available Triggers
|
|
39
|
-
|
|
40
|
-
### User Events
|
|
41
|
-
| Trigger | Variables |
|
|
42
|
-
|---------|-----------|
|
|
43
|
-
| `user.registered` | userId, email, displayName, confirmUrl |
|
|
44
|
-
| `user.email-confirmed` | userId, email, displayName |
|
|
45
|
-
| `user.password-reset-requested` | userId, email, resetUrl |
|
|
46
|
-
| `user.account-locked/unlocked` | userId, email, lockReason |
|
|
47
|
-
|
|
48
|
-
### Ticket Events
|
|
49
|
-
| Trigger | Variables |
|
|
50
|
-
|---------|-----------|
|
|
51
|
-
| `ticket.created` | ticketId, ticketNumber, title, creatorEmail |
|
|
52
|
-
| `ticket.resolved/assigned` | ticketId, ticketNumber, assigneeName |
|
|
53
|
-
| `ticket.sla-warning/breached` | ticketId, deadline, remainingMinutes |
|
|
54
|
-
|
|
55
|
-
### Add a Trigger
|
|
56
|
-
```csharp
|
|
57
|
-
// WorkflowTriggerConfiguration.cs - GetSeedData()
|
|
58
|
-
new { Id = Guid.Parse("..."), Code = "entity.event", Name = "Entity Event",
|
|
59
|
-
AvailableVariablesJson = JsonSerializer.Serialize(new[]{ ... }), ... }
|
|
60
|
-
|
|
61
|
-
// Trigger
|
|
62
|
-
await _workflowService.TriggerAsync("entity.event", new Dictionary<string, object>{...}, language: "en");
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
## Implementation
|
|
66
|
-
|
|
67
|
-
Start with [steps/step-00-init.md](steps/step-00-init.md) to identify workflow triggers and requirements, then proceed to [steps/step-01-implementation.md](steps/step-01-implementation.md) for:
|
|
68
|
-
- Step types (SendEmail, Wait, Condition, Webhook) with code templates
|
|
69
|
-
- Workflow creation and seed data
|
|
70
|
-
- Triggering from services
|
|
71
|
-
- Email templates (Handlebars syntax)
|
|
72
|
-
- Frontend API
|
|
73
|
-
|
|
74
|
-
## Relation with Domain Events
|
|
75
|
-
|
|
76
|
-
Workflow triggers (`TriggerAsync`) are the **primary mechanism** for cross-process automation (emails, webhooks, multi-step flows).
|
|
77
|
-
|
|
78
|
-
**Domain Events** (MediatR `INotificationHandler<T>`) are complementary for **in-process** side effects (audit logging, cache invalidation, read-model updates).
|
|
79
|
-
|
|
80
|
-
| Scenario | Mechanism |
|
|
81
|
-
|----------|-----------|
|
|
82
|
-
| Send email after entity creation | Workflow Trigger |
|
|
83
|
-
| Invalidate cache after entity update | Domain Event |
|
|
84
|
-
| Log audit trail | Domain Event |
|
|
85
|
-
| Multi-step business process with delays | Workflow Trigger |
|
|
86
|
-
| Notify multiple services of same change | Domain Event -> Workflow Trigger |
|
|
87
|
-
|
|
88
|
-
See `review-code/references/smartstack-conventions.md` (Domain Events section) for full pattern.
|
|
89
|
-
|
|
90
|
-
## Checklist
|
|
91
|
-
|
|
92
|
-
```
|
|
93
|
-
- Trigger identified (existing or new in WorkflowTriggerConfiguration.cs)
|
|
94
|
-
- Workflow created: Unique code, Linked trigger, Priority (10=standard, 20+=priority)
|
|
95
|
-
- Steps: SendEmail+templateId, Wait+delayMinutes, Condition+expression, Webhook+url
|
|
96
|
-
- Email templates created (if SendEmail)
|
|
97
|
-
- Trigger added to source code
|
|
98
|
-
- Tests: trigger, emails, variables
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
## Absolute Rules
|
|
102
|
-
|
|
103
|
-
| DO | DON'T |
|
|
104
|
-
|----|-------|
|
|
105
|
-
| IWorkflowService.TriggerAsync | Direct execution |
|
|
106
|
-
| All trigger variables | Hardcoded URLs in templates |
|
|
107
|
-
| Specify language for emails | Secrets in variables |
|
|
108
|
-
| Unique kebab-case codes | Infinite loops (A->B->A) |
|
|
109
|
-
| Log executions | Forget email templates |
|
|
110
|
-
|
|
111
|
-
## Key Files
|
|
112
|
-
|
|
113
|
-
| File | Role |
|
|
114
|
-
|------|------|
|
|
115
|
-
| `Domain/Communications/Workflow.cs` | Workflow entity |
|
|
116
|
-
| `Domain/Communications/WorkflowStep.cs` | Step entity |
|
|
117
|
-
| `Domain/Communications/WorkflowTrigger.cs` | Trigger entity |
|
|
118
|
-
| `Application/Common/Interfaces/IWorkflowService.cs` | Interface |
|
|
119
|
-
| `Infrastructure/Services/Workflow/WorkflowExecutionService.cs` | Implementation |
|
|
120
|
-
| `Infrastructure/.../WorkflowConfiguration.cs` | EF Config + Seed |
|
|
121
|
-
|
|
122
|
-
<success_criteria>
|
|
123
|
-
- Workflow entity, steps, and triggers created following SmartStack patterns
|
|
124
|
-
- EF Core configuration and seed data generated
|
|
125
|
-
- IWorkflowService integration wired correctly
|
|
126
|
-
- Email templates created with i18n support (4 languages)
|
|
127
|
-
</success_criteria>
|
|
1
|
+
---
|
|
2
|
+
name: workflow
|
|
3
|
+
description: |
|
|
4
|
+
Creates and configures automated SmartStack workflows.
|
|
5
|
+
Use this skill when:
|
|
6
|
+
- User wants to automate actions (emails, webhooks)
|
|
7
|
+
- User mentions "workflow", "automation", "trigger"
|
|
8
|
+
- Creating a business process with steps
|
|
9
|
+
- Integrating transactional emails
|
|
10
|
+
Types: SendEmail, Wait, Condition, Webhook
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Skill Workflow SmartStack
|
|
14
|
+
|
|
15
|
+
> **Architecture:** Trigger -> Steps -> Actions (Email/Wait/Condition/Webhook)
|
|
16
|
+
|
|
17
|
+
**Reference:** [_shared.md](../_shared.md) for common services
|
|
18
|
+
|
|
19
|
+
## When This Skill Activates
|
|
20
|
+
|
|
21
|
+
| Trigger | Example |
|
|
22
|
+
|---------|---------|
|
|
23
|
+
| Explicit request | "Create a workflow for registration" |
|
|
24
|
+
| Automatic email | "Send an email when a ticket is created" |
|
|
25
|
+
| Chaining | "After 24h without response, send a reminder" |
|
|
26
|
+
| Keywords | "workflow", "trigger", "automation", "email template" |
|
|
27
|
+
|
|
28
|
+
## Flow
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
EVENT -> WorkflowTrigger("user.registered")
|
|
32
|
+
|
|
|
33
|
+
IWorkflowService.TriggerAsync(code, variables)
|
|
34
|
+
|
|
|
35
|
+
Workflow Steps: SendEmail -> Wait -> Condition -> Webhook
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Available Triggers
|
|
39
|
+
|
|
40
|
+
### User Events
|
|
41
|
+
| Trigger | Variables |
|
|
42
|
+
|---------|-----------|
|
|
43
|
+
| `user.registered` | userId, email, displayName, confirmUrl |
|
|
44
|
+
| `user.email-confirmed` | userId, email, displayName |
|
|
45
|
+
| `user.password-reset-requested` | userId, email, resetUrl |
|
|
46
|
+
| `user.account-locked/unlocked` | userId, email, lockReason |
|
|
47
|
+
|
|
48
|
+
### Ticket Events
|
|
49
|
+
| Trigger | Variables |
|
|
50
|
+
|---------|-----------|
|
|
51
|
+
| `ticket.created` | ticketId, ticketNumber, title, creatorEmail |
|
|
52
|
+
| `ticket.resolved/assigned` | ticketId, ticketNumber, assigneeName |
|
|
53
|
+
| `ticket.sla-warning/breached` | ticketId, deadline, remainingMinutes |
|
|
54
|
+
|
|
55
|
+
### Add a Trigger
|
|
56
|
+
```csharp
|
|
57
|
+
// WorkflowTriggerConfiguration.cs - GetSeedData()
|
|
58
|
+
new { Id = Guid.Parse("..."), Code = "entity.event", Name = "Entity Event",
|
|
59
|
+
AvailableVariablesJson = JsonSerializer.Serialize(new[]{ ... }), ... }
|
|
60
|
+
|
|
61
|
+
// Trigger
|
|
62
|
+
await _workflowService.TriggerAsync("entity.event", new Dictionary<string, object>{...}, language: "en");
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Implementation
|
|
66
|
+
|
|
67
|
+
Start with [steps/step-00-init.md](steps/step-00-init.md) to identify workflow triggers and requirements, then proceed to [steps/step-01-implementation.md](steps/step-01-implementation.md) for:
|
|
68
|
+
- Step types (SendEmail, Wait, Condition, Webhook) with code templates
|
|
69
|
+
- Workflow creation and seed data
|
|
70
|
+
- Triggering from services
|
|
71
|
+
- Email templates (Handlebars syntax)
|
|
72
|
+
- Frontend API
|
|
73
|
+
|
|
74
|
+
## Relation with Domain Events
|
|
75
|
+
|
|
76
|
+
Workflow triggers (`TriggerAsync`) are the **primary mechanism** for cross-process automation (emails, webhooks, multi-step flows).
|
|
77
|
+
|
|
78
|
+
**Domain Events** (MediatR `INotificationHandler<T>`) are complementary for **in-process** side effects (audit logging, cache invalidation, read-model updates).
|
|
79
|
+
|
|
80
|
+
| Scenario | Mechanism |
|
|
81
|
+
|----------|-----------|
|
|
82
|
+
| Send email after entity creation | Workflow Trigger |
|
|
83
|
+
| Invalidate cache after entity update | Domain Event |
|
|
84
|
+
| Log audit trail | Domain Event |
|
|
85
|
+
| Multi-step business process with delays | Workflow Trigger |
|
|
86
|
+
| Notify multiple services of same change | Domain Event -> Workflow Trigger |
|
|
87
|
+
|
|
88
|
+
See `review-code/references/smartstack-conventions.md` (Domain Events section) for full pattern.
|
|
89
|
+
|
|
90
|
+
## Checklist
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
- Trigger identified (existing or new in WorkflowTriggerConfiguration.cs)
|
|
94
|
+
- Workflow created: Unique code, Linked trigger, Priority (10=standard, 20+=priority)
|
|
95
|
+
- Steps: SendEmail+templateId, Wait+delayMinutes, Condition+expression, Webhook+url
|
|
96
|
+
- Email templates created (if SendEmail)
|
|
97
|
+
- Trigger added to source code
|
|
98
|
+
- Tests: trigger, emails, variables
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Absolute Rules
|
|
102
|
+
|
|
103
|
+
| DO | DON'T |
|
|
104
|
+
|----|-------|
|
|
105
|
+
| IWorkflowService.TriggerAsync | Direct execution |
|
|
106
|
+
| All trigger variables | Hardcoded URLs in templates |
|
|
107
|
+
| Specify language for emails | Secrets in variables |
|
|
108
|
+
| Unique kebab-case codes | Infinite loops (A->B->A) |
|
|
109
|
+
| Log executions | Forget email templates |
|
|
110
|
+
|
|
111
|
+
## Key Files
|
|
112
|
+
|
|
113
|
+
| File | Role |
|
|
114
|
+
|------|------|
|
|
115
|
+
| `Domain/Communications/Workflow.cs` | Workflow entity |
|
|
116
|
+
| `Domain/Communications/WorkflowStep.cs` | Step entity |
|
|
117
|
+
| `Domain/Communications/WorkflowTrigger.cs` | Trigger entity |
|
|
118
|
+
| `Application/Common/Interfaces/IWorkflowService.cs` | Interface |
|
|
119
|
+
| `Infrastructure/Services/Workflow/WorkflowExecutionService.cs` | Implementation |
|
|
120
|
+
| `Infrastructure/.../WorkflowConfiguration.cs` | EF Config + Seed |
|
|
121
|
+
|
|
122
|
+
<success_criteria>
|
|
123
|
+
- Workflow entity, steps, and triggers created following SmartStack patterns
|
|
124
|
+
- EF Core configuration and seed data generated
|
|
125
|
+
- IWorkflowService integration wired correctly
|
|
126
|
+
- Email templates created with i18n support (4 languages)
|
|
127
|
+
</success_criteria>
|
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
# Step 0: Initialization
|
|
2
|
-
|
|
3
|
-
## YOUR TASK
|
|
4
|
-
Gather workflow requirements and identify triggers before implementing automated processes.
|
|
5
|
-
|
|
6
|
-
## EXECUTION SEQUENCE
|
|
7
|
-
|
|
8
|
-
### 1. Identify Workflow Type
|
|
9
|
-
- What event triggers this workflow? (user.registered, entity.created, status.changed, time-based)
|
|
10
|
-
- What business process should be automated? (email sequence, multi-step approval, notification chain)
|
|
11
|
-
- What is the primary action? (SendEmail, Webhook, Condition logic, Wait/delay)
|
|
12
|
-
- Is this a new trigger or does it use an existing one? (check WorkflowTriggerConfiguration.cs)
|
|
13
|
-
|
|
14
|
-
### 2. Define Workflow Variables
|
|
15
|
-
- What variables are available from the trigger event?
|
|
16
|
-
- Example: `user.registered` provides userId, email, displayName, confirmUrl
|
|
17
|
-
- Example: `ticket.created` provides ticketId, ticketNumber, title, creatorEmail
|
|
18
|
-
- What variables are needed in steps? (recipients, delays, conditions, webhook payloads)
|
|
19
|
-
- Map all {{variable}} placeholders to available data
|
|
20
|
-
|
|
21
|
-
### 3. Plan Workflow Steps
|
|
22
|
-
- Step 1: SendEmail? Webhook? Condition? Wait/Delay?
|
|
23
|
-
- Step 2: Follow-up action after first step
|
|
24
|
-
- Step 3+: Conditional branches or multi-step sequences
|
|
25
|
-
- Error handling: what happens if a step fails? (retry, fallback, notify)
|
|
26
|
-
- Timeout: should the workflow have a maximum duration?
|
|
27
|
-
|
|
28
|
-
### 4. Design Email Templates (if SendEmail steps)
|
|
29
|
-
- Email subject and body templates
|
|
30
|
-
- Handlebars syntax for variable interpolation: `{{userId}}`, `{{confirmUrl}}`
|
|
31
|
-
- HTML and plain text versions if needed
|
|
32
|
-
- i18n translations: French, English, Italian, German
|
|
33
|
-
- Template registration in EmailTemplateConfiguration.cs
|
|
34
|
-
|
|
35
|
-
### 5. Check Trigger Configuration
|
|
36
|
-
- Does the trigger exist in WorkflowTriggerConfiguration.cs?
|
|
37
|
-
- If new trigger:
|
|
38
|
-
- Define available variables (JSON serialized array)
|
|
39
|
-
- Add trigger seed data with unique code (kebab-case)
|
|
40
|
-
- Plan where in code to call `IWorkflowService.TriggerAsync(code, variables)`
|
|
41
|
-
|
|
42
|
-
### 6. Define Logging & Monitoring
|
|
43
|
-
- What execution events should be logged?
|
|
44
|
-
- How to track workflow success/failure metrics?
|
|
45
|
-
- What observability is needed for debugging?
|
|
46
|
-
|
|
47
|
-
## SUCCESS METRICS
|
|
48
|
-
- Workflow trigger identified or new trigger planned
|
|
49
|
-
- Available variables from trigger documented
|
|
50
|
-
- Workflow steps sequenced (SendEmail -> Wait -> Condition -> Webhook, etc.)
|
|
51
|
-
- Email templates designed with i18n
|
|
52
|
-
- Trigger configuration understood (existing or new)
|
|
53
|
-
- Integration point in code identified (where TriggerAsync is called)
|
|
54
|
-
- Error handling strategy defined
|
|
55
|
-
|
|
56
|
-
## NEXT STEP
|
|
57
|
-
Proceed to `./step-01-implementation.md` to implement workflow entity, steps, trigger configuration, email templates, and integration into services with IWorkflowService.
|
|
1
|
+
# Step 0: Initialization
|
|
2
|
+
|
|
3
|
+
## YOUR TASK
|
|
4
|
+
Gather workflow requirements and identify triggers before implementing automated processes.
|
|
5
|
+
|
|
6
|
+
## EXECUTION SEQUENCE
|
|
7
|
+
|
|
8
|
+
### 1. Identify Workflow Type
|
|
9
|
+
- What event triggers this workflow? (user.registered, entity.created, status.changed, time-based)
|
|
10
|
+
- What business process should be automated? (email sequence, multi-step approval, notification chain)
|
|
11
|
+
- What is the primary action? (SendEmail, Webhook, Condition logic, Wait/delay)
|
|
12
|
+
- Is this a new trigger or does it use an existing one? (check WorkflowTriggerConfiguration.cs)
|
|
13
|
+
|
|
14
|
+
### 2. Define Workflow Variables
|
|
15
|
+
- What variables are available from the trigger event?
|
|
16
|
+
- Example: `user.registered` provides userId, email, displayName, confirmUrl
|
|
17
|
+
- Example: `ticket.created` provides ticketId, ticketNumber, title, creatorEmail
|
|
18
|
+
- What variables are needed in steps? (recipients, delays, conditions, webhook payloads)
|
|
19
|
+
- Map all {{variable}} placeholders to available data
|
|
20
|
+
|
|
21
|
+
### 3. Plan Workflow Steps
|
|
22
|
+
- Step 1: SendEmail? Webhook? Condition? Wait/Delay?
|
|
23
|
+
- Step 2: Follow-up action after first step
|
|
24
|
+
- Step 3+: Conditional branches or multi-step sequences
|
|
25
|
+
- Error handling: what happens if a step fails? (retry, fallback, notify)
|
|
26
|
+
- Timeout: should the workflow have a maximum duration?
|
|
27
|
+
|
|
28
|
+
### 4. Design Email Templates (if SendEmail steps)
|
|
29
|
+
- Email subject and body templates
|
|
30
|
+
- Handlebars syntax for variable interpolation: `{{userId}}`, `{{confirmUrl}}`
|
|
31
|
+
- HTML and plain text versions if needed
|
|
32
|
+
- i18n translations: French, English, Italian, German
|
|
33
|
+
- Template registration in EmailTemplateConfiguration.cs
|
|
34
|
+
|
|
35
|
+
### 5. Check Trigger Configuration
|
|
36
|
+
- Does the trigger exist in WorkflowTriggerConfiguration.cs?
|
|
37
|
+
- If new trigger:
|
|
38
|
+
- Define available variables (JSON serialized array)
|
|
39
|
+
- Add trigger seed data with unique code (kebab-case)
|
|
40
|
+
- Plan where in code to call `IWorkflowService.TriggerAsync(code, variables)`
|
|
41
|
+
|
|
42
|
+
### 6. Define Logging & Monitoring
|
|
43
|
+
- What execution events should be logged?
|
|
44
|
+
- How to track workflow success/failure metrics?
|
|
45
|
+
- What observability is needed for debugging?
|
|
46
|
+
|
|
47
|
+
## SUCCESS METRICS
|
|
48
|
+
- Workflow trigger identified or new trigger planned
|
|
49
|
+
- Available variables from trigger documented
|
|
50
|
+
- Workflow steps sequenced (SendEmail -> Wait -> Condition -> Webhook, etc.)
|
|
51
|
+
- Email templates designed with i18n
|
|
52
|
+
- Trigger configuration understood (existing or new)
|
|
53
|
+
- Integration point in code identified (where TriggerAsync is called)
|
|
54
|
+
- Error handling strategy defined
|
|
55
|
+
|
|
56
|
+
## NEXT STEP
|
|
57
|
+
Proceed to `./step-01-implementation.md` to implement workflow entity, steps, trigger configuration, email templates, and integration into services with IWorkflowService.
|