@atlashub/smartstack-cli 3.37.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 (216) 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 +1 -1
  6. package/scripts/extract-api-endpoints.ts +5 -5
  7. package/scripts/generate-doc-with-mock-ui.ts +10 -17
  8. package/templates/agents/ba-reader.md +9 -9
  9. package/templates/agents/ba-writer.md +12 -15
  10. package/templates/agents/code-reviewer.md +1 -1
  11. package/templates/agents/docs-context-reader.md +1 -1
  12. package/templates/agents/gitflow/merge.md +0 -4
  13. package/templates/agents/gitflow/pr.md +0 -4
  14. package/templates/agents/gitflow/start.md +30 -5
  15. package/templates/mcp-scaffolding/frontend/nav-routes.ts.hbs +20 -20
  16. package/templates/mcp-scaffolding/frontend/routes.tsx.hbs +16 -24
  17. package/templates/mcp-scaffolding/migrations/seed-roles.cs.hbs +2 -2
  18. package/templates/skills/_resources/mcp-validate-documentation-spec.md +3 -3
  19. package/templates/skills/_shared.md +15 -17
  20. package/templates/skills/ai-prompt/SKILL.md +1 -1
  21. package/templates/skills/ai-prompt/steps/step-00-init.md +47 -0
  22. package/templates/skills/apex/SKILL.md +3 -4
  23. package/templates/skills/apex/_shared.md +10 -20
  24. package/templates/skills/apex/references/analysis-methods.md +141 -0
  25. package/templates/skills/apex/references/challenge-questions.md +1 -21
  26. package/templates/skills/apex/references/core-seed-data.md +35 -57
  27. package/templates/skills/apex/references/examine-build-validation.md +87 -0
  28. package/templates/skills/apex/references/execution-frontend-gates.md +177 -0
  29. package/templates/skills/apex/references/execution-frontend-patterns.md +105 -0
  30. package/templates/skills/apex/references/execution-layer1-rules.md +96 -0
  31. package/templates/skills/apex/references/initialization-challenge-flow.md +110 -0
  32. package/templates/skills/apex/references/planning-layer-mapping.md +151 -0
  33. package/templates/skills/apex/references/post-checks.md +145 -40
  34. package/templates/skills/apex/references/smartstack-api.md +35 -51
  35. package/templates/skills/apex/references/smartstack-frontend.md +17 -17
  36. package/templates/skills/apex/references/smartstack-layers.md +38 -62
  37. package/templates/skills/apex/steps/step-00-init.md +14 -26
  38. package/templates/skills/apex/steps/step-01-analyze.md +10 -143
  39. package/templates/skills/apex/steps/step-02-plan.md +10 -92
  40. package/templates/skills/apex/steps/step-03-execute.md +47 -249
  41. package/templates/skills/apex/steps/step-04-examine.md +14 -78
  42. package/templates/skills/apex/steps/step-05-deep-review.md +2 -2
  43. package/templates/skills/apex/steps/step-08-run-tests.md +2 -0
  44. package/templates/skills/application/SKILL.md +6 -7
  45. package/templates/skills/application/references/backend-controller-hierarchy.md +16 -16
  46. package/templates/skills/application/references/backend-seeding-and-dto-output.md +83 -0
  47. package/templates/skills/application/references/backend-table-prefix-mapping.md +79 -0
  48. package/templates/skills/application/references/backend-verification.md +1 -1
  49. package/templates/skills/application/references/frontend-i18n-and-output.md +67 -0
  50. package/templates/skills/application/references/frontend-route-naming.md +117 -0
  51. package/templates/skills/application/references/frontend-route-wiring-app-tsx.md +107 -0
  52. package/templates/skills/application/references/frontend-verification.md +12 -12
  53. package/templates/skills/application/references/init-parameter-detection.md +120 -0
  54. package/templates/skills/application/references/migration-checklist-troubleshooting.md +100 -0
  55. package/templates/skills/application/references/nav-fallback-procedure.md +5 -6
  56. package/templates/skills/application/references/provider-template.md +2 -6
  57. package/templates/skills/application/references/roles-client-project-handling.md +55 -0
  58. package/templates/skills/application/references/roles-fallback-procedure.md +149 -0
  59. package/templates/skills/application/references/test-coverage-requirements.md +213 -0
  60. package/templates/skills/application/references/test-frontend.md +3 -3
  61. package/templates/skills/application/steps/step-00-init.md +11 -141
  62. package/templates/skills/application/steps/step-01-navigation.md +3 -3
  63. package/templates/skills/application/steps/step-02-permissions.md +4 -4
  64. package/templates/skills/application/steps/step-03-roles.md +18 -175
  65. package/templates/skills/application/steps/step-03b-provider.md +1 -2
  66. package/templates/skills/application/steps/step-04-backend.md +19 -110
  67. package/templates/skills/application/steps/step-05-frontend.md +17 -143
  68. package/templates/skills/application/steps/step-06-migration.md +12 -60
  69. package/templates/skills/application/steps/step-07-tests.md +9 -76
  70. package/templates/skills/application/templates-backend.md +29 -27
  71. package/templates/skills/application/templates-frontend.md +48 -48
  72. package/templates/skills/application/templates-seed.md +57 -131
  73. package/templates/skills/business-analyse/SKILL.md +27 -30
  74. package/templates/skills/business-analyse/_architecture.md +6 -6
  75. package/templates/skills/business-analyse/_shared.md +60 -88
  76. package/templates/skills/business-analyse/questionnaire/04-data.md +3 -3
  77. package/templates/skills/business-analyse/questionnaire/06-security.md +1 -1
  78. package/templates/skills/business-analyse/questionnaire/13-cross-module.md +1 -1
  79. package/templates/skills/business-analyse/react/application-viewer.md +12 -12
  80. package/templates/skills/business-analyse/react/components.md +8 -12
  81. package/templates/skills/business-analyse/react/schema.md +11 -11
  82. package/templates/skills/business-analyse/references/agent-module-prompt.md +2 -3
  83. package/templates/skills/business-analyse/references/analysis-semantic-checks.md +190 -0
  84. package/templates/skills/business-analyse/references/cache-warming-strategy.md +2 -2
  85. package/templates/skills/business-analyse/references/cadrage-challenge-patterns.md +41 -0
  86. package/templates/skills/business-analyse/references/cadrage-coverage-matrix.md +74 -0
  87. package/templates/skills/business-analyse/references/cadrage-shared-modules.md +69 -0
  88. package/templates/skills/business-analyse/references/cadrage-structure-cards.md +1 -1
  89. package/templates/skills/business-analyse/references/compilation-structure-cards.md +297 -0
  90. package/templates/skills/business-analyse/references/consolidation-structural-checks.md +2 -2
  91. package/templates/skills/business-analyse/references/deploy-modes.md +5 -5
  92. package/templates/skills/business-analyse/references/detection-strategies.md +7 -7
  93. package/templates/skills/business-analyse/references/handoff-file-templates.md +14 -22
  94. package/templates/skills/business-analyse/references/handoff-mappings.md +4 -4
  95. package/templates/skills/business-analyse/references/handoff-seeddata-generation.md +312 -0
  96. package/templates/skills/business-analyse/references/init-schema-deployment.md +3 -3
  97. package/templates/skills/business-analyse/references/naming-conventions.md +22 -24
  98. package/templates/skills/business-analyse/references/prd-generation.md +2 -2
  99. package/templates/skills/business-analyse/references/review-data-mapping.md +2 -2
  100. package/templates/skills/business-analyse/references/robustness-checks.md +1 -1
  101. package/templates/skills/business-analyse/references/spec-auto-inference.md +3 -3
  102. package/templates/skills/business-analyse/references/team-orchestration.md +49 -6
  103. package/templates/skills/business-analyse/references/ui-dashboard-spec.md +1 -1
  104. package/templates/skills/business-analyse/references/ui-resource-cards.md +18 -18
  105. package/templates/skills/business-analyse/references/validate-incremental-html.md +2 -2
  106. package/templates/skills/business-analyse/references/validation-checklist.md +2 -2
  107. package/templates/skills/business-analyse/schemas/application-schema.json +4 -5
  108. package/templates/skills/business-analyse/schemas/project-schema.json +1 -6
  109. package/templates/skills/business-analyse/schemas/sections/metadata-schema.json +2 -3
  110. package/templates/skills/business-analyse/schemas/sections/specification-schema.json +4 -4
  111. package/templates/skills/business-analyse/steps/step-00-init.md +8 -17
  112. package/templates/skills/business-analyse/steps/step-01-cadrage.md +35 -198
  113. package/templates/skills/business-analyse/steps/step-01b-applications.md +16 -20
  114. package/templates/skills/business-analyse/steps/step-02-decomposition.md +1 -1
  115. package/templates/skills/business-analyse/steps/step-03a1-setup.md +4 -4
  116. package/templates/skills/business-analyse/steps/step-03a2-analysis.md +1 -1
  117. package/templates/skills/business-analyse/steps/step-03b-ui.md +4 -4
  118. package/templates/skills/business-analyse/steps/step-03c-compile.md +66 -140
  119. package/templates/skills/business-analyse/steps/step-03d-validate.md +2 -2
  120. package/templates/skills/business-analyse/steps/step-04a-collect.md +2 -2
  121. package/templates/skills/business-analyse/steps/step-04b-analyze.md +42 -160
  122. package/templates/skills/business-analyse/steps/step-04c-decide.md +1 -1
  123. package/templates/skills/business-analyse/steps/step-05a-handoff.md +74 -104
  124. package/templates/skills/business-analyse/steps/step-05b-deploy.md +13 -11
  125. package/templates/skills/business-analyse/steps/step-06-review.md +3 -3
  126. package/templates/skills/business-analyse/templates/tpl-frd.md +13 -13
  127. package/templates/skills/business-analyse/templates/tpl-handoff.md +12 -12
  128. package/templates/skills/business-analyse/templates-frd.md +25 -25
  129. package/templates/skills/business-analyse/templates-react.md +15 -21
  130. package/templates/skills/controller/SKILL.md +1 -1
  131. package/templates/skills/controller/postman-templates.md +1 -1
  132. package/templates/skills/controller/references/controller-code-templates.md +2 -2
  133. package/templates/skills/controller/references/mcp-scaffold-workflow.md +209 -0
  134. package/templates/skills/controller/references/permission-sync-templates.md +13 -16
  135. package/templates/skills/controller/steps/step-00-init.md +11 -11
  136. package/templates/skills/controller/steps/step-03-generate.md +64 -103
  137. package/templates/skills/controller/templates.md +67 -71
  138. package/templates/skills/debug/SKILL.md +13 -218
  139. package/templates/skills/debug/steps/step-00-init.md +57 -0
  140. package/templates/skills/debug/steps/step-01-analyze.md +219 -0
  141. package/templates/skills/debug/steps/step-02-resolve.md +85 -0
  142. package/templates/skills/documentation/SKILL.md +49 -345
  143. package/templates/skills/documentation/data-schema.md +11 -8
  144. package/templates/skills/documentation/steps/step-00-init.md +70 -0
  145. package/templates/skills/documentation/steps/step-01-scan.md +113 -0
  146. package/templates/skills/documentation/steps/step-02-generate.md +231 -0
  147. package/templates/skills/documentation/steps/step-03-validate.md +238 -0
  148. package/templates/skills/documentation/templates.md +480 -322
  149. package/templates/skills/efcore/references/both-contexts.md +32 -0
  150. package/templates/skills/efcore/references/database-operations.md +67 -0
  151. package/templates/skills/efcore/references/destructive-operations.md +38 -0
  152. package/templates/skills/efcore/references/reset-operations.md +81 -0
  153. package/templates/skills/efcore/references/seed-methods.md +86 -0
  154. package/templates/skills/efcore/references/shared-init-functions.md +250 -0
  155. package/templates/skills/efcore/references/sql-objects-injection.md +61 -0
  156. package/templates/skills/efcore/references/troubleshooting.md +81 -0
  157. package/templates/skills/efcore/steps/db/step-deploy.md +1 -32
  158. package/templates/skills/efcore/steps/db/step-reset.md +7 -103
  159. package/templates/skills/efcore/steps/db/step-seed.md +10 -132
  160. package/templates/skills/efcore/steps/db/step-status.md +5 -44
  161. package/templates/skills/efcore/steps/migration/step-03-validate.md +8 -62
  162. package/templates/skills/efcore/steps/rebase-snapshot/step-03-create.md +1 -57
  163. package/templates/skills/efcore/steps/shared/step-00-init.md +11 -254
  164. package/templates/skills/efcore/steps/squash/step-03-create.md +1 -58
  165. package/templates/skills/feature-full/SKILL.md +1 -1
  166. package/templates/skills/feature-full/steps/step-00-init.md +57 -0
  167. package/templates/skills/feature-full/steps/step-01-implementation.md +1 -1
  168. package/templates/skills/gitflow/SKILL.md +1 -1
  169. package/templates/skills/gitflow/_shared.md +23 -0
  170. package/templates/skills/gitflow/references/commit-message-generation.md +58 -0
  171. package/templates/skills/gitflow/references/commit-migration-validation.md +49 -0
  172. package/templates/skills/gitflow/references/finish-cleanup.md +51 -0
  173. package/templates/skills/gitflow/references/finish-version-bumping.md +45 -0
  174. package/templates/skills/gitflow/references/init-environment-detection.md +41 -0
  175. package/templates/skills/gitflow/references/init-questions.md +185 -0
  176. package/templates/skills/gitflow/references/init-structure-creation.md +71 -0
  177. package/templates/skills/gitflow/references/init-version-detection.md +21 -0
  178. package/templates/skills/gitflow/references/init-workspace-detection.md +43 -0
  179. package/templates/skills/gitflow/references/merge-ci-status.md +36 -0
  180. package/templates/skills/gitflow/references/merge-execution.md +62 -0
  181. package/templates/skills/gitflow/references/merge-pr-context.md +76 -0
  182. package/templates/skills/gitflow/references/pr-build-checks.md +60 -0
  183. package/templates/skills/gitflow/references/pr-generation.md +58 -0
  184. package/templates/skills/gitflow/references/start-branch-normalization.md +28 -0
  185. package/templates/skills/gitflow/references/start-worktree-creation.md +50 -0
  186. package/templates/skills/gitflow/references/sync-push-verify.md +44 -0
  187. package/templates/skills/gitflow/references/sync-rebase-conflicts.md +38 -0
  188. package/templates/skills/gitflow/steps/step-commit.md +12 -91
  189. package/templates/skills/gitflow/steps/step-finish.md +15 -159
  190. package/templates/skills/gitflow/steps/step-init.md +24 -326
  191. package/templates/skills/gitflow/steps/step-merge.md +17 -176
  192. package/templates/skills/gitflow/steps/step-pr.md +10 -116
  193. package/templates/skills/gitflow/steps/step-start.md +16 -109
  194. package/templates/skills/gitflow/steps/step-sync.md +6 -69
  195. package/templates/skills/ralph-loop/SKILL.md +6 -0
  196. package/templates/skills/ralph-loop/references/category-completeness.md +185 -0
  197. package/templates/skills/ralph-loop/references/compact-loop.md +1 -1
  198. package/templates/skills/ralph-loop/references/init-resume-recovery.md +127 -0
  199. package/templates/skills/ralph-loop/references/module-transition.md +151 -0
  200. package/templates/skills/ralph-loop/references/multi-module-queue.md +171 -0
  201. package/templates/skills/ralph-loop/references/parallel-execution.md +246 -0
  202. package/templates/skills/ralph-loop/references/task-transform-legacy.md +6 -9
  203. package/templates/skills/ralph-loop/references/team-orchestration.md +45 -3
  204. package/templates/skills/ralph-loop/steps/step-00-init.md +36 -109
  205. package/templates/skills/ralph-loop/steps/step-01-task.md +15 -163
  206. package/templates/skills/ralph-loop/steps/step-02-execute.md +8 -154
  207. package/templates/skills/ralph-loop/steps/step-04-check.md +21 -73
  208. package/templates/skills/review-code/references/owasp-api-top10.md +5 -5
  209. package/templates/skills/review-code/references/smartstack-conventions.md +11 -11
  210. package/templates/skills/validate-feature/references/api-smoke-tests.md +140 -0
  211. package/templates/skills/validate-feature/references/db-validation-checks.md +180 -0
  212. package/templates/skills/validate-feature/steps/step-01-compile.md +5 -2
  213. package/templates/skills/validate-feature/steps/step-04-api-smoke.md +34 -145
  214. package/templates/skills/validate-feature/steps/step-05-db-validation.md +74 -260
  215. package/templates/skills/workflow/SKILL.md +1 -1
  216. package/templates/skills/workflow/steps/step-00-init.md +57 -0
