@atlashub/smartstack-cli 3.36.0 → 3.38.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.
Files changed (219) hide show
  1. package/dist/index.js +16 -24
  2. package/dist/index.js.map +1 -1
  3. package/dist/mcp-entry.mjs +201 -256
  4. package/dist/mcp-entry.mjs.map +1 -1
  5. package/package.json +3 -2
  6. package/scripts/extract-api-endpoints.ts +325 -0
  7. package/scripts/extract-business-rules.ts +440 -0
  8. package/scripts/generate-doc-with-mock-ui.ts +804 -0
  9. package/scripts/health-check.sh +168 -0
  10. package/scripts/postinstall.js +18 -0
  11. package/templates/agents/ba-reader.md +9 -9
  12. package/templates/agents/ba-writer.md +12 -15
  13. package/templates/agents/code-reviewer.md +1 -1
  14. package/templates/agents/docs-context-reader.md +1 -1
  15. package/templates/agents/gitflow/merge.md +0 -4
  16. package/templates/agents/gitflow/pr.md +0 -4
  17. package/templates/agents/gitflow/start.md +30 -5
  18. package/templates/mcp-scaffolding/frontend/nav-routes.ts.hbs +20 -20
  19. package/templates/mcp-scaffolding/frontend/routes.tsx.hbs +16 -24
  20. package/templates/mcp-scaffolding/migrations/seed-roles.cs.hbs +2 -2
  21. package/templates/skills/_resources/mcp-validate-documentation-spec.md +3 -3
  22. package/templates/skills/_shared.md +15 -17
  23. package/templates/skills/ai-prompt/SKILL.md +1 -1
  24. package/templates/skills/ai-prompt/steps/step-00-init.md +47 -0
  25. package/templates/skills/apex/SKILL.md +3 -4
  26. package/templates/skills/apex/_shared.md +10 -20
  27. package/templates/skills/apex/references/analysis-methods.md +141 -0
  28. package/templates/skills/apex/references/challenge-questions.md +1 -21
  29. package/templates/skills/apex/references/core-seed-data.md +35 -57
  30. package/templates/skills/apex/references/examine-build-validation.md +87 -0
  31. package/templates/skills/apex/references/execution-frontend-gates.md +177 -0
  32. package/templates/skills/apex/references/execution-frontend-patterns.md +105 -0
  33. package/templates/skills/apex/references/execution-layer1-rules.md +96 -0
  34. package/templates/skills/apex/references/initialization-challenge-flow.md +110 -0
  35. package/templates/skills/apex/references/planning-layer-mapping.md +151 -0
  36. package/templates/skills/apex/references/post-checks.md +145 -40
  37. package/templates/skills/apex/references/smartstack-api.md +35 -51
  38. package/templates/skills/apex/references/smartstack-frontend.md +17 -17
  39. package/templates/skills/apex/references/smartstack-layers.md +38 -62
  40. package/templates/skills/apex/steps/step-00-init.md +14 -26
  41. package/templates/skills/apex/steps/step-01-analyze.md +10 -143
  42. package/templates/skills/apex/steps/step-02-plan.md +10 -92
  43. package/templates/skills/apex/steps/step-03-execute.md +47 -249
  44. package/templates/skills/apex/steps/step-04-examine.md +14 -78
  45. package/templates/skills/apex/steps/step-05-deep-review.md +2 -2
  46. package/templates/skills/apex/steps/step-08-run-tests.md +2 -0
  47. package/templates/skills/application/SKILL.md +6 -7
  48. package/templates/skills/application/references/backend-controller-hierarchy.md +16 -16
  49. package/templates/skills/application/references/backend-seeding-and-dto-output.md +83 -0
  50. package/templates/skills/application/references/backend-table-prefix-mapping.md +79 -0
  51. package/templates/skills/application/references/backend-verification.md +1 -1
  52. package/templates/skills/application/references/frontend-i18n-and-output.md +67 -0
  53. package/templates/skills/application/references/frontend-route-naming.md +117 -0
  54. package/templates/skills/application/references/frontend-route-wiring-app-tsx.md +107 -0
  55. package/templates/skills/application/references/frontend-verification.md +12 -12
  56. package/templates/skills/application/references/init-parameter-detection.md +120 -0
  57. package/templates/skills/application/references/migration-checklist-troubleshooting.md +100 -0
  58. package/templates/skills/application/references/nav-fallback-procedure.md +5 -6
  59. package/templates/skills/application/references/provider-template.md +2 -6
  60. package/templates/skills/application/references/roles-client-project-handling.md +55 -0
  61. package/templates/skills/application/references/roles-fallback-procedure.md +149 -0
  62. package/templates/skills/application/references/test-coverage-requirements.md +213 -0
  63. package/templates/skills/application/references/test-frontend.md +3 -3
  64. package/templates/skills/application/steps/step-00-init.md +11 -141
  65. package/templates/skills/application/steps/step-01-navigation.md +3 -3
  66. package/templates/skills/application/steps/step-02-permissions.md +4 -4
  67. package/templates/skills/application/steps/step-03-roles.md +18 -175
  68. package/templates/skills/application/steps/step-03b-provider.md +1 -2
  69. package/templates/skills/application/steps/step-04-backend.md +19 -110
  70. package/templates/skills/application/steps/step-05-frontend.md +17 -143
  71. package/templates/skills/application/steps/step-06-migration.md +12 -60
  72. package/templates/skills/application/steps/step-07-tests.md +9 -76
  73. package/templates/skills/application/templates-backend.md +29 -27
  74. package/templates/skills/application/templates-frontend.md +48 -48
  75. package/templates/skills/application/templates-seed.md +57 -131
  76. package/templates/skills/business-analyse/SKILL.md +27 -30
  77. package/templates/skills/business-analyse/_architecture.md +6 -6
  78. package/templates/skills/business-analyse/_shared.md +60 -88
  79. package/templates/skills/business-analyse/questionnaire/04-data.md +3 -3
  80. package/templates/skills/business-analyse/questionnaire/06-security.md +1 -1
  81. package/templates/skills/business-analyse/questionnaire/13-cross-module.md +1 -1
  82. package/templates/skills/business-analyse/react/application-viewer.md +12 -12
  83. package/templates/skills/business-analyse/react/components.md +8 -12
  84. package/templates/skills/business-analyse/react/schema.md +11 -11
  85. package/templates/skills/business-analyse/references/agent-module-prompt.md +2 -3
  86. package/templates/skills/business-analyse/references/analysis-semantic-checks.md +190 -0
  87. package/templates/skills/business-analyse/references/cache-warming-strategy.md +2 -2
  88. package/templates/skills/business-analyse/references/cadrage-challenge-patterns.md +41 -0
  89. package/templates/skills/business-analyse/references/cadrage-coverage-matrix.md +74 -0
  90. package/templates/skills/business-analyse/references/cadrage-shared-modules.md +69 -0
  91. package/templates/skills/business-analyse/references/cadrage-structure-cards.md +1 -1
  92. package/templates/skills/business-analyse/references/compilation-structure-cards.md +297 -0
  93. package/templates/skills/business-analyse/references/consolidation-structural-checks.md +2 -2
  94. package/templates/skills/business-analyse/references/deploy-modes.md +5 -5
  95. package/templates/skills/business-analyse/references/detection-strategies.md +7 -7
  96. package/templates/skills/business-analyse/references/handoff-file-templates.md +14 -22
  97. package/templates/skills/business-analyse/references/handoff-mappings.md +4 -4
  98. package/templates/skills/business-analyse/references/handoff-seeddata-generation.md +312 -0
  99. package/templates/skills/business-analyse/references/init-schema-deployment.md +3 -3
  100. package/templates/skills/business-analyse/references/naming-conventions.md +22 -24
  101. package/templates/skills/business-analyse/references/prd-generation.md +2 -2
  102. package/templates/skills/business-analyse/references/review-data-mapping.md +2 -2
  103. package/templates/skills/business-analyse/references/robustness-checks.md +1 -1
  104. package/templates/skills/business-analyse/references/spec-auto-inference.md +3 -3
  105. package/templates/skills/business-analyse/references/team-orchestration.md +49 -6
  106. package/templates/skills/business-analyse/references/ui-dashboard-spec.md +1 -1
  107. package/templates/skills/business-analyse/references/ui-resource-cards.md +18 -18
  108. package/templates/skills/business-analyse/references/validate-incremental-html.md +2 -2
  109. package/templates/skills/business-analyse/references/validation-checklist.md +2 -2
  110. package/templates/skills/business-analyse/schemas/application-schema.json +4 -5
  111. package/templates/skills/business-analyse/schemas/project-schema.json +1 -6
  112. package/templates/skills/business-analyse/schemas/sections/metadata-schema.json +2 -3
  113. package/templates/skills/business-analyse/schemas/sections/specification-schema.json +4 -4
  114. package/templates/skills/business-analyse/steps/step-00-init.md +8 -17
  115. package/templates/skills/business-analyse/steps/step-01-cadrage.md +35 -198
  116. package/templates/skills/business-analyse/steps/step-01b-applications.md +16 -20
  117. package/templates/skills/business-analyse/steps/step-02-decomposition.md +1 -1
  118. package/templates/skills/business-analyse/steps/step-03a1-setup.md +4 -4
  119. package/templates/skills/business-analyse/steps/step-03a2-analysis.md +1 -1
  120. package/templates/skills/business-analyse/steps/step-03b-ui.md +4 -4
  121. package/templates/skills/business-analyse/steps/step-03c-compile.md +66 -140
  122. package/templates/skills/business-analyse/steps/step-03d-validate.md +2 -2
  123. package/templates/skills/business-analyse/steps/step-04a-collect.md +2 -2
  124. package/templates/skills/business-analyse/steps/step-04b-analyze.md +42 -160
  125. package/templates/skills/business-analyse/steps/step-04c-decide.md +1 -1
  126. package/templates/skills/business-analyse/steps/step-05a-handoff.md +74 -104
  127. package/templates/skills/business-analyse/steps/step-05b-deploy.md +13 -11
  128. package/templates/skills/business-analyse/steps/step-06-review.md +3 -3
  129. package/templates/skills/business-analyse/templates/tpl-frd.md +13 -13
  130. package/templates/skills/business-analyse/templates/tpl-handoff.md +12 -12
  131. package/templates/skills/business-analyse/templates-frd.md +25 -25
  132. package/templates/skills/business-analyse/templates-react.md +15 -21
  133. package/templates/skills/controller/SKILL.md +1 -1
  134. package/templates/skills/controller/postman-templates.md +1 -1
  135. package/templates/skills/controller/references/controller-code-templates.md +2 -2
  136. package/templates/skills/controller/references/mcp-scaffold-workflow.md +209 -0
  137. package/templates/skills/controller/references/permission-sync-templates.md +13 -16
  138. package/templates/skills/controller/steps/step-00-init.md +11 -11
  139. package/templates/skills/controller/steps/step-03-generate.md +64 -103
  140. package/templates/skills/controller/templates.md +67 -71
  141. package/templates/skills/debug/SKILL.md +13 -218
  142. package/templates/skills/debug/steps/step-00-init.md +57 -0
  143. package/templates/skills/debug/steps/step-01-analyze.md +219 -0
  144. package/templates/skills/debug/steps/step-02-resolve.md +85 -0
  145. package/templates/skills/documentation/SKILL.md +49 -345
  146. package/templates/skills/documentation/data-schema.md +11 -8
  147. package/templates/skills/documentation/steps/step-00-init.md +70 -0
  148. package/templates/skills/documentation/steps/step-01-scan.md +113 -0
  149. package/templates/skills/documentation/steps/step-02-generate.md +231 -0
  150. package/templates/skills/documentation/steps/step-03-validate.md +238 -0
  151. package/templates/skills/documentation/templates.md +480 -322
  152. package/templates/skills/efcore/references/both-contexts.md +32 -0
  153. package/templates/skills/efcore/references/database-operations.md +67 -0
  154. package/templates/skills/efcore/references/destructive-operations.md +38 -0
  155. package/templates/skills/efcore/references/reset-operations.md +81 -0
  156. package/templates/skills/efcore/references/seed-methods.md +86 -0
  157. package/templates/skills/efcore/references/shared-init-functions.md +250 -0
  158. package/templates/skills/efcore/references/sql-objects-injection.md +61 -0
  159. package/templates/skills/efcore/references/troubleshooting.md +81 -0
  160. package/templates/skills/efcore/steps/db/step-deploy.md +1 -32
  161. package/templates/skills/efcore/steps/db/step-reset.md +7 -103
  162. package/templates/skills/efcore/steps/db/step-seed.md +10 -132
  163. package/templates/skills/efcore/steps/db/step-status.md +5 -44
  164. package/templates/skills/efcore/steps/migration/step-03-validate.md +8 -62
  165. package/templates/skills/efcore/steps/rebase-snapshot/step-03-create.md +1 -57
  166. package/templates/skills/efcore/steps/shared/step-00-init.md +11 -254
  167. package/templates/skills/efcore/steps/squash/step-03-create.md +1 -58
  168. package/templates/skills/feature-full/SKILL.md +1 -1
  169. package/templates/skills/feature-full/steps/step-00-init.md +57 -0
  170. package/templates/skills/feature-full/steps/step-01-implementation.md +1 -1
  171. package/templates/skills/gitflow/SKILL.md +1 -1
  172. package/templates/skills/gitflow/_shared.md +23 -0
  173. package/templates/skills/gitflow/references/commit-message-generation.md +58 -0
  174. package/templates/skills/gitflow/references/commit-migration-validation.md +49 -0
  175. package/templates/skills/gitflow/references/finish-cleanup.md +51 -0
  176. package/templates/skills/gitflow/references/finish-version-bumping.md +45 -0
  177. package/templates/skills/gitflow/references/init-environment-detection.md +41 -0
  178. package/templates/skills/gitflow/references/init-questions.md +185 -0
  179. package/templates/skills/gitflow/references/init-structure-creation.md +71 -0
  180. package/templates/skills/gitflow/references/init-version-detection.md +21 -0
  181. package/templates/skills/gitflow/references/init-workspace-detection.md +43 -0
  182. package/templates/skills/gitflow/references/merge-ci-status.md +36 -0
  183. package/templates/skills/gitflow/references/merge-execution.md +62 -0
  184. package/templates/skills/gitflow/references/merge-pr-context.md +76 -0
  185. package/templates/skills/gitflow/references/pr-build-checks.md +60 -0
  186. package/templates/skills/gitflow/references/pr-generation.md +58 -0
  187. package/templates/skills/gitflow/references/start-branch-normalization.md +28 -0
  188. package/templates/skills/gitflow/references/start-worktree-creation.md +50 -0
  189. package/templates/skills/gitflow/references/sync-push-verify.md +44 -0
  190. package/templates/skills/gitflow/references/sync-rebase-conflicts.md +38 -0
  191. package/templates/skills/gitflow/steps/step-commit.md +12 -91
  192. package/templates/skills/gitflow/steps/step-finish.md +15 -159
  193. package/templates/skills/gitflow/steps/step-init.md +24 -326
  194. package/templates/skills/gitflow/steps/step-merge.md +17 -176
  195. package/templates/skills/gitflow/steps/step-pr.md +10 -116
  196. package/templates/skills/gitflow/steps/step-start.md +16 -109
  197. package/templates/skills/gitflow/steps/step-sync.md +6 -69
  198. package/templates/skills/ralph-loop/SKILL.md +6 -0
  199. package/templates/skills/ralph-loop/references/category-completeness.md +185 -0
  200. package/templates/skills/ralph-loop/references/compact-loop.md +1 -1
  201. package/templates/skills/ralph-loop/references/init-resume-recovery.md +127 -0
  202. package/templates/skills/ralph-loop/references/module-transition.md +151 -0
  203. package/templates/skills/ralph-loop/references/multi-module-queue.md +171 -0
  204. package/templates/skills/ralph-loop/references/parallel-execution.md +246 -0
  205. package/templates/skills/ralph-loop/references/task-transform-legacy.md +6 -9
  206. package/templates/skills/ralph-loop/references/team-orchestration.md +45 -3
  207. package/templates/skills/ralph-loop/steps/step-00-init.md +36 -109
  208. package/templates/skills/ralph-loop/steps/step-01-task.md +15 -163
  209. package/templates/skills/ralph-loop/steps/step-02-execute.md +8 -154
  210. package/templates/skills/ralph-loop/steps/step-04-check.md +21 -73
  211. package/templates/skills/review-code/references/owasp-api-top10.md +5 -5
  212. package/templates/skills/review-code/references/smartstack-conventions.md +11 -11
  213. package/templates/skills/validate-feature/references/api-smoke-tests.md +140 -0
  214. package/templates/skills/validate-feature/references/db-validation-checks.md +180 -0
  215. package/templates/skills/validate-feature/steps/step-01-compile.md +5 -2
  216. package/templates/skills/validate-feature/steps/step-04-api-smoke.md +34 -145
  217. package/templates/skills/validate-feature/steps/step-05-db-validation.md +74 -260
  218. package/templates/skills/workflow/SKILL.md +1 -1
  219. package/templates/skills/workflow/steps/step-00-init.md +57 -0
