@atlashub/smartstack-cli 4.80.0 → 5.0.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 (1008) hide show
  1. package/.documentation/agents.html +124 -585
  2. package/.documentation/ba-develop.html +852 -0
  3. package/.documentation/ba-skills.html +465 -0
  4. package/.documentation/business-analyse.html +385 -1570
  5. package/.documentation/cli-commands.html +162 -799
  6. package/.documentation/commands.html +902 -1338
  7. package/.documentation/css/styles.css +34 -1
  8. package/.documentation/efcore.html +161 -2599
  9. package/.documentation/gitflow.html +62 -105
  10. package/.documentation/hooks.html +94 -343
  11. package/.documentation/index.html +116 -385
  12. package/.documentation/init.html +217 -1566
  13. package/.documentation/installation.html +121 -1470
  14. package/.documentation/license.html +90 -450
  15. package/.documentation/ralph-loop.html +105 -602
  16. package/dist/index.js +9421 -79036
  17. package/dist/index.js.map +1 -1
  18. package/package.json +5 -20
  19. package/scripts/generate-docs/README.md +87 -0
  20. package/scripts/generate-docs/index.ts +175 -0
  21. package/scripts/generate-docs/lib/context-builder.ts +81 -0
  22. package/scripts/generate-docs/lib/handlebars-setup.ts +162 -0
  23. package/scripts/generate-docs/lib/markdown-parser.ts +86 -0
  24. package/scripts/generate-docs/lib/sidebar-builder.ts +80 -0
  25. package/scripts/generate-docs/lib/skill-parser.ts +171 -0
  26. package/scripts/generate-docs/lib/stats.ts +32 -0
  27. package/scripts/generate-docs/lib/version.ts +17 -0
  28. package/scripts/generate-docs/templates/layout.hbs +33 -0
  29. package/scripts/generate-docs/templates/pages/_generic.hbs +12 -0
  30. package/scripts/generate-docs/templates/pages/ba-develop.hbs +10 -0
  31. package/scripts/generate-docs/templates/pages/ba-skills.hbs +8 -0
  32. package/scripts/generate-docs/templates/pages/business-analyse.hbs +1 -0
  33. package/scripts/generate-docs/templates/pages/commands.hbs +13 -0
  34. package/scripts/generate-docs/templates/pages/gitflow.hbs +2164 -0
  35. package/scripts/generate-docs/templates/pages/index.hbs +5 -0
  36. package/scripts/generate-docs/templates/partials/breadcrumb.hbs +6 -0
  37. package/scripts/generate-docs/templates/partials/header.hbs +22 -0
  38. package/scripts/generate-docs/templates/partials/sidebar.hbs +32 -0
  39. package/scripts/generate-docs/templates/partials/skill-card.hbs +22 -0
  40. package/scripts/generate-docs/templates/partials/skill-grid.hbs +5 -0
  41. package/scripts/generate-docs/templates/partials/skill-table.hbs +18 -0
  42. package/scripts/generate-docs/templates/partials/stats-bar.hbs +20 -0
  43. package/scripts/test-migration-program-cs.mts +94 -0
  44. package/templates/agents/explore-codebase.md +2 -3
  45. package/templates/agents/explore-docs.md +5 -5
  46. package/templates/hooks/hooks.json +0 -9
  47. package/templates/project/Program.cs.template +17 -5
  48. package/templates/project/appsettings.json.template +208 -195
  49. package/templates/project/claude-md/api.CLAUDE.md.template +27 -2
  50. package/templates/project/patch-smartstack-theme.cjs.template +42 -0
  51. package/templates/scripts/statusline/README.md +47 -0
  52. package/templates/scripts/statusline/index.js +224 -0
  53. package/templates/skills/CLAUDE.md +235 -0
  54. package/templates/skills/ba-develop/SKILL.md +310 -0
  55. package/templates/skills/ba-develop/cli/compute-page-diff/__tests__/compute-page-diff.test.ts +177 -0
  56. package/templates/skills/ba-develop/cli/compute-page-diff/compute-diff.ts +51 -0
  57. package/templates/skills/ba-develop/cli/compute-page-diff/disk-drift.ts +55 -0
  58. package/templates/skills/ba-develop/cli/compute-page-diff/index.ts +89 -0
  59. package/templates/skills/ba-develop/cli/compute-page-diff/scan-pagespecs.ts +115 -0
  60. package/templates/skills/ba-develop/cli/compute-page-diff/types.ts +63 -0
  61. package/templates/skills/ba-develop/cli/compute-page-diff/validate.ts +20 -0
  62. package/templates/skills/ba-develop/cli/update-snapshot/__tests__/update-snapshot.test.ts +73 -0
  63. package/templates/skills/ba-develop/cli/update-snapshot/execute.ts +24 -0
  64. package/templates/skills/ba-develop/cli/update-snapshot/index.ts +61 -0
  65. package/templates/skills/ba-develop/cli/update-snapshot/types.ts +40 -0
  66. package/templates/skills/ba-develop/cli/update-snapshot/validate.ts +17 -0
  67. package/templates/skills/ba-develop/references/anti-patterns.md +101 -0
  68. package/templates/skills/ba-develop/references/auto-healing.md +191 -0
  69. package/templates/skills/ba-develop/references/commit-checkpoints.md +79 -0
  70. package/templates/skills/ba-develop/references/gates.md +380 -0
  71. package/templates/skills/ba-develop/references/output-contract.md +95 -0
  72. package/templates/skills/ba-develop/references/phases-detail.md +592 -0
  73. package/templates/skills/ba-develop-plan/SKILL.md +239 -0
  74. package/templates/skills/ba-develop-plan/cli/preflight-develop-plan/__tests__/validate.test.ts +225 -0
  75. package/templates/skills/ba-develop-plan/cli/preflight-develop-plan/index.ts +102 -0
  76. package/templates/skills/ba-develop-plan/cli/preflight-develop-plan/types.ts +121 -0
  77. package/templates/skills/ba-develop-plan/cli/preflight-develop-plan/validate.ts +261 -0
  78. package/templates/skills/business-analyse/_workflow/README.md +34 -0
  79. package/templates/skills/business-analyse/_workflow/ba-files.md +174 -0
  80. package/templates/skills/business-analyse/_workflow/code-discipline.md +104 -0
  81. package/templates/skills/business-analyse/_workflow/communication.md +63 -0
  82. package/templates/skills/business-analyse/_workflow/completeAuto-discipline.md +79 -0
  83. package/templates/skills/business-analyse/_workflow/context-documents.md +45 -0
  84. package/templates/skills/business-analyse/_workflow/doc-templates.md +318 -0
  85. package/templates/skills/business-analyse/audit-actors/SKILL.md +97 -0
  86. package/templates/skills/business-analyse/audit-cross-dimension/SKILL.md +127 -0
  87. package/templates/skills/business-analyse/audit-cross-ref-code/SKILL.md +119 -0
  88. package/templates/skills/business-analyse/audit-data-model/SKILL.md +343 -0
  89. package/templates/skills/business-analyse/audit-menu/SKILL.md +97 -0
  90. package/templates/skills/business-analyse/audit-prd/SKILL.md +479 -0
  91. package/templates/skills/business-analyse/audit-pre-dev/SKILL.md +135 -0
  92. package/templates/skills/business-analyse/audit-rbac/SKILL.md +93 -0
  93. package/templates/skills/business-analyse/audit-rules/SKILL.md +182 -0
  94. package/templates/skills/business-analyse/audit-screens/SKILL.md +169 -0
  95. package/templates/skills/business-analyse/audit-sections/SKILL.md +174 -0
  96. package/templates/skills/business-analyse/audit-use-cases/SKILL.md +245 -0
  97. package/templates/skills/business-analyse/create-actors/SKILL.md +129 -0
  98. package/templates/skills/business-analyse/create-ba-order/SKILL.md +182 -0
  99. package/templates/skills/business-analyse/create-ba-order/cli/create-ba-order/__tests__/generate.test.ts +151 -0
  100. package/templates/skills/business-analyse/create-ba-order/cli/create-ba-order/__tests__/graph.test.ts +173 -0
  101. package/templates/skills/business-analyse/create-ba-order/cli/create-ba-order/generate.ts +273 -0
  102. package/templates/skills/business-analyse/create-ba-order/cli/create-ba-order/graph.ts +193 -0
  103. package/templates/skills/business-analyse/create-ba-order/cli/create-ba-order/index.ts +108 -0
  104. package/templates/skills/business-analyse/create-ba-order/cli/create-ba-order/types.ts +106 -0
  105. package/templates/skills/business-analyse/create-ba-order/cli/create-ba-order/validate.ts +79 -0
  106. package/templates/skills/business-analyse/create-business-rules/SKILL.md +302 -0
  107. package/templates/skills/business-analyse/create-business-rules/levels/access-rules.md +105 -0
  108. package/templates/skills/business-analyse/create-business-rules/levels/elaborate.md +193 -0
  109. package/templates/skills/business-analyse/create-business-rules/levels/identify.md +157 -0
  110. package/templates/skills/business-analyse/create-business-rules/levels/link.md +86 -0
  111. package/templates/skills/business-analyse/create-data-model/SKILL.md +319 -0
  112. package/templates/skills/business-analyse/create-data-model/levels/attributes.md +130 -0
  113. package/templates/skills/business-analyse/create-data-model/levels/identify.md +100 -0
  114. package/templates/skills/business-analyse/create-data-model/levels/relationships.md +97 -0
  115. package/templates/skills/business-analyse/create-menu/SKILL.md +191 -0
  116. package/templates/skills/business-analyse/create-menu/levels/applications.md +85 -0
  117. package/templates/skills/business-analyse/create-menu/levels/modules.md +81 -0
  118. package/templates/skills/business-analyse/create-menu/levels/resources.md +75 -0
  119. package/templates/skills/business-analyse/create-menu/levels/sections.md +82 -0
  120. package/templates/skills/business-analyse/create-plan-development/SKILL.md +93 -0
  121. package/templates/skills/business-analyse/create-plan-development/cli/create-plan-development/__tests__/graph.test.ts +271 -0
  122. package/templates/skills/business-analyse/create-plan-development/cli/create-plan-development/__tests__/parse.test.ts +177 -0
  123. package/templates/skills/business-analyse/create-plan-development/cli/create-plan-development/generate.ts +317 -0
  124. package/templates/skills/business-analyse/create-plan-development/cli/create-plan-development/graph.ts +233 -0
  125. package/templates/skills/business-analyse/create-plan-development/cli/create-plan-development/index.ts +106 -0
  126. package/templates/skills/business-analyse/create-plan-development/cli/create-plan-development/parse.ts +346 -0
  127. package/templates/skills/business-analyse/create-plan-development/cli/create-plan-development/types.ts +160 -0
  128. package/templates/skills/business-analyse/create-plan-development/cli/create-plan-development/validate.ts +118 -0
  129. package/templates/skills/business-analyse/create-prd/SKILL.md +228 -0
  130. package/templates/skills/business-analyse/create-rbac/SKILL.md +255 -0
  131. package/templates/skills/business-analyse/create-rbac/levels/detail.md +86 -0
  132. package/templates/skills/business-analyse/create-rbac/levels/discovery.md +63 -0
  133. package/templates/skills/business-analyse/create-rbac/levels/review.md +66 -0
  134. package/templates/skills/business-analyse/create-screen/SKILL.md +386 -0
  135. package/templates/skills/business-analyse/create-screen/levels/dashboard-screens.md +94 -0
  136. package/templates/skills/business-analyse/create-screen/levels/form-screens.md +142 -0
  137. package/templates/skills/business-analyse/create-screen/levels/home-screens.md +151 -0
  138. package/templates/skills/business-analyse/create-screen/levels/kanban-screens.md +86 -0
  139. package/templates/skills/business-analyse/create-screen/levels/list-screens.md +134 -0
  140. package/templates/skills/business-analyse/create-screen/references/post-check.md +101 -0
  141. package/templates/skills/business-analyse/create-screen/references/react-templates.md +252 -0
  142. package/templates/skills/business-analyse/create-screen/references/smartcomponents.md +419 -0
  143. package/templates/skills/business-analyse/create-screen/references/type-mapping.md +150 -0
  144. package/templates/skills/business-analyse/create-use-case/SKILL.md +347 -0
  145. package/templates/skills/business-analyse/create-use-case/levels/detail.md +136 -0
  146. package/templates/skills/business-analyse/create-use-case/levels/discovery.md +110 -0
  147. package/templates/skills/business-analyse/loop/SKILL.md +401 -0
  148. package/templates/skills/business-analyse/modeling-detail/SKILL.md +241 -0
  149. package/templates/skills/business-analyse/modeling-inventory/SKILL.md +174 -0
  150. package/templates/skills/business-analyse/reconcile-menu/SKILL.md +180 -0
  151. package/templates/skills/business-analyse/reconcile-menu/cli/reconcile-menu/__tests__/clean.test.ts +266 -0
  152. package/templates/skills/business-analyse/reconcile-menu/cli/reconcile-menu/__tests__/detect.test.ts +231 -0
  153. package/templates/skills/business-analyse/reconcile-menu/cli/reconcile-menu/__tests__/scan.test.ts +154 -0
  154. package/templates/skills/business-analyse/reconcile-menu/cli/reconcile-menu/clean.ts +319 -0
  155. package/templates/skills/business-analyse/reconcile-menu/cli/reconcile-menu/detect.ts +256 -0
  156. package/templates/skills/business-analyse/reconcile-menu/cli/reconcile-menu/index.ts +126 -0
  157. package/templates/skills/business-analyse/reconcile-menu/cli/reconcile-menu/scan.ts +175 -0
  158. package/templates/skills/business-analyse/reconcile-menu/cli/reconcile-menu/types.ts +136 -0
  159. package/templates/skills/business-analyse/reconcile-menu/cli/reconcile-menu/validate.ts +32 -0
  160. package/templates/skills/check-version/SKILL.md +196 -196
  161. package/templates/skills/cli-app-sync/SKILL.md +9 -9
  162. package/templates/skills/cli-app-sync/references/comparison-map.md +4 -4
  163. package/templates/skills/cli-app-sync/references/diff-entities.md +6 -6
  164. package/templates/skills/conventions/SKILL.md +64 -0
  165. package/templates/skills/dev-start/SKILL.md +190 -237
  166. package/templates/skills/development/SKILL.md +87 -0
  167. package/templates/skills/development/audit/SKILL.md +156 -0
  168. package/templates/skills/development/audit/routing-dynamic/SKILL.md +196 -0
  169. package/templates/skills/development/audit-dev-api/SKILL.md +331 -0
  170. package/templates/skills/development/audit-dev-api/cli/audit-dev-api/__tests__/end-to-end.test.ts +364 -0
  171. package/templates/skills/development/audit-dev-api/cli/audit-dev-api/audit.ts +646 -0
  172. package/templates/skills/development/audit-dev-api/cli/audit-dev-api/index.ts +140 -0
  173. package/templates/skills/development/audit-dev-api/cli/audit-dev-api/types.ts +158 -0
  174. package/templates/skills/development/audit-dev-api/cli/audit-dev-api/validate.ts +45 -0
  175. package/templates/skills/development/audit-dev-core/SKILL.md +182 -0
  176. package/templates/skills/development/audit-dev-data/SKILL.md +195 -0
  177. package/templates/skills/development/audit-dev-domain/SKILL.md +184 -0
  178. package/templates/skills/development/audit-dev-frontend/SKILL.md +530 -0
  179. package/templates/skills/development/audit-dev-frontend/cli/audit-dev-actions-alignment/__tests__/end-to-end.test.ts +202 -0
  180. package/templates/skills/development/audit-dev-frontend/cli/audit-dev-actions-alignment/apply.ts +31 -0
  181. package/templates/skills/development/audit-dev-frontend/cli/audit-dev-actions-alignment/audit.ts +734 -0
  182. package/templates/skills/development/audit-dev-frontend/cli/audit-dev-actions-alignment/index.ts +125 -0
  183. package/templates/skills/development/audit-dev-frontend/cli/audit-dev-actions-alignment/types.ts +165 -0
  184. package/templates/skills/development/audit-dev-frontend/cli/audit-dev-actions-alignment/validate.ts +36 -0
  185. package/templates/skills/development/audit-dev-frontend/cli/audit-dev-frontend/__tests__/dev-ui-022.test.ts +193 -0
  186. package/templates/skills/development/audit-dev-frontend/cli/audit-dev-frontend/apply.ts +374 -0
  187. package/templates/skills/development/audit-dev-frontend/cli/audit-dev-frontend/audit.ts +1126 -0
  188. package/templates/skills/development/audit-dev-frontend/cli/audit-dev-frontend/index.ts +141 -0
  189. package/templates/skills/development/audit-dev-frontend/cli/audit-dev-frontend/types.ts +218 -0
  190. package/templates/skills/development/audit-dev-frontend/cli/audit-dev-frontend/validate.ts +80 -0
  191. package/templates/skills/development/audit-dev-tests/SKILL.md +82 -0
  192. package/templates/skills/development/audit-dev-tests/cli/audit-dev-tests/__tests__/audit.test.ts +220 -0
  193. package/templates/skills/development/audit-dev-tests/cli/audit-dev-tests/audit.ts +185 -0
  194. package/templates/skills/development/audit-dev-tests/cli/audit-dev-tests/index.ts +84 -0
  195. package/templates/skills/development/audit-dev-tests/cli/audit-dev-tests/types.ts +48 -0
  196. package/templates/skills/development/audit-dev-tests/cli/audit-dev-tests/validate.ts +36 -0
  197. package/templates/skills/development/audit-dev-wire/SKILL.md +144 -0
  198. package/templates/skills/development/audit-dev-wire/cli/audit-dev-wire/__tests__/audit.test.ts +171 -0
  199. package/templates/skills/development/audit-dev-wire/cli/audit-dev-wire/audit.ts +307 -0
  200. package/templates/skills/development/audit-dev-wire/cli/audit-dev-wire/index.ts +139 -0
  201. package/templates/skills/development/audit-dev-wire/cli/audit-dev-wire/types.ts +110 -0
  202. package/templates/skills/development/audit-dev-wire/cli/audit-dev-wire/validate.ts +16 -0
  203. package/templates/skills/development/backend/business-layer/SKILL.md +255 -0
  204. package/templates/skills/development/backend/business-layer/cli/scaffold-business/__tests__/generate.test.ts +254 -0
  205. package/templates/skills/development/backend/business-layer/cli/scaffold-business/generate.ts +842 -0
  206. package/templates/skills/development/backend/business-layer/cli/scaffold-business/index.ts +56 -0
  207. package/templates/skills/development/backend/business-layer/cli/scaffold-business/types.ts +112 -0
  208. package/templates/skills/development/backend/business-layer/cli/scaffold-business/validate.ts +24 -0
  209. package/templates/skills/development/backend/controller/SKILL.md +154 -0
  210. package/templates/skills/development/backend/controller/cli/scaffold-controller/__tests__/generate.test.ts +345 -0
  211. package/templates/skills/development/backend/controller/cli/scaffold-controller/generate.ts +280 -0
  212. package/templates/skills/development/backend/controller/cli/scaffold-controller/index.ts +49 -0
  213. package/templates/skills/development/backend/controller/cli/scaffold-controller/types.ts +72 -0
  214. package/templates/skills/development/backend/controller/cli/scaffold-controller/validate.ts +14 -0
  215. package/templates/skills/development/backend/core-seed/SKILL.md +177 -0
  216. package/templates/skills/development/backend/core-seed/cli/scaffold-core-seed/__tests__/build-spec.test.ts +163 -0
  217. package/templates/skills/development/backend/core-seed/cli/scaffold-core-seed/__tests__/generate.test.ts +330 -0
  218. package/templates/skills/development/backend/core-seed/cli/scaffold-core-seed/__tests__/validate.test.ts +126 -0
  219. package/templates/skills/development/backend/core-seed/cli/scaffold-core-seed/build-spec.ts +287 -0
  220. package/templates/skills/development/backend/core-seed/cli/scaffold-core-seed/generate.ts +826 -0
  221. package/templates/skills/development/backend/core-seed/cli/scaffold-core-seed/index.ts +188 -0
  222. package/templates/skills/development/backend/core-seed/cli/scaffold-core-seed/types.ts +163 -0
  223. package/templates/skills/development/backend/core-seed/cli/scaffold-core-seed/validate.ts +129 -0
  224. package/templates/skills/development/backend/data-layer/SKILL.md +163 -0
  225. package/templates/skills/development/backend/data-layer/cli/scaffold-entity/__tests__/generate.test.ts +155 -0
  226. package/templates/skills/development/backend/data-layer/cli/scaffold-entity/generate.ts +232 -0
  227. package/templates/skills/development/backend/data-layer/cli/scaffold-entity/index.ts +34 -0
  228. package/templates/skills/development/backend/data-layer/cli/scaffold-entity/types.ts +60 -0
  229. package/templates/skills/development/backend/data-layer/cli/scaffold-entity/validate.ts +42 -0
  230. package/templates/skills/development/backend/data-layer/cli/scaffold-migration/execute.ts +13 -0
  231. package/templates/skills/development/backend/data-layer/cli/scaffold-migration/index.ts +25 -0
  232. package/templates/skills/development/backend/data-layer/cli/scaffold-migration/types.ts +11 -0
  233. package/templates/skills/development/backend/data-layer/cli/scaffold-migration/validate.ts +9 -0
  234. package/templates/skills/development/backend/screen-controller/SKILL.md +169 -0
  235. package/templates/skills/development/backend/screen-controller/cli/scaffold-screen-controller/__tests__/generate.test.ts +329 -0
  236. package/templates/skills/development/backend/screen-controller/cli/scaffold-screen-controller/__tests__/hub-views.test.ts +105 -0
  237. package/templates/skills/development/backend/screen-controller/cli/scaffold-screen-controller/__tests__/parse-pagespec.test.ts +137 -0
  238. package/templates/skills/development/backend/screen-controller/cli/scaffold-screen-controller/generate.ts +437 -0
  239. package/templates/skills/development/backend/screen-controller/cli/scaffold-screen-controller/index.ts +108 -0
  240. package/templates/skills/development/backend/screen-controller/cli/scaffold-screen-controller/parse-pagespec.ts +104 -0
  241. package/templates/skills/development/backend/screen-controller/cli/scaffold-screen-controller/types.ts +101 -0
  242. package/templates/skills/development/backend/screen-controller/cli/scaffold-screen-controller/validate.ts +26 -0
  243. package/templates/skills/development/backend/seed-data/SKILL.md +91 -0
  244. package/templates/skills/development/backend/seed-data/cli/scaffold-seed/generate.ts +471 -0
  245. package/templates/skills/development/backend/seed-data/cli/scaffold-seed/index.ts +74 -0
  246. package/templates/skills/development/backend/seed-data/cli/scaffold-seed/types.ts +104 -0
  247. package/templates/skills/development/backend/seed-data/cli/scaffold-seed/validate.ts +63 -0
  248. package/templates/skills/development/backend/structure/SKILL.md +47 -0
  249. package/templates/skills/development/debug/SKILL.md +62 -0
  250. package/templates/skills/development/debug/audit-bug/SKILL.md +185 -0
  251. package/templates/skills/development/debug/backend/SKILL.md +114 -0
  252. package/templates/skills/development/debug/discuss-bug/SKILL.md +193 -0
  253. package/templates/skills/development/debug/fix-bug/SKILL.md +172 -0
  254. package/templates/skills/development/debug/frontend/SKILL.md +215 -0
  255. package/templates/skills/development/frontend/api-client/SKILL.md +158 -0
  256. package/templates/skills/development/frontend/api-client/cli/scaffold-api-client/__tests__/generate.test.ts +1180 -0
  257. package/templates/skills/development/frontend/api-client/cli/scaffold-api-client/__tests__/screen-strata-contract.test.ts +261 -0
  258. package/templates/skills/development/frontend/api-client/cli/scaffold-api-client/__tests__/url-parity.test.ts +201 -0
  259. package/templates/skills/development/frontend/api-client/cli/scaffold-api-client/generate.ts +875 -0
  260. package/templates/skills/development/frontend/api-client/cli/scaffold-api-client/index.ts +36 -0
  261. package/templates/skills/development/frontend/api-client/cli/scaffold-api-client/types.ts +251 -0
  262. package/templates/skills/development/frontend/api-client/cli/scaffold-api-client/validate.ts +10 -0
  263. package/templates/skills/development/frontend/auth/SKILL.md +77 -0
  264. package/templates/skills/development/frontend/auth/cli/scaffold-frontend-auth/generate.ts +306 -0
  265. package/templates/skills/development/frontend/auth/cli/scaffold-frontend-auth/index.ts +179 -0
  266. package/templates/skills/development/frontend/auth/cli/scaffold-frontend-auth/types.ts +22 -0
  267. package/templates/skills/development/frontend/auth/cli/scaffold-frontend-auth/validate.ts +37 -0
  268. package/templates/skills/development/frontend/component/SKILL.md +347 -0
  269. package/templates/skills/development/frontend/component/cli/scaffold-component/__tests__/generate.test.ts +1237 -0
  270. package/templates/skills/development/frontend/component/cli/scaffold-component/generate.ts +1923 -0
  271. package/templates/skills/development/frontend/component/cli/scaffold-component/index.ts +155 -0
  272. package/templates/skills/development/frontend/component/cli/scaffold-component/types.ts +290 -0
  273. package/templates/skills/development/frontend/component/cli/scaffold-component/validate.ts +16 -0
  274. package/templates/skills/development/frontend/component/cli/validate-page/__tests__/execute.test.ts +231 -0
  275. package/templates/skills/development/frontend/component/cli/validate-page/execute.ts +598 -0
  276. package/templates/skills/development/frontend/component/cli/validate-page/index.ts +88 -0
  277. package/templates/skills/development/frontend/component/cli/validate-page/types.ts +58 -0
  278. package/templates/skills/development/frontend/component/cli/validate-page/validate.ts +28 -0
  279. package/templates/skills/development/frontend/component/patterns/README.md +42 -0
  280. package/templates/skills/development/frontend/component/patterns/detail-page.md +133 -0
  281. package/templates/skills/development/frontend/component/patterns/entity-card.md +148 -0
  282. package/templates/skills/development/frontend/component/patterns/form-page.md +191 -0
  283. package/templates/skills/development/frontend/component/patterns/kanban-board.md +195 -0
  284. package/templates/skills/development/frontend/component/patterns/list-page.md +175 -0
  285. package/templates/skills/development/frontend/extension-config/SKILL.md +108 -0
  286. package/templates/skills/development/frontend/extension-config/cli/scaffold-extension-config/generate.ts +64 -0
  287. package/templates/skills/development/frontend/extension-config/cli/scaffold-extension-config/index.ts +70 -0
  288. package/templates/skills/development/frontend/extension-config/cli/scaffold-extension-config/types.ts +27 -0
  289. package/templates/skills/development/frontend/extension-config/cli/scaffold-extension-config/validate.ts +16 -0
  290. package/templates/skills/development/frontend/layout/SKILL.md +52 -0
  291. package/templates/skills/development/frontend/layout/cli/scaffold-layout/__tests__/generate.test.ts +66 -0
  292. package/templates/skills/development/frontend/layout/cli/scaffold-layout/generate.ts +175 -0
  293. package/templates/skills/development/frontend/layout/cli/scaffold-layout/index.ts +104 -0
  294. package/templates/skills/development/frontend/layout/cli/scaffold-layout/types.ts +17 -0
  295. package/templates/skills/development/frontend/layout/cli/scaffold-layout/validate.ts +37 -0
  296. package/templates/skills/development/frontend/routes/SKILL.md +152 -0
  297. package/templates/skills/development/frontend/routes/cli/aggregate-component-registry/generate.ts +216 -0
  298. package/templates/skills/development/frontend/routes/cli/aggregate-component-registry/index.ts +121 -0
  299. package/templates/skills/development/frontend/routes/cli/aggregate-component-registry/types.ts +69 -0
  300. package/templates/skills/development/frontend/routes/cli/aggregate-component-registry/validate.ts +23 -0
  301. package/templates/skills/development/frontend/routes/cli/scaffold-routes/__tests__/generate.test.ts +292 -0
  302. package/templates/skills/development/frontend/routes/cli/scaffold-routes/generate.ts +270 -0
  303. package/templates/skills/development/frontend/routes/cli/scaffold-routes/index.ts +42 -0
  304. package/templates/skills/development/frontend/routes/cli/scaffold-routes/types.ts +114 -0
  305. package/templates/skills/development/frontend/routes/cli/scaffold-routes/validate.ts +68 -0
  306. package/templates/skills/development/frontend/structure/SKILL.md +119 -0
  307. package/templates/skills/development/frontend/theme/SKILL.md +48 -0
  308. package/templates/skills/development/frontend/theme/cli/scaffold-theme/__tests__/generate.test.ts +53 -0
  309. package/templates/skills/development/frontend/theme/cli/scaffold-theme/generate.ts +129 -0
  310. package/templates/skills/development/frontend/theme/cli/scaffold-theme/index.ts +102 -0
  311. package/templates/skills/development/frontend/theme/cli/scaffold-theme/types.ts +48 -0
  312. package/templates/skills/development/frontend/theme/cli/scaffold-theme/validate.ts +37 -0
  313. package/templates/skills/development/frontend/ui-polish/SKILL.md +192 -0
  314. package/templates/skills/development/frontend/ui-polish/cli/ui-polish/__tests__/r18.test.ts +153 -0
  315. package/templates/skills/development/frontend/ui-polish/cli/ui-polish/__tests__/r19.test.ts +307 -0
  316. package/templates/skills/development/frontend/ui-polish/cli/ui-polish/__tests__/r20.test.ts +167 -0
  317. package/templates/skills/development/frontend/ui-polish/cli/ui-polish/__tests__/shared-scan.test.ts +262 -0
  318. package/templates/skills/development/frontend/ui-polish/cli/ui-polish/apply.ts +580 -0
  319. package/templates/skills/development/frontend/ui-polish/cli/ui-polish/audit.ts +825 -0
  320. package/templates/skills/development/frontend/ui-polish/cli/ui-polish/index.ts +133 -0
  321. package/templates/skills/development/frontend/ui-polish/cli/ui-polish/types.ts +121 -0
  322. package/templates/skills/development/frontend/ui-polish/cli/ui-polish/validate.ts +73 -0
  323. package/templates/skills/development/frontend/ui-polish/tokens.json +292 -0
  324. package/templates/skills/development/frontend/ui-primitives/SKILL.md +88 -0
  325. package/templates/skills/development/frontend/ui-primitives/cli/scaffold-ui-primitives/__tests__/generate.test.ts +158 -0
  326. package/templates/skills/development/frontend/ui-primitives/cli/scaffold-ui-primitives/generate.ts +345 -0
  327. package/templates/skills/development/frontend/ui-primitives/cli/scaffold-ui-primitives/index.ts +142 -0
  328. package/templates/skills/development/frontend/ui-primitives/cli/scaffold-ui-primitives/types.ts +27 -0
  329. package/templates/skills/development/frontend/ui-primitives/cli/scaffold-ui-primitives/validate.ts +37 -0
  330. package/templates/skills/development/run/SKILL.md +61 -0
  331. package/templates/skills/development/run/backend/SKILL.md +106 -0
  332. package/templates/skills/development/run/frontend/SKILL.md +116 -0
  333. package/templates/skills/development/smoke-test/SKILL.md +99 -0
  334. package/templates/skills/development/smoke-test/cli/run-smoke/execute.ts +424 -0
  335. package/templates/skills/development/smoke-test/cli/run-smoke/index.ts +75 -0
  336. package/templates/skills/development/smoke-test/cli/run-smoke/types.ts +100 -0
  337. package/templates/skills/development/testing/SKILL.md +148 -0
  338. package/templates/skills/development/testing/cli/scaffold-tests/generate.ts +530 -0
  339. package/templates/skills/development/testing/cli/scaffold-tests/index.ts +83 -0
  340. package/templates/skills/development/testing/cli/scaffold-tests/types.ts +51 -0
  341. package/templates/skills/development/testing/cli/scaffold-tests/validate.ts +33 -0
  342. package/templates/skills/development/testing/cli/scaffold-tests-from-ac/__tests__/generate.test.ts +188 -0
  343. package/templates/skills/development/testing/cli/scaffold-tests-from-ac/__tests__/parse-ac.test.ts +191 -0
  344. package/templates/skills/development/testing/cli/scaffold-tests-from-ac/generate.ts +190 -0
  345. package/templates/skills/development/testing/cli/scaffold-tests-from-ac/index.ts +138 -0
  346. package/templates/skills/development/testing/cli/scaffold-tests-from-ac/parse-ac.ts +172 -0
  347. package/templates/skills/development/testing/cli/scaffold-tests-from-ac/types.ts +104 -0
  348. package/templates/skills/development/testing/cli/scaffold-tests-from-ac/validate.ts +57 -0
  349. package/templates/skills/development/testing/cli/test-report/execute.ts +140 -0
  350. package/templates/skills/development/testing/cli/test-report/index.ts +96 -0
  351. package/templates/skills/development/testing/cli/test-report/types.ts +52 -0
  352. package/templates/skills/development/testing/cli/test-report/validate.ts +26 -0
  353. package/templates/skills/development/testing/fix-build/SKILL.md +81 -0
  354. package/templates/skills/development/testing/smoke-http/SKILL.md +123 -0
  355. package/templates/skills/development/testing/smoke-http/cli/smoke-http/execute.ts +129 -0
  356. package/templates/skills/development/testing/smoke-http/cli/smoke-http/index.ts +113 -0
  357. package/templates/skills/development/testing/smoke-http/cli/smoke-http/types.ts +62 -0
  358. package/templates/skills/development/testing/smoke-http/cli/smoke-http/validate.ts +36 -0
  359. package/templates/skills/development/testing/ui-test/SKILL.md +128 -0
  360. package/templates/skills/development/testing/ui-test/cli/build-manifest/generate.ts +129 -0
  361. package/templates/skills/development/testing/ui-test/cli/build-manifest/index.ts +80 -0
  362. package/templates/skills/development/testing/ui-test/cli/build-manifest/types.ts +72 -0
  363. package/templates/skills/development/testing/ui-test/cli/build-manifest/validate.ts +44 -0
  364. package/templates/skills/development/testing/ui-test/cli/run-ui-test/execute.ts +136 -0
  365. package/templates/skills/development/testing/ui-test/cli/run-ui-test/index.ts +75 -0
  366. package/templates/skills/development/testing/ui-test/cli/run-ui-test/lib/dev-browser-driver.ts +250 -0
  367. package/templates/skills/development/testing/ui-test/cli/run-ui-test/templates/delete.js.hbs +83 -0
  368. package/templates/skills/development/testing/ui-test/cli/run-ui-test/templates/detail.js.hbs +87 -0
  369. package/templates/skills/development/testing/ui-test/cli/run-ui-test/templates/edit.js.hbs +91 -0
  370. package/templates/skills/development/testing/ui-test/cli/run-ui-test/templates/form-submit.js.hbs +82 -0
  371. package/templates/skills/development/testing/ui-test/cli/run-ui-test/templates/list.js.hbs +125 -0
  372. package/templates/skills/development/testing/ui-test/cli/run-ui-test/templates/permission-negative.js.hbs +65 -0
  373. package/templates/skills/development/testing/ui-test/cli/run-ui-test/types.ts +57 -0
  374. package/templates/skills/development/testing/ui-test/cli/run-ui-test/validate.ts +56 -0
  375. package/templates/skills/documentation/SKILL.md +168 -139
  376. package/templates/skills/documentation/cli/extract-doc/__tests__/forbidden.test.ts +136 -0
  377. package/templates/skills/documentation/cli/extract-doc/__tests__/overflow.test.ts +76 -0
  378. package/templates/skills/documentation/cli/extract-doc/__tests__/required.test.ts +147 -0
  379. package/templates/skills/documentation/cli/extract-doc/extract.ts +657 -0
  380. package/templates/skills/documentation/cli/extract-doc/index.ts +102 -0
  381. package/templates/skills/documentation/cli/extract-doc/types.ts +133 -0
  382. package/templates/skills/documentation/cli/extract-doc/validate.ts +35 -0
  383. package/templates/skills/documentation/cli/scaffold-doc/generate.ts +198 -0
  384. package/templates/skills/documentation/cli/scaffold-doc/index.ts +61 -0
  385. package/templates/skills/documentation/cli/scaffold-doc/types.ts +72 -0
  386. package/templates/skills/documentation/cli/scaffold-doc/validate.ts +33 -0
  387. package/templates/skills/documentation/data-schema.md +18 -38
  388. package/templates/skills/documentation/steps/step-01-scan.md +59 -113
  389. package/templates/skills/documentation/steps/step-02-generate.md +158 -231
  390. package/templates/skills/documentation/steps/step-03-validate.md +101 -280
  391. package/templates/skills/documentation/templates.md +403 -92
  392. package/templates/skills/efcore/SKILL.md +88 -308
  393. package/templates/skills/efcore/_shared.md +140 -0
  394. package/templates/skills/efcore/agents/create.md +69 -0
  395. package/templates/skills/efcore/agents/db-update.md +58 -0
  396. package/templates/skills/efcore/agents/list.md +35 -0
  397. package/templates/skills/efcore/agents/rebase-snapshot.md +50 -0
  398. package/templates/skills/efcore/agents/recreate-db.md +78 -0
  399. package/templates/skills/efcore/agents/squash.md +78 -0
  400. package/templates/skills/efcore/agents/status.md +35 -0
  401. package/templates/skills/efcore/cli/create/execute.ts +164 -0
  402. package/templates/skills/efcore/cli/create/index.ts +51 -0
  403. package/templates/skills/efcore/cli/create/types.ts +35 -0
  404. package/templates/skills/efcore/cli/create/validate.ts +29 -0
  405. package/templates/skills/efcore/cli/lib/detect-dbcontexts.ts +195 -0
  406. package/templates/skills/efcore/cli/lib/ef-runner.ts +144 -0
  407. package/templates/skills/efcore/cli/lib/migration-name.ts +56 -0
  408. package/templates/skills/efcore/cli/lib/parse-csproj-version.ts +45 -0
  409. package/templates/skills/efcore/cli/list/execute.ts +83 -0
  410. package/templates/skills/efcore/cli/list/index.ts +60 -0
  411. package/templates/skills/efcore/cli/list/types.ts +46 -0
  412. package/templates/skills/efcore/cli/list/validate.ts +20 -0
  413. package/templates/skills/efcore/cli/rebase-snapshot/execute.ts +21 -0
  414. package/templates/skills/efcore/cli/rebase-snapshot/index.ts +53 -0
  415. package/templates/skills/efcore/cli/rebase-snapshot/types.ts +20 -0
  416. package/templates/skills/efcore/cli/rebase-snapshot/validate.ts +25 -0
  417. package/templates/skills/efcore/cli/squash/execute.ts +298 -0
  418. package/templates/skills/efcore/cli/squash/index.ts +57 -0
  419. package/templates/skills/efcore/cli/squash/types.ts +38 -0
  420. package/templates/skills/efcore/cli/squash/validate.ts +30 -0
  421. package/templates/skills/efcore/cli/status/execute.ts +152 -0
  422. package/templates/skills/efcore/cli/status/index.ts +45 -0
  423. package/templates/skills/efcore/cli/status/types.ts +32 -0
  424. package/templates/skills/efcore/cli/status/validate.ts +20 -0
  425. package/templates/skills/external/context7/SKILL.md +121 -0
  426. package/templates/skills/external/dev-browser/SKILL.md +134 -0
  427. package/templates/skills/gitflow/SKILL.md +139 -392
  428. package/templates/skills/gitflow/_shared.md +24 -620
  429. package/templates/skills/gitflow/agents/abort.md +47 -0
  430. package/templates/skills/gitflow/agents/cleanup.md +50 -0
  431. package/templates/skills/gitflow/agents/commit.md +41 -0
  432. package/templates/skills/gitflow/agents/finish.md +47 -0
  433. package/templates/skills/gitflow/agents/init.md +41 -0
  434. package/templates/skills/gitflow/agents/merge.md +44 -0
  435. package/templates/skills/gitflow/agents/pr.md +39 -0
  436. package/templates/skills/gitflow/agents/start.md +42 -0
  437. package/templates/skills/gitflow/agents/status.md +39 -0
  438. package/templates/skills/gitflow/agents/sync.md +38 -0
  439. package/templates/skills/gitflow/cli/abort/execute.ts +61 -0
  440. package/templates/skills/gitflow/cli/abort/index.ts +116 -0
  441. package/templates/skills/gitflow/cli/abort/types.ts +21 -0
  442. package/templates/skills/gitflow/cli/abort/validate.ts +38 -0
  443. package/templates/skills/gitflow/cli/cleanup/execute.ts +107 -0
  444. package/templates/skills/gitflow/cli/cleanup/index.ts +122 -0
  445. package/templates/skills/gitflow/cli/cleanup/types.ts +26 -0
  446. package/templates/skills/gitflow/cli/cleanup/validate.ts +33 -0
  447. package/templates/skills/gitflow/cli/commit/execute.ts +146 -0
  448. package/templates/skills/gitflow/cli/commit/index.ts +77 -0
  449. package/templates/skills/gitflow/cli/commit/types.ts +36 -0
  450. package/templates/skills/gitflow/cli/commit/validate.ts +38 -0
  451. package/templates/skills/gitflow/cli/finish/execute.ts +127 -0
  452. package/templates/skills/gitflow/cli/finish/index.ts +106 -0
  453. package/templates/skills/gitflow/cli/finish/types.ts +25 -0
  454. package/templates/skills/gitflow/cli/finish/validate.ts +44 -0
  455. package/templates/skills/gitflow/cli/generate-msg/execute.ts +51 -0
  456. package/templates/skills/gitflow/cli/generate-msg/index.ts +73 -0
  457. package/templates/skills/gitflow/cli/generate-msg/types.ts +37 -0
  458. package/templates/skills/gitflow/cli/generate-msg/validate.ts +42 -0
  459. package/templates/skills/gitflow/cli/init/execute.ts +186 -0
  460. package/templates/skills/gitflow/cli/init/index.ts +127 -0
  461. package/templates/skills/gitflow/cli/init/types.ts +63 -0
  462. package/templates/skills/gitflow/cli/init/validate.ts +56 -0
  463. package/templates/skills/gitflow/cli/lib/branch.ts +83 -0
  464. package/templates/skills/gitflow/cli/lib/config.ts +149 -0
  465. package/templates/skills/gitflow/cli/lib/efcore.ts +136 -0
  466. package/templates/skills/gitflow/cli/lib/git.ts +212 -0
  467. package/templates/skills/gitflow/cli/lib/output.ts +49 -0
  468. package/templates/skills/gitflow/cli/lib/paths.ts +54 -0
  469. package/templates/skills/gitflow/cli/lib/platform.ts +44 -0
  470. package/templates/skills/gitflow/cli/lib/provider.ts +147 -0
  471. package/templates/skills/gitflow/cli/lib/types.ts +189 -0
  472. package/templates/skills/gitflow/cli/lib/version.ts +152 -0
  473. package/templates/skills/gitflow/cli/lib/worktree.ts +170 -0
  474. package/templates/skills/gitflow/cli/merge/execute.ts +93 -0
  475. package/templates/skills/gitflow/cli/merge/index.ts +109 -0
  476. package/templates/skills/gitflow/cli/merge/types.ts +24 -0
  477. package/templates/skills/gitflow/cli/merge/validate.ts +33 -0
  478. package/templates/skills/gitflow/cli/pr/execute.ts +131 -0
  479. package/templates/skills/gitflow/cli/pr/index.ts +115 -0
  480. package/templates/skills/gitflow/cli/pr/types.ts +27 -0
  481. package/templates/skills/gitflow/cli/pr/validate.ts +27 -0
  482. package/templates/skills/gitflow/cli/start/execute.ts +98 -0
  483. package/templates/skills/gitflow/cli/start/index.ts +75 -0
  484. package/templates/skills/gitflow/cli/start/types.ts +26 -0
  485. package/templates/skills/gitflow/cli/start/validate.ts +47 -0
  486. package/templates/skills/gitflow/cli/status/execute.ts +251 -0
  487. package/templates/skills/gitflow/cli/status/index.ts +154 -0
  488. package/templates/skills/gitflow/cli/status/types.ts +75 -0
  489. package/templates/skills/gitflow/cli/status/validate.ts +38 -0
  490. package/templates/skills/gitflow/cli/sync/execute.ts +84 -0
  491. package/templates/skills/gitflow/cli/sync/index.ts +75 -0
  492. package/templates/skills/gitflow/cli/sync/types.ts +25 -0
  493. package/templates/skills/gitflow/cli/sync/validate.ts +34 -0
  494. package/templates/skills/gitflow/commit-message.md +46 -0
  495. package/templates/skills/init/SKILL.md +54 -0
  496. package/templates/skills/lib/__tests__/canonical-hash.test.ts +45 -0
  497. package/templates/skills/lib/__tests__/page-spec-actions.test.ts +232 -0
  498. package/templates/skills/lib/canonical-hash.ts +40 -0
  499. package/templates/skills/lib/detector.ts +243 -0
  500. package/templates/skills/lib/dotnet.ts +238 -0
  501. package/templates/skills/lib/frontend-fixers.ts +151 -0
  502. package/templates/skills/lib/fs.ts +238 -0
  503. package/templates/skills/lib/git.ts +134 -0
  504. package/templates/skills/lib/graph.ts +138 -0
  505. package/templates/skills/lib/navroute-parser.ts +51 -0
  506. package/templates/skills/lib/output.ts +117 -0
  507. package/templates/skills/lib/page-spec-actions.ts +350 -0
  508. package/templates/skills/lib/skill-slug.ts +121 -0
  509. package/templates/skills/lib/string-utils.ts +140 -0
  510. package/templates/skills/lib/template-loader.ts +115 -0
  511. package/templates/skills/lib/url-conventions.ts +151 -0
  512. package/templates/skills/package.json +5 -0
  513. package/templates/skills/quick-search/SKILL.md +99 -99
  514. package/templates/skills/review/SKILL.md +56 -0
  515. package/templates/skills/smoke-generation/SKILL.md +18 -16
  516. package/templates/skills/ui-components/SKILL.md +136 -457
  517. package/templates/skills/upgrade/SKILL.md +36 -0
  518. package/templates/skills/utils/SKILL.md +45 -44
  519. package/templates/skills/utils/subcommands/test-web-config.md +152 -152
  520. package/templates/skills/utils/subcommands/test-web.md +123 -123
  521. package/templates/skills/validate-feature/SKILL.md +102 -101
  522. package/templates/skills/validate-feature/references/api-smoke-tests.md +140 -140
  523. package/templates/skills/validate-feature/references/db-validation-checks.md +180 -180
  524. package/templates/skills/validate-feature/steps/step-00-dependencies.md +121 -121
  525. package/templates/skills/validate-feature/steps/step-01-compile.md +39 -39
  526. package/templates/skills/validate-feature/steps/step-02-unit-tests.md +45 -45
  527. package/templates/skills/validate-feature/steps/step-03-integration-tests.md +53 -53
  528. package/templates/skills/validate-feature/steps/step-04-api-smoke.md +94 -94
  529. package/templates/skills/validate-feature/steps/step-05-db-validation.md +149 -149
  530. package/templates/skills/validation/conventions/SKILL.md +193 -0
  531. package/templates/skills/validation/conventions/cli/validate-conventions/execute.ts +368 -0
  532. package/templates/skills/validation/conventions/cli/validate-conventions/index.ts +67 -0
  533. package/templates/skills/validation/conventions/cli/validate-conventions/types.ts +91 -0
  534. package/templates/skills/validation/conventions/cli/validate-conventions/validate.ts +36 -0
  535. package/templates/skills/validation/cross-validate/SKILL.md +83 -0
  536. package/templates/skills/validation/cross-validate/cli/execute.ts +576 -0
  537. package/templates/skills/validation/cross-validate/cli/index.ts +87 -0
  538. package/templates/skills/validation/cross-validate/cli/types.ts +85 -0
  539. package/templates/skills/validation/cross-validate/cli/validate.ts +54 -0
  540. package/templates/skills/validation/eslint/SKILL.md +65 -0
  541. package/templates/skills/validation/eslint/cli/execute.ts +413 -0
  542. package/templates/skills/validation/eslint/cli/index.ts +102 -0
  543. package/templates/skills/validation/eslint/cli/types.ts +48 -0
  544. package/templates/skills/validation/eslint/cli/validate.ts +43 -0
  545. package/templates/skills/validation/project-inventory/SKILL.md +166 -0
  546. package/templates/skills/validation/project-inventory/cli/project-inventory/execute.ts +397 -0
  547. package/templates/skills/validation/project-inventory/cli/project-inventory/index.ts +80 -0
  548. package/templates/skills/validation/project-inventory/cli/project-inventory/types.ts +89 -0
  549. package/templates/skills/validation/project-inventory/cli/project-inventory/validate.ts +35 -0
  550. package/templates/skills/validation/readiness-report/SKILL.md +109 -0
  551. package/templates/skills/validation/readiness-report/cli/execute.ts +236 -0
  552. package/templates/skills/validation/readiness-report/cli/index.ts +234 -0
  553. package/templates/skills/validation/readiness-report/cli/types.ts +61 -0
  554. package/templates/skills/validation/readiness-report/cli/validate.ts +54 -0
  555. package/templates/skills/validation/roslyn/SKILL.md +103 -0
  556. package/templates/skills/validation/roslyn/cli/execute.ts +616 -0
  557. package/templates/skills/validation/roslyn/cli/index.ts +86 -0
  558. package/templates/skills/validation/roslyn/cli/types.ts +50 -0
  559. package/templates/skills/validation/roslyn/cli/validate.ts +43 -0
  560. package/.documentation/apex.html +0 -649
  561. package/dist/mcp-entry.mjs +0 -68888
  562. package/dist/mcp-entry.mjs.map +0 -1
  563. package/scripts/extract-api-endpoints.ts +0 -325
  564. package/scripts/extract-business-rules.ts +0 -440
  565. package/scripts/generate-doc-with-mock-ui.ts +0 -804
  566. package/templates/agents/ba-reader.md +0 -386
  567. package/templates/agents/ba-writer.md +0 -810
  568. package/templates/agents/efcore/migration.md +0 -204
  569. package/templates/agents/efcore/rebase-snapshot.md +0 -202
  570. package/templates/agents/efcore/squash.md +0 -269
  571. package/templates/agents/gitflow/abort.md +0 -45
  572. package/templates/agents/gitflow/cleanup.md +0 -107
  573. package/templates/agents/gitflow/commit.md +0 -236
  574. package/templates/agents/gitflow/exec.md +0 -48
  575. package/templates/agents/gitflow/finish.md +0 -146
  576. package/templates/agents/gitflow/init-clone.md +0 -199
  577. package/templates/agents/gitflow/init-detect.md +0 -137
  578. package/templates/agents/gitflow/init-validate.md +0 -225
  579. package/templates/agents/gitflow/init.md +0 -509
  580. package/templates/agents/gitflow/merge.md +0 -145
  581. package/templates/agents/gitflow/plan.md +0 -42
  582. package/templates/agents/gitflow/pr.md +0 -191
  583. package/templates/agents/gitflow/review.md +0 -49
  584. package/templates/agents/gitflow/start.md +0 -147
  585. package/templates/agents/gitflow/status.md +0 -95
  586. package/templates/agents/mcp-healthcheck.md +0 -163
  587. package/templates/hooks/docs-drift-check.md +0 -96
  588. package/templates/hooks/ef-migration-check.md +0 -139
  589. package/templates/hooks/mcp-check.md +0 -64
  590. package/templates/hooks/ralph-mcp-logger.sh +0 -46
  591. package/templates/mcp-scaffolding/component.tsx.hbs +0 -318
  592. package/templates/mcp-scaffolding/controller.cs.hbs +0 -118
  593. package/templates/mcp-scaffolding/entity-extension.cs.hbs +0 -239
  594. package/templates/mcp-scaffolding/frontend/api-client.ts.hbs +0 -117
  595. package/templates/mcp-scaffolding/frontend/nav-routes.ts.hbs +0 -133
  596. package/templates/mcp-scaffolding/migrations/seed-roles.cs.hbs +0 -261
  597. package/templates/mcp-scaffolding/service-extension.cs.hbs +0 -53
  598. package/templates/mcp-scaffolding/tests/controller.test.cs.hbs +0 -436
  599. package/templates/mcp-scaffolding/tests/entity.test.cs.hbs +0 -239
  600. package/templates/mcp-scaffolding/tests/repository.test.cs.hbs +0 -441
  601. package/templates/mcp-scaffolding/tests/security.test.cs.hbs +0 -442
  602. package/templates/mcp-scaffolding/tests/service.test.cs.hbs +0 -402
  603. package/templates/mcp-scaffolding/tests/validator.test.cs.hbs +0 -428
  604. package/templates/skills/_resources/config-safety.md +0 -61
  605. package/templates/skills/_resources/context-digest-template.md +0 -53
  606. package/templates/skills/_resources/doc-context-cache.md +0 -60
  607. package/templates/skills/_resources/docs-manifest-schema.md +0 -155
  608. package/templates/skills/_resources/formatting-guide.md +0 -124
  609. package/templates/skills/_resources/mcp-validate-documentation-spec.md +0 -181
  610. package/templates/skills/_shared.md +0 -228
  611. package/templates/skills/admin/SKILL.md +0 -48
  612. package/templates/skills/ai-prompt/SKILL.md +0 -171
  613. package/templates/skills/ai-prompt/references/ai-agent-modes.md +0 -89
  614. package/templates/skills/ai-prompt/references/eval-framework.md +0 -129
  615. package/templates/skills/ai-prompt/steps/step-00-init.md +0 -47
  616. package/templates/skills/ai-prompt/steps/step-01-implementation.md +0 -122
  617. package/templates/skills/apex/SKILL.md +0 -234
  618. package/templates/skills/apex/_shared.md +0 -197
  619. package/templates/skills/apex/references/analysis-methods.md +0 -178
  620. package/templates/skills/apex/references/challenge-questions.md +0 -359
  621. package/templates/skills/apex/references/checks/architecture-checks.sh +0 -154
  622. package/templates/skills/apex/references/checks/backend-checks.sh +0 -208
  623. package/templates/skills/apex/references/checks/frontend-checks.sh +0 -560
  624. package/templates/skills/apex/references/checks/infrastructure-checks.sh +0 -292
  625. package/templates/skills/apex/references/checks/security-checks.sh +0 -153
  626. package/templates/skills/apex/references/checks/seed-checks.sh +0 -610
  627. package/templates/skills/apex/references/code-generation.md +0 -412
  628. package/templates/skills/apex/references/core-seed-data.md +0 -1502
  629. package/templates/skills/apex/references/domain-events-pattern.md +0 -45
  630. package/templates/skills/apex/references/entity-hooks-pattern.md +0 -68
  631. package/templates/skills/apex/references/error-classification.md +0 -168
  632. package/templates/skills/apex/references/frontend-route-wiring-app-tsx.md +0 -91
  633. package/templates/skills/apex/references/licensing-enforcement.md +0 -52
  634. package/templates/skills/apex/references/parallel-execution.md +0 -187
  635. package/templates/skills/apex/references/person-extension-pattern.md +0 -619
  636. package/templates/skills/apex/references/post-checks.md +0 -162
  637. package/templates/skills/apex/references/smartstack-api.md +0 -591
  638. package/templates/skills/apex/references/smartstack-frontend-compliance.md +0 -616
  639. package/templates/skills/apex/references/smartstack-frontend.md +0 -442
  640. package/templates/skills/apex/references/smartstack-layers.md +0 -551
  641. package/templates/skills/apex/steps/step-00-init.md +0 -405
  642. package/templates/skills/apex/steps/step-01-analyze.md +0 -210
  643. package/templates/skills/apex/steps/step-02-plan.md +0 -303
  644. package/templates/skills/apex/steps/step-03-execute.md +0 -194
  645. package/templates/skills/apex/steps/step-03a-layer0-domain.md +0 -144
  646. package/templates/skills/apex/steps/step-03b-layer1-seed.md +0 -339
  647. package/templates/skills/apex/steps/step-03c-layer2-backend.md +0 -401
  648. package/templates/skills/apex/steps/step-03d-layer3-frontend.md +0 -562
  649. package/templates/skills/apex/steps/step-03e-layer4-devdata.md +0 -46
  650. package/templates/skills/apex/steps/step-04-examine.md +0 -404
  651. package/templates/skills/apex/steps/step-05-deep-review.md +0 -140
  652. package/templates/skills/apex/steps/step-06-resolve.md +0 -120
  653. package/templates/skills/apex/steps/step-07-tests.md +0 -271
  654. package/templates/skills/apex/steps/step-08-run-tests.md +0 -135
  655. package/templates/skills/apex-verify/SKILL.md +0 -110
  656. package/templates/skills/apex-verify/references/audit-rules.md +0 -50
  657. package/templates/skills/apex-verify/steps/step-00-init.md +0 -119
  658. package/templates/skills/apex-verify/steps/step-01-nav-audit.md +0 -96
  659. package/templates/skills/apex-verify/steps/step-02-crud-audit.md +0 -127
  660. package/templates/skills/apex-verify/steps/step-03-perm-audit.md +0 -119
  661. package/templates/skills/apex-verify/steps/step-04-route-audit.md +0 -98
  662. package/templates/skills/apex-verify/steps/step-05-report.md +0 -110
  663. package/templates/skills/application/SKILL.md +0 -241
  664. package/templates/skills/application/references/application-roles-template.md +0 -228
  665. package/templates/skills/application/references/backend-controller-hierarchy.md +0 -68
  666. package/templates/skills/application/references/backend-entity-seeding.md +0 -73
  667. package/templates/skills/application/references/backend-seeding-and-dto-output.md +0 -83
  668. package/templates/skills/application/references/backend-table-prefix-mapping.md +0 -80
  669. package/templates/skills/application/references/backend-verification.md +0 -88
  670. package/templates/skills/application/references/contexts-cheatsheet.md +0 -86
  671. package/templates/skills/application/references/extensions-system.md +0 -158
  672. package/templates/skills/application/references/frontend-i18n-and-output.md +0 -67
  673. package/templates/skills/application/references/frontend-route-naming.md +0 -123
  674. package/templates/skills/application/references/frontend-route-wiring-app-tsx.md +0 -91
  675. package/templates/skills/application/references/frontend-verification.md +0 -158
  676. package/templates/skills/application/references/init-parameter-detection.md +0 -121
  677. package/templates/skills/application/references/migration-checklist-troubleshooting.md +0 -88
  678. package/templates/skills/application/references/nav-fallback-procedure.md +0 -198
  679. package/templates/skills/application/references/provider-template.md +0 -191
  680. package/templates/skills/application/references/roles-client-project-handling.md +0 -55
  681. package/templates/skills/application/references/roles-fallback-procedure.md +0 -144
  682. package/templates/skills/application/references/smartstack-provider.md +0 -118
  683. package/templates/skills/application/references/test-coverage-requirements.md +0 -213
  684. package/templates/skills/application/references/test-frontend.md +0 -73
  685. package/templates/skills/application/references/test-prerequisites.md +0 -72
  686. package/templates/skills/application/references/themes-db-driven.md +0 -484
  687. package/templates/skills/application/steps/step-00-init.md +0 -130
  688. package/templates/skills/application/steps/step-01-navigation.md +0 -170
  689. package/templates/skills/application/steps/step-02-permissions.md +0 -196
  690. package/templates/skills/application/steps/step-03-roles.md +0 -182
  691. package/templates/skills/application/steps/step-03b-provider.md +0 -134
  692. package/templates/skills/application/steps/step-04-backend.md +0 -174
  693. package/templates/skills/application/steps/step-05-frontend.md +0 -189
  694. package/templates/skills/application/steps/step-06-migration.md +0 -189
  695. package/templates/skills/application/steps/step-07-tests.md +0 -356
  696. package/templates/skills/application/steps/step-08-documentation.md +0 -137
  697. package/templates/skills/application/templates-backend.md +0 -463
  698. package/templates/skills/application/templates-frontend.md +0 -950
  699. package/templates/skills/application/templates-i18n.md +0 -520
  700. package/templates/skills/application/templates-seed.md +0 -1110
  701. package/templates/skills/audit-route/SKILL.md +0 -107
  702. package/templates/skills/audit-route/references/routing-pattern.md +0 -131
  703. package/templates/skills/audit-route/steps/step-00-init.md +0 -128
  704. package/templates/skills/audit-route/steps/step-01-inventory.md +0 -157
  705. package/templates/skills/audit-route/steps/step-02-conformity.md +0 -193
  706. package/templates/skills/audit-route/steps/step-03-report.md +0 -201
  707. package/templates/skills/business-analyse/SKILL.md +0 -252
  708. package/templates/skills/business-analyse/_shared.md +0 -276
  709. package/templates/skills/business-analyse/patterns/suggestion-catalog.md +0 -560
  710. package/templates/skills/business-analyse/questionnaire/01-context.md +0 -43
  711. package/templates/skills/business-analyse/questionnaire/02-stakeholders-scope.md +0 -111
  712. package/templates/skills/business-analyse/questionnaire/03-data-ui.md +0 -125
  713. package/templates/skills/business-analyse/questionnaire/04-risks-metrics.md +0 -6
  714. package/templates/skills/business-analyse/questionnaire/05-cross-module.md +0 -69
  715. package/templates/skills/business-analyse/questionnaire.md +0 -156
  716. package/templates/skills/business-analyse/react/application-viewer.md +0 -242
  717. package/templates/skills/business-analyse/react/components.md +0 -532
  718. package/templates/skills/business-analyse/react/i18n-template.md +0 -306
  719. package/templates/skills/business-analyse/react/schema.md +0 -831
  720. package/templates/skills/business-analyse/references/03-json-schemas.md +0 -221
  721. package/templates/skills/business-analyse/references/03-post-check-validation.md +0 -208
  722. package/templates/skills/business-analyse/references/03-smartstack-entity-guards.md +0 -32
  723. package/templates/skills/business-analyse/references/04-cross-module-validation.md +0 -95
  724. package/templates/skills/business-analyse/references/04-file-allocation.md +0 -162
  725. package/templates/skills/business-analyse/references/04-naming-audit-checks.md +0 -174
  726. package/templates/skills/business-analyse/references/04-semantic-validation-matrix.md +0 -118
  727. package/templates/skills/business-analyse/references/acceptance-criteria.md +0 -164
  728. package/templates/skills/business-analyse/references/analysis-semantic-checks.md +0 -190
  729. package/templates/skills/business-analyse/references/canonical-json-formats.md +0 -204
  730. package/templates/skills/business-analyse/references/compilation-structure-cards.md +0 -297
  731. package/templates/skills/business-analyse/references/consolidation-structural-checks.md +0 -124
  732. package/templates/skills/business-analyse/references/detection-strategies.md +0 -424
  733. package/templates/skills/business-analyse/references/domain-research-playbook.md +0 -234
  734. package/templates/skills/business-analyse/references/entity-architecture-decision.md +0 -240
  735. package/templates/skills/business-analyse/references/entity-sourcing-presentation.md +0 -166
  736. package/templates/skills/business-analyse/references/init-resume-logic.md +0 -70
  737. package/templates/skills/business-analyse/references/init-schema-deployment.md +0 -65
  738. package/templates/skills/business-analyse/references/module-completeness-challenge.md +0 -174
  739. package/templates/skills/business-analyse/references/multi-app-detection.md +0 -149
  740. package/templates/skills/business-analyse/references/naming-conventions.md +0 -253
  741. package/templates/skills/business-analyse/references/portal-classification.md +0 -52
  742. package/templates/skills/business-analyse/references/robustness-checks.md +0 -426
  743. package/templates/skills/business-analyse/references/ui-dashboard-spec.md +0 -85
  744. package/templates/skills/business-analyse/references/ui-resource-cards.md +0 -259
  745. package/templates/skills/business-analyse/references/validation-checklist.md +0 -378
  746. package/templates/skills/business-analyse/schemas/application-schema.json +0 -481
  747. package/templates/skills/business-analyse/schemas/feature-schema.json +0 -53
  748. package/templates/skills/business-analyse/schemas/index-schema.json +0 -47
  749. package/templates/skills/business-analyse/schemas/project-schema.json +0 -481
  750. package/templates/skills/business-analyse/schemas/sections/analysis-schema.json +0 -245
  751. package/templates/skills/business-analyse/schemas/sections/discovery-schema.json +0 -80
  752. package/templates/skills/business-analyse/schemas/sections/handoff-schema.json +0 -82
  753. package/templates/skills/business-analyse/schemas/sections/metadata-schema.json +0 -70
  754. package/templates/skills/business-analyse/schemas/sections/specification-schema.json +0 -567
  755. package/templates/skills/business-analyse/schemas/sections/validation-schema.json +0 -93
  756. package/templates/skills/business-analyse/schemas/shared/common-defs.json +0 -227
  757. package/templates/skills/business-analyse/steps/step-00-init.md +0 -463
  758. package/templates/skills/business-analyse/steps/step-01-cadrage.md +0 -901
  759. package/templates/skills/business-analyse/steps/step-02-structure.md +0 -315
  760. package/templates/skills/business-analyse/steps/step-03-specify.md +0 -986
  761. package/templates/skills/business-analyse/steps/step-04-consolidate.md +0 -928
  762. package/templates/skills/business-analyse/templates/tpl-frd.md +0 -168
  763. package/templates/skills/business-analyse/templates/tpl-handoff.md +0 -189
  764. package/templates/skills/business-analyse/templates/tpl-launch-displays.md +0 -59
  765. package/templates/skills/business-analyse/templates-frd.md +0 -476
  766. package/templates/skills/business-analyse/templates-react.md +0 -574
  767. package/templates/skills/business-analyse-design/SKILL.md +0 -101
  768. package/templates/skills/business-analyse-design/references/screens-post-check.md +0 -221
  769. package/templates/skills/business-analyse-design/references/screens-type-mapping.md +0 -138
  770. package/templates/skills/business-analyse-design/references/smartcomponents-templates.md +0 -225
  771. package/templates/skills/business-analyse-design/references/spec-auto-inference.md +0 -117
  772. package/templates/skills/business-analyse-design/steps/step-01-screens.md +0 -108
  773. package/templates/skills/business-analyse-design/steps/step-02-wireframes.md +0 -155
  774. package/templates/skills/business-analyse-design/steps/step-03-navigation.md +0 -189
  775. package/templates/skills/business-analyse-develop/SKILL.md +0 -250
  776. package/templates/skills/business-analyse-develop/references/category-completeness.md +0 -326
  777. package/templates/skills/business-analyse-develop/references/category-rules.md +0 -109
  778. package/templates/skills/business-analyse-develop/references/compact-loop.md +0 -478
  779. package/templates/skills/business-analyse-develop/references/handoff-quality-gate.md +0 -132
  780. package/templates/skills/business-analyse-develop/references/init-resume-recovery.md +0 -183
  781. package/templates/skills/business-analyse-develop/references/module-transition.md +0 -246
  782. package/templates/skills/business-analyse-develop/references/multi-module-queue.md +0 -171
  783. package/templates/skills/business-analyse-develop/references/parallel-execution.md +0 -246
  784. package/templates/skills/business-analyse-develop/references/prd-v3-transformation.md +0 -326
  785. package/templates/skills/business-analyse-develop/references/quality-gates.md +0 -160
  786. package/templates/skills/business-analyse-develop/references/report-reconciliation.md +0 -140
  787. package/templates/skills/business-analyse-develop/references/report-template.md +0 -142
  788. package/templates/skills/business-analyse-develop/references/section-splitting.md +0 -439
  789. package/templates/skills/business-analyse-develop/references/task-transform-legacy.md +0 -256
  790. package/templates/skills/business-analyse-develop/references/team-orchestration.md +0 -547
  791. package/templates/skills/business-analyse-develop/steps/step-00-init.md +0 -242
  792. package/templates/skills/business-analyse-develop/steps/step-01-task.md +0 -182
  793. package/templates/skills/business-analyse-develop/steps/step-01-v4-execute.md +0 -139
  794. package/templates/skills/business-analyse-develop/steps/step-02-execute.md +0 -216
  795. package/templates/skills/business-analyse-develop/steps/step-02-v4-verify.md +0 -176
  796. package/templates/skills/business-analyse-develop/steps/step-03-commit.md +0 -107
  797. package/templates/skills/business-analyse-develop/steps/step-04-check.md +0 -419
  798. package/templates/skills/business-analyse-develop/steps/step-05-report.md +0 -137
  799. package/templates/skills/business-analyse-handoff/SKILL.md +0 -101
  800. package/templates/skills/business-analyse-handoff/references/acceptance-criteria.md +0 -318
  801. package/templates/skills/business-analyse-handoff/references/agent-handoff-transform-prompt.md +0 -211
  802. package/templates/skills/business-analyse-handoff/references/context-isolation-pattern.md +0 -47
  803. package/templates/skills/business-analyse-handoff/references/entity-canonicalization.md +0 -158
  804. package/templates/skills/business-analyse-handoff/references/entity-domain-mapping.md +0 -115
  805. package/templates/skills/business-analyse-handoff/references/handoff-file-inventory.md +0 -49
  806. package/templates/skills/business-analyse-handoff/references/handoff-file-templates.md +0 -197
  807. package/templates/skills/business-analyse-handoff/references/handoff-global-validation.md +0 -142
  808. package/templates/skills/business-analyse-handoff/references/handoff-mappings.md +0 -108
  809. package/templates/skills/business-analyse-handoff/references/handoff-seeddata-generation.md +0 -314
  810. package/templates/skills/business-analyse-handoff/references/prd-generation.md +0 -362
  811. package/templates/skills/business-analyse-handoff/references/prd-validation-checks.md +0 -125
  812. package/templates/skills/business-analyse-handoff/references/project-index-update.md +0 -98
  813. package/templates/skills/business-analyse-handoff/references/readiness-scoring.md +0 -95
  814. package/templates/skills/business-analyse-handoff/schemas/handoff-schema.json +0 -95
  815. package/templates/skills/business-analyse-handoff/steps/step-00-validate.md +0 -158
  816. package/templates/skills/business-analyse-handoff/steps/step-01-transform.md +0 -85
  817. package/templates/skills/business-analyse-handoff/steps/step-02-export.md +0 -169
  818. package/templates/skills/business-analyse-handoff/templates/tpl-progress.md +0 -172
  819. package/templates/skills/business-analyse-html/SKILL.md +0 -89
  820. package/templates/skills/business-analyse-html/html/ba-interactive.html +0 -6134
  821. package/templates/skills/business-analyse-html/html/build-html.js +0 -137
  822. package/templates/skills/business-analyse-html/html/src/partials/cadrage-context.html +0 -34
  823. package/templates/skills/business-analyse-html/html/src/partials/cadrage-scope.html +0 -27
  824. package/templates/skills/business-analyse-html/html/src/partials/cadrage-stakeholders.html +0 -55
  825. package/templates/skills/business-analyse-html/html/src/partials/cadrage-success.html +0 -34
  826. package/templates/skills/business-analyse-html/html/src/partials/consol-datamodel.html +0 -8
  827. package/templates/skills/business-analyse-html/html/src/partials/consol-flows.html +0 -29
  828. package/templates/skills/business-analyse-html/html/src/partials/consol-interactions.html +0 -8
  829. package/templates/skills/business-analyse-html/html/src/partials/consol-permissions.html +0 -8
  830. package/templates/skills/business-analyse-html/html/src/partials/decomp-dependencies.html +0 -38
  831. package/templates/skills/business-analyse-html/html/src/partials/decomp-modules.html +0 -43
  832. package/templates/skills/business-analyse-html/html/src/partials/handoff-summary.html +0 -24
  833. package/templates/skills/business-analyse-html/html/src/partials/module-spec-container.html +0 -4
  834. package/templates/skills/business-analyse-html/html/src/scripts/01-data-init.js +0 -313
  835. package/templates/skills/business-analyse-html/html/src/scripts/02-navigation.js +0 -316
  836. package/templates/skills/business-analyse-html/html/src/scripts/03-render-cadrage.js +0 -162
  837. package/templates/skills/business-analyse-html/html/src/scripts/04-render-modules.js +0 -203
  838. package/templates/skills/business-analyse-html/html/src/scripts/05-render-specs.js +0 -866
  839. package/templates/skills/business-analyse-html/html/src/scripts/06-render-consolidation.js +0 -196
  840. package/templates/skills/business-analyse-html/html/src/scripts/06-render-mockups.js +0 -564
  841. package/templates/skills/business-analyse-html/html/src/scripts/07-render-handoff.js +0 -108
  842. package/templates/skills/business-analyse-html/html/src/scripts/08-editing.js +0 -137
  843. package/templates/skills/business-analyse-html/html/src/scripts/09-export.js +0 -138
  844. package/templates/skills/business-analyse-html/html/src/scripts/10-comments.js +0 -221
  845. package/templates/skills/business-analyse-html/html/src/scripts/11-review-panel.js +0 -167
  846. package/templates/skills/business-analyse-html/html/src/scripts/12-render-diagrams.js +0 -162
  847. package/templates/skills/business-analyse-html/html/src/styles/01-variables.css +0 -38
  848. package/templates/skills/business-analyse-html/html/src/styles/02-layout.css +0 -216
  849. package/templates/skills/business-analyse-html/html/src/styles/03-navigation.css +0 -120
  850. package/templates/skills/business-analyse-html/html/src/styles/04-cards.css +0 -194
  851. package/templates/skills/business-analyse-html/html/src/styles/05-modules.css +0 -518
  852. package/templates/skills/business-analyse-html/html/src/styles/06-wireframes.css +0 -263
  853. package/templates/skills/business-analyse-html/html/src/styles/07-comments.css +0 -184
  854. package/templates/skills/business-analyse-html/html/src/styles/08-review-panel.css +0 -241
  855. package/templates/skills/business-analyse-html/html/src/styles/09-mockups-html.css +0 -220
  856. package/templates/skills/business-analyse-html/html/src/styles/10-diagrams.css +0 -73
  857. package/templates/skills/business-analyse-html/html/src/template.html +0 -449
  858. package/templates/skills/business-analyse-html/references/02-embedded-artifacts-building.md +0 -144
  859. package/templates/skills/business-analyse-html/references/02-feature-data-building.md +0 -143
  860. package/templates/skills/business-analyse-html/references/02-mapping-tables.md +0 -442
  861. package/templates/skills/business-analyse-html/references/02-normalization-helpers.md +0 -139
  862. package/templates/skills/business-analyse-html/references/02-screen-format-detection.md +0 -283
  863. package/templates/skills/business-analyse-html/references/02-self-check-validation.md +0 -199
  864. package/templates/skills/business-analyse-html/references/data-build.md +0 -215
  865. package/templates/skills/business-analyse-html/references/data-mapping.md +0 -452
  866. package/templates/skills/business-analyse-html/references/output-modes.md +0 -119
  867. package/templates/skills/business-analyse-html/references/wireframe-svg-style-guide.md +0 -335
  868. package/templates/skills/business-analyse-html/steps/step-01-collect.md +0 -140
  869. package/templates/skills/business-analyse-html/steps/step-02-build-data.md +0 -76
  870. package/templates/skills/business-analyse-html/steps/step-03-render.md +0 -95
  871. package/templates/skills/business-analyse-html/steps/step-04-verify.md +0 -224
  872. package/templates/skills/business-analyse-quick/SKILL.md +0 -807
  873. package/templates/skills/business-analyse-quick/references/domain-heuristics.md +0 -172
  874. package/templates/skills/business-analyse-quick/references/prd-schema.md +0 -268
  875. package/templates/skills/business-analyse-review/SKILL.md +0 -71
  876. package/templates/skills/business-analyse-review/references/review-data-mapping.md +0 -367
  877. package/templates/skills/business-analyse-review/steps/step-00-init.md +0 -111
  878. package/templates/skills/business-analyse-review/steps/step-01-apply.md +0 -304
  879. package/templates/skills/business-analyse-status/SKILL.md +0 -136
  880. package/templates/skills/cc-agent/SKILL.md +0 -129
  881. package/templates/skills/cc-agent/references/agent-behavior-patterns.md +0 -95
  882. package/templates/skills/cc-agent/references/agent-frontmatter.md +0 -213
  883. package/templates/skills/cc-agent/references/permission-modes.md +0 -102
  884. package/templates/skills/cc-agent/references/tools-reference.md +0 -144
  885. package/templates/skills/cc-agent/steps/step-00-init.md +0 -134
  886. package/templates/skills/cc-agent/steps/step-01-design.md +0 -186
  887. package/templates/skills/cc-agent/steps/step-02-generate.md +0 -131
  888. package/templates/skills/cc-agent/steps/step-03-validate.md +0 -130
  889. package/templates/skills/cc-agent/templates/agent-categorized.md +0 -67
  890. package/templates/skills/cc-agent/templates/agent-standalone.md +0 -56
  891. package/templates/skills/cc-agent/templates/agent-with-skills.md +0 -94
  892. package/templates/skills/cc-audit/SKILL.md +0 -108
  893. package/templates/skills/cc-audit/references/agent-checklist.md +0 -91
  894. package/templates/skills/cc-audit/references/hook-checklist.md +0 -110
  895. package/templates/skills/cc-audit/references/skill-checklist.md +0 -70
  896. package/templates/skills/cc-audit/steps/step-00-init.md +0 -98
  897. package/templates/skills/cc-audit/steps/step-01-scan.md +0 -142
  898. package/templates/skills/cc-audit/steps/step-02-analyze.md +0 -158
  899. package/templates/skills/cc-audit/steps/step-03-report.md +0 -142
  900. package/templates/skills/cc-skill/SKILL.md +0 -134
  901. package/templates/skills/cc-skill/references/best-practices.md +0 -167
  902. package/templates/skills/cc-skill/references/frontmatter-reference.md +0 -182
  903. package/templates/skills/cc-skill/references/skill-patterns.md +0 -199
  904. package/templates/skills/cc-skill/steps/step-00-init.md +0 -119
  905. package/templates/skills/cc-skill/steps/step-01-design.md +0 -199
  906. package/templates/skills/cc-skill/steps/step-02-generate.md +0 -145
  907. package/templates/skills/cc-skill/steps/step-03-steps.md +0 -151
  908. package/templates/skills/cc-skill/steps/step-04-validate.md +0 -124
  909. package/templates/skills/cc-skill/templates/skill-forked.md +0 -85
  910. package/templates/skills/cc-skill/templates/skill-progressive.md +0 -102
  911. package/templates/skills/cc-skill/templates/skill-simple.md +0 -75
  912. package/templates/skills/cc-skill/templates/step-template.md +0 -82
  913. package/templates/skills/controller/SKILL.md +0 -162
  914. package/templates/skills/controller/postman-templates.md +0 -614
  915. package/templates/skills/controller/references/controller-code-templates.md +0 -162
  916. package/templates/skills/controller/references/mcp-scaffold-workflow.md +0 -237
  917. package/templates/skills/controller/references/permission-sync-templates.md +0 -149
  918. package/templates/skills/controller/steps/step-00-init.md +0 -193
  919. package/templates/skills/controller/steps/step-01-analyze.md +0 -152
  920. package/templates/skills/controller/steps/step-02-plan.md +0 -176
  921. package/templates/skills/controller/steps/step-03-generate.md +0 -189
  922. package/templates/skills/controller/steps/step-04-perms.md +0 -80
  923. package/templates/skills/controller/steps/step-05-validate.md +0 -107
  924. package/templates/skills/controller/templates.md +0 -1556
  925. package/templates/skills/debug/SKILL.md +0 -70
  926. package/templates/skills/debug/references/team-protocol.md +0 -232
  927. package/templates/skills/debug/steps/step-00-init.md +0 -57
  928. package/templates/skills/debug/steps/step-01-analyze.md +0 -219
  929. package/templates/skills/debug/steps/step-02-resolve.md +0 -85
  930. package/templates/skills/efcore/references/database-operations.md +0 -66
  931. package/templates/skills/efcore/references/reset-operations.md +0 -81
  932. package/templates/skills/efcore/references/seed-methods.md +0 -86
  933. package/templates/skills/efcore/references/shared-init-functions.md +0 -250
  934. package/templates/skills/efcore/references/sql-objects-injection.md +0 -19
  935. package/templates/skills/efcore/references/troubleshooting.md +0 -81
  936. package/templates/skills/efcore/references/zero-downtime-patterns.md +0 -229
  937. package/templates/skills/explore/SKILL.md +0 -98
  938. package/templates/skills/feature-full/SKILL.md +0 -111
  939. package/templates/skills/feature-full/steps/step-00-init.md +0 -57
  940. package/templates/skills/feature-full/steps/step-01-implementation.md +0 -133
  941. package/templates/skills/gitflow/phases/abort.md +0 -189
  942. package/templates/skills/gitflow/phases/cleanup.md +0 -264
  943. package/templates/skills/gitflow/phases/status.md +0 -192
  944. package/templates/skills/gitflow/references/commit-message-generation.md +0 -58
  945. package/templates/skills/gitflow/references/commit-migration-validation.md +0 -53
  946. package/templates/skills/gitflow/references/finish-cleanup.md +0 -55
  947. package/templates/skills/gitflow/references/finish-version-bumping.md +0 -45
  948. package/templates/skills/gitflow/references/init-config-template.md +0 -143
  949. package/templates/skills/gitflow/references/init-environment-detection.md +0 -41
  950. package/templates/skills/gitflow/references/init-name-normalization.md +0 -118
  951. package/templates/skills/gitflow/references/init-questions.md +0 -193
  952. package/templates/skills/gitflow/references/init-structure-creation.md +0 -75
  953. package/templates/skills/gitflow/references/init-version-detection.md +0 -23
  954. package/templates/skills/gitflow/references/init-workspace-detection.md +0 -43
  955. package/templates/skills/gitflow/references/merge-ci-status.md +0 -36
  956. package/templates/skills/gitflow/references/merge-execution.md +0 -62
  957. package/templates/skills/gitflow/references/merge-pr-context.md +0 -76
  958. package/templates/skills/gitflow/references/plan-template.md +0 -69
  959. package/templates/skills/gitflow/references/pr-build-checks.md +0 -60
  960. package/templates/skills/gitflow/references/pr-generation.md +0 -58
  961. package/templates/skills/gitflow/references/start-branch-normalization.md +0 -28
  962. package/templates/skills/gitflow/references/start-efcore-preflight.md +0 -70
  963. package/templates/skills/gitflow/references/start-local-config.md +0 -113
  964. package/templates/skills/gitflow/references/start-worktree-creation.md +0 -50
  965. package/templates/skills/gitflow/references/sync-push-verify.md +0 -44
  966. package/templates/skills/gitflow/references/sync-rebase-conflicts.md +0 -38
  967. package/templates/skills/gitflow/steps/step-commit.md +0 -199
  968. package/templates/skills/gitflow/steps/step-finish.md +0 -147
  969. package/templates/skills/gitflow/steps/step-init.md +0 -230
  970. package/templates/skills/gitflow/steps/step-merge.md +0 -85
  971. package/templates/skills/gitflow/steps/step-plan.md +0 -151
  972. package/templates/skills/gitflow/steps/step-pr.md +0 -247
  973. package/templates/skills/gitflow/steps/step-start.md +0 -195
  974. package/templates/skills/gitflow/steps/step-sync.md +0 -161
  975. package/templates/skills/gitflow/templates/config.json +0 -72
  976. package/templates/skills/mcp/SKILL.md +0 -62
  977. package/templates/skills/mcp/steps/step-01-healthcheck.md +0 -108
  978. package/templates/skills/mcp/steps/step-02-tools.md +0 -73
  979. package/templates/skills/migrate/SKILL.md +0 -312
  980. package/templates/skills/migrate/references/v3.34-to-v3.46.md +0 -289
  981. package/templates/skills/notification/SKILL.md +0 -173
  982. package/templates/skills/refactor/SKILL.md +0 -56
  983. package/templates/skills/refactor/steps/step-01-discover.md +0 -60
  984. package/templates/skills/refactor/steps/step-02-execute.md +0 -67
  985. package/templates/skills/review-code/SKILL.md +0 -95
  986. package/templates/skills/review-code/references/clean-code-principles.md +0 -292
  987. package/templates/skills/review-code/references/code-quality-metrics.md +0 -174
  988. package/templates/skills/review-code/references/feedback-patterns.md +0 -149
  989. package/templates/skills/review-code/references/owasp-api-top10.md +0 -243
  990. package/templates/skills/review-code/references/security-checklist.md +0 -212
  991. package/templates/skills/review-code/references/smartstack-conventions.md +0 -568
  992. package/templates/skills/review-code/steps/step-01-smartstack.md +0 -96
  993. package/templates/skills/review-code/steps/step-02-detailed-review.md +0 -80
  994. package/templates/skills/review-code/steps/step-03-react.md +0 -44
  995. package/templates/skills/sketch/SKILL.md +0 -34
  996. package/templates/skills/ui-components/accessibility.md +0 -170
  997. package/templates/skills/ui-components/patterns/dashboard-chart.md +0 -327
  998. package/templates/skills/ui-components/patterns/data-table.md +0 -175
  999. package/templates/skills/ui-components/patterns/entity-card.md +0 -77
  1000. package/templates/skills/ui-components/patterns/grid-layout.md +0 -91
  1001. package/templates/skills/ui-components/patterns/kanban.md +0 -43
  1002. package/templates/skills/ui-components/references/component-catalog.md +0 -82
  1003. package/templates/skills/ui-components/responsive-guidelines.md +0 -278
  1004. package/templates/skills/ui-components/style-guide.md +0 -113
  1005. package/templates/skills/validate/SKILL.md +0 -181
  1006. package/templates/skills/workflow/SKILL.md +0 -196
  1007. package/templates/skills/workflow/steps/step-00-init.md +0 -57
  1008. package/templates/skills/workflow/steps/step-01-implementation.md +0 -84