@@ -1,7 +1,7 @@
1
1
  # Templates Specification - Business Analysis
2
2
 
3
3
  > **Usage:** Templates for functional specification documents
4
- > **Context:** Business > Application > Module > Section
4
+ > **Context:** Application > Module > Section
5
5
 
6
6
  ---
7
7
 
@@ -179,7 +179,7 @@
179
179
  > **Module:** business/{application}/{module}
180
180
  > **Version:** 1.0
181
181
  > **Based on:** 2-brd.md v1.0
182
- > **Permission path:** business.{application}.{module}.*
182
+ > **Permission path:** {application}.{module}.*
183
183
 
184
184
  ## 1. Overview
185
185
 
@@ -190,7 +190,7 @@
190
190
 
191
191
  | Actor | Description | Required Permissions |
192
192
  |--------|-------------|---------------------|
193
- | {Role} | {description} | `business.{app}.{module}.{action}` |
193
+ | {Role} | {description} | `{app}.{module}.{action}` |
194
194
 
195
195
  ## 2. Use Cases
196
196
 
@@ -203,7 +203,7 @@
203
203
  | **Primary Actor** | {Role} |
204
204
  | **Preconditions** | {required conditions} |
205
205
  | **Postconditions** | {final state} |
206
- | **Permission** | `business.{app}.{module}.{action}` |
206
+ | **Permission** | `{app}.{module}.{action}` |
207
207
 