@@ -33,7 +33,7 @@ From previous steps:
33
33
 
34
34
  | Variable | Description |
35
35
  |----------|-------------|
36
- | `{level}` | context, application, module, or section |
36
+ | `{level}` | application, module, or section |
37
37
  | `{code}` | kebab-case identifier |
38
38
  | `{full_path}` | Complete navigation path |
39
39
  | `{labels}` | Object with fr, en, it, de |
@@ -82,7 +82,6 @@ Using the SeedData files as data sources, generate the `{AppPascalName}SeedDataP
82
82
  Adapt the template:
83
83
  - Replace `{AppPascalName}` with the PascalCase application name
84
84
  - Replace `{app_code}` with the kebab-case application code
85
- - Replace `{context_code}` with the parent context code
86
85
  - Fill in the actual navigation, permission, and role-permission creation logic
87
86
  using the helper methods from the SeedData classes
88
87
 
@@ -32,7 +32,7 @@ From previous steps:
32
32
 
33
33
  | Variable | Description |
34
34
  |----------|-------------|
35
- | `{level}` | context, application, module, or section |
35
+ | `{level}` | application, module, or section |
36
36
  | `{code}` | kebab-case identifier |
37
37
  | `{full_path}` | Complete navigation path (navRoute) |
38
38
  | `{labels}` | Object with fr, en, it, de |
@@ -53,32 +53,12 @@ code: "user-profiles" → entityName: "UserProfile"
53
53
 
54
54
  ### 2. Determine Table Prefix and Controller Folder
55
55
 
56
- **Table Prefix priority:**
57
- 1. **If a `feature.json` exists** with `metadata.tablePrefix` → use that prefix (e.g., `rh_`, `fi_`)
58
- 2. **Otherwise**, derive from navigation context using the fallback table below
59
-
60
- **Fallback table (when no feature.json tablePrefix is available):**
61
-
62
- | Context | Table Prefix | Controller Folder |
63
- |---------|--------|-------------------|
64
- | platform.administration | `auth_` or `cfg_` | `Admin` |
65
- | platform.support | `support_` | `Support` |
66
- | business.* | `ref_` or domain-specific | `Business` |
67
- | personal.* | `usr_` | `User` |
68
-
69
- ```
70
- # Check for feature.json tablePrefix
71
- Search for feature.json in:
72
- - docs/business/{application}/business-analyse/*/feature.json
73
- - Read metadata.tablePrefix if exists
74
-
75
- IF metadata.tablePrefix exists:
76
- {prefix} = metadata.tablePrefix # e.g., "rh_"
77
- ELSE:
78
- {prefix} = derived from context table above
79
- ```
80
-
81
- Store: `{controller_folder}` = the Controller Folder from the table above.
56
+ See [references/backend-table-prefix-mapping.md](../references/backend-table-prefix-mapping.md) for:
57
+ - Table prefix priority (feature.json vs. fallback)
58
+ - Application-to-prefix mapping table
59
+ - Feature.json detection and extraction
60
+ - Controller folder organization
61
+ - Store `{controller_folder}` from the mapping
82
62
 
83
63
  ### 3. Call MCP scaffold_extension
84
64
 
@@ -100,93 +80,22 @@ Args:
100
80
 
101
81
  ### 4. Parse MCP Response
102
82
 
103
- The tool generates (paths organized by navRoute hierarchy `{context}.{application}.{module}`):
104
- - `Domain/{Context}/{Application}/{Module}/{EntityName}.cs` - Entity with BaseEntity
105
- - `Infrastructure/Persistence/Configurations/{Context}/{Application}/{Module}/{EntityName}Configuration.cs` - EF Config
83
+ The tool generates (paths organized by navRoute hierarchy `{application}.{module}`):
84
+ - `Domain/{Application}/{Module}/{EntityName}.cs` - Entity with BaseEntity
85
+ - `Infrastructure/Persistence/Configurations/{Application}/{Module}/{EntityName}Configuration.cs` - EF Config
106
86
  - `Application/Common/Interfaces/I{EntityName}Service.cs` - Service Interface
107
- - `Infrastructure/Services/{Context}/{Application}/{Module}/{EntityName}Service.cs` - Service Implementation
87
+ - `Infrastructure/Services/{Application}/{Module}/{EntityName}Service.cs` - Service Implementation
108
88
  - `Api/Controllers/{controller_folder}/{Application}/{EntityName}Controller.cs` - REST Controller
109
- - `Application/{Context}/{Application}/{Module}/DTOs/{EntityName}ResponseDto.cs` - Response DTO
110
- - `Application/{Context}/{Application}/{Module}/DTOs/Create{EntityName}Dto.cs` - Create request
111
- - `Application/{Context}/{Application}/{Module}/DTOs/Update{EntityName}Dto.cs` - Update request
112
-
113
- ### 5. Present Output to User
114
-
115
- ```markdown
116
- ## Backend Code Generated
117
-
118
- ### Domain Layer
119
- - `Domain/{Context}/{Application}/{Module}/{EntityName}.cs`
120
-
121
- ### Infrastructure Layer
122
- - `Persistence/Configurations/{Context}/{Application}/{Module}/{EntityName}Configuration.cs`
123
- - `Services/{Context}/{Application}/{Module}/{EntityName}Service.cs`
124
-
125
- ### Application Layer
126
- - `Common/Interfaces/I{EntityName}Service.cs`
127
- - `{Context}/{Application}/{Module}/DTOs/{EntityName}ResponseDto.cs`
128
- - `{Context}/{Application}/{Module}/DTOs/Create{EntityName}Dto.cs`
129
- - `{Context}/{Application}/{Module}/DTOs/Update{EntityName}Dto.cs`
130
-
131
- ### API Layer
132
- - `Controllers/{controller_folder}/{Application}/{EntityName}Controller.cs`
133
- - NavRoute: `{full_path}`
134
- - Endpoints:
135
- - GET /api/{code} - List all
136
- - GET /api/{code}/{id} - Get by ID
137
- - POST /api/{code} - Create
138
- - PUT /api/{code}/{id} - Update
139
- - DELETE /api/{code}/{id} - Delete
140
-
141
- ### Next Steps
142
- 1. Add DbSet to ICoreDbContext: `public DbSet<{EntityName}> {EntityName}s => Set<{EntityName}>();`
143
- 2. Register service in DI: `services.AddScoped<I{EntityName}Service, {EntityName}Service>();`
144
- 3. Run: `dotnet ef migrations add core_vX.X.X_XXX_Add{EntityName}`
145
- ```
146
-
147
- ### 6. Entity Seeding (Optional)
148
-
149
- > Ask the user if they want to seed initial data for the entity.
150
- > This creates runtime seed data (applied at startup via DevDataSeeder), following the same
151
- > architecture as core (SeedData provider pattern).
152
-
153
- ```yaml
154
- questions:
155
- - header: "Seed Data"
156
- question: "Would you like to generate initial seed data for {EntityName}?"
157
- options:
158
- - label: "Yes - Generate SeedData provider"
159
- description: "Creates {EntityName}SeedData.cs + registers in DevDataSeeder (same pattern as core)"
160
- - label: "No - Skip seeding"
161
- description: "Entity starts empty (can add seed data later)"
162
- multiSelect: false
163
- ```
89
+ - `Application/{Application}/{Module}/DTOs/{EntityName}ResponseDto.cs` - Response DTO
90
+ - `Application/{Application}/{Module}/DTOs/Create{EntityName}Dto.cs` - Create request
91
+ - `Application/{Application}/{Module}/DTOs/Update{EntityName}Dto.cs` - Update request
164
92
 
165
- #### If User Selects YES:
93
+ ### 5-7. Present Output, Entity Seeding & Store Info
166
94
 
167
- See [references/backend-entity-seeding.md](../references/backend-entity-seeding.md) for the full seeding pattern:
168
- 1. **SeedData file** (`{EntityName}SeedData.cs`) static class with deterministic GUIDs, 3-5 samples
169
- 2. **DevDataSeeder update** add `Seed{EntityName}sAsync()` method with idempotent check
170
-
171
- #### If User Selects NO:
172
-
173
- Skip this section and proceed to storing entity info.
174
-
175
- ```markdown
176
- > Skipping entity seed data. You can generate it later using the SeedData provider pattern
177
- > documented in templates-seed.md.
178
- ```
179
-
180
- ### 7. Store Entity Info
181
-
182
- Store entity information for frontend generation:
183
-
184
- ```
185
- {entity_name} = "{EntityName}"
186
- {entity_code} = "{code}"
187
- {api_route} = "/api/{code}"
188
- {has_seed_data} = true/false // Whether SeedData provider was generated
189
- ```
95
+ See [references/backend-seeding-and-dto-output.md](../references/backend-seeding-and-dto-output.md) for:
96
+ - Output formatting by layer (Domain, Infrastructure, Application, API)
97
+ - Entity seeding questions and responses
98
+ - Entity info storage for frontend generation
190
99
 
191
100
  ---
192
101
 
@@ -42,15 +42,11 @@ From previous steps:
42
42
 
43
43
  ## ROUTE NAMING RULE
44
44
 
45
- > **BLOCKING:** All route paths MUST use **kebab-case** to match navigation seed data exactly.
46
- >
47
- > - Transformation: `PascalCase` → `kebab-case` (e.g., `HumanResources` → `human-resources`)
48
- > - Single words stay lowercase: `Employees` → `employees`
49
- > - Multi-word segments MUST have hyphens: `TimeManagement` → `time-management`
50
- > - **FORBIDDEN:** `humanresources`, `timemanagement` (concatenated words without hyphens)
51
- > - **REQUIRED:** `human-resources`, `time-management` (proper kebab-case)
52
- >
53
- > Route paths MUST match the navigation seed data routes (which use `ToKebabCase()`).
45
+ See [references/frontend-route-naming.md](../references/frontend-route-naming.md) for:
46
+ - Kebab-case transformation rules
47
+ - Forbidden patterns (concatenated words)
48
+ - Required patterns (hyphens in multi-word segments)
49
+ - Verification against navigation seed data
54
50
 
55
51
  ---
56
52
 
@@ -65,7 +61,7 @@ Args:
65
61
  name: "{entity_name}"
66
62
  options:
67
63
  navRoute: "{full_path}"
68
- outputPath: "web/src/pages/{context}/{application}/{module}"
64
+ outputPath: "web/src/pages/{application}/{module}"
69
65
  dryRun: false
70
66
  ```
71
67
 
@@ -116,123 +112,19 @@ This generates:
116
112
 
117
113
  ### 4. Wire Routes to App.tsx (BLOCKING)
118
114
 
119
- > **CRITICAL:** This step is MANDATORY. Without it, routes exist as files but are invisible to the React Router. The page will be BLANK.
115
+ See [references/frontend-route-wiring-app-tsx.md](../references/frontend-route-wiring-app-tsx.md) for:
116
+ - Step 4a: Import page components
117
+ - Step 4b: Detect App.tsx routing pattern (Pattern A vs Pattern B)
118
+ - Step 4c: Application-to-Layout mapping table
119
+ - Step 4d: Route wiring verification
120
+ - Forbidden patterns (absolute paths, outside Layout, createBrowserRouter)
120
121
 
121
- After `scaffold_routes` generates the route files, you MUST manually insert the routes into `App.tsx`.
122
+ ### 5-6. Verify i18n & Present Output
122
123
 
123
- **Step 4a:** Import the page components at the top of App.tsx:
124
-
125
- ```tsx
126
- import { {EntityName}Page } from '@/pages/{Context}/{Application}/{Module}/{EntityName}Page';
127
- // Or lazy-loaded:
128
- const {EntityName}Page = lazy(() => import('@/pages/{Context}/{Application}/{Module}/{EntityName}Page'));
129
- ```
130
-
131
- **Step 4b:** Detect the App.tsx routing pattern:
132
-
133
- Read App.tsx and detect which pattern is used:
134
-
135
- **Pattern A** — If App.tsx contains `contextRoutes: ContextRouteExtensions`:
136
- → Add routes to `contextRoutes.{context}[]` with **RELATIVE** paths (no leading `/`)
137
-
138
- ```tsx
139
- const contextRoutes: ContextRouteExtensions = {
140
- business: [
141
- // existing routes...
142
- { path: '{application_kebab}/{module_kebab}', element: <{EntityName}ListPage /> },
143
- { path: '{application_kebab}/{module_kebab}/new', element: <Create{EntityName}Page /> },
144
- { path: '{application_kebab}/{module_kebab}/:id', element: <{EntityName}DetailPage /> },
145
- { path: '{application_kebab}/{module_kebab}/:id/edit', element: <Create{EntityName}Page /> },
146
- ],
147
- };
148
- ```
149
-
150
- Routes are automatically injected into BOTH standard (`/business/...`) and tenant-prefixed (`/t/:slug/business/...`) route trees by `mergeRoutes()`. No manual duplication needed.
151
-
152
- **Pattern B** — If App.tsx contains `<Route path="/{context}" element={<{Layout} />}>` (JSX Routes):
153
- → Insert `<Route>` children inside the Layout wrapper (see below)
154
-
155
- ```tsx
156
- <Route path="/business" element={<BusinessLayout />}>
157
- {/* ... existing routes ... */}
158
- <Route path="{application_kebab}/{module_kebab}" element={<{EntityName}Page />} />
159
- </Route>
160
- ```
161
-
162
- ALSO add the same routes inside the tenant-prefixed block:
163
- Find `<Route path="/t/:slug">` and add the **same route entries** there.
164
-
165
- **Step 4c:** Context-to-Layout mapping:
166
-
167
- | Context | Layout Component | Route path |
168
- |---------|------------------|------------|
169
- | `platform.*` | `AdminLayout` | `/platform` |
170
- | `business.*` | `BusinessLayout` | `/business` |
171
- | `personal.*` | `UserLayout` | `/personal/myspace` |
172
-
173
- **Step 4d:** Verify wiring:
174
-
175
- ```
176
- Tool: mcp__smartstack__validate_frontend_routes
177
- Args:
178
- scope: "routes"
179
- ```
180
-
181
- If `appWiring.issues` is not empty, fix the wiring before proceeding.
182
-
183
- **FORBIDDEN (both patterns):**
184
- - Adding business/platform/personal routes to `clientRoutes[]` with absolute paths — `clientRoutes` is ONLY for routes outside SmartStack contexts (e.g., `/about`, `/pricing`)
185
- - Adding routes OUTSIDE the Layout wrapper (shell will not render)
186
- - Using `createBrowserRouter` (SmartStack uses `useRoutes()` + `mergeRoutes()`)
187
-
188
- ### 5. Verify i18n Files
189
-
190
- > **Note:** i18n files are now auto-generated by `type: "page"` scaffold (step 1).
191
- > Verify the 4 language files were created and customize the `title`/`subtitle` with the proper labels.
192
-
193
- If the generated translations need customization (e.g., replacing generic title with `{labels.fr}`):
194
- - `i18n/locales/fr/{entityCode}.json` → set `"title": "{labels.fr}"`
195
- - `i18n/locales/en/{entityCode}.json` → set `"title": "{labels.en}"`
196
- - `i18n/locales/it/{entityCode}.json` → set `"title": "{labels.it}"`
197
- - `i18n/locales/de/{entityCode}.json` → set `"title": "{labels.de}"`
198
-
199
- ### 6. Present Output to User
200
-
201
- ```markdown
202
- ## Frontend Code Generated
203
-
204
- ### Pages
205
- - `pages/{context}/{application}/{module}/{EntityName}Page.tsx`
206
- - `pages/{context}/{application}/{module}/{EntityName}ListView.tsx`
207
-
208
- ### Components
209
- - `components/{context}/{module}/{EntityName}.tsx`
210
- - `hooks/use{EntityName}.ts`
211
-
212
- ### API Client
213
- - `services/api/{entityCode}Api.ts`
214
- - `types/{entityName}.types.ts`
215
-
216
- ### Routes
217
- - Updated `navRoutes.generated.ts`
218
- - Generated `clientRoutes.generated.tsx`
219
- - Wired routes in `App.tsx` (standard + tenant blocks)
220
-
221
- ### i18n
222
- - `locales/fr/{entityCode}.json`
223
- - `locales/en/{entityCode}.json`
224
- - `locales/it/{entityCode}.json`
225
- - `locales/de/{entityCode}.json`
226
-
227
- ### Route Configuration
228
- ```tsx
229
- // In routes.tsx - NESTED routes (not flat!)
230
- <Route path="{application_kebab}">
231
- <Route index element={<Navigate to="{module_kebab}" replace />} />
232
- <Route path="{module_kebab}" element={<{EntityName}Page />} />
233
- </Route>
234
- ```
235
- ```
124
+ See [references/frontend-i18n-and-output.md](../references/frontend-i18n-and-output.md) for:
125
+ - i18n structure (4 language files)
126
+ - Customization of labels from feature context
127
+ - Output formatting by category (Pages, Components, API Client, Routes, i18n)
236
128
 
237
129
  ---
238
130
 
@@ -244,24 +136,6 @@ See [references/frontend-verification.md](../references/frontend-verification.md
244
136
 
245
137
  ---
246
138
 
247
- ## I18N STRUCTURE
248
-
249
- All i18n files must follow this structure:
250
-
251
- ```
252
- locales/
253
- ├── fr/
254
- │ └── {entityCode}.json
255
- ├── en/
256
- │ └── {entityCode}.json
257
- ├── it/
258
- │ └── {entityCode}.json
259
- └── de/
260
- └── {entityCode}.json
261
- ```
262
-
263
- ---
264
-
265
139
  ## POST-GENERATION VERIFICATION (MANDATORY)
266
140
 
267
141
  **Before proceeding to step-06, run all 7 checks on generated frontend files.**
@@ -39,26 +39,11 @@ From previous steps:
39
39
 
40
40
  ### 0. Pre-Migration Build Verification (BLOCKING)
41
41
 
42
- **CRITICAL:** The backend MUST build successfully before creating a migration.
43
- EF Core tools compile the project internally; a build failure produces confusing errors
44
- that do not point to the actual source file.
45
-
46
- ```bash
47
- dotnet build {SolutionName}.sln --no-restore
48
- ```
49
-
50
- IF build fails:
51
- - Fix all compilation errors before proceeding
52
- - Common causes at this stage:
53
- - Missing DbSet registration (should have been caught in step-04 Check 2)
54
- - Missing DI registration (should have been caught in step-04 Check 3)
55
- - Circular references between generated services
56
- - Missing package references (e.g., FluentValidation)
57
- - Frontend changes that modified shared files
58
- - Re-run build until successful
59
- - DO NOT attempt migration creation on a broken build
60
-
61
- **After build succeeds:** Continue to migration name suggestion.
42
+ See [references/migration-checklist-troubleshooting.md](../references/migration-checklist-troubleshooting.md) for:
43
+ - Build verification command
44
+ - Common compilation causes
45
+ - Fix strategies
46
+ - Quick recovery commands
62
47
 
63
48
  ### 1. Get Migration Name Suggestion
64
49
 
@@ -103,29 +88,11 @@ dotnet ef migrations add {suggested_migration_name} --context ExtensionsDbContex
103
88
 
104
89
  ### 2b. Inject SQL Objects (if any exist)
105
90
 
106
- Check if any SQL object files exist:
107
- ```
108
- Glob: **/Persistence/SqlObjects/Functions/*.sql
109
- ```
110
-
111
- If SQL files are found, the migration's `Up()` method should include a call to re-apply all SQL objects:
112
- ```csharp
113
- // At the end of the Up() method:
114
- SqlObjectHelper.ApplyAll(migrationBuilder);
115
- ```
116
-
117
- This ensures SQL functions/views are re-applied with each migration (`CREATE OR ALTER` = idempotent).
91
+ See [references/migration-checklist-troubleshooting.md](../references/migration-checklist-troubleshooting.md) for SQL Objects injection pattern.
118
92
 
119
93
  ### 3. Verify Migration Content
120
94
 
121
- The migration should include:
122
- - Navigation entity (Context/Application/Module/Section)
123
- - Navigation translations (4 languages)
124
- - Permissions (CRUD + wildcard)
125
- - RolePermissions (role assignments)
126
- - Domain entity table
127
- - Indexes and constraints
128
- - SQL Objects injection (if any .sql files exist)
95
+ See [references/migration-checklist-troubleshooting.md](../references/migration-checklist-troubleshooting.md) for complete migration content verification checklist.
129
96
 
130
97
  ### 4. Apply Migration
131
98
 
@@ -205,26 +172,11 @@ dotnet ef database update --context ExtensionsDbContext
205
172
 
206
173
  ## TROUBLESHOOTING
207
174
 
208
- ### Common Issues
209
-
210
- | Issue | Solution |
211
- |-------|----------|
212
- | Migration conflicts | Run `/efcore:conflicts` to analyze |
213
- | Permission 403 errors | Verify Permissions.cs and PermissionConfiguration.cs are in sync |
214
- | Navigation not visible | Check user role has appropriate permissions |
215
- | Route not found | Verify nested route structure in routes.tsx |
216
- | i18n missing | Check locale files exist and are properly loaded |
217
-
218
- ### Quick Fixes
219
-
220
- ```bash
221
- # Rebuild and restart
222
- dotnet build
223
- dotnet ef database update
224
-
225
- # Clear frontend cache
226
- cd web && rm -rf node_modules/.cache && npm run dev
227
- ```
175
+ See [references/migration-checklist-troubleshooting.md](../references/migration-checklist-troubleshooting.md) for:
176
+ - Common issues and solutions
177
+ - Quick fix commands
178
+ - Database reset procedures
179
+ - Final verification checklist
228
180
 
229
181
  ---
230
182
 
@@ -195,82 +195,15 @@ This generates:
195
195
 
196
196
  ## POST-GENERATION VERIFICATION (MANDATORY)
197
197
 
198
- ### 1. Naming Convention Check (BLOCKING)
199
-
200
- All test methods MUST follow: `{Method}_When{Condition}_Should{Result}`
201
-
202
- ```
203
- FORBIDDEN patterns:
204
- Test1, Test2, TestMethod, MyTest
205
- Should_Return_OK, test_get_all
206
-
207
- REQUIRED pattern:
208
- GetAll_WhenCalled_ShouldReturn200WithList
209
- Create_WhenDuplicateCode_ShouldThrowException
210
- Delete_WhenNotAuthenticated_ShouldReturn401
211
- ```
212
-
213
- ### 2. Test Structure Check (BLOCKING)
214
-
215
- All tests MUST follow Arrange-Act-Assert:
216
-
217
- ```csharp
218
- // CORRECT
219
- [Fact]
220
- public async Task GetById_WhenExists_ShouldReturn200()
221
- {
222
- // Arrange
223
- var id = Guid.NewGuid();
224
- // ...
225
-
226
- // Act
227
- var response = await _client.GetAsync($"/api/{entityCode}/{id}");
228
-
229
- // Assert
230
- response.StatusCode.Should().Be(HttpStatusCode.OK);
231
- }
232
- ```
233
-
234
- ### 3. Dependencies Check (BLOCKING)
235
-
236
- Verify test project references:
237
- - `FluentAssertions` (NOT `Assert.Equal`)
238
- - `Moq` (NOT manual fakes)
239
- - `xunit` (NOT NUnit or MSTest)
240
-
241
- ### 4. Coverage Check
242
-
243
- Minimum test coverage per category:
244
-
245
- | Category | Minimum Tests |
246
- |----------|---------------|
247
- | Controller (mock) | 10 (CRUD + auth + tenant) |
248
- | Controller (real integration) | 8 (CRUD + persistence + tenant isolation) |
249
- | Service | 8 (CRUD + errors) |
250
- | Entity | 5 (factory + update + validation) |
251
- | Validator | 8 (code + name + security) |
252
- | Repository | 8 (CRUD + tenant + pagination) |
253
- | Security | 10 (auth + injection + headers) |
254
-
255
- ### 5. Build Check (BLOCKING)
256
-
257
- ```bash
258
- dotnet build tests/{SolutionName}.Tests/{SolutionName}.Tests.csproj
259
- ```
260
-
261
- If build fails, fix compilation errors before proceeding.
262
-
263
- ### 6. Test Run (BLOCKING)
264
-
265
- ```bash
266
- dotnet test tests/{SolutionName}.Tests/{SolutionName}.Tests.csproj --no-build --verbosity normal
267
- ```
268
-
269
- **ALL tests MUST pass.** If tests fail:
270
- 1. Read the failure output carefully
271
- 2. Fix the failing tests or the code they test
272
- 3. Re-run until all tests pass
273
- 4. Do NOT proceed to the next step until all tests are green
198
+ See [references/test-coverage-requirements.md](../references/test-coverage-requirements.md) for:
199
+ - **Naming Convention Check** (BLOCKING) — `{Method}_When{Condition}_Should{Result}` pattern
200
+ - **Test Structure Check** (BLOCKING) — Arrange-Act-Assert format
201
+ - **Dependencies Check** (BLOCKING) — FluentAssertions, Moq, xunit
202
+ - **Coverage Check** — Minimum tests per category (CRUD + auth + tenant + persistence + security)
203
+ - **Build Check** (BLOCKING) — `dotnet build` must succeed
204
+ - **Test Run** (BLOCKING) — `dotnet test` must pass 100%
205
+ - **Real Integration Test Coverage** — DB persistence verification
206
+ - **Security Test Categories** — OWASP coverage
274
207
 
275
208
  ---
276
209
 
@@ -9,35 +9,37 @@
9
9
  ```csharp
10
10
  // Add to src/SmartStack.Application/Common/Authorization/Permissions.cs
11
11
 
12
- public static class $CONTEXT_PASCAL
12
+ public static class $APPLICATION_PASCAL
13
13
  {
14
- public const string Access = "$context.$application";
14
+ public const string Access = "$application";
15
15
 
16
16
  public static class $MODULE_PASCAL
17
17
  {
18
- public const string View = "$context.$application.$module.read";
19
- public const string Create = "$context.$application.$module.create";
20
- public const string Update = "$context.$application.$module.update";
21
- public const string Delete = "$context.$application.$module.delete";
22
- public const string Assign = "$context.$application.$module.assign";
23
- public const string Execute = "$context.$application.$module.execute";
18
+ public const string View = "$application.$module.read";
19
+ public const string Create = "$application.$module.create";
20
+ public const string Update = "$application.$module.update";
21
+ public const string Delete = "$application.$module.delete";
22
+ public const string Assign = "$application.$module.assign";
23
+ public const string Execute = "$application.$module.execute";
24
24
  }
25
25
  }
26
26
  ```
27
27
 
28
- ### Example for ERP > Sales > Products
28
+ ### Example for Sales > Products
29
29
 
30
30
  ```csharp
31
- public static class Erp
31
+ public static class Sales
32
32
  {
33
- public const string Access = "erp.sales";
33
+ public const string Access = "sales";
34
34
 
35
35
  public static class Products
36
36
  {
37
- public const string View = "erp.sales.products.read";
38
- public const string Create = "erp.sales.products.create";
39
- public const string Update = "erp.sales.products.update";
40
- public const string Delete = "erp.sales.products.delete";
37
+ public const string View = "sales.products.read";
38
+ public const string Create = "sales.products.create";
39
+ public const string Update = "sales.products.update";
40
+ public const string Delete = "sales.products.delete";
41
+ public const string Assign = "sales.products.assign";
42
+ public const string Execute = "sales.products.execute";
41
43
  }
42
44
  }
43
45
  ```
@@ -49,7 +51,7 @@ public static class Erp
49
51
  ```csharp
50
52
  // src/SmartStack.Application/Common/Interfaces/I{Module}Service.cs
51
53
 
52
- using SmartStack.Application.$CONTEXT_PASCAL.$APPLICATION_PASCAL.$MODULE_PASCAL.DTOs;
54
+ using SmartStack.Application.$APPLICATION_PASCAL.$MODULE_PASCAL.DTOs;
53
55
 
54
56
  namespace SmartStack.Application.Common.Interfaces;
55
57
 
@@ -89,15 +91,15 @@ public interface I$MODULE_PASCALService
89
91
  > - NEVER use `Guid.Empty` as a placeholder — resolve the actual value from `_currentUser`
90
92
 
91
93
  ```csharp
92
- // src/SmartStack.Infrastructure/Services/$CONTEXT_PASCAL/$APPLICATION_PASCAL/$MODULE_PASCAL/$MODULE_PASCALService.cs
94
+ // src/SmartStack.Infrastructure/Services/$APPLICATION_PASCAL/$MODULE_PASCAL/$MODULE_PASCALService.cs
93
95
 
94
96
  using Microsoft.EntityFrameworkCore;
95
97
  using Microsoft.Extensions.Logging;
96
98
  using SmartStack.Application.Common.Interfaces;
97
- using SmartStack.Application.$CONTEXT_PASCAL.$APPLICATION_PASCAL.$MODULE_PASCAL.DTOs;
98
- using SmartStack.Domain.$CONTEXT_PASCAL.$APPLICATION_PASCAL.$MODULE_PASCAL;
99
+ using SmartStack.Application.$APPLICATION_PASCAL.$MODULE_PASCAL.DTOs;
100
+ using SmartStack.Domain.$APPLICATION_PASCAL.$MODULE_PASCAL;
99
101
 
100
- namespace SmartStack.Infrastructure.Services.$CONTEXT_PASCAL.$APPLICATION_PASCAL.$MODULE_PASCAL;
102
+ namespace SmartStack.Infrastructure.Services.$APPLICATION_PASCAL.$MODULE_PASCAL;
101
103
 
102
104
  public class $MODULE_PASCALService : I$MODULE_PASCALService
103
105
  {
@@ -280,9 +282,9 @@ public class $MODULE_PASCALService : I$MODULE_PASCALService
280
282
  ## TEMPLATE: DTOs
281
283
 
282
284
  ```csharp
283
- // src/SmartStack.Application/$CONTEXT_PASCAL/$APPLICATION_PASCAL/$MODULE_PASCAL/DTOs/$ENTITY_PASCALDto.cs
285
+ // src/SmartStack.Application/$APPLICATION_PASCAL/$MODULE_PASCAL/DTOs/$ENTITY_PASCALDto.cs
284
286
 
285
- namespace SmartStack.Application.$CONTEXT_PASCAL.$APPLICATION_PASCAL.$MODULE_PASCAL.DTOs;
287
+ namespace SmartStack.Application.$APPLICATION_PASCAL.$MODULE_PASCAL.DTOs;
286
288
 
287
289
  public record $ENTITY_PASCALDto
288
290
  {
@@ -321,11 +323,11 @@ public record $ENTITY_PASCALQueryParameters
321
323
  ## TEMPLATE: DOMAIN ENTITY
322
324
 
323
325
  ```csharp
324
- // src/SmartStack.Domain/$CONTEXT_PASCAL/$APPLICATION_PASCAL/$MODULE_PASCAL/$ENTITY_PASCAL.cs
326
+ // src/SmartStack.Domain/$APPLICATION_PASCAL/$MODULE_PASCAL/$ENTITY_PASCAL.cs
325
327
 
326
328
  using SmartStack.Domain.Common;
327
329
 
328
- namespace SmartStack.Domain.$CONTEXT_PASCAL.$APPLICATION_PASCAL.$MODULE_PASCAL;
330
+ namespace SmartStack.Domain.$APPLICATION_PASCAL.$MODULE_PASCAL;
329
331
 
330
332
  public class $ENTITY_PASCAL : BaseEntity
331
333
  {
@@ -370,13 +372,13 @@ public class $ENTITY_PASCAL : BaseEntity
370
372
  ## TEMPLATE: EF CONFIGURATION
371
373
 
372
374
  ```csharp
373
- // src/SmartStack.Infrastructure/Persistence/Configurations/$CONTEXT_PASCAL/$APPLICATION_PASCAL/$MODULE_PASCAL/$ENTITY_PASCALConfiguration.cs
375
+ // src/SmartStack.Infrastructure/Persistence/Configurations/$APPLICATION_PASCAL/$MODULE_PASCAL/$ENTITY_PASCALConfiguration.cs
374
376
 
375
377
  using Microsoft.EntityFrameworkCore;
376
378
  using Microsoft.EntityFrameworkCore.Metadata.Builders;
377
- using SmartStack.Domain.$CONTEXT_PASCAL.$APPLICATION_PASCAL.$MODULE_PASCAL;
379
+ using SmartStack.Domain.$APPLICATION_PASCAL.$MODULE_PASCAL;
378
380
 
379
- namespace SmartStack.Infrastructure.Persistence.Configurations.$CONTEXT_PASCAL.$APPLICATION_PASCAL.$MODULE_PASCAL;
381
+ namespace SmartStack.Infrastructure.Persistence.Configurations.$APPLICATION_PASCAL.$MODULE_PASCAL;
380
382
 
381
383
  public class $ENTITY_PASCALConfiguration : IEntityTypeConfiguration<$ENTITY_PASCAL>
382
384
  {