@@ -1,1110 +0,0 @@
1
- # Templates DB Seed - Application Skill
2
-
3
- > These templates generate EF Core seeds for navigation entities and their translations.
4
-
5
- ---
6
-
7
- ## GUID GENERATION RULES
8
-
9
- ```csharp
10
- // ALWAYS use Guid.NewGuid() for ALL seed data IDs
11
- // This avoids conflicts between different projects/tenants/environments
12
- // Idempotence is handled by Code-based lookups, NOT by fixed IDs
13
-
14
- // For HasData() in Configuration files:
15
- Id = Guid.NewGuid()
16
-
17
- // For SeedData classes:
18
- public static readonly Guid Sample1Id = Guid.NewGuid();
19
- ```
20
-
21
- ---
22
-
23
- ---
24
-
25
- ## TEMPLATE: APPLICATION
26
-
27
- ### Navigation Entity
28
-
29
- ```csharp
30
- // In NavigationApplicationConfiguration.cs - HasData()
31
- new {
32
- Id = Guid.Parse("$APP_GUID"),
33
- Code = "$CODE", // e.g.: "sales"
34
- Label = "$LABEL_EN", // e.g.: "Sales"
35
- Description = "$DESC_EN", // e.g.: "Sales management"
36
- Icon = "$ICON", // e.g.: "TrendingUp"
37
- IconType = IconType.Lucide,
38
- Route = "/$CODE", // e.g.: "/sales"
39
- DisplayOrder = $ORDER,
40
- IsActive = true,
41
- CreatedAt = seedDate
42
- }
43
- ```
44
-
45
- ### Translations (4 languages)
46
-
47
- ```csharp
48
- // Application translations
49
- translations.Add(new {
50
- Id = Guid.NewGuid(),
51
- EntityType = NavigationEntityType.Application,
52
- EntityId = $APP_GUID,
53
- LanguageCode = "fr",
54
- Label = "$LABEL_FR",
55
- Description = "$DESC_FR",
56
- CreatedAt = seedDate
57
- });
58
- translations.Add(new {
59
- Id = Guid.NewGuid(),
60
- EntityType = NavigationEntityType.Application,
61
- EntityId = $APP_GUID,
62
- LanguageCode = "en",
63
- Label = "$LABEL_EN",
64
- Description = "$DESC_EN",
65
- CreatedAt = seedDate
66
- });
67
- translations.Add(new {
68
- Id = Guid.NewGuid(),
69
- EntityType = NavigationEntityType.Application,
70
- EntityId = $APP_GUID,
71
- LanguageCode = "it",
72
- Label = "$LABEL_IT",
73
- Description = "$DESC_IT",
74
- CreatedAt = seedDate
75
- });
76
- translations.Add(new {
77
- Id = Guid.NewGuid(),
78
- EntityType = NavigationEntityType.Application,
79
- EntityId = $APP_GUID,
80
- LanguageCode = "de",
81
- Label = "$LABEL_DE",
82
- Description = "$DESC_DE",
83
- CreatedAt = seedDate
84
- });
85
- ```
86
-
87
- ---
88
-
89
- ## TEMPLATE: MODULE
90
-
91
- ### Navigation Entity
92
-
93
- ```csharp
94
- // In NavigationModuleConfiguration.cs - HasData()
95
- new {
96
- Id = Guid.Parse("$MODULE_GUID"),
97
- ApplicationId = Guid.Parse("$APP_GUID"),
98
- Code = "$CODE", // e.g.: "products"
99
- Label = "$LABEL_EN", // e.g.: "Products"
100
- Description = "$DESC_EN", // e.g.: "Product management"
101
- Icon = "$ICON", // e.g.: "Package"
102
- IconType = IconType.Lucide,
103
- Route = "/$APP/$CODE", // e.g.: "/sales/products"
104
- DisplayOrder = $ORDER,
105
- IsActive = true,
106
- CreatedAt = seedDate
107
- }
108
- ```
109
-
110
- ### Translations (4 languages)
111
-
112
- ```csharp
113
- // Module translations
114
- translations.Add(new {
115
- Id = Guid.NewGuid(),
116
- EntityType = NavigationEntityType.Module,
117
- EntityId = $MODULE_GUID,
118
- LanguageCode = "fr",
119
- Label = "$LABEL_FR",
120
- Description = "$DESC_FR",
121
- CreatedAt = seedDate
122
- });
123
- translations.Add(new {
124
- Id = Guid.NewGuid(),
125
- EntityType = NavigationEntityType.Module,
126
- EntityId = $MODULE_GUID,
127
- LanguageCode = "en",
128
- Label = "$LABEL_EN",
129
- Description = "$DESC_EN",
130
- CreatedAt = seedDate
131
- });
132
- translations.Add(new {
133
- Id = Guid.NewGuid(),
134
- EntityType = NavigationEntityType.Module,
135
- EntityId = $MODULE_GUID,
136
- LanguageCode = "it",
137
- Label = "$LABEL_IT",
138
- Description = "$DESC_IT",
139
- CreatedAt = seedDate
140
- });
141
- translations.Add(new {
142
- Id = Guid.NewGuid(),
143
- EntityType = NavigationEntityType.Module,
144
- EntityId = $MODULE_GUID,
145
- LanguageCode = "de",
146
- Label = "$LABEL_DE",
147
- Description = "$DESC_DE",
148
- CreatedAt = seedDate
149
- });
150
- ```
151
-
152
- ---
153
-
154
- ## TEMPLATE: SECTION
155
-
156
- ### Navigation Entity
157
-
158
- ```csharp
159
- // In NavigationSectionConfiguration.cs - HasData()
160
- new {
161
- Id = Guid.Parse("$SECTION_GUID"),
162
- ModuleId = Guid.Parse("$MODULE_GUID"),
163
- Code = "$CODE", // e.g.: "inventory"
164
- Label = "$LABEL_EN", // e.g.: "Inventory"
165
- Description = "$DESC_EN", // e.g.: "Inventory management"
166
- Icon = "$ICON", // e.g.: "Warehouse"
167
- IconType = IconType.Lucide,
168
- Route = "/$APP/$MODULE/$CODE", // e.g.: "/sales/products/inventory"
169
- DisplayOrder = $ORDER,
170
- IsActive = true,
171
- CreatedAt = seedDate
172
- }
173
- ```
174
-
175
- ### Translations (4 languages)
176
-
177
- ```csharp
178
- // Section translations
179
- translations.Add(new {
180
- Id = Guid.NewGuid(),
181
- EntityType = NavigationEntityType.Section,
182
- EntityId = $SECTION_GUID,
183
- LanguageCode = "fr",
184
- Label = "$LABEL_FR",
185
- Description = "$DESC_FR",
186
- CreatedAt = seedDate
187
- });
188
- translations.Add(new {
189
- Id = Guid.NewGuid(),
190
- EntityType = NavigationEntityType.Section,
191
- EntityId = $SECTION_GUID,
192
- LanguageCode = "en",
193
- Label = "$LABEL_EN",
194
- Description = "$DESC_EN",
195
- CreatedAt = seedDate
196
- });
197
- translations.Add(new {
198
- Id = Guid.NewGuid(),
199
- EntityType = NavigationEntityType.Section,
200
- EntityId = $SECTION_GUID,
201
- LanguageCode = "it",
202
- Label = "$LABEL_IT",
203
- Description = "$DESC_IT",
204
- CreatedAt = seedDate
205
- });
206
- translations.Add(new {
207
- Id = Guid.NewGuid(),
208
- EntityType = NavigationEntityType.Section,
209
- EntityId = $SECTION_GUID,
210
- LanguageCode = "de",
211
- Label = "$LABEL_DE",
212
- Description = "$DESC_DE",
213
- CreatedAt = seedDate
214
- });
215
- ```
216
-
217
- ---
218
-
219
- ## TEMPLATE: PERMISSIONS SEED
220
-
221
- ### Permission Entity
222
-
223
- ```csharp
224
- // In PermissionConfiguration.cs - HasData()
225
- // For each CRUD action + assign + execute
226
-
227
- // Read
228
- new {
229
- Id = Guid.Parse("$PERM_READ_GUID"),
230
- Code = "$APP.$MODULE.read",
231
- Name = "View $MODULE_LABEL",
232
- Description = "View $MODULE_LABEL list and details",
233
- Category = "$APP.$MODULE",
234
- CreatedAt = seedDate
235
- },
236
- // Create
237
- new {
238
- Id = Guid.Parse("$PERM_CREATE_GUID"),
239
- Code = "$APP.$MODULE.create",
240
- Name = "Create $MODULE_LABEL",
241
- Description = "Create new $MODULE_LABEL",
242
- Category = "$APP.$MODULE",
243
- CreatedAt = seedDate
244
- },
245
- // Update
246
- new {
247
- Id = Guid.Parse("$PERM_UPDATE_GUID"),
248
- Code = "$APP.$MODULE.update",
249
- Name = "Update $MODULE_LABEL",
250
- Description = "Modify existing $MODULE_LABEL",
251
- Category = "$APP.$MODULE",
252
- CreatedAt = seedDate
253
- },
254
- // Delete
255
- new {
256
- Id = Guid.Parse("$PERM_DELETE_GUID"),
257
- Code = "$APP.$MODULE.delete",
258
- Name = "Delete $MODULE_LABEL",
259
- Description = "Remove $MODULE_LABEL",
260
- Category = "$APP.$MODULE",
261
- CreatedAt = seedDate
262
- }
263
- ```
264
-
265
- ### RolePermission Seed (Default Roles)
266
-
267
- ```csharp
268
- // In RolePermissionConfiguration.cs - HasData()
269
- // SuperAdmin gets all permissions automatically (wildcard)
270
-
271
- // PlatformAdmin - if platform context
272
- new { RoleId = Guid.Parse("...PlatformAdminRoleId..."), PermissionId = $PERM_READ_GUID },
273
- new { RoleId = Guid.Parse("...PlatformAdminRoleId..."), PermissionId = $PERM_CREATE_GUID },
274
- new { RoleId = Guid.Parse("...PlatformAdminRoleId..."), PermissionId = $PERM_UPDATE_GUID },
275
- new { RoleId = Guid.Parse("...PlatformAdminRoleId..."), PermissionId = $PERM_DELETE_GUID },
276
-
277
- // StandardUser - read only by default
278
- new { RoleId = Guid.Parse("...StandardUserRoleId..."), PermissionId = $PERM_READ_GUID }
279
- ```
280
-
281
- ---
282
-
283
- ## TEMPLATE: SECTION PERMISSIONS SEED (Level 3)
284
-
285
- > **Usage:** When a Module has sub-pages with different permissions
286
-
287
- ### Permission Entity - Section Level
288
-
289
- ```csharp
290
- // In PermissionConfiguration.cs - HasData()
291
- // Pattern: {application}.{module}.{section}.{action}
292
-
293
- // Declare SectionId (must match NavigationSectionConfiguration.cs)
294
- var {section}SectionId = Guid.Parse("$SECTION_GUID");
295
-
296
- // Wildcard Section
297
- new {
298
- Id = Guid.Parse("$PERM_SECTION_WILDCARD_GUID"),
299
- Path = "$APP.$MODULE.$SECTION.*",
300
- Level = PermissionLevel.Section,
301
- IsWildcard = true,
302
- SectionId = {section}SectionId,
303
- Description = "Full $SECTION_LABEL access",
304
- CreatedAt = seedDate
305
- },
306
- // Read
307
- new {
308
- Id = Guid.Parse("$PERM_SECTION_READ_GUID"),
309
- Path = "$APP.$MODULE.$SECTION.read",
310
- Level = PermissionLevel.Section,
311
- Action = PermissionAction.Read,
312
- IsWildcard = false,
313
- SectionId = {section}SectionId,
314
- Description = "View $SECTION_LABEL",
315
- CreatedAt = seedDate
316
- },
317
- // Create
318
- new {
319
- Id = Guid.Parse("$PERM_SECTION_CREATE_GUID"),
320
- Path = "$APP.$MODULE.$SECTION.create",
321
- Level = PermissionLevel.Section,
322
- Action = PermissionAction.Create,
323
- IsWildcard = false,
324
- SectionId = {section}SectionId,
325
- Description = "Create in $SECTION_LABEL",
326
- CreatedAt = seedDate
327
- },
328
- // Update
329
- new {
330
- Id = Guid.Parse("$PERM_SECTION_UPDATE_GUID"),
331
- Path = "$APP.$MODULE.$SECTION.update",
332
- Level = PermissionLevel.Section,
333
- Action = PermissionAction.Update,
334
- IsWildcard = false,
335
- SectionId = {section}SectionId,
336
- Description = "Update in $SECTION_LABEL",
337
- CreatedAt = seedDate
338
- },
339
- // Delete
340
- new {
341
- Id = Guid.Parse("$PERM_SECTION_DELETE_GUID"),
342
- Path = "$APP.$MODULE.$SECTION.delete",
343
- Level = PermissionLevel.Section,
344
- Action = PermissionAction.Delete,
345
- IsWildcard = false,
346
- SectionId = {section}SectionId,
347
- Description = "Delete in $SECTION_LABEL",
348
- CreatedAt = seedDate
349
- },
350
- // Execute (optional)
351
- new {
352
- Id = Guid.Parse("$PERM_SECTION_EXECUTE_GUID"),
353
- Path = "$APP.$MODULE.$SECTION.execute",
354
- Level = PermissionLevel.Section,
355
- Action = PermissionAction.Execute,
356
- IsWildcard = false,
357
- SectionId = {section}SectionId,
358
- Description = "Execute actions in $SECTION_LABEL",
359
- CreatedAt = seedDate
360
- }
361
- ```
362
-
363
- ---
364
-
365
- ## TEMPLATE: RESOURCE PERMISSIONS SEED (Level 4)
366
-
367
- > **Usage:** Finest level - sub-resources with distinct permissions (e.g.: Prompts → Blocks)
368
-
369
- ### Permission Entity - Resource Level
370
-
371
- ```csharp
372
- // In PermissionConfiguration.cs - HasData()
373
- // Pattern: {application}.{module}.{section}.{resource}.{action}
374
-
375
- // Declare ResourceId (must match NavigationResourceConfiguration.cs)
376
- var {resource}ResourceId = Guid.Parse("$RESOURCE_GUID");
377
-
378
- // Wildcard Resource
379
- new {
380
- Id = Guid.Parse("$PERM_RESOURCE_WILDCARD_GUID"),
381
- Path = "$APP.$MODULE.$SECTION.$RESOURCE.*",
382
- Level = PermissionLevel.Resource,
383
- IsWildcard = true,
384
- ResourceId = {resource}ResourceId,
385
- Description = "Full $RESOURCE_LABEL access",
386
- CreatedAt = seedDate
387
- },
388
- // Read
389
- new {
390
- Id = Guid.Parse("$PERM_RESOURCE_READ_GUID"),
391
- Path = "$APP.$MODULE.$SECTION.$RESOURCE.read",
392
- Level = PermissionLevel.Resource,
393
- Action = PermissionAction.Read,
394
- IsWildcard = false,
395
- ResourceId = {resource}ResourceId,
396
- Description = "View $RESOURCE_LABEL",
397
- CreatedAt = seedDate
398
- },
399
- // Create
400
- new {
401
- Id = Guid.Parse("$PERM_RESOURCE_CREATE_GUID"),
402
- Path = "$APP.$MODULE.$SECTION.$RESOURCE.create",
403
- Level = PermissionLevel.Resource,
404
- Action = PermissionAction.Create,
405
- IsWildcard = false,
406
- ResourceId = {resource}ResourceId,
407
- Description = "Create $RESOURCE_LABEL",
408
- CreatedAt = seedDate
409
- },
410
- // Update
411
- new {
412
- Id = Guid.Parse("$PERM_RESOURCE_UPDATE_GUID"),
413
- Path = "$APP.$MODULE.$SECTION.$RESOURCE.update",
414
- Level = PermissionLevel.Resource,
415
- Action = PermissionAction.Update,
416
- IsWildcard = false,
417
- ResourceId = {resource}ResourceId,
418
- Description = "Update $RESOURCE_LABEL",
419
- CreatedAt = seedDate
420
- },
421
- // Delete
422
- new {
423
- Id = Guid.Parse("$PERM_RESOURCE_DELETE_GUID"),
424
- Path = "$APP.$MODULE.$SECTION.$RESOURCE.delete",
425
- Level = PermissionLevel.Resource,
426
- Action = PermissionAction.Delete,
427
- IsWildcard = false,
428
- ResourceId = {resource}ResourceId,
429
- Description = "Delete $RESOURCE_LABEL",
430
- CreatedAt = seedDate
431
- }
432
- ```
433
-
434
- ---
435
-
436
- ## TEMPLATE: BULK OPERATIONS PERMISSIONS
437
-
438
- > **MANDATORY:** Always provide for CRUD modules
439
-
440
- ### Permission Entity - Bulk Operations
441
-
442
- ```csharp
443
- // In PermissionConfiguration.cs - HasData()
444
- // Add after standard CRUD permissions
445
-
446
- // Bulk Create
447
- new {
448
- Id = Guid.Parse("$PERM_BULK_CREATE_GUID"),
449
- Path = "$APP.$MODULE.bulk-create",
450
- Level = PermissionLevel.Module,
451
- Action = PermissionAction.Create,
452
- IsWildcard = false,
453
- ModuleId = {module}ModuleId,
454
- Description = "Bulk create $MODULE_LABEL",
455
- CreatedAt = seedDate
456
- },
457
- // Bulk Update
458
- new {
459
- Id = Guid.Parse("$PERM_BULK_UPDATE_GUID"),
460
- Path = "$APP.$MODULE.bulk-update",
461
- Level = PermissionLevel.Module,
462
- Action = PermissionAction.Update,
463
- IsWildcard = false,
464
- ModuleId = {module}ModuleId,
465
- Description = "Bulk update $MODULE_LABEL",
466
- CreatedAt = seedDate
467
- },
468
- // Bulk Delete
469
- new {
470
- Id = Guid.Parse("$PERM_BULK_DELETE_GUID"),
471
- Path = "$APP.$MODULE.bulk-delete",
472
- Level = PermissionLevel.Module,
473
- Action = PermissionAction.Delete,
474
- IsWildcard = false,
475
- ModuleId = {module}ModuleId,
476
- Description = "Bulk delete $MODULE_LABEL",
477
- CreatedAt = seedDate
478
- },
479
- // Export
480
- new {
481
- Id = Guid.Parse("$PERM_EXPORT_GUID"),
482
- Path = "$APP.$MODULE.export",
483
- Level = PermissionLevel.Module,
484
- Action = PermissionAction.Execute,
485
- IsWildcard = false,
486
- ModuleId = {module}ModuleId,
487
- Description = "Export $MODULE_LABEL data",
488
- CreatedAt = seedDate
489
- },
490
- // Import
491
- new {
492
- Id = Guid.Parse("$PERM_IMPORT_GUID"),
493
- Path = "$APP.$MODULE.import",
494
- Level = PermissionLevel.Module,
495
- Action = PermissionAction.Create,
496
- IsWildcard = false,
497
- ModuleId = {module}ModuleId,
498
- Description = "Import $MODULE_LABEL data",
499
- CreatedAt = seedDate
500
- }
501
- ```
502
-
503
- ---
504
-
505
- ## COMPLETE EXAMPLE: "Products" Module in "Sales"
506
-
507
- ### Variables
508
-
509
- ```
510
- $APP = sales
511
- $APP_GUID = (generated via Guid.NewGuid() at seed time)
512
- $MODULE = products
513
- $MODULE_GUID = (generated via Guid.NewGuid() at seed time)
514
-
515
- $LABEL_FR = Produits
516
- $LABEL_EN = Products
517
- $LABEL_IT = Prodotti
518
- $LABEL_DE = Produkte
519
-
520
- $DESC_FR = Gestion des produits
521
- $DESC_EN = Product management
522
- $DESC_IT = Gestione prodotti
523
- $DESC_DE = Produktverwaltung
524
-
525
- $ICON = Package
526
- $ORDER = 1
527
- ```
528
-
529
- ### Files to modify
530
-
531
- 1. `NavigationApplicationConfiguration.cs` - Add Sales application
532
- 2. `NavigationModuleConfiguration.cs` - Add Products module
533
- 3. `NavigationTranslationConfiguration.cs` - Add 4 translations × number of entities
534
- 4. `PermissionConfiguration.cs` - Add CRUD permissions
535
- 5. `RolePermissionConfiguration.cs` - Assign to default roles
536
-
537
- ---
538
-
539
- ## TEMPLATE: ENTITY SEED DATA (SeedData Provider)
540
-
541
- > **Usage:** Runtime seed data for domain entities (Products, Orders, Tickets, etc.)
542
- > **When:** User wants initial data for development/testing
543
- > **Mechanism:** Loaded at startup by DevDataSeeder, NOT via EF Core HasData/migrations
544
- > **Architecture:** Identical in core AND extensions
545
-
546
- ### Two Seeding Mechanisms
547
-
548
- | Mechanism | When to Use | Applied Via |
549
- |-----------|-------------|-------------|
550
- | **HasData()** in Configuration.cs | System entities (Navigation, Permissions, Roles) | EF Core migrations |
551
- | **SeedData.cs + DevDataSeeder** | Domain entities (Tickets, Products, Orders) | Application startup |
552
-
553
- **Rule:** Navigation, Permission, and RolePermission seeds use HasData().
554
- Domain entity seeds use the SeedData provider pattern below.
555
-
556
- ### SeedData Class Pattern
557
-
558
- ```csharp
559
- // Infrastructure/Persistence/Seeding/Data/{Domain}/{EntityName}SeedData.cs
560
-
561
- using SmartStack.Domain.{Application}.{Module};
562
-
563
- namespace SmartStack.Infrastructure.Persistence.Seeding.Data.{Domain};
564
-
565
- /// <summary>
566
- /// Demo {EntityName} data for development and testing.
567
- /// </summary>
568
- public static class {EntityName}SeedData
569
- {
570
- // ============================================================
571
- // RANDOM IDs - generated at class load, unique per deployment
572
- // Idempotence is handled by AnyAsync() checks, NOT by fixed IDs
573
- // ============================================================
574
-
575
- public static readonly Guid Sample1Id = Guid.NewGuid();
576
- public static readonly Guid Sample2Id = Guid.NewGuid();
577
- public static readonly Guid Sample3Id = Guid.NewGuid();
578
-
579
- /// <summary>
580
- /// Returns all demo {EntityName} entities.
581
- /// </summary>
582
- internal static IEnumerable<{EntityName}SeedItem> GetAll{EntityName}s()
583
- {
584
- return new[]
585
- {
586
- new {EntityName}SeedItem
587
- {
588
- Id = Sample1Id,
589
- // ... entity properties with realistic sample data
590
- CreatedByUserId = UserSeedData.SystemUserId
591
- },
592
- new {EntityName}SeedItem
593
- {
594
- Id = Sample2Id,
595
- // ... varied data
596
- CreatedByUserId = UserSeedData.SystemUserId
597
- },
598
- new {EntityName}SeedItem
599
- {
600
- Id = Sample3Id,
601
- // ... varied data
602
- CreatedByUserId = UserSeedData.SystemUserId
603
- }
604
- };
605
- }
606
- }
607
-
608
- /// <summary>
609
- /// Seed item DTO for {EntityName} (avoids domain factory methods during seeding).
610
- /// </summary>
611
- internal class {EntityName}SeedItem
612
- {
613
- public Guid Id { get; init; }
614
- // ... all required properties matching the domain entity
615
- public Guid CreatedByUserId { get; init; }
616
- }
617
- ```
618
-
619
- ### Multi-Tenant Entity Seed Pattern
620
-
621
- For entities belonging to a tenant, organize by tenant:
622
-
623
- ```csharp
624
- internal static IEnumerable<{EntityName}SeedItem> GetAll{EntityName}s()
625
- {
626
- var items = new List<{EntityName}SeedItem>();
627
-
628
- items.AddRange(GetTenant1{EntityName}s());
629
- items.AddRange(GetTenant2{EntityName}s());
630
-
631
- return items;
632
- }
633
-
634
- private static IEnumerable<{EntityName}SeedItem> GetTenant1{EntityName}s()
635
- {
636
- var tenantId = TenantSeedData.AcmeCorporationId;
637
- var userId = TenantMembershipSeedData.AcmeOwnerId;
638
-
639
- return new[]
640
- {
641
- new {EntityName}SeedItem
642
- {
643
- Id = Guid.NewGuid(),
644
- TenantId = tenantId,
645
- CreatedByUserId = userId,
646
- // ... properties
647
- }
648
- };
649
- }
650
- ```
651
-
652
- ### DevDataSeeder Registration Pattern
653
-
654
- ```csharp
655
- // In Infrastructure/Persistence/Seeding/DevDataSeeder.cs
656
-
657
- // 1. Add using statement
658
- using SmartStack.Infrastructure.Persistence.Seeding.Data.{Domain};
659
-
660
- // 2. Add call in SeedAsync() method (after existing seed calls)
661
- public async Task SeedAsync(CancellationToken cancellationToken = default)
662
- {
663
- // ... existing seed calls ...
664
-
665
- await Seed{EntityName}sAsync(cancellationToken); // <-- ADD THIS
666
-
667
- // ... summary logging ...
668
- }
669
-
670
- // 3. Add private seeding method
671
- private async Task Seed{EntityName}sAsync(CancellationToken cancellationToken)
672
- {
673
- _logger.LogInformation("Seeding demo {EntityName}s...");
674
-
675
- var existingCount = await _context.{EntityName}s.CountAsync(cancellationToken);
676
- if (existingCount > 0)
677
- {
678
- _logger.LogWarning("{EntityName}s already seeded ({Count} exist), skipping.", existingCount);
679
- return;
680
- }
681
-
682
- var createdCount = 0;
683
-
684
- foreach (var seedItem in {EntityName}SeedData.GetAll{EntityName}s())
685
- {
686
- var entity = {EntityName}.Create(
687
- // Map seedItem properties to factory method parameters
688
- );
689
-
690
- // Factory method already generates a random GUID via Guid.NewGuid()
691
- // No need to override — each seed run creates fresh unique IDs
692
-
693
- _context.{EntityName}s.Add(entity);
694
- createdCount++;
695
- }
696
-
697
- if (createdCount > 0)
698
- {
699
- await _context.SaveChangesAsync(cancellationToken);
700
- }
701
-
702
- _logger.LogInformation("Created {Count} demo {EntityName}s.", createdCount);
703
- }
704
- ```
705
-
706
- ### Seed Data GUID Generation
707
-
708
- ```csharp
709
- // ALWAYS use Guid.NewGuid() — avoids conflicts between projects/tenants/environments
710
- public static readonly Guid ProductAlphaId = Guid.NewGuid();
711
- public static readonly Guid ProductBetaId = Guid.NewGuid();
712
-
713
- // FORBIDDEN: Deterministic GUIDs (SHA256, sequential, hardcoded)
714
- // These create conflicts when multiple projects seed into the same database
715
- ```
716
-
717
- ### Best Practices
718
-
719
- | Practice | Description |
720
- |----------|-------------|
721
- | Random IDs | ALWAYS use `Guid.NewGuid()` — avoids cross-project/tenant conflicts |
722
- | Idempotent | Always check `if exists` before creating (by Code, not by ID) |
723
- | Use factory methods | Call `Entity.Create(...)` not `new Entity()` |
724
- | FK by Code lookup | Resolve foreign keys by Code at runtime, not by hardcoded GUID |
725
- | Realistic data | Use plausible names, descriptions, amounts |
726
- | Cover all states | Include entities in different statuses (active, closed, etc.) |
727
- | Reference existing seeds | Resolve FKs via Code/Name lookups, not static GUIDs |
728
- | SaveChanges per batch | Call SaveChanges after each entity group |
729
-
730
- ---
731
-
732
- ## TEMPLATE: CLIENT SEED DATA PROVIDER
733
-
734
- > **Usage:** Client projects (projectType: "client") to seed data into the Core schema
735
- > **Mechanism:** Runtime seeding via IClientSeedDataProvider (no Core migrations required)
736
- > **When:** Generated automatically at step 03b if the project is of type client
737
-
738
- ### Difference with HasData()
739
-
740
- | Aspect | HasData() (core) | IClientSeedDataProvider (client) |
741
- |--------|-----------------|----------------------------------|
742
- | When | EF Core migration | Application startup |
743
- | Where | In Core migrations | Runtime via CoreDbContext |
744
- | Who | SmartStack.app | Client project |
745
- | Idempotent | Yes (single migration) | Yes (check existence) |
746
- | Core migration | Yes | No |
747
- | Entities created with | Anonymous objects | Factory methods (mandatory) |
748
-
749
- ### Implementation Pattern
750
-
751
- The provider is generated in:
752
- `Infrastructure/Persistence/Seeding/{AppPascalName}SeedDataProvider.cs`
753
-
754
- It consumes the SeedData files generated in steps 01-03:
755
- - `{Module}NavigationSeedData.cs` (GUIDs + navigation data)
756
- - `{Module}NavigationTranslationSeedData.cs` (4-language translations)
757
- - `{Module}PermissionSeedData.cs` (RBAC permissions)
758
- - `{Module}RolePermissionSeedData.cs` (role -> permission mappings)
759
-
760
- ### DI Registration
761
-
762
- In `Infrastructure/DependencyInjection.cs`:
763
- ```csharp
764
- services.AddScoped<IClientSeedDataProvider, {AppPascalName}SeedDataProvider>();
765
- ```
766
-
767
- ### Execution Pipeline
768
-
769
- ```
770
- InitializeSmartStackAsync()
771
- 1. MigrateAsync() -> Core schema created
772
- 2. IDatabaseSeeder.SeedAsync() -> System users, tenant
773
- 3. IClientSeedDataProvider.Seed*() -> Navigation + Roles + Permissions + RolePermissions CLIENT
774
- 4. IDevDataSeeder.SeedAsync() -> Dev data
775
- 5. InitializeNavigationRoutingAsync -> Routes loaded (including client routes)
776
- ```
777
-
778
- ### Provider Template
779
-
780
- ```csharp
781
- using Microsoft.EntityFrameworkCore;
782
- using SmartStack.Application.Common.Interfaces;
783
- using SmartStack.Domain.Navigation;
784
- using SmartStack.Domain.Administration.Roles;
785
-
786
- namespace {BaseNamespace}.Infrastructure.Persistence.Seeding;
787
-
788
- public class {AppPascalName}SeedDataProvider : IClientSeedDataProvider
789
- {
790
- public int Order => 100;
791
-
792
- public async Task SeedNavigationAsync(ICoreDbContext context, CancellationToken ct)
793
- {
794
- // NOTE: Idempotence is at MODULE level (not application level).
795
- // If the application already exists, we reuse it and seed any missing modules.
796
- // This allows adding Module 2+ to an existing application.
797
- var existingApp = await context.NavigationApplications
798
- .FirstOrDefaultAsync(a => a.Code == "{app_code}", ct);
799
-
800
- NavigationApplication app;
801
- if (existingApp != null)
802
- {
803
- app = existingApp; // Application already seeded — reuse for module seeding below
804
- }
805
- else
806
- {
807
- // v3.46+ signature : Zone removed. New flags isOpen + isPersonal at the END (optional, default false).
808
- app = NavigationApplication.Create(
809
- "{app_code}", "{app_label_en}",
810
- "{app_desc_en}", "{app_icon}", IconType.Lucide,
811
- "/{app_code}", {display_order},
812
- isOpen: false, isPersonal: false);
813
- context.NavigationApplications.Add(app);
814
- await ((DbContext)context).SaveChangesAsync(ct);
815
-
816
- // Application translations (only when creating new application)
817
- // foreach (var t in NavigationApplicationSeedData.GetTranslationEntries()) { ... }
818
- await ((DbContext)context).SaveChangesAsync(ct);
819
- }
820
-
821
- // Create modules (idempotent per-module — check each before inserting)
822
- // var mod1Exists = await context.NavigationModules.AnyAsync(m => m.Code == "{module_code}" && m.ApplicationId == app.Id, ct);
823
- // if (!mod1Exists) { var mod1 = NavigationModule.Create(...); context.NavigationModules.Add(mod1); }
824
-
825
- // Module translations — IDEMPOTENT (unique index IX_nav_Translations_EntityType_EntityId_LanguageCode)
826
- // CRITICAL: Always check before inserting to avoid duplicate key errors on re-runs
827
- // CRITICAL: Use modEntity.Id (actual DB ID), NOT seed-time GUID from SeedData class.
828
- // if (!await context.NavigationTranslations.AnyAsync(
829
- // t => t.EntityId == mod1Entity.Id && t.EntityType == NavigationEntityType.Module, ct))
830
- // { foreach (var t in {Module}NavigationSeedData.GetTranslationEntries())
831
- // { context.NavigationTranslations.Add(
832
- // NavigationTranslation.Create(t.EntityType, mod1Entity.Id, t.LanguageCode, t.Label, t.Description)); } }
833
-
834
- // Sections (idempotent per-section — check each before inserting)
835
- // var secExists = await context.NavigationSections.AnyAsync(s => s.Code == secEntry.Code && s.ModuleId == ..., ct);
836
- // Use NavigationSection.Create(moduleId, code, label, description, icon, iconType, route, displayOrder)
837
-
838
- // Section translations — IDEMPOTENT (same guard pattern as module translations)
839
- // CRITICAL: Resolve actual section from DB (secEntry.Id is seed-time GUID ≠ DB ID):
840
- // var actualSection = await context.NavigationSections
841
- // .FirstAsync(s => s.Code == secEntry.Code && s.ModuleId == modEntity.Id, ct);
842
- // if (!await context.NavigationTranslations.AnyAsync(
843
- // t => t.EntityId == actualSection.Id && t.EntityType == NavigationEntityType.Section, ct))
844
-
845
- // Resources (idempotent per-resource — check each before inserting)
846
- // var resExists = await context.NavigationResources.AnyAsync(r => r.Code == resEntry.Code && r.SectionId == ..., ct);
847
- // Use NavigationResource.Create(sectionId, code, label, entityType, route, displayOrder)
848
- }
849
-
850
- public async Task SeedRolesAsync(ICoreDbContext context, CancellationToken ct)
851
- {
852
- // Resolve application from DB by Code — NOT seed-time GUID
853
- var app = await context.NavigationApplications
854
- .FirstAsync(a => a.Code == "{app_code}", ct);
855
-
856
- // Check idempotence — scoped by actual DB ApplicationId
857
- var exists = await context.Roles
858
- .AnyAsync(r => r.ApplicationId == app.Id, ct);
859
- if (exists) return;
860
-
861
- // Create application-scoped roles (Admin, Manager, Contributor, Viewer)
862
- foreach (var entry in ApplicationRolesSeedData.GetRoleEntries())
863
- {
864
- var role = Role.Create(
865
- name: entry.Name,
866
- shortName: entry.Code,
867
- category: RoleCategory.Application,
868
- description: entry.Description,
869
- isSystem: entry.IsSystem,
870
- applicationId: app.Id,
871
- code: entry.Code);
872
- context.Roles.Add(role);
873
- }
874
- await ((DbContext)context).SaveChangesAsync(ct);
875
- }
876
-
877
- public async Task SeedPermissionsAsync(ICoreDbContext context, CancellationToken ct)
878
- {
879
- var exists = await context.Permissions
880
- .AnyAsync(p => p.Path == "{full_path}.*", ct);
881
- if (exists) return;
882
-
883
- // Create permissions from {Module}PermissionSeedData
884
- // Use Permission.CreateForModule(...) and Permission.CreateWildcard(...)
885
- }
886
-
887
- public async Task SeedRolePermissionsAsync(ICoreDbContext context, CancellationToken ct)
888
- {
889
- var exists = await context.RolePermissions
890
- .AnyAsync(rp => rp.Permission!.Path.StartsWith("{full_path}."), ct);
891
- if (exists) return;
892
-
893
- // Create role-permissions from {Module}RolePermissionSeedData
894
- // Use RolePermission.Create(roleId, permissionId, "system")
895
- }
896
- }
897
- ```
898
-
899
- ### Critical Rules
900
-
901
- | Rule | Description |
902
- |------|-------------|
903
- | Factory methods | `NavigationModule.Create(...)`, `NavigationSection.Create(...)`, `NavigationResource.Create(...)`, `Permission.CreateForModule(...)` - NEVER `new Entity()` |
904
- | Idempotence | Each Seed method checks existence before inserting |
905
- | SaveChanges per group | Navigation -> save -> Roles -> save -> Permissions -> save -> RolePermissions -> save |
906
- | Random GUIDs | ALWAYS use `Guid.NewGuid()` — resolve FKs by Code lookup |
907
- | FK resolution by Code | Parent modules found by `Code`, not hardcoded GUID |
908
- | Section/Resource conditionality | Only generate if `seedDataCore.navigationSections` / `seedDataCore.navigationResources` exist in feature.json |
909
-
910
- ---
911
-
912
- ## SEED CHECKLIST
913
-
914
- | Check | Status |
915
- |-------|--------|
916
- | ☐ Random GUIDs via Guid.NewGuid() (no deterministic/sequential/fixed) | |
917
- | ☐ 4 languages for each navigation entity (modules, sections, resources) | |
918
- | ☐ Translation IDs use Guid.NewGuid() | |
919
- | ☐ Route aligned with permission path | |
920
- | ☐ DisplayOrder consistent | |
921
- | ☐ CRUD permissions created (Level 2 - Module) | |
922
- | ☐ Section permissions if sub-pages (Level 3) | |
923
- | ☐ NavigationSections seeded (if `seedDataCore.navigationSections` in feature.json) | |
924
- | ☐ NavigationResources seeded (if `seedDataCore.navigationResources` in feature.json) | |
925
- | ☐ Resource permissions if sub-resources (Level 4) | |
926
- | ☐ Bulk Operations permissions created | |
927
- | ☐ RolePermissions assigned | |
928
- | ☐ Entity SeedData.cs created (if user opted in) | |
929
- | ☐ DevDataSeeder.cs updated (if user opted in) | |
930
- | ☐ IClientSeedDataProvider generated (client projects only) | |
931
- | ☐ Provider registered in DI (client projects only) | |
932
-
933
- ---
934
-
935
- ## PERMISSIONS HIERARCHY (4 Levels)
936
-
937
- ```
938
- Level 1: APPLICATION
939
- └─ Path: {application}.*
940
- └─ E.g.: administration.* → Full app access
941
-
942
- Level 2: MODULE
943
- └─ Path: {application}.{module}.{action}
944
- └─ E.g.: administration.users.read
945
-
946
- Level 3: SECTION
947
- └─ Path: {application}.{module}.{section}.{action}
948
- └─ E.g.: administration.ai.settings.update
949
-
950
- Level 4: RESOURCE (finest granularity)
951
- └─ Path: {application}.{module}.{section}.{resource}.{action}
952
- └─ E.g.: administration.ai.prompts.blocks.delete
953
- ```
954
-
955
- ---
956
-
957
- ## SQL OBJECTS INFRASTRUCTURE
958
-
959
- > **Usage:** SQL Server functions (TVFs, scalar), views, and stored procedures managed as embedded resources
960
- > **Pattern:** Same as SmartStack.app — `CREATE OR ALTER` for idempotency, applied automatically at startup
961
- > **Location:** `Infrastructure/Persistence/SqlObjects/`
962
-
963
- ### Directory Structure
964
-
965
- ```
966
- Infrastructure/Persistence/SqlObjects/
967
- ├── SqlObjectHelper.cs ← Helper to apply SQL from embedded resources
968
- ├── Functions/ ← Table-Valued & Scalar functions
969
- │ └── fn_{FunctionName}.sql ← CREATE OR ALTER FUNCTION [schema].[fn_Name]
970
- ├── Views/ ← Future: SQL views
971
- │ └── vw_{ViewName}.sql
972
- └── StoredProcedures/ ← Future: Stored procedures
973
- └── sp_{ProcName}.sql
974
- ```
975
-
976
- ### SqlObjectHelper Pattern
977
-
978
- ```csharp
979
- // Infrastructure/Persistence/SqlObjects/SqlObjectHelper.cs
980
-
981
- using System.Reflection;
982
- using Microsoft.EntityFrameworkCore.Migrations;
983
-
984
- namespace {BaseNamespace}.Infrastructure.Persistence.SqlObjects;
985
-
986
- /// <summary>
987
- /// Helper for applying SQL objects from embedded resources.
988
- /// SQL files use CREATE OR ALTER for idempotency — applied automatically at startup.
989
- /// </summary>
990
- public static class SqlObjectHelper
991
- {
992
- private static readonly Assembly Assembly = typeof(SqlObjectHelper).Assembly;
993
- private const string ResourcePrefix = "{BaseNamespace}.Infrastructure.Persistence.SqlObjects.";
994
-
995
- /// <summary>
996
- /// Applies all SQL objects directly to the database via DbContext.
997
- /// Called at startup after MigrateAsync() — ensures SQL objects are always up-to-date
998
- /// without requiring a new migration when a .sql file changes.
999
- /// </summary>
1000
- public static async Task ApplyAllAsync(DbContext dbContext)
1001
- {
1002
- await ApplyCategoryToDbAsync(dbContext, "Functions");
1003
- // Future: await ApplyCategoryToDbAsync(dbContext, "Views");
1004
- // Future: await ApplyCategoryToDbAsync(dbContext, "StoredProcedures");
1005
- }
1006
-
1007
- /// <summary>
1008
- /// Applies all SQL objects via MigrationBuilder (legacy, kept for backward compatibility).
1009
- /// </summary>
1010
- public static void ApplyAll(MigrationBuilder migrationBuilder)
1011
- {
1012
- ApplyAllFunctions(migrationBuilder);
1013
- }
1014
-
1015
- public static void ApplyAllFunctions(MigrationBuilder migrationBuilder)
1016
- {
1017
- ApplyCategory(migrationBuilder, "Functions");
1018
- }
1019
-
1020
- public static string ReadSqlObject(string resourceName)
1021
- {
1022
- var fullName = ResourcePrefix + resourceName;
1023
- using var stream = Assembly.GetManifestResourceStream(fullName)
1024
- ?? throw new InvalidOperationException(
1025
- $"SQL object resource '{fullName}' not found. " +
1026
- $"Ensure the .sql file is marked as EmbeddedResource in the .csproj. " +
1027
- $"Available: {string.Join(", ", Assembly.GetManifestResourceNames().Where(n => n.EndsWith(".sql")))}");
1028
- using var reader = new StreamReader(stream);
1029
- return reader.ReadToEnd();
1030
- }
1031
-
1032
- private static void ApplyCategory(MigrationBuilder migrationBuilder, string category)
1033
- {
1034
- var prefix = ResourcePrefix + category + ".";
1035
- var resources = Assembly.GetManifestResourceNames()
1036
- .Where(n => n.StartsWith(prefix, StringComparison.Ordinal)
1037
- && n.EndsWith(".sql", StringComparison.Ordinal))
1038
- .OrderBy(n => n, StringComparer.Ordinal);
1039
-
1040
- foreach (var resource in resources)
1041
- {
1042
- using var stream = Assembly.GetManifestResourceStream(resource)!;
1043
- using var reader = new StreamReader(stream);
1044
- migrationBuilder.Sql(reader.ReadToEnd());
1045
- }
1046
- }
1047
-
1048
- private static async Task ApplyCategoryToDbAsync(DbContext dbContext, string category)
1049
- {
1050
- var prefix = ResourcePrefix + category + ".";
1051
- var resources = Assembly.GetManifestResourceNames()
1052
- .Where(n => n.StartsWith(prefix, StringComparison.Ordinal)
1053
- && n.EndsWith(".sql", StringComparison.Ordinal))
1054
- .OrderBy(n => n, StringComparer.Ordinal);
1055
-
1056
- foreach (var resource in resources)
1057
- {
1058
- using var stream = Assembly.GetManifestResourceStream(resource)!;
1059
- using var reader = new StreamReader(stream);
1060
- await dbContext.Database.ExecuteSqlRawAsync(reader.ReadToEnd());
1061
- }
1062
- }
1063
- }
1064
- ```
1065
-
1066
- ### .csproj Configuration (REQUIRED)
1067
-
1068
- ```xml
1069
- <ItemGroup>
1070
- <EmbeddedResource Include="Persistence\SqlObjects\**\*.sql" />
1071
- </ItemGroup>
1072
- ```
1073
-
1074
- ### SQL File Convention
1075
-
1076
- All `.sql` files MUST use `CREATE OR ALTER` for idempotency:
1077
-
1078
- ```sql
1079
- -- Infrastructure/Persistence/SqlObjects/Functions/fn_GetUserGroupHierarchy.sql
1080
- CREATE OR ALTER FUNCTION [extensions].[fn_GetEntityHierarchy](@EntityId UNIQUEIDENTIFIER)
1081
- RETURNS TABLE
1082
- AS
1083
- RETURN
1084
- (
1085
- WITH Hierarchy AS (
1086
- SELECT Id, ParentId, 0 AS Level
1087
- FROM [extensions].[fb_Entities]
1088
- WHERE Id = @EntityId
1089
- UNION ALL
1090
- SELECT child.Id, child.ParentId, parent.Level + 1
1091
- FROM [extensions].[fb_Entities] child
1092
- INNER JOIN Hierarchy parent ON child.ParentId = parent.Id
1093
- WHERE parent.Level < 10
1094
- )
1095
- SELECT DISTINCT Id FROM Hierarchy
1096
- );
1097
- ```
1098
-
1099
- ### Startup Integration
1100
-
1101
- SQL objects are applied **automatically at application startup** via `SqlObjectHelper.ApplyAllAsync(dbContext)`, called in `SmartStackExtensions.InitializeSmartStackAsync()` right after `MigrateAsync()`. No migration injection needed — just add/modify `.sql` files and restart the application.
1102
-
1103
- ### When to Use SQL Objects
1104
-
1105
- | Need | Solution |
1106
- |------|----------|
1107
- | Recursive hierarchy traversal | TVF with CTE (fn_GetXxxHierarchy) |
1108
- | Complex aggregation for reports | SQL View (vw_XxxSummary) |
1109
- | Bulk operations with business logic | Stored Procedure (sp_XxxBatch) |
1110
- | Simple CRUD, filtering, sorting | EF Core LINQ (no SQL needed) |