208
208
  **Main Scenario:**
209
209
  1. The user {action}
@@ -297,19 +297,19 @@
297
297
 
298
298
  | Permission | Admin | Manager | User | ReadOnly |
299
299
  |------------|-------|---------|------|----------|
300
- | `business.{app}.{module}.read` | ✅ | ✅ | ✅ | ✅ |
301
- | `business.{app}.{module}.create` | ✅ | ✅ | ❌ | ❌ |
302
- | `business.{app}.{module}.update` | ✅ | ✅ | ❌ | ❌ |
303
- | `business.{app}.{module}.delete` | ✅ | ❌ | ❌ | ❌ |
300
+ | `{app}.{module}.read` | ✅ | ✅ | ✅ | ✅ |
301
+ | `{app}.{module}.create` | ✅ | ✅ | ❌ | ❌ |
302
+ | `{app}.{module}.update` | ✅ | ✅ | ❌ | ❌ |
303
+ | `{app}.{module}.delete` | ✅ | ❌ | ❌ | ❌ |
304
304
 
305
305
  ### 6.2 Endpoint-Permission Mapping
306
306
 
307
307
  | Endpoint | Method | Required Permission |
308
308
  |----------|--------|-------------------|
309
- | `/api/business/{module}` | GET | `{module}.read` |
310
- | `/api/business/{module}` | POST | `{module}.create` |
311
- | `/api/business/{module}/{id}` | PUT | `{module}.update` |
312
- | `/api/business/{module}/{id}` | DELETE | `{module}.delete` |
309
+ | `/api/{module}` | GET | `{module}.read` |
310
+ | `/api/{module}` | POST | `{module}.create` |
311
+ | `/api/{module}/{id}` | PUT | `{module}.update` |
312
+ | `/api/{module}/{id}` | DELETE | `{module}.delete` |
313
313
 
314
314
  ## 7. Gherkin Scenarios
315
315
 
@@ -319,15 +319,15 @@ Feature: {FEAT-XXX} {Feature Name}
319
319
  @permission @403
320
320
  Scenario: User without permission cannot create
321
321
  Given I am logged in as "user@test.com" with role "ReadOnly"
322
- When I send POST to "/api/business/{module}"
322
+ When I send POST to "/api/{module}"
323
323
  Then the response status should be 403
324
324
  And the response should contain "Permission denied"
325
325
 
326
326
  @happy-path
327
327
  Scenario: Admin creates new item
328
328
  Given I am logged in as "admin@test.com" with role "Admin"
329
- And I have permission "business.{app}.{module}.create"
330
- When I send POST to "/api/business/{module}" with:
329
+ And I have permission "{app}.{module}.create"
330
+ When I send POST to "/api/{module}" with:
331
331
  | field1 | value1 |
332
332
  | field2 | value2 |
333
333
  Then the response status should be 201
@@ -373,8 +373,8 @@ This document is a self-contained prompt for Claude Code.
373
373
  | Attribute | Value |
374
374
  |----------|--------|
375
375
  | Feature ID | FEAT-XXX |
376
- | Module | business/{application}/{module} |
377
- | Base Permission | `business.{app}.{module}` |
376
+ | Module | {application}/{module} |
377
+ | Base Permission | `{app}.{module}` |
378
378
  | Complexity | {Simple/Medium/Complex} |
379
379
 
380
380
  ## 2. [EXPLORE] EXISTING PATTERNS
@@ -388,7 +388,7 @@ BACKEND:
388
388
  - src/SmartStack.Infrastructure/Persistence/Configurations/ → EF Core
389
389
 
390
390
  FRONTEND:
391
- - web/smartstack-web/src/pages/business/ → Existing pages
391
+ - web/smartstack-web/src/pages/ → Existing pages
392
392
  - web/smartstack-web/src/components/ → Reusable components
393
393
  - web/smartstack-web/src/services/api/ → API calls
394
394
  ```
@@ -402,13 +402,13 @@ FRONTEND:
402
402
  | `Domain/Entities/{Entity}.cs` | Domain Entity | Properties + business rules |
403
403
  | `Application/Features/{Module}/` | CQRS Commands/Queries | MediatR handlers |
404
404
  | `Infrastructure/.../Configurations/` | EF Core Config | Config + HasData |
405
- | `Api/Controllers/Business/` | API Controller | REST endpoints |
405
+ | `Api/Controllers/` | API Controller | REST endpoints |
406
406
 
407
407
  ### 3.2 Frontend
408
408
 
409
409
  | File | Template | Description |
410
410
  |------|----------|-------------|
411
- | `pages/business/{app}/{module}/` | React Page | List + detail |
411
+ | `pages/{app}/{module}/` | React Page | List + detail |
412
412
  | `services/api/{module}Api.ts` | API Service | Axios calls |
413
413
  | `i18n/locales/{lang}/{module}.json` | Translations | FR, EN, IT, DE |
414
414
 
@@ -425,11 +425,11 @@ FRONTEND:
425
425
 
426
426
  | Endpoint | Method | Permission | Body | Response |
427
427
  |----------|--------|------------|------|----------|
428
- | `/api/business/{module}` | GET | `.read` | - | Paginated list |
429
- | `/api/business/{module}` | POST | `.create` | CreateDto | 201 + entity |
430
- | `/api/business/{module}/{id}` | GET | `.read` | - | Entity |
431
- | `/api/business/{module}/{id}` | PUT | `.update` | UpdateDto | 200 + entity |
432
- | `/api/business/{module}/{id}` | DELETE | `.delete` | - | 204 |
428
+ | `/api/{module}` | GET | `.read` | - | Paginated list |
429
+ | `/api/{module}` | POST | `.create` | CreateDto | 201 + entity |
430
+ | `/api/{module}/{id}` | GET | `.read` | - | Entity |
431
+ | `/api/{module}/{id}` | PUT | `.update` | UpdateDto | 200 + entity |
432
+ | `/api/{module}/{id}` | DELETE | `.delete` | - | 204 |
433
433
 
434
434
  ### 4.3 Business Rules to Implement
435
435
 
@@ -1,7 +1,7 @@
1
1
  # Templates React - Documentation Module
2
2
 
3
3
  > **Usage:** Templates for generating HTML (React) documentation of module specifications
4
- > **Output:** `web/smartstack-web/src/pages/docs/business/{app}/{module}/`
4
+ > **Output:** `web/smartstack-web/src/pages/docs/{app}/{module}/`
5
5
  > **Context7:** Use for up-to-date React code generation
6
6
 
7
7
  ---
@@ -33,7 +33,7 @@
33
33
  ## Template DocPage.tsx
34
34
 
35
35
  ```tsx
36
- // web/smartstack-web/src/pages/docs/business/{app}/{module}/DocPage.tsx
36
+ // web/smartstack-web/src/pages/docs/{app}/{module}/DocPage.tsx
37
37
  // GENERATE WITH: use context7 with /facebook/react
38
38
 
39
39
  import { Link } from 'react-router-dom';
@@ -94,7 +94,7 @@ const docData: DocData = {
94
94
  id: 'UC-001',
95
95
  name: '{Use Case Name}',
96
96
  actor: '{Actor}',
97
- permission: 'business.{app}.{module}.{action}',
97
+ permission: '{app}.{module}.{action}',
98
98
  description: '{Description}'
99
99
  }
100
100
  ],
@@ -108,12 +108,12 @@ const docData: DocData = {
108
108
  ],
109
109
  permissions: [
110
110
  {
111
- path: 'business.{app}.{module}.read',
111
+ path: '{app}.{module}.read',
112
112
  description: 'View {module} data',
113
113
  roles: ['Admin', 'Manager', 'User', 'ReadOnly']
114
114
  },
115
115
  {
116
- path: 'business.{app}.{module}.create',
116
+ path: '{app}.{module}.create',
117
117
  description: 'Create new {module}',
118
118
  roles: ['Admin', 'Manager']
119
119
  }
@@ -163,7 +163,7 @@ function NumberedSection({
163
163
  }
164
164
 
165
165
  export function {ModuleName}DocPage() {
166
- const { t } = useTranslation('docs-business');
166
+ const { t } = useTranslation('docs');
167
167
 
168
168
  return (
169
169
  <div className="space-y-8">
@@ -173,11 +173,7 @@ export function {ModuleName}DocPage() {
173
173
  {t('breadcrumb.docs')}
174
174
  </Link>
175
175
  <span>/</span>
176
- <Link to="/docs/business" className="hover:text-[var(--color-primary-600)]">
177
- {t('breadcrumb.business')}
178
- </Link>
179
- <span>/</span>
180
- <Link to={`/docs/business/${docData.applicationName.toLowerCase()}`} className="hover:text-[var(--color-primary-600)]">
176
+ <Link to={`/docs/${docData.applicationName.toLowerCase()}`} className="hover:text-[var(--color-primary-600)]">
181
177
  {t(`apps.${docData.applicationName.toLowerCase()}.name`)}
182
178
  </Link>
183
179
  <span>/</span>
@@ -372,22 +368,22 @@ export function {ModuleName}DocPage() {
372
368
  <tbody>
373
369
  <tr>
374
370
  <td className="py-2 px-3"><span className="px-2 py-0.5 rounded bg-green-500/10 text-green-600">GET</span></td>
375
- <td className="py-2 px-3">/api/business/{'{module}'}</td>
371
+ <td className="py-2 px-3">/api/{'{module}'}</td>
376
372
  <td className="py-2 px-3 text-[var(--text-secondary)]">.read</td>
377
373
  </tr>
378
374
  <tr className="bg-[var(--bg-secondary)]/50">
379
375
  <td className="py-2 px-3"><span className="px-2 py-0.5 rounded bg-blue-500/10 text-blue-600">POST</span></td>
380
- <td className="py-2 px-3">/api/business/{'{module}'}</td>
376
+ <td className="py-2 px-3">/api/{'{module}'}</td>
381
377
  <td className="py-2 px-3 text-[var(--text-secondary)]">.create</td>
382
378
  </tr>
383
379
  <tr>
384
380
  <td className="py-2 px-3"><span className="px-2 py-0.5 rounded bg-yellow-500/10 text-yellow-600">PUT</span></td>
385
- <td className="py-2 px-3">/api/business/{'{module}'}/{'{id}'}</td>
381
+ <td className="py-2 px-3">/api/{'{module}'}/{'{id}'}</td>
386
382
  <td className="py-2 px-3 text-[var(--text-secondary)]">.update</td>
387
383
  </tr>
388
384
  <tr className="bg-[var(--bg-secondary)]/50">
389
385
  <td className="py-2 px-3"><span className="px-2 py-0.5 rounded bg-red-500/10 text-red-600">DELETE</span></td>
390
- <td className="py-2 px-3">/api/business/{'{module}'}/{'{id}'}</td>
386
+ <td className="py-2 px-3">/api/{'{module}'}/{'{id}'}</td>
391
387
  <td className="py-2 px-3 text-[var(--text-secondary)]">.delete</td>
392
388
  </tr>
393
389
  </tbody>
@@ -398,14 +394,14 @@ export function {ModuleName}DocPage() {
398
394
  {/* Navigation Footer */}
399
395
  <div className="flex justify-between pt-6 border-t border-[var(--border-color)]">
400
396
  <Link
401
- to={`/docs/business/${docData.applicationName.toLowerCase()}`}
397
+ to={`/docs/${docData.applicationName.toLowerCase()}`}
402
398
  className="flex items-center gap-2 text-[var(--text-secondary)] hover:text-[var(--color-primary-600)]"
403
399
  >
404
400
  <ArrowRight className="w-4 h-4 rotate-180" />
405
401
  {t('nav.backToApp')}
406
402
  </Link>
407
403
  <Link
408
- to="/docs/business"
404
+ to="/docs"
409
405
  className="flex items-center gap-2 text-[var(--color-primary-600)]"
410
406
  >
411
407
  {t('nav.allModules')}
@@ -480,7 +476,7 @@ export function {ModuleName}DocPage() {
480
476
  ## Template Index Application
481
477
 
482
478
  ```tsx
483
- // web/smartstack-web/src/pages/docs/business/{app}/index.tsx
479
+ // web/smartstack-web/src/pages/docs/{app}/index.tsx
484
480
 
485
481
  import { Link } from 'react-router-dom';
486
482
  import { useTranslation } from 'react-i18next';
@@ -500,7 +496,7 @@ const modules: ModuleLink[] = [
500
496
  name: '{Module Name}',
501
497
  description: '{Module description}',
502
498
  features: 3,
503
- path: '/docs/business/{app}/{module}'
499
+ path: '/docs/{app}/{module}'
504
500
  }
505
501
  ];
506
502
 
@@ -513,8 +509,6 @@ export function {App}DocsIndexPage() {
513
509
  <nav className="flex items-center gap-2 text-sm text-[var(--text-secondary)]">
514
510
  <Link to="/docs">{t('breadcrumb.docs')}</Link>
515
511
  <span>/</span>
516
- <Link to="/docs/business">{t('breadcrumb.business')}</Link>
517
- <span>/</span>
518
512
  <span>{t('apps.{app}.name')}</span>
519
513
  </nav>
520
514
 
@@ -103,7 +103,7 @@ See `<parameters>` for complete flag list.
103
103
  | `{module}` | string | Module name PascalCase (e.g., Users, Tickets) |
104
104
  | `{entity}` | string | Entity name PascalCase (e.g., User, Ticket) |
105
105
  | `{controller_type}` | string | crud, readonly, auth, custom |
106
- | `{permission_path}` | string | Full permission path (e.g., platform.support.tickets) |
106
+ | `{permission_path}` | string | Full permission path (e.g., support.tickets) |
107
107
  | `{auto_mode}` | boolean | Skip confirmations |
108
108
  | `{postman_mode}` | boolean | Generate Postman tests |
109
109
  | `{dto_mode}` | boolean | Generate DTOs |
@@ -28,7 +28,7 @@
28
28
  | User | Email | Password | Permissions |
29
29
  |------|-------|----------|-------------|
30
30
  | SuperAdmin | `superadmin@smartstack.test` | `SuperAdmin123!` | `*` (all) |
31
- | PlatformAdmin | `platformadmin@smartstack.test` | `PlatformAdmin123!` | `platform.administration.*` |
31
+ | PlatformAdmin | `platformadmin@smartstack.test` | `PlatformAdmin123!` | `administration.*` |
32
32
  | User | `user@smartstack.test` | `User123!` | Standard |
33
33
  | ReadOnly | `readonly@smartstack.test` | `ReadOnly123!` | `*.read` only |
34
34
  | NoPerm | `noperm@smartstack.test` | `NoPerm123!` | None |
@@ -6,9 +6,9 @@
6
6
 
7
7
  ## Controller Template
8
8
 
9
- **Target path:** `src/SmartStack.Api/Controllers/{ContextShort}/{Application}/{entity}Controller.cs`
9
+ **Target path:** `src/SmartStack.Api/Controllers/{ApplicationPascal}/{entity}Controller.cs`
10
10
 
11
- > Context mapping: `business` → `Business`, `platform` → `Admin`, `personal` → `User`
11
+ > Application mapping: `administration` → `Administration`, `support` → `Support`, `myspace` → `MySpace`
12
12
 
13
13
  ```csharp
14
14
  using Microsoft.AspNetCore.Mvc;
@@ -0,0 +1,209 @@
1
+ # MCP Scaffold Workflow: DTOs + Controller
2
+
3
+ > **Reference for:** step-03-generate.md
4
+ > **Purpose:** Two-call MCP scaffold sequence with NavRoute integration
5
+ > **Calls:** `mcp__smartstack__scaffold_extension` for DTOs, then for Controller
6
+
7
+ ---
8
+
9
+ ## Two-Call Strategy
10
+
11
+ The skill uses TWO separate MCP calls (not one):
12
+
13
+ 1. **First call:** Generate DTOs (Response, Create, Update)
14
+ 2. **Second call:** Generate Controller with NavRoute attribute
15
+
16
+ **Why two calls?**
17
+ - The skill assumes Entity already exists (verified in step-01-analyze)
18
+ - Type "dto" generates DTOs without regenerating Entity
19
+ - Type "controller" generates Controller with NavRoute and DTO references
20
+
21
+ ---
22
+
23
+ ## Call 1: Generate DTOs
24
+
25
+ ```javascript
26
+ const dtoCall = await mcp__smartstack__scaffold_extension({
27
+ type: "dto",
28
+ name: "{entityName}", // PascalCase: "Product", "OrderItem"
29
+ options: {
30
+ navRoute: "{permission_path}", // For proper namespace hierarchy
31
+ schema: "core",
32
+ dryRun: false
33
+ }
34
+ });
35
+
36
+ // Expected output paths:
37
+ // - Application/{Application}/{Module}/DTOs/{entityName}ResponseDto.cs
38
+ // - Application/{Application}/{Module}/DTOs/Create{entityName}Dto.cs
39
+ // - Application/{Application}/{Module}/DTOs/Update{entityName}Dto.cs
40
+ ```
41
+
42
+ **From response, extract:**
43
+ - `dtoCall.dtoFiles.response` - Response DTO path
44
+ - `dtoCall.dtoFiles.create` - Create DTO path
45
+ - `dtoCall.dtoFiles.update` - Update DTO path
46
+
47
+ ### Error Handling: DTOs
48
+
49
+ ```javascript
50
+ if (dtoCall.status === 'failed' || !dtoCall.dtoFiles) {
51
+ console.error(`MCP DTO generation failed: ${dtoCall.error}`);
52
+ console.log(`Suggested actions:`);
53
+ console.log(` 1. Verify entity name is PascalCase (e.g., "Product", not "product")`);
54
+ console.log(` 2. Verify entity properties are defined in DB`);
55
+ console.log(` 3. Run /mcp:healthcheck to verify MCP server connectivity`);
56
+ STOP; // Do NOT proceed to controller call
57
+ }
58
+ ```
59
+
60
+ ---
61
+
62
+ ## Call 2: Generate Controller
63
+
64
+ ```javascript
65
+ const controllerCall = await mcp__smartstack__scaffold_extension({
66
+ type: "controller",
67
+ name: "{entityName}", // PascalCase from step 1
68
+ options: {
69
+ navRoute: "{permission_path}", // MANDATORY for NavRoute attribute
70
+ navRouteSuffix: null, // Optional: e.g., "details" → [NavRoute("path", Suffix = "details")]
71
+ dryRun: false
72
+ }
73
+ });
74
+
75
+ // Expected output:
76
+ // Api/Controllers/{area}/{entityName}Controller.cs with [NavRoute] attribute
77
+ ```
78
+
79
+ **From response, extract:**
80
+ - `controllerCall.controllerFile` - Controller path
81
+ - `controllerCall.navRouteAttribute` - NavRoute value (should match permission_path)
82
+
83
+ ### Error Handling: Controller
84
+
85
+ ```javascript
86
+ if (controllerCall.status === 'failed' || !controllerCall.controllerFile) {
87
+ console.error(`MCP Controller generation failed: ${controllerCall.error}`);
88
+ console.log(`Note: DTOs were generated successfully (${dtoCall.dtoFiles.response})`);
89
+ console.log(`Suggested actions:`);
90
+ console.log(` 1. Verify navRoute format (e.g., "app.module.resource")`);
91
+ console.log(` 2. Run /mcp:healthcheck to verify MCP server connectivity`);
92
+ console.log(` 3. Check that DTOs were created (they should exist from Call 1)`);
93
+ STOP; // Do NOT proceed to step-04
94
+ }
95
+ ```
96
+
97
+ ---
98
+
99
+ ## NavRoute Validation
100
+
101
+ ```javascript
102
+ // Verify NavRoute is present in controller
103
+ const controllerContent = readFile(controllerCall.controllerFile);
104
+
105
+ if (!controllerContent.includes('[NavRoute(')) {
106
+ console.warn(`NavRoute attribute NOT FOUND in controller`);
107
+ console.warn(`Expected: [NavRoute("${permission_path}")]`);
108
+ console.warn(`Got: missing attribute`);
109
+ console.warn(`\nWithout NavRoute:`);
110
+ console.warn(` ❌ Frontend routes will be hardcoded`);
111
+ console.warn(` ❌ No automatic permission sync`);
112
+ console.warn(` ❌ Manual navigation management required`);
113
+ STOP;
114
+ }
115
+
116
+ // Extract actual NavRoute value
117
+ const navRouteMatch = controllerContent.match(/\[NavRoute\("([^"]+)"\)/);
118
+ const actualNavRoute = navRouteMatch ? navRouteMatch[1] : null;
119
+
120
+ if (actualNavRoute !== permission_path) {
121
+ console.warn(`NavRoute mismatch:`);
122
+ console.warn(` Expected: "${permission_path}"`);
123
+ console.warn(` Got: "${actualNavRoute}"`);
124
+ // Warning only — proceed
125
+ }
126
+ ```
127
+
128
+ ---
129
+
130
+ ## Success Output
131
+
132
+ ```markdown
133
+ Generated Files:
134
+
135
+ | File | Path | Status |
136
+ |------|------|--------|
137
+ | DTO (Response) | {dtoResponsePath} | ✅ Created |
138
+ | DTO (Create) | {dtoCreatePath} | ✅ Created |
139
+ | DTO (Update) | {dtoUpdatePath} | ✅ Created |
140
+ | Controller | {controllerPath} | ✅ Created with [NavRoute] |
141
+
142
+ NavRoute Integration: ✅ Enabled
143
+ - [NavRoute("{permission_path}")]
144
+ - Frontend/backend sync active
145
+ - Permission-based navigation ready
146
+
147
+ Next: Synchronizing permissions in step-04...
148
+ ```
149
+
150
+ ---
151
+
152
+ ## Post-Generation Checks
153
+
154
+ ```javascript
155
+ // 1. Verify all files created
156
+ const requiredFiles = [
157
+ dtoCall.dtoFiles.response,
158
+ dtoCall.dtoFiles.create,
159
+ dtoCall.dtoFiles.update,
160
+ controllerCall.controllerFile
161
+ ];
162
+
163
+ for (const file of requiredFiles) {
164
+ if (!fileExists(file)) {
165
+ console.error(`File not found: ${file}`);
166
+ STOP;
167
+ }
168
+ }
169
+
170
+ // 2. Verify controller references DTOs correctly
171
+ const controllerContent = readFile(controllerCall.controllerFile);
172
+ const expectedDtoReferences = [
173
+ `${entityName}ResponseDto`,
174
+ `Create${entityName}Dto`,
175
+ `Update${entityName}Dto`
176
+ ];
177
+
178
+ for (const ref of expectedDtoReferences) {
179
+ if (!controllerContent.includes(ref)) {
180
+ console.warn(`DTO reference missing in controller: ${ref}`);
181
+ }
182
+ }
183
+
184
+ // 3. Verify NavRoute matches permission_path
185
+ if (!controllerContent.includes(`NavRoute("${permission_path}")`)) {
186
+ console.warn(`NavRoute value doesn't match permission_path`);
187
+ }
188
+
189
+ console.log(`✅ All checks passed — controller ready for step-04`);
190
+ ```
191
+
192
+ ---
193
+
194
+ ## Fallback: Manual NavRoute
195
+
196
+ If MCP doesn't generate [NavRoute] attribute:
197
+
198
+ ```csharp
199
+ // Manually add if missing:
200
+ [ApiController]
201
+ [Route("api/[controller]")]
202
+ [NavRoute("app.module.resource")] // <-- Add this line
203
+ public class {EntityName}Controller : ControllerBase
204
+ {
205
+ // ...
206
+ }
207
+ ```
208
+
209
+ But this indicates MCP failure and should not be needed in normal operation.
@@ -12,10 +12,10 @@
12
12
 
13
13
  | Permission Path | Parent Class |
14
14
  |-----------------|--------------|
15
- | `platform.administration.*` | `Platform.Administration` |
16
- | `platform.support.*` | `Platform.Support` |
17
- | `business.*` | `Business` |
18
- | `personal.myspace.*` | `Personal.MySpace` |
15
+ | `administration.*` | `Administration` |
16
+ | `support.*` | `Support` |
17
+ | `{application}.*` | `{Application}` |
18
+ | `myspace.*` | `MySpace` |
19
19
 
20
20
  **Add nested class:**
21
21
 
@@ -29,24 +29,21 @@ public static class {module}
29
29
  }
30
30
  ```
31
31
 
32
- **Example for platform.support.tickets:**
32
+ **Example for support.tickets:**
33
33
 
34
34
  ```csharp
35
35
  public static partial class Permissions
36
36
  {
37
- public static class Platform
37
+ public static class Support
38
38
  {
39
- public static class Support
39
+ // Existing classes...
40
+
41
+ public static class Tickets // NEW
40
42
  {
41
- // Existing classes...
42
-
43
- public static class Tickets // NEW
44
- {
45
- public const string View = "platform.support.tickets.read";
46
- public const string Create = "platform.support.tickets.create";
47
- public const string Update = "platform.support.tickets.update";
48
- public const string Delete = "platform.support.tickets.delete";
49
- }
43
+ public const string View = "support.tickets.read";
44
+ public const string Create = "support.tickets.create";
45
+ public const string Update = "support.tickets.update";
46
+ public const string Delete = "support.tickets.delete";
50
47
  }
51
48
  }
52
49
  }
@@ -69,12 +69,12 @@ Arguments (after flags removed):
69
69
 
70
70
  **Valid areas:**
71
71
 
72
- | Area | Route Prefix | Permission Context |
73
- |------|--------------|-------------------|
74
- | `Admin` | `api/admin/` | `platform.administration.` |
75
- | `Support` | `api/support/` | `platform.support.` |
76
- | `Business` | `api/business/` | `business.` |
77
- | `User` | `api/user/` | `personal.myspace.` |
72
+ | Area | Route Prefix | Permission Path Prefix |
73
+ |------|--------------|----------------------|
74
+ | `Admin` | `api/admin/` | `administration.` |
75
+ | `Support` | `api/support/` | `support.` |
76
+ | `Business` | `api/business/` | `{application}.` |
77
+ | `User` | `api/user/` | `myspace.` |
78
78
  | `Auth` | `api/auth/` | (AllowAnonymous) |
79
79
 
80
80
  **If {area} missing or invalid:**
@@ -128,10 +128,10 @@ Examples:
128
128
  **Based on {area}:**
129
129
 
130
130
  ```
131
- Admin → {permission_path} = "platform.administration.{module_lowercase}"
132
- Support → {permission_path} = "platform.support.{module_lowercase}"
133
- Business → {permission_path} = "business.{module_lowercase}"
134
- User → {permission_path} = "personal.myspace.{module_lowercase}"
131
+ Admin → {permission_path} = "administration.{module_lowercase}"
132
+ Support → {permission_path} = "support.{module_lowercase}"
133
+ Business → {permission_path} = "{application_lowercase}.{module_lowercase}"
134
+ User → {permission_path} = "myspace.{module_lowercase}"
135
135
  Auth → {permission_path} = null (AllowAnonymous)
136
136
  ```
137
137
 
@@ -165,7 +165,7 @@ Controller: {area}/{module}Controller
165
165
  | {area} | Admin |
166
166
  | {module} | Users |
167
167
  | {entity} | User |
168
- | {permission_path} | platform.administration.users |
168
+ | {permission_path} | administration.users |
169
169
  | {auto_mode} | true/false |
170
170
  | {postman_mode} | true/false |
171
171
  | {dto_mode} | true/false |