@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,9 +1,14 @@
1
1
  <!DOCTYPE html>
2
+ <!--
3
+ AUTO-GENERATED by scripts/generate-docs — do not edit by hand.
4
+ Edit docs-src/efcore.md (or templates/skills/<skill>/SKILL.md for skill data)
5
+ and run `npm run build:docs`. CI enforces drift via `npm run docs:check`.
6
+ -->
2
7
  <html lang="fr">
3
8
  <head>
4
9
  <meta charset="UTF-8">
5
10
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>EF Core Migrations - SmartStack CLI</title>
11
+ <title>EF Core migrations - SmartStack CLI</title>
7
12
  <link rel="stylesheet" href="css/styles.css">
8
13
  </head>
9
14
  <body>
@@ -12,24 +17,13 @@
12
17
  <header class="global-header">
13
18
  <div class="logo">SS</div>
14
19
  <span class="site-title">SmartStack CLI</span>
15
- <span class="version-badge">v3.34.0</span>
20
+ <span class="version-badge">v5.0.0</span>
16
21
  <div class="header-divider"></div>
17
- <span class="page-title">EF Core Migrations</span>
18
- <nav class="breadcrumb">
19
- <a href="index.html">
20
- <span data-lang="fr">Accueil</span>
21
- <span data-lang="en">Home</span>
22
- </a>
23
- <span class="breadcrumb-separator">&#8250;</span>
24
- <span data-lang="fr">Workflows</span>
25
- <span data-lang="en">Workflows</span>
26
- <span class="breadcrumb-separator">&#8250;</span>
27
- <span class="breadcrumb-current">EF Core</span>
28
- </nav>
22
+ <span class="page-title">EF Core</span>
29
23
  <!-- Language Select -->
30
24
  <select class="lang-select" id="lang-select" onchange="setLanguage(this.value); localStorage.setItem('doc-language', this.value);">
31
- <option value="fr">&#127467;&#127479; FR</option>
32
- <option value="en">&#127468;&#127463; EN</option>
25
+ <option value="fr">🇫🇷 FR</option>
26
+ <option value="en">🇬🇧 EN</option>
33
27
  </select>
34
28
  <!-- Search -->
35
29
  <div class="header-search">
@@ -42,2633 +36,201 @@
42
36
  </div>
43
37
  </header>
44
38
 
45
- <!-- App Body -->
46
39
  <div class="app-body">
47
40
  <!-- Sidebar -->
48
41
  <aside class="sidebar">
49
42
  <button class="sidebar-toggle" title="Toggle sidebar">
50
- <span class="toggle-icon-collapse">&#171;</span>
51
- <span class="toggle-icon-expand">&#187;</span>
43
+ <span class="toggle-icon-collapse">«</span>
44
+ <span class="toggle-icon-expand">»</span>
52
45
  </button>
53
46
 
54
47
  <nav class="sidebar-nav">
55
48
  <div class="nav-section">
56
49
  <div class="nav-section-title">
57
- <span data-lang="fr">Demarrage</span>
58
- <span data-lang="en">Getting Started</span>
50
+ <span data-lang="fr">Démarrage</span><span data-lang="en">Getting Started</span>
59
51
  </div>
60
52
  <a href="index.html" class="nav-item">
61
- <span class="icon">&#127968;</span>
62
- <span class="nav-text" data-lang="fr">Accueil</span>
63
- <span class="nav-text" data-lang="en">Home</span>
53
+ <span class="icon">🏠</span>
54
+ <span class="nav-text" data-lang="fr">Accueil</span><span class="nav-text" data-lang="en">Home</span>
64
55
  </a>
65
56
  <a href="installation.html" class="nav-item">
66
- <span class="icon">&#128230;</span>
67
- <span class="nav-text">Installation</span>
68
- </a>
69
- <a href="license.html" class="nav-item">
70
- <span class="icon">&#128274;</span>
71
- <span class="nav-text" data-lang="fr">Licence</span>
72
- <span class="nav-text" data-lang="en">License</span>
57
+ <span class="icon">📦</span>
58
+ <span class="nav-text" data-lang="fr">Installation</span><span class="nav-text" data-lang="en">Installation</span>
73
59
  </a>
74
60
  <a href="init.html" class="nav-item">
75
- <span class="icon">&#128640;</span>
76
- <span class="nav-text">Projet Client</span>
61
+ <span class="icon">🚀</span>
62
+ <span class="nav-text" data-lang="fr">Projet Client</span><span class="nav-text" data-lang="en">Client Project</span>
63
+ </a>
64
+ <a href="license.html" class="nav-item">
65
+ <span class="icon">🔐</span>
66
+ <span class="nav-text" data-lang="fr">Licence</span><span class="nav-text" data-lang="en">License</span>
77
67
  </a>
78
68
  </div>
79
-
80
69
  <div class="nav-section">
81
- <div class="nav-section-title">Workflows</div>
70
+ <div class="nav-section-title">
71
+ <span data-lang="fr">Workflows</span><span data-lang="en">Workflows</span>
72
+ </div>
82
73
  <a href="gitflow.html" class="nav-item">
83
- <span class="icon">&#128256;</span>
84
- <span class="nav-text">GitFlow</span>
74
+ <span class="icon">🔀</span>
75
+ <span class="nav-text" data-lang="fr">GitFlow</span><span class="nav-text" data-lang="en">GitFlow</span>
76
+ </a>
77
+ <a href="efcore.html" class="nav-item active">
78
+ <span class="icon">🗄️</span>
79
+ <span class="nav-text" data-lang="fr">EF Core</span><span class="nav-text" data-lang="en">EF Core</span>
85
80
  </a>
86
- <div class="nav-item-with-toc">
87
- <a href="efcore.html" class="active">
88
- <span class="icon">&#128452;</span>
89
- <span class="nav-text">EF Core</span>
90
- <button class="toc-toggle">&#9654;</button>
91
- </a>
92
- <nav class="sidebar-toc">
93
- <a href="#quick-index" class="sidebar-toc-link">
94
- <span data-lang="fr">Index rapide</span>
95
- <span data-lang="en">Quick Index</span>
96
- </a>
97
- <a href="#introduction" class="sidebar-toc-link">Introduction</a>
98
- <a href="#understanding" class="sidebar-toc-link">
99
- <span data-lang="fr">Comprendre EF Core</span>
100
- <span data-lang="en">Understanding EF Core</span>
101
- </a>
102
- <a href="#dual-dbcontext" class="sidebar-toc-link">
103
- <span data-lang="fr">Dual DbContext</span>
104
- <span data-lang="en">Dual DbContext</span>
105
- </a>
106
- <a href="#one-migration-rule" class="sidebar-toc-link">
107
- <span data-lang="fr">1 Migration par Feature</span>
108
- <span data-lang="en">1 Migration per Feature</span>
109
- </a>
110
- <a href="#commands" class="sidebar-toc-link">
111
- <span data-lang="fr">Commandes (9)</span>
112
- <span data-lang="en">Commands (9)</span>
113
- </a>
114
- <a href="#cross-branch" class="sidebar-toc-link">Cross-Branch</a>
115
- <a href="#best-practices" class="sidebar-toc-link">
116
- <span data-lang="fr">Bonnes pratiques</span>
117
- <span data-lang="en">Best Practices</span>
118
- </a>
119
- <a href="#integration" class="sidebar-toc-link">
120
- <span data-lang="fr">Integration GitFlow</span>
121
- <span data-lang="en">GitFlow Integration</span>
122
- </a>
123
- <a href="#configuration" class="sidebar-toc-link">Configuration</a>
124
- </nav>
125
- </div>
126
81
  <a href="business-analyse.html" class="nav-item">
127
- <span class="icon">&#128202;</span>
128
- <span class="nav-text">Business Analyse</span>
82
+ <span class="icon">📊</span>
83
+ <span class="nav-text" data-lang="fr">Business Analyse</span><span class="nav-text" data-lang="en">Business Analysis</span>
129
84
  </a>
130
- <a href="ralph-loop.html" class="nav-item">
131
- <span class="icon">&#128260;</span>
132
- <span class="nav-text">Ralph Loop</span>
85
+ <a href="ba-develop.html" class="nav-item nav-item-child">
86
+ <span class="icon">⚙️</span>
87
+ <span class="nav-text" data-lang="fr">BA Develop</span><span class="nav-text" data-lang="en">BA Develop</span>
133
88
  </a>
134
- <a href="apex.html" class="nav-item">
135
- <span class="icon">&#9881;</span>
136
- <span class="nav-text">APEX</span>
89
+ <a href="ralph-loop.html" class="nav-item">
90
+ <span class="icon">🔄</span>
91
+ <span class="nav-text" data-lang="fr">Ralph Loop</span><span class="nav-text" data-lang="en">Ralph Loop</span>
137
92
  </a>
138
93
  </div>
139
-
140
94
  <div class="nav-section">
141
95
  <div class="nav-section-title">
142
- <span data-lang="fr">Outils</span>
143
- <span data-lang="en">Tools</span>
96
+ <span data-lang="fr">Annuaire</span><span data-lang="en">Directory</span>
144
97
  </div>
98
+ <a href="commands.html" class="nav-item">
99
+ <span class="icon">⚡</span>
100
+ <span class="nav-text" data-lang="fr">Commandes Claude</span><span class="nav-text" data-lang="en">Claude Commands</span>
101
+ </a>
145
102
  <a href="cli-commands.html" class="nav-item">
146
- <span class="icon">&#128187;</span>
147
- <span class="nav-text" data-lang="fr">CLI SmartStack</span>
148
- <span class="nav-text" data-lang="en">SmartStack CLI</span>
103
+ <span class="icon">💻</span>
104
+ <span class="nav-text" data-lang="fr">CLI SmartStack</span><span class="nav-text" data-lang="en">SmartStack CLI</span>
149
105
  </a>
150
- <a href="agents.html" class="nav-item">
151
- <span class="icon">&#129302;</span>
152
- <span class="nav-text">Agents</span>
106
+ <a href="ba-skills.html" class="nav-item">
107
+ <span class="icon">📋</span>
108
+ <span class="nav-text" data-lang="fr">Skills BA</span><span class="nav-text" data-lang="en">BA Skills</span>
153
109
  </a>
154
- <a href="commands.html" class="nav-item">
155
- <span class="icon">&#9889;</span>
156
- <span class="nav-text" data-lang="fr">Commandes Claude</span>
157
- <span class="nav-text" data-lang="en">Claude Commands</span>
110
+ <a href="agents.html" class="nav-item">
111
+ <span class="icon">🤖</span>
112
+ <span class="nav-text" data-lang="fr">Agents</span><span class="nav-text" data-lang="en">Agents</span>
158
113
  </a>
159
114
  <a href="hooks.html" class="nav-item">
160
- <span class="icon">&#128279;</span>
161
- <span class="nav-text">Hooks</span>
162
- </a>
163
- <a href="test-web.html" class="nav-item">
164
- <span class="icon">&#127760;</span>
165
- <span class="nav-text">Test Web</span>
115
+ <span class="icon">🔗</span>
116
+ <span class="nav-text" data-lang="fr">Hooks</span><span class="nav-text" data-lang="en">Hooks</span>
166
117
  </a>
167
118
  </div>
168
119
  </nav>
169
120
 
170
121
  </aside>
171
122
 
172
- <!-- Main Content -->
173
123
  <main class="main-content">
174
- <div class="content-full">
175
-
176
- <!-- ============================================================ -->
177
- <!-- SECTION: INDEX RAPIDE -->
178
- <!-- ============================================================ -->
179
- <section id="quick-index">
180
- <h2>
181
- <span data-lang="fr">Index rapide des commandes</span>
182
- <span data-lang="en">Quick Command Index</span>
183
- </h2>
184
-
185
- <p data-lang="fr">
186
- Acces direct a toutes les commandes EF Core. Cliquez sur une commande pour voir sa documentation complete.
187
- </p>
188
- <p data-lang="en">
189
- Direct access to all EF Core commands. Click a command to see its full documentation.
190
- </p>
191
-
192
- <div class="table-container">
193
- <table>
194
- <thead>
195
- <tr>
196
- <th>
197
- <span data-lang="fr">Commande</span>
198
- <span data-lang="en">Command</span>
199
- </th>
200
- <th>Description</th>
201
- <th>Agent</th>
202
- <th>
203
- <span data-lang="fr">Risque</span>
204
- <span data-lang="en">Risk</span>
205
- </th>
206
- </tr>
207
- </thead>
208
- <tbody>
209
- <tr>
210
- <td><a href="#cmd-migration"><code>/efcore migration</code></a></td>
211
- <td>
212
- <span data-lang="fr">Creer/recreer la migration unique pour la branche</span>
213
- <span data-lang="en">Create/recreate the unique migration for the branch</span>
214
- </td>
215
- <td><code>efcore-migration</code></td>
216
- <td><span class="tag tag-workflow">MEDIUM</span></td>
217
- </tr>
218
- <tr>
219
- <td><a href="#cmd-db-status"><code>/efcore db-status</code></a></td>
220
- <td>
221
- <span data-lang="fr">Afficher l'etat des migrations et de la DB</span>
222
- <span data-lang="en">Show migrations and database status</span>
223
- </td>
224
- <td><code>efcore-db-status</code></td>
225
- <td><span class="tag tag-command">READ</span></td>
226
- </tr>
227
- <tr>
228
- <td><a href="#cmd-db-deploy"><code>/efcore db-deploy</code></a></td>
229
- <td>
230
- <span data-lang="fr">Appliquer les migrations en attente</span>
231
- <span data-lang="en">Apply pending migrations</span>
232
- </td>
233
- <td><code>efcore-db-deploy</code></td>
234
- <td><span class="tag tag-workflow">MEDIUM</span></td>
235
- </tr>
236
- <tr>
237
- <td><a href="#cmd-db-seed"><code>/efcore db-seed</code></a></td>
238
- <td>
239
- <span data-lang="fr">Peupler la base avec des donnees de test</span>
240
- <span data-lang="en">Populate database with test data</span>
241
- </td>
242
- <td><code>efcore-db-seed</code></td>
243
- <td><span class="tag tag-workflow">MEDIUM</span></td>
244
- </tr>
245
- <tr>
246
- <td><a href="#cmd-db-reset"><code>/efcore db-reset</code></a></td>
247
- <td>
248
- <span data-lang="fr">Supprimer et recreer la base (DESTRUCTIF)</span>
249
- <span data-lang="en">Drop and recreate database (DESTRUCTIVE)</span>
250
- </td>
251
- <td><code>efcore-db-reset</code></td>
252
- <td><span class="tag tag-danger">HIGH</span></td>
253
- </tr>
254
- <tr>
255
- <td><a href="#cmd-scan"><code>/efcore scan</code></a></td>
256
- <td>
257
- <span data-lang="fr">Scanner les migrations sur toutes les branches</span>
258
- <span data-lang="en">Scan migrations across all branches</span>
259
- </td>
260
- <td><code>efcore-scan</code></td>
261
- <td><span class="tag tag-command">READ</span></td>
262
- </tr>
263
- <tr>
264
- <td><a href="#cmd-conflicts"><code>/efcore conflicts</code></a></td>
265
- <td>
266
- <span data-lang="fr">Analyser les conflits avant merge (BLOQUANT)</span>
267
- <span data-lang="en">Analyze conflicts before merge (BLOCKING)</span>
268
- </td>
269
- <td><code>efcore-conflicts</code></td>
270
- <td><span class="tag tag-command">READ</span></td>
271
- </tr>
272
- <tr>
273
- <td><a href="#cmd-rebase-snapshot"><code>/efcore rebase-snapshot</code></a></td>
274
- <td>
275
- <span data-lang="fr">Rebaser ModelSnapshot sur develop</span>
276
- <span data-lang="en">Rebase ModelSnapshot on develop</span>
277
- </td>
278
- <td><code>efcore-rebase-snapshot</code></td>
279
- <td><span class="tag tag-warning">MEDIUM</span></td>
280
- </tr>
281
- <tr>
282
- <td><a href="#cmd-squash"><code>/efcore squash</code></a></td>
283
- <td>
284
- <span data-lang="fr">Fusionner plusieurs migrations en une seule</span>
285
- <span data-lang="en">Merge multiple migrations into one</span>
286
- </td>
287
- <td><code>efcore-squash</code></td>
288
- <td><span class="tag tag-danger">HIGH</span></td>
289
- </tr>
290
- </tbody>
291
- </table>
292
- </div>
293
-
294
- <div class="alert alert-info">
295
- <span class="alert-icon">&#128161;</span>
296
- <div class="alert-content">
297
- <h5 data-lang="fr">Workflow typique</h5>
298
- <h5 data-lang="en">Typical Workflow</h5>
299
- <p data-lang="fr">
300
- <code>/efcore db-status</code> → <code>/efcore migration</code> → <code>/efcore db-deploy</code> → <code>/gitflow commit</code>
301
- </p>
302
- <p data-lang="en">
303
- <code>/efcore db-status</code> → <code>/efcore migration</code> → <code>/efcore db-deploy</code> → <code>/gitflow commit</code>
304
- </p>
305
- </div>
306
- </div>
307
- </section>
308
-
309
- <!-- ============================================================ -->
310
- <!-- SECTION: INTRODUCTION -->
311
- <!-- ============================================================ -->
312
- <section id="introduction">
313
- <h2>Introduction</h2>
314
- <p data-lang="fr">
315
- Entity Framework Core (EF Core) est l'ORM officiel de Microsoft pour .NET. SmartStack CLI integre une gestion avancee des migrations EF Core dans le workflow GitFlow, incluant la detection de conflits, la validation des migrations et la generation de scripts SQL idempotents.
316
- </p>
317
- <p data-lang="en">
318
- Entity Framework Core (EF Core) is Microsoft's official ORM for .NET. SmartStack CLI integrates advanced EF Core migration management into the GitFlow workflow, including conflict detection, migration validation, and idempotent SQL script generation.
319
- </p>
320
-
321
- <div class="alert alert-info">
322
- <span class="alert-icon">&#128161;</span>
323
- <div class="alert-content">
324
- <h5 data-lang="fr">Integration automatique</h5>
325
- <h5 data-lang="en">Automatic Integration</h5>
326
- <p data-lang="fr">
327
- SmartStack CLI detecte automatiquement les projets .NET utilisant EF Core lors de l'initialisation avec <code>/gitflow init</code>.
328
- </p>
329
- <p data-lang="en">
330
- SmartStack CLI automatically detects .NET projects using EF Core during initialization with <code>/gitflow init</code>.
331
- </p>
332
- </div>
333
- </div>
334
-
335
- <h3 data-lang="fr">Fonctionnalites principales</h3>
336
- <h3 data-lang="en">Key Features</h3>
337
-
338
- <div class="card-grid">
339
- <div class="card">
340
- <div class="card-header">
341
- <div class="card-icon" style="background: var(--primary);">&#128452;</div>
342
- <div>
343
- <div class="card-title" data-lang="fr">1 Migration par Feature</div>
344
- <div class="card-title" data-lang="en">1 Migration per Feature</div>
345
- <div class="card-subtitle" data-lang="fr">Regle d'or</div>
346
- <div class="card-subtitle" data-lang="en">Golden rule</div>
347
- </div>
348
- </div>
349
- <div class="card-body">
350
- <p data-lang="fr">Chaque branche feature/hotfix a exactement une migration. Si des changements sont necessaires, elle est supprimee et recreee.</p>
351
- <p data-lang="en">Each feature/hotfix branch has exactly one migration. If changes are needed, it's deleted and recreated.</p>
352
- </div>
353
- </div>
354
-
355
- <div class="card">
356
- <div class="card-header">
357
- <div class="card-icon" style="background: var(--success);">&#128256;</div>
358
- <div>
359
- <div class="card-title">Cross-Branch</div>
360
- <div class="card-subtitle" data-lang="fr">Detection de conflits</div>
361
- <div class="card-subtitle" data-lang="en">Conflict detection</div>
362
- </div>
363
- </div>
364
- <div class="card-body">
365
- <p data-lang="fr">Analyse des ModelSnapshots sur toutes les branches actives pour prevenir les conflits avant le merge.</p>
366
- <p data-lang="en">Analyze ModelSnapshots across all active branches to prevent conflicts before merge.</p>
367
- </div>
368
- </div>
369
-
370
- <div class="card">
371
- <div class="card-header">
372
- <div class="card-icon" style="background: var(--warning);">&#128274;</div>
373
- <div>
374
- <div class="card-title" data-lang="fr">Securite</div>
375
- <div class="card-title" data-lang="en">Safety</div>
376
- <div class="card-subtitle" data-lang="fr">Operations protegees</div>
377
- <div class="card-subtitle" data-lang="en">Protected operations</div>
378
- </div>
379
- </div>
380
- <div class="card-body">
381
- <p data-lang="fr">Backup automatique avant operations destructives. Detection des DropTable, DropColumn, DeleteData.</p>
382
- <p data-lang="en">Automatic backup before destructive operations. Detection of DropTable, DropColumn, DeleteData.</p>
383
- </div>
384
- </div>
385
- </div>
386
- </section>
387
-
388
- <!-- ============================================================ -->
389
- <!-- SECTION: COMPRENDRE EF CORE -->
390
- <!-- ============================================================ -->
391
- <section id="understanding">
392
- <h2>
393
- <span data-lang="fr">Comprendre EF Core et les Migrations</span>
394
- <span data-lang="en">Understanding EF Core and Migrations</span>
395
- </h2>
396
-
397
- <h3 data-lang="fr">Qu'est-ce qu'une Migration ?</h3>
398
- <h3 data-lang="en">What is a Migration?</h3>
399
-
400
- <p data-lang="fr">
401
- Une migration EF Core represente un changement incrementiel du schema de votre base de donnees. Elle capture les differences entre l'etat actuel de vos entites C# et l'etat precedent.
402
- </p>
403
- <p data-lang="en">
404
- An EF Core migration represents an incremental change to your database schema. It captures the differences between the current state of your C# entities and the previous state.
405
- </p>
406
-
407
- <h3 data-lang="fr">Les 3 fichiers d'une Migration</h3>
408
- <h3 data-lang="en">The 3 Files of a Migration</h3>
409
-
410
- <p data-lang="fr">Une migration EF Core valide comprend <strong>3 fichiers</strong> :</p>
411
- <p data-lang="en">A valid EF Core migration includes <strong>3 files</strong>:</p>
412
-
413
- <div class="table-container">
414
- <table>
415
- <thead>
416
- <tr>
417
- <th>Fichier / File</th>
418
- <th>
419
- <span data-lang="fr">Description</span>
420
- <span data-lang="en">Description</span>
421
- </th>
422
- <th>
423
- <span data-lang="fr">Role</span>
424
- <span data-lang="en">Role</span>
425
- </th>
426
- </tr>
427
- </thead>
428
- <tbody>
429
- <tr>
430
- <td><code>{Timestamp}_{Name}.cs</code></td>
431
- <td>
432
- <span data-lang="fr">Migration principale</span>
433
- <span data-lang="en">Main migration</span>
434
- </td>
435
- <td>
436
- <span data-lang="fr">Contient <code>Up()</code> et <code>Down()</code></span>
437
- <span data-lang="en">Contains <code>Up()</code> and <code>Down()</code></span>
438
- </td>
439
- </tr>
440
- <tr>
441
- <td><code>{Timestamp}_{Name}.Designer.cs</code></td>
442
- <td>
443
- <span data-lang="fr">Metadonnees</span>
444
- <span data-lang="en">Metadata</span>
445
- </td>
446
- <td>
447
- <span data-lang="fr">Snapshot du modele au moment de la creation</span>
448
- <span data-lang="en">Model snapshot at creation time</span>
449
- </td>
450
- </tr>
451
- <tr>
452
- <td><code>{Context}ModelSnapshot.cs</code></td>
453
- <td>
454
- <span data-lang="fr">Etat actuel</span>
455
- <span data-lang="en">Current state</span>
456
- </td>
457
- <td>
458
- <span data-lang="fr">Modele complet - <strong>source de conflits!</strong></span>
459
- <span data-lang="en">Full model - <strong>conflict source!</strong></span>
460
- </td>
461
- </tr>
462
- </tbody>
463
- </table>
464
- </div>
465
-
466
- <div class="svg-diagram">
467
- <svg viewBox="0 0 700 320" xmlns="http://www.w3.org/2000/svg" style="font-family: 'Inter', system-ui, sans-serif;">
468
- <defs>
469
- <linearGradient id="migrationGrad" x1="0%" y1="0%" x2="100%" y2="100%">
470
- <stop offset="0%" style="stop-color:#22c55e"/>
471
- <stop offset="100%" style="stop-color:#15803d"/>
472
- </linearGradient>
473
- <linearGradient id="designerGrad" x1="0%" y1="0%" x2="100%" y2="100%">
474
- <stop offset="0%" style="stop-color:#3b82f6"/>
475
- <stop offset="100%" style="stop-color:#1d4ed8"/>
476
- </linearGradient>
477
- <linearGradient id="snapshotGrad" x1="0%" y1="0%" x2="100%" y2="100%">
478
- <stop offset="0%" style="stop-color:#f97316"/>
479
- <stop offset="100%" style="stop-color:#c2410c"/>
480
- </linearGradient>
481
- <filter id="efGlow" x="-20%" y="-20%" width="140%" height="140%">
482
- <feGaussianBlur stdDeviation="3" result="coloredBlur"/>
483
- <feMerge>
484
- <feMergeNode in="coloredBlur"/>
485
- <feMergeNode in="SourceGraphic"/>
486
- </feMerge>
487
- </filter>
488
- </defs>
489
-
490
- <!-- Title -->
491
- <text x="350" y="30" text-anchor="middle" fill="#e2e8f0" font-size="16" font-weight="600">Migration Structure (3 Files)</text>
492
-
493
- <!-- Migration.cs file -->
494
- <g transform="translate(50, 60)" filter="url(#efGlow)">
495
- <rect x="0" y="0" width="180" height="100" rx="8" fill="url(#migrationGrad)"/>
496
- <rect x="0" y="0" width="180" height="30" rx="8" fill="rgba(0,0,0,0.2)"/>
497
- <text x="90" y="20" text-anchor="middle" fill="white" font-size="11" font-weight="600">{Name}.cs</text>
498
- <text x="15" y="52" fill="rgba(255,255,255,0.9)" font-size="10">Up()</text>
499
- <text x="15" y="68" fill="rgba(255,255,255,0.7)" font-size="9">&#8594; Apply changes</text>
500
- <text x="15" y="85" fill="rgba(255,255,255,0.9)" font-size="10">Down()</text>
501
- <text x="15" y="98" fill="rgba(255,255,255,0.7)" font-size="9">&#8594; Rollback changes</text>
502
- </g>
503
-
504
- <!-- Designer.cs file -->
505
- <g transform="translate(260, 60)" filter="url(#efGlow)">
506
- <rect x="0" y="0" width="180" height="100" rx="8" fill="url(#designerGrad)"/>
507
- <rect x="0" y="0" width="180" height="30" rx="8" fill="rgba(0,0,0,0.2)"/>
508
- <text x="90" y="20" text-anchor="middle" fill="white" font-size="11" font-weight="600">{Name}.Designer.cs</text>
509
- <text x="15" y="52" fill="rgba(255,255,255,0.9)" font-size="10">Metadata</text>
510
- <text x="15" y="68" fill="rgba(255,255,255,0.7)" font-size="9">&#8594; MigrationId</text>
511
- <text x="15" y="82" fill="rgba(255,255,255,0.7)" font-size="9">&#8594; ProductVersion</text>
512
- <text x="15" y="98" fill="rgba(255,255,255,0.7)" font-size="9">&#8594; Model snapshot at time</text>
513
- </g>
514
-
515
- <!-- ModelSnapshot.cs file -->
516
- <g transform="translate(470, 60)" filter="url(#efGlow)">
517
- <rect x="0" y="0" width="180" height="100" rx="8" fill="url(#snapshotGrad)"/>
518
- <rect x="0" y="0" width="180" height="30" rx="8" fill="rgba(0,0,0,0.2)"/>
519
- <text x="90" y="20" text-anchor="middle" fill="white" font-size="11" font-weight="600">ModelSnapshot.cs</text>
520
- <text x="15" y="52" fill="rgba(255,255,255,0.9)" font-size="10">Current State</text>
521
- <text x="15" y="68" fill="rgba(255,255,255,0.7)" font-size="9">&#8594; Full model definition</text>
522
- <text x="15" y="82" fill="rgba(255,255,255,0.7)" font-size="9">&#8594; All entities &amp; relations</text>
523
- <text x="15" y="98" fill="rgba(255,255,255,0.7)" font-size="9">&#8594; &#9888;&#65039; Conflict source</text>
524
- </g>
525
-
526
- <!-- Connection arrows -->
527
- <path d="M 230 110 L 260 110" stroke="#94a3b8" stroke-width="2" fill="none"/>
528
- <polygon points="258,105 268,110 258,115" fill="#94a3b8"/>
529
-
530
- <path d="M 440 110 L 470 110" stroke="#94a3b8" stroke-width="2" fill="none"/>
531
- <polygon points="468,105 478,110 468,115" fill="#94a3b8"/>
532
-
533
- <!-- Flow explanation -->
534
- <g transform="translate(50, 190)">
535
- <rect x="0" y="0" width="600" height="110" rx="8" fill="#1e293b" stroke="#334155" stroke-width="1"/>
536
-
537
- <!-- Step 1 -->
538
- <circle cx="50" cy="35" r="18" fill="#22c55e"/>
539
- <text x="50" y="40" text-anchor="middle" fill="white" font-size="12" font-weight="700">1</text>
540
- <text x="85" y="30" fill="#e2e8f0" font-size="11" font-weight="500">Model Change</text>
541
- <text x="85" y="45" fill="#94a3b8" font-size="9">Edit your DbContext entities</text>
542
-
543
- <!-- Arrow -->
544
- <path d="M 180 35 L 210 35" stroke="#94a3b8" stroke-width="1.5"/>
545
- <polygon points="208,31 218,35 208,39" fill="#94a3b8"/>
546
-
547
- <!-- Step 2 -->
548
- <circle cx="240" cy="35" r="18" fill="#3b82f6"/>
549
- <text x="240" y="40" text-anchor="middle" fill="white" font-size="12" font-weight="700">2</text>
550
- <text x="275" y="30" fill="#e2e8f0" font-size="11" font-weight="500">Add Migration</text>
551
- <text x="275" y="45" fill="#94a3b8" font-size="9">dotnet ef migrations add</text>
552
-
553
- <!-- Arrow -->
554
- <path d="M 380 35 L 410 35" stroke="#94a3b8" stroke-width="1.5"/>
555
- <polygon points="408,31 418,35 408,39" fill="#94a3b8"/>
556
-
557
- <!-- Step 3 -->
558
- <circle cx="440" cy="35" r="18" fill="#f97316"/>
559
- <text x="440" y="40" text-anchor="middle" fill="white" font-size="12" font-weight="700">3</text>
560
- <text x="475" y="30" fill="#e2e8f0" font-size="11" font-weight="500">3 Files Generated</text>
561
- <text x="475" y="45" fill="#94a3b8" font-size="9">Commit all together!</text>
562
-
563
- <!-- Warning box -->
564
- <rect x="20" y="65" width="560" height="35" rx="4" fill="rgba(249, 115, 22, 0.1)" stroke="#f97316" stroke-width="1"/>
565
- <text x="40" y="85" fill="#f97316" font-size="10">&#9888;&#65039;</text>
566
- <text x="60" y="85" fill="#f97316" font-size="10" font-weight="500">ModelSnapshot.cs is regenerated on EVERY migration - source of merge conflicts!</text>
567
- </g>
568
- </svg>
569
- </div>
570
-
571
- <div class="code-block">
572
- <pre><code>Migrations/
573
- &#9500;&#9472;&#9472; 20240101120000_InitialCreate.cs
574
- &#9500;&#9472;&#9472; 20240101120000_InitialCreate.Designer.cs
575
- &#9500;&#9472;&#9472; 20240115150000_AddUserTable.cs
576
- &#9500;&#9472;&#9472; 20240115150000_AddUserTable.Designer.cs
577
- &#9492;&#9472;&#9472; ApplicationDbContextModelSnapshot.cs &#8592; Fichier critique</code></pre>
578
- </div>
579
-
580
- <div class="alert alert-warning">
581
- <span class="alert-icon">&#9888;</span>
582
- <div class="alert-content">
583
- <h5>ModelSnapshot - Le point de conflit</h5>
584
- <p data-lang="fr">
585
- Le fichier <code>ModelSnapshot.cs</code> represente l'etat actuel du modele. Il est regenere a <strong>chaque</strong> nouvelle migration. C'est la source principale de conflits lors des merges entre branches.
586
- </p>
587
- <p data-lang="en">
588
- The <code>ModelSnapshot.cs</code> file represents the current model state. It's regenerated on <strong>every</strong> new migration. It's the main source of conflicts when merging branches.
589
- </p>
590
- </div>
591
- </div>
592
- </section>
593
-
594
- <!-- ============================================================ -->
595
- <!-- SECTION: DUAL DBCONTEXT ARCHITECTURE -->
596
- <!-- ============================================================ -->
597
- <section id="dual-dbcontext">
598
- <h2>
599
- <span data-lang="fr">Architecture Dual DbContext</span>
600
- <span data-lang="en">Dual DbContext Architecture</span>
601
- </h2>
602
-
603
- <p data-lang="fr">
604
- SmartStack utilise <strong>deux DbContexts separes</strong> avec des historiques de migration independants. Cette architecture permet de separer le code plateforme (SmartStack) du code client.
605
- </p>
606
- <p data-lang="en">
607
- SmartStack uses <strong>two separate DbContexts</strong> with independent migration histories. This architecture separates platform code (SmartStack) from client code.
608
- </p>
609
-
610
- <div class="table-container">
611
- <table>
612
- <thead>
613
- <tr>
614
- <th>Context</th>
615
- <th>DbContext</th>
616
- <th>Schema</th>
617
- <th>History Table</th>
618
- <th>
619
- <span data-lang="fr">Utilisation</span>
620
- <span data-lang="en">Use Case</span>
621
- </th>
622
- </tr>
623
- </thead>
624
- <tbody>
625
- <tr>
626
- <td><code>core</code></td>
627
- <td><code>CoreDbContext</code></td>
628
- <td><code>core</code></td>
629
- <td><code>core.__EFMigrationsHistory</code></td>
630
- <td>
631
- <span data-lang="fr">Entites plateforme SmartStack (User, Role, Navigation, etc.)</span>
632
- <span data-lang="en">SmartStack platform entities (User, Role, Navigation, etc.)</span>
633
- </td>
634
- </tr>
635
- <tr>
636
- <td><code>extensions</code></td>
637
- <td><code>ExtensionsDbContext</code></td>
638
- <td><code>extensions</code></td>
639
- <td><code>extensions.__EFMigrationsHistory</code></td>
640
- <td>
641
- <span data-lang="fr">Entites specifiques au client</span>
642
- <span data-lang="en">Client-specific entities</span>
643
- </td>
644
- </tr>
645
- </tbody>
646
- </table>
647
- </div>
648
-
649
- <h3 data-lang="fr">Detection automatique</h3>
650
- <h3 data-lang="en">Automatic Detection</h3>
651
-
652
- <p data-lang="fr">Le systeme detecte automatiquement quel DbContext utiliser :</p>
653
- <p data-lang="en">The system automatically detects which DbContext to use:</p>
654
-
655
- <ol class="steps-list">
656
- <li>
657
- <div class="step-content">
658
- <p data-lang="fr">Si le projet contient <code>SmartStack.Domain</code> → <code>CoreDbContext</code></p>
659
- <p data-lang="en">If project contains <code>SmartStack.Domain</code> → <code>CoreDbContext</code></p>
660
- </div>
661
- </li>
662
- <li>
663
- <div class="step-content">
664
- <p data-lang="fr">Si le projet contient un <code>{ClientName}.Domain</code> avec NuGet SmartStack → <code>ExtensionsDbContext</code></p>
665
- <p data-lang="en">If project contains <code>{ClientName}.Domain</code> with SmartStack NuGet → <code>ExtensionsDbContext</code></p>
666
- </div>
667
- </li>
668
- <li>
669
- <div class="step-content">
670
- <p data-lang="fr">Si ambigue → demande a l'utilisateur</p>
671
- <p data-lang="en">If ambiguous → asks user</p>
672
- </div>
673
- </li>
674
- </ol>
675
-
676
- <div class="alert alert-warning">
677
- <span class="alert-icon">&#9888;</span>
678
- <div class="alert-content">
679
- <h5 data-lang="fr">Regles importantes</h5>
680
- <h5 data-lang="en">Important Rules</h5>
681
- <div class="feature-grid">
682
- <div class="feature-item">
683
- <span class="feature-icon">&#128274;</span>
684
- <span class="feature-text" data-lang="fr">Les entites Extensions ne peuvent <strong>pas</strong> avoir de navigation properties vers les entites Core</span>
685
- <span class="feature-text" data-lang="en">Extensions entities <strong>cannot</strong> have navigation properties to Core entities</span>
686
- </div>
687
- <div class="feature-item">
688
- <span class="feature-icon">&#128279;</span>
689
- <span class="feature-text" data-lang="fr">Utilisez <code>ICoreDataService</code> pour acceder aux donnees Core depuis Extensions</span>
690
- <span class="feature-text" data-lang="en">Use <code>ICoreDataService</code> to access Core data from Extensions</span>
691
- </div>
692
- <div class="feature-item">
693
- <span class="feature-icon">&#128451;</span>
694
- <span class="feature-text" data-lang="fr">Chaque DbContext a sa propre table <code>__EFMigrationsHistory</code></span>
695
- <span class="feature-text" data-lang="en">Each DbContext has its own <code>__EFMigrationsHistory</code> table</span>
696
- </div>
697
- <div class="feature-item">
698
- <span class="feature-icon">&#128260;</span>
699
- <span class="feature-text" data-lang="fr">Migrations appliquees dans l'ordre : Core d'abord, puis Extensions</span>
700
- <span class="feature-text" data-lang="en">Migrations applied in order: Core first, then Extensions</span>
701
- </div>
702
- </div>
703
- </div>
704
- </div>
705
-
706
- <div class="code-block">
707
- <button class="copy-btn">Copy</button>
708
- <pre><code># Core migrations (SmartStack platform)
709
- dotnet ef migrations add $MCP_NAME --context CoreDbContext -o Persistence/Migrations
710
-
711
- # Extensions migrations (Client specific)
712
- dotnet ef migrations add $MCP_NAME --context ExtensionsDbContext -o Persistence/Migrations
713
-
714
- # Note: $MCP_NAME is generated by mcp__smartstack__suggest_migration</code></pre>
715
- </div>
716
- </section>
717
-
718
- <!-- ============================================================ -->
719
- <!-- SECTION: REGLE 1 MIGRATION PAR FEATURE -->
720
- <!-- ============================================================ -->
721
- <section id="one-migration-rule">
722
- <h2>
723
- <span data-lang="fr">La regle "1 Migration par Feature"</span>
724
- <span data-lang="en">The "1 Migration per Feature" Rule</span>
725
- </h2>
726
-
727
- <div class="alert alert-info">
728
- <span class="alert-icon">&#127919;</span>
729
- <div class="alert-content">
730
- <h5 data-lang="fr">Regle d'or</h5>
731
- <h5 data-lang="en">Golden Rule</h5>
732
- <p data-lang="fr">
733
- <strong>Chaque branche feature/hotfix doit avoir exactement 1 seule migration.</strong> Si elle existe deja et que vous devez la modifier, supprimez-la et recreez-la.
734
- </p>
735
- <p data-lang="en">
736
- <strong>Each feature/hotfix branch must have exactly 1 migration.</strong> If it already exists and you need to modify it, delete and recreate it.
737
- </p>
738
- </div>
739
- </div>
740
-
741
- <h3 data-lang="fr">Pourquoi cette regle ?</h3>
742
- <h3 data-lang="en">Why this rule?</h3>
743
-
744
- <div class="table-container">
745
- <table>
746
- <thead>
747
- <tr>
748
- <th>
749
- <span data-lang="fr">Probleme</span>
750
- <span data-lang="en">Problem</span>
751
- </th>
752
- <th>
753
- <span data-lang="fr">Solution avec 1 migration</span>
754
- <span data-lang="en">Solution with 1 migration</span>
755
- </th>
756
- </tr>
757
- </thead>
758
- <tbody>
759
- <tr>
760
- <td>
761
- <span data-lang="fr">Conflits de merge sur ModelSnapshot</span>
762
- <span data-lang="en">ModelSnapshot merge conflicts</span>
763
- </td>
764
- <td>
765
- <span data-lang="fr">1 seul point de conflit, facile a resoudre</span>
766
- <span data-lang="en">Single conflict point, easy to resolve</span>
767
- </td>
768
- </tr>
769
- <tr>
770
- <td>
771
- <span data-lang="fr">Historique de migrations pollue</span>
772
- <span data-lang="en">Polluted migration history</span>
773
- </td>
774
- <td>
775
- <span data-lang="fr">Historique propre et lisible</span>
776
- <span data-lang="en">Clean and readable history</span>
777
- </td>
778
- </tr>
779
- <tr>
780
- <td>
781
- <span data-lang="fr">Ordre de migrations complexe</span>
782
- <span data-lang="en">Complex migration ordering</span>
783
- </td>
784
- <td>
785
- <span data-lang="fr">Ordre simple : 1 feature = 1 migration</span>
786
- <span data-lang="en">Simple order: 1 feature = 1 migration</span>
787
- </td>
788
- </tr>
789
- <tr>
790
- <td>
791
- <span data-lang="fr">Rollback difficile</span>
792
- <span data-lang="en">Difficult rollback</span>
793
- </td>
794
- <td>
795
- <span data-lang="fr">Rollback simple de la feature entiere</span>
796
- <span data-lang="en">Simple rollback of entire feature</span>
797
- </td>
798
- </tr>
799
- </tbody>
800
- </table>
801
- </div>
802
-
803
- <h3 data-lang="fr">Pattern de nommage (MCP obligatoire)</h3>
804
- <h3 data-lang="en">Naming Pattern (MCP mandatory)</h3>
805
-
806
- <div class="alert alert-info">
807
- <span class="alert-icon">&#128274;</span>
808
- <div class="alert-content">
809
- <h5 data-lang="fr">Nommage via MCP</h5>
810
- <h5 data-lang="en">Naming via MCP</h5>
811
- <p data-lang="fr">
812
- Le nom de migration est <strong>toujours genere par le MCP</strong> via <code>mcp__smartstack__suggest_migration</code>. Ne jamais calculer le nom manuellement.
813
- </p>
814
- <p data-lang="en">
815
- Migration name is <strong>always generated by MCP</strong> via <code>mcp__smartstack__suggest_migration</code>. Never calculate the name manually.
816
- </p>
817
- </div>
818
- </div>
819
-
820
- <div class="code-block">
821
- <pre><code>{context}_v{version}_{sequence}_{Description}</code></pre>
822
- </div>
823
-
824
- <div class="table-container">
825
- <table>
826
- <thead>
827
- <tr>
828
- <th>Context</th>
829
- <th>Version</th>
830
- <th>Sequence</th>
831
- <th>Description</th>
832
- <th>
833
- <span data-lang="fr">Nom genere (MCP)</span>
834
- <span data-lang="en">Generated name (MCP)</span>
835
- </th>
836
- </tr>
837
- </thead>
838
- <tbody>
839
- <tr>
840
- <td><code>core</code></td>
841
- <td>1.9.0</td>
842
- <td>001</td>
843
- <td>AddUserRoles</td>
844
- <td><code>core_v1.9.0_001_AddUserRoles</code></td>
845
- </tr>
846
- <tr>
847
- <td><code>extensions</code></td>
848
- <td>1.2.0</td>
849
- <td>001</td>
850
- <td>AddCustomFields</td>
851
- <td><code>extensions_v1.2.0_001_AddCustomFields</code></td>
852
- </tr>
853
- <tr>
854
- <td><code>core</code></td>
855
- <td>1.7.0</td>
856
- <td>001</td>
857
- <td>UserAuthConsolidated</td>
858
- <td><code>core_v1.7.0_001_UserAuthConsolidated</code></td>
859
- </tr>
860
- </tbody>
861
- </table>
862
- </div>
863
-
864
- <h3 data-lang="fr">Workflow pratique</h3>
865
- <h3 data-lang="en">Practical Workflow</h3>
866
-
867
- <div class="code-block">
868
- <button class="copy-btn">Copy</button>
869
- <pre><code># Situation: You already have a migration and need to modify the model
870
-
871
- # 1. Check current state
872
- /efcore db-status
873
-
874
- # 2. See there's already 1 migration for this branch
875
- # Output: "1 migration for feature/user-auth"
876
-
877
- # 3. Create/Recreate migration (deletes old one automatically)
878
- /efcore migration
879
-
880
- # 4. Choose "Recreate" when prompted
881
- # 5. Enter description (e.g., "AddRolesTable")
882
- # 6. Apply to local DB
883
- /efcore db-deploy
884
-
885
- # 7. Commit
886
- /gitflow commit</code></pre>
887
- </div>
888
- </section>
889
-
890
- <!-- ============================================================ -->
891
- <!-- SECTION: COMMANDES -->
892
- <!-- ============================================================ -->
893
- <section id="commands">
894
- <h2>
895
- <span data-lang="fr">Documentation des Commandes</span>
896
- <span data-lang="en">Command Documentation</span>
897
- </h2>
898
-
899
- <p data-lang="fr">
900
- SmartStack CLI fournit 9 commandes specialisees pour gerer les migrations EF Core. Chaque commande utilise un agent dedie optimise pour sa tache.
901
- </p>
902
- <p data-lang="en">
903
- SmartStack CLI provides 9 specialized commands for EF Core migration management. Each command uses a dedicated agent optimized for its task.
904
- </p>
905
-
906
- <!-- ==================== /efcore migration ==================== -->
907
- <div class="command-card" id="cmd-migration">
908
- <div class="command-header">
909
- <code class="command-name">/efcore migration</code>
910
- <span class="tag tag-workflow">MEDIUM</span>
911
- </div>
912
- <div class="command-body">
913
- <p data-lang="fr">
914
- Cette commande applique la regle d'or "1 migration par feature" : chaque branche feature ou hotfix ne doit avoir qu'une seule migration. Si vous modifiez le modele de donnees plusieurs fois pendant le developpement, la commande detecte la migration existante, la supprime, et en cree une nouvelle qui consolide tous les changements. Avant de creer, elle effectue une validation cross-branch pour detecter les conflits potentiels avec d'autres branches actives. Le nom de migration suit un pattern standardise incluant le type de branche, la version, et une description. Cette approche garantit un historique de migrations propre et evite les conflits lors des merges.
915
- </p>
916
- <p data-lang="en">
917
- This command enforces the "1 migration per feature" golden rule: each feature or hotfix branch should have only one migration. If you modify the data model multiple times during development, the command detects the existing migration, deletes it, and creates a new one that consolidates all changes. Before creating, it performs cross-branch validation to detect potential conflicts with other active branches. The migration name follows a standardized pattern including branch type, version, and description. This approach ensures a clean migration history and prevents conflicts during merges.
918
- </p>
919
-
920
- <div class="table-container">
921
- <table>
922
- <tbody>
923
- <tr>
924
- <td><strong>Agent</strong></td>
925
- <td><code>efcore-migration</code></td>
926
- </tr>
927
- <tr>
928
- <td><strong>Model</strong></td>
929
- <td>sonnet</td>
930
- </tr>
931
- <tr>
932
- <td><strong>Tools</strong></td>
933
- <td>Bash, Glob, Read, Edit</td>
934
- </tr>
935
- </tbody>
936
- </table>
937
- </div>
938
-
939
- <h4 data-lang="fr">Workflow en 9 etapes</h4>
940
- <h4 data-lang="en">9-Step Workflow</h4>
941
-
942
- <div class="workflow-stepper-vertical" data-lang="fr">
943
- <div class="step-item">
944
- <div class="step-number step-validate">1</div>
945
- <div class="step-content">
946
- <div class="step-title">Cross-Branch</div>
947
- <div class="step-desc">Verifie les conflits cross-branch</div>
948
- </div>
949
- </div>
950
- <div class="step-item">
951
- <div class="step-number step-analyze">2</div>
952
- <div class="step-content">
953
- <div class="step-title">Contexte Git</div>
954
- <div class="step-desc">Branche, type, version</div>
955
- </div>
956
- </div>
957
- <div class="step-item">
958
- <div class="step-number step-detect">3</div>
959
- <div class="step-content">
960
- <div class="step-title">Detection</div>
961
- <div class="step-desc">Trouver le .csproj EF Core</div>
962
- </div>
963
- </div>
964
- <div class="step-item">
965
- <div class="step-number step-search">4</div>
966
- <div class="step-content">
967
- <div class="step-title">Recherche</div>
968
- <div class="step-desc">Migration existante?</div>
969
- </div>
970
- </div>
971
- <div class="step-item">
972
- <div class="step-number step-decision">5</div>
973
- <div class="step-content">
974
- <div class="step-title">Decision</div>
975
- <div class="step-desc">Creer ou Recreer</div>
976
- </div>
977
- </div>
978
- <div class="step-item">
979
- <div class="step-number step-input">6</div>
980
- <div class="step-content">
981
- <div class="step-title">Description</div>
982
- <div class="step-desc">Add, Update, Fix, Remove</div>
983
- </div>
984
- </div>
985
- <div class="step-item">
986
- <div class="step-number step-generate">7</div>
987
- <div class="step-content">
988
- <div class="step-title">Nommage</div>
989
- <div class="step-desc">Pattern standardise</div>
990
- </div>
991
- </div>
992
- <div class="step-item">
993
- <div class="step-number step-create">8</div>
994
- <div class="step-content">
995
- <div class="step-title">Creation</div>
996
- <div class="step-desc">dotnet ef migrations add</div>
997
- </div>
998
- </div>
999
- <div class="step-item">
1000
- <div class="step-number step-confirm">9</div>
1001
- <div class="step-content">
1002
- <div class="step-title">Validation</div>
1003
- <div class="step-desc">Apercu et confirmation</div>
1004
- </div>
1005
- </div>
1006
- </div>
1007
-
1008
- <div class="workflow-stepper-vertical" data-lang="en">
1009
- <div class="step-item">
1010
- <div class="step-number step-validate">1</div>
1011
- <div class="step-content">
1012
- <div class="step-title">Cross-Branch</div>
1013
- <div class="step-desc">Check cross-branch conflicts</div>
1014
- </div>
1015
- </div>
1016
- <div class="step-item">
1017
- <div class="step-number step-analyze">2</div>
1018
- <div class="step-content">
1019
- <div class="step-title">Git Context</div>
1020
- <div class="step-desc">Branch, type, version</div>
1021
- </div>
1022
- </div>
1023
- <div class="step-item">
1024
- <div class="step-number step-detect">3</div>
1025
- <div class="step-content">
1026
- <div class="step-title">Detection</div>
1027
- <div class="step-desc">Find EF Core .csproj</div>
1028
- </div>
1029
- </div>
1030
- <div class="step-item">
1031
- <div class="step-number step-search">4</div>
1032
- <div class="step-content">
1033
- <div class="step-title">Search</div>
1034
- <div class="step-desc">Existing migration?</div>
1035
- </div>
1036
- </div>
1037
- <div class="step-item">
1038
- <div class="step-number step-decision">5</div>
1039
- <div class="step-content">
1040
- <div class="step-title">Decision</div>
1041
- <div class="step-desc">Create or Recreate</div>
1042
- </div>
1043
- </div>
1044
- <div class="step-item">
1045
- <div class="step-number step-input">6</div>
1046
- <div class="step-content">
1047
- <div class="step-title">Description</div>
1048
- <div class="step-desc">Add, Update, Fix, Remove</div>
1049
- </div>
1050
- </div>
1051
- <div class="step-item">
1052
- <div class="step-number step-generate">7</div>
1053
- <div class="step-content">
1054
- <div class="step-title">Naming</div>
1055
- <div class="step-desc">Standardized pattern</div>
1056
- </div>
1057
- </div>
1058
- <div class="step-item">
1059
- <div class="step-number step-create">8</div>
1060
- <div class="step-content">
1061
- <div class="step-title">Creation</div>
1062
- <div class="step-desc">dotnet ef migrations add</div>
1063
- </div>
1064
- </div>
1065
- <div class="step-item">
1066
- <div class="step-number step-confirm">9</div>
1067
- <div class="step-content">
1068
- <div class="step-title">Validation</div>
1069
- <div class="step-desc">Preview and confirm</div>
1070
- </div>
1071
- </div>
1072
- </div>
1073
-
1074
- <h4>Options</h4>
1075
- <div class="table-container">
1076
- <table>
1077
- <thead>
1078
- <tr>
1079
- <th>Option</th>
1080
- <th>Description</th>
1081
- </tr>
1082
- </thead>
1083
- <tbody>
1084
- <tr>
1085
- <td><code>--name {name}</code></td>
1086
- <td>
1087
- <span data-lang="fr">Forcer un nom specifique</span>
1088
- <span data-lang="en">Force a specific name</span>
1089
- </td>
1090
- </tr>
1091
- <tr>
1092
- <td><code>--no-apply</code></td>
1093
- <td>
1094
- <span data-lang="fr">Ne pas proposer d'appliquer</span>
1095
- <span data-lang="en">Don't offer to apply</span>
1096
- </td>
1097
- </tr>
1098
- <tr>
1099
- <td><code>--force</code></td>
1100
- <td>
1101
- <span data-lang="fr">Supprimer l'existante sans confirmation</span>
1102
- <span data-lang="en">Delete existing without confirmation</span>
1103
- </td>
1104
- </tr>
1105
- <tr>
1106
- <td><code>--no-cross-check</code></td>
1107
- <td>
1108
- <span data-lang="fr">Desactiver validation cross-branch</span>
1109
- <span data-lang="en">Disable cross-branch validation</span>
1110
- </td>
1111
- </tr>
1112
- <tr>
1113
- <td><code>--rebase-first</code></td>
1114
- <td>
1115
- <span data-lang="fr">Executer rebase-snapshot automatiquement si conflit</span>
1116
- <span data-lang="en">Run rebase-snapshot automatically if conflict</span>
1117
- </td>
1118
- </tr>
1119
- </tbody>
1120
- </table>
1121
- </div>
1122
-
1123
- <div class="code-block">
1124
- <button class="copy-btn">Copy</button>
1125
- <pre><code># Usage example
1126
- /efcore migration
1127
-
1128
- # With options
1129
- /efcore migration --force --no-apply</code></pre>
1130
- </div>
1131
- </div>
1132
- </div>
1133
-
1134
- <!-- ==================== /efcore db-status ==================== -->
1135
- <div class="command-card" id="cmd-db-status">
1136
- <div class="command-header">
1137
- <code class="command-name">/efcore db-status</code>
1138
- <span class="tag tag-command">READ</span>
1139
- </div>
1140
- <div class="command-body">
1141
- <p data-lang="fr">
1142
- Cette commande de diagnostic rapide (read-only) fournit une vue complete de l'etat des migrations EF Core et de la base de donnees. Elle detecte automatiquement le fichier de configuration (appsettings.Local.json en priorite), teste la connexion a la base, et liste toutes les migrations en distinguant celles appliquees de celles en attente. Elle verifie egalement le respect de la regle "1 migration par feature" en analysant les migrations presentes sur la branche courante. Utilisez cette commande avant toute operation pour connaitre l'etat exact du systeme.
1143
- </p>
1144
- <p data-lang="en">
1145
- This quick diagnostic command (read-only) provides a complete view of EF Core migrations and database state. It automatically detects the configuration file (appsettings.Local.json as priority), tests database connection, and lists all migrations distinguishing applied from pending ones. It also verifies "1 migration per feature" rule compliance by analyzing migrations present on the current branch. Use this command before any operation to know the exact system state.
1146
- </p>
1147
-
1148
- <div class="table-container">
1149
- <table>
1150
- <tbody>
1151
- <tr>
1152
- <td><strong>Agent</strong></td>
1153
- <td><code>efcore-db-status</code></td>
1154
- </tr>
1155
- <tr>
1156
- <td><strong>Model</strong></td>
1157
- <td>haiku (fast)</td>
1158
- </tr>
1159
- <tr>
1160
- <td><strong>Tools</strong></td>
1161
- <td>Bash, Glob</td>
1162
- </tr>
1163
- </tbody>
1164
- </table>
1165
- </div>
1166
-
1167
- <h4 data-lang="fr">Informations affichees</h4>
1168
- <h4 data-lang="en">Displayed Information</h4>
1169
-
1170
- <div class="feature-grid">
1171
- <div class="feature-item">
1172
- <span class="feature-icon">&#9881;</span>
1173
- <span class="feature-text" data-lang="fr">Configuration utilisee (appsettings.Local.json, etc.)</span>
1174
- <span class="feature-text" data-lang="en">Configuration used (appsettings.Local.json, etc.)</span>
1175
- </div>
1176
- <div class="feature-item">
1177
- <span class="feature-icon">&#128279;</span>
1178
- <span class="feature-text" data-lang="fr">Statut de connexion a la base</span>
1179
- <span class="feature-text" data-lang="en">Database connection status</span>
1180
- </div>
1181
- <div class="feature-item">
1182
- <span class="feature-icon">&#128202;</span>
1183
- <span class="feature-text" data-lang="fr">Nombre de migrations (total, appliquees, en attente)</span>
1184
- <span class="feature-text" data-lang="en">Migration count (total, applied, pending)</span>
1185
- </div>
1186
- <div class="feature-item">
1187
- <span class="feature-icon">&#9989;</span>
1188
- <span class="feature-text" data-lang="fr">Verification de la regle "1 migration par feature"</span>
1189
- <span class="feature-text" data-lang="en">"1 migration per feature" rule verification</span>
1190
- </div>
1191
- <div class="feature-item">
1192
- <span class="feature-icon">&#128451;</span>
1193
- <span class="feature-text" data-lang="fr">Taille de la base et nombre de tables</span>
1194
- <span class="feature-text" data-lang="en">Database size and table count</span>
1195
- </div>
1196
- </div>
1197
-
1198
- <div class="code-block">
1199
- <pre><code>================================================================================
1200
- EF CORE - DATABASE STATUS
1201
- ================================================================================
1202
-
1203
- PROJET
1204
- Nom: MyApp.Data
1205
- Config: appsettings.Local.json
1206
- DbContext: ApplicationDbContext
1207
-
1208
- CONNEXION
1209
- Status: OK
1210
- Server: localhost
1211
- Database: MyAppDb
1212
-
1213
- MIGRATIONS
1214
- Total: 12
1215
- Appliquees: 11
1216
- En attente: 1
1217
-
1218
- REGLE "1 MIGRATION PAR FEATURE"
1219
- Branche: feature/user-auth
1220
- Migrations: 1 pour cette branche
1221
- Regle respectee
1222
-
1223
- ================================================================================</code></pre>
1224
- </div>
1225
-
1226
- <h4>Options</h4>
1227
- <div class="table-container">
1228
- <table>
1229
- <thead>
1230
- <tr>
1231
- <th>Option</th>
1232
- <th>Description</th>
1233
- </tr>
1234
- </thead>
1235
- <tbody>
1236
- <tr>
1237
- <td><code>--verbose</code></td>
1238
- <td>
1239
- <span data-lang="fr">Afficher toutes les migrations avec details</span>
1240
- <span data-lang="en">Show all migrations with details</span>
1241
- </td>
1242
- </tr>
1243
- <tr>
1244
- <td><code>--json</code></td>
1245
- <td>
1246
- <span data-lang="fr">Sortie JSON pour scripting</span>
1247
- <span data-lang="en">JSON output for scripting</span>
1248
- </td>
1249
- </tr>
1250
- <tr>
1251
- <td><code>--context {name}</code></td>
1252
- <td>
1253
- <span data-lang="fr">Specifier le DbContext</span>
1254
- <span data-lang="en">Specify DbContext</span>
1255
- </td>
1256
- </tr>
1257
- </tbody>
1258
- </table>
1259
- </div>
1260
- </div>
1261
- </div>
1262
-
1263
- <!-- ==================== /efcore db-deploy ==================== -->
1264
- <div class="command-card" id="cmd-db-deploy">
1265
- <div class="command-header">
1266
- <code class="command-name">/efcore db-deploy</code>
1267
- <span class="tag tag-workflow">MEDIUM</span>
1268
- </div>
1269
- <div class="command-body">
1270
- <p data-lang="fr">
1271
- Cette commande applique toutes les migrations en attente sur votre base de donnees locale. Elle utilise le fichier appsettings.Local.json pour obtenir la connection string, verifie d'abord qu'il y a des migrations a appliquer, puis execute dotnet ef database update. Le processus affiche les details SQL en mode verbose pour suivre les modifications appliquees. Cette commande est essentielle apres avoir cree une nouvelle migration ou apres avoir recupere des modifications d'autres developpeurs contenant des migrations.
1272
- </p>
1273
- <p data-lang="en">
1274
- This command applies all pending migrations to your local database. It uses appsettings.Local.json file to get the connection string, first verifies there are migrations to apply, then executes dotnet ef database update. The process displays SQL details in verbose mode to track applied modifications. This command is essential after creating a new migration or after pulling changes from other developers containing migrations.
1275
- </p>
1276
-
1277
- <div class="table-container">
1278
- <table>
1279
- <tbody>
1280
- <tr>
1281
- <td><strong>Agent</strong></td>
1282
- <td><code>efcore-db-deploy</code></td>
1283
- </tr>
1284
- <tr>
1285
- <td><strong>Model</strong></td>
1286
- <td>haiku (fast)</td>
1287
- </tr>
1288
- <tr>
1289
- <td><strong>Tools</strong></td>
1290
- <td>Bash, Glob</td>
1291
- </tr>
1292
- </tbody>
1293
- </table>
1294
- </div>
1295
-
1296
- <h4 data-lang="fr">Prerequis</h4>
1297
- <h4 data-lang="en">Prerequisites</h4>
1298
-
1299
- <div class="feature-grid">
1300
- <div class="feature-item">
1301
- <span class="feature-icon">&#128196;</span>
1302
- <span class="feature-text"><code>appsettings.Local.json</code> configure</span>
1303
- </div>
1304
- <div class="feature-item">
1305
- <span class="feature-icon">&#128421;</span>
1306
- <span class="feature-text" data-lang="fr">SQL Server accessible</span>
1307
- <span class="feature-text" data-lang="en">SQL Server accessible</span>
1308
- </div>
1309
- <div class="feature-item">
1310
- <span class="feature-icon">&#128260;</span>
1311
- <span class="feature-text" data-lang="fr">Migrations en attente</span>
1312
- <span class="feature-text" data-lang="en">Pending migrations</span>
1313
- </div>
1314
- </div>
1315
-
1316
- <div class="code-block">
1317
- <button class="copy-btn">Copy</button>
1318
- <pre><code># Deploy migrations
1319
- /efcore db-deploy
1320
-
1321
- # Equivalent to:
1322
- dotnet ef database update --verbose</code></pre>
1323
- </div>
1324
-
1325
- <h4>Options</h4>
1326
- <div class="table-container">
1327
- <table>
1328
- <thead>
1329
- <tr>
1330
- <th>Option</th>
1331
- <th>Description</th>
1332
- </tr>
1333
- </thead>
1334
- <tbody>
1335
- <tr>
1336
- <td><code>--verbose</code></td>
1337
- <td>
1338
- <span data-lang="fr">Afficher les details SQL</span>
1339
- <span data-lang="en">Show SQL details</span>
1340
- </td>
1341
- </tr>
1342
- <tr>
1343
- <td><code>--connection "..."</code></td>
1344
- <td>
1345
- <span data-lang="fr">Override connection string</span>
1346
- <span data-lang="en">Override connection string</span>
1347
- </td>
1348
- </tr>
1349
- <tr>
1350
- <td><code>--context {name}</code></td>
1351
- <td>
1352
- <span data-lang="fr">Specifier le DbContext si multiple</span>
1353
- <span data-lang="en">Specify DbContext if multiple</span>
1354
- </td>
1355
- </tr>
1356
- </tbody>
1357
- </table>
1358
- </div>
1359
- </div>
1360
- </div>
1361
-
1362
- <!-- ==================== /efcore db-seed ==================== -->
1363
- <div class="command-card" id="cmd-db-seed">
1364
- <div class="command-header">
1365
- <code class="command-name">/efcore db-seed</code>
1366
- <span class="tag tag-workflow">MEDIUM</span>
1367
- </div>
1368
- <div class="command-body">
1369
- <p data-lang="fr">
1370
- Cette commande peuple la base de donnees avec des donnees de test ou initiales pour le developpement local. Elle detecte automatiquement les methodes de seeding disponibles dans le projet : classe Seeder dediee, methode HasData() dans le DbContext, script SQL seed.sql, ou argument CLI --seed. Elle vous propose ensuite de choisir la methode a utiliser. Ideale apres un /efcore db-reset ou pour initialiser un nouvel environnement de developpement avec des donnees coherentes.
1371
- </p>
1372
- <p data-lang="en">
1373
- This command populates the database with test or initial data for local development. It automatically detects available seeding methods in the project: dedicated Seeder class, HasData() method in DbContext, seed.sql SQL script, or CLI --seed argument. It then offers you to choose which method to use. Ideal after /efcore db-reset or to initialize a new development environment with consistent data.
1374
- </p>
1375
-
1376
- <div class="table-container">
1377
- <table>
1378
- <tbody>
1379
- <tr>
1380
- <td><strong>Agent</strong></td>
1381
- <td><code>efcore-db-seed</code></td>
1382
- </tr>
1383
- <tr>
1384
- <td><strong>Model</strong></td>
1385
- <td>haiku (fast)</td>
1386
- </tr>
1387
- <tr>
1388
- <td><strong>Tools</strong></td>
1389
- <td>Bash, Glob, Read</td>
1390
- </tr>
1391
- </tbody>
1392
- </table>
1393
- </div>
1394
-
1395
- <h4 data-lang="fr">Methodes de seeding detectees</h4>
1396
- <h4 data-lang="en">Detected Seeding Methods</h4>
1397
-
1398
- <div class="table-container">
1399
- <table>
1400
- <thead>
1401
- <tr>
1402
- <th>
1403
- <span data-lang="fr">Methode</span>
1404
- <span data-lang="en">Method</span>
1405
- </th>
1406
- <th>
1407
- <span data-lang="fr">Detection</span>
1408
- <span data-lang="en">Detection</span>
1409
- </th>
1410
- <th>
1411
- <span data-lang="fr">Execution</span>
1412
- <span data-lang="en">Execution</span>
1413
- </th>
1414
- </tr>
1415
- </thead>
1416
- <tbody>
1417
- <tr>
1418
- <td>Seeder Class</td>
1419
- <td><code>class.*Seeder</code></td>
1420
- <td><code>dotnet run -- --seed</code></td>
1421
- </tr>
1422
- <tr>
1423
- <td>HasData()</td>
1424
- <td><code>.HasData(</code></td>
1425
- <td>
1426
- <span data-lang="fr">Via migrations</span>
1427
- <span data-lang="en">Via migrations</span>
1428
- </td>
1429
- </tr>
1430
- <tr>
1431
- <td>Script SQL</td>
1432
- <td><code>./scripts/seed.sql</code></td>
1433
- <td><code>sqlcmd -i seed.sql</code></td>
1434
- </tr>
1435
- <tr>
1436
- <td>CLI --seed</td>
1437
- <td><code>--seed</code> in Program.cs</td>
1438
- <td><code>dotnet run -- --seed</code></td>
1439
- </tr>
1440
- </tbody>
1441
- </table>
1442
- </div>
1443
-
1444
- <div class="code-block">
1445
- <button class="copy-btn">Copy</button>
1446
- <pre><code># Execute seeding
1447
- /efcore db-seed
1448
-
1449
- # The agent automatically detects available methods
1450
- # and offers you a choice</code></pre>
1451
- </div>
1452
- </div>
1453
- </div>
1454
-
1455
- <!-- ==================== /efcore db-reset ==================== -->
1456
- <div class="command-card" id="cmd-db-reset">
1457
- <div class="command-header">
1458
- <code class="command-name">/efcore db-reset</code>
1459
- <span class="tag tag-danger">HIGH - DESTRUCTIVE</span>
1460
- </div>
1461
- <div class="command-body">
1462
- <p data-lang="fr">
1463
- Cette commande destructive remet la base de donnees a zero en la supprimant completement puis en la recreant avec toutes les migrations. Elle est protegee par plusieurs securites : confirmation obligatoire, proposition de backup avant suppression, blocage si l'environnement est detecte comme Production. Apres la recreation, elle propose optionnellement d'executer le seeding. Utilisez cette commande quand vous avez besoin d'un environnement de developpement completement propre, par exemple apres des modifications majeures du schema ou pour tester le processus complet de migrations.
1464
- </p>
1465
- <p data-lang="en">
1466
- This destructive command resets the database to zero by completely dropping it then recreating it with all migrations. It's protected by several safeguards: mandatory confirmation, backup offer before deletion, blocking if environment is detected as Production. After recreation, it optionally offers to run seeding. Use this command when you need a completely clean development environment, for example after major schema changes or to test the complete migration process.
1467
- </p>
1468
-
1469
- <div class="alert alert-warning">
1470
- <span class="alert-icon">&#9888;</span>
1471
- <div class="alert-content">
1472
- <p data-lang="fr"><strong>ATTENTION:</strong> Cette commande SUPPRIME toutes les donnees!</p>
1473
- <p data-lang="en"><strong>WARNING:</strong> This command DELETES all data!</p>
1474
- </div>
1475
- </div>
1476
-
1477
- <div class="table-container">
1478
- <table>
1479
- <tbody>
1480
- <tr>
1481
- <td><strong>Agent</strong></td>
1482
- <td><code>efcore-db-reset</code></td>
1483
- </tr>
1484
- <tr>
1485
- <td><strong>Model</strong></td>
1486
- <td>sonnet (securite)</td>
1487
- </tr>
1488
- <tr>
1489
- <td><strong>Tools</strong></td>
1490
- <td>Bash, Glob, Read</td>
1491
- </tr>
1492
- </tbody>
1493
- </table>
1494
- </div>
1495
-
1496
- <h4 data-lang="fr">Protections de securite</h4>
1497
- <h4 data-lang="en">Safety Protections</h4>
1498
-
1499
- <div class="feature-grid">
1500
- <div class="feature-item">
1501
- <span class="feature-icon">&#128274;</span>
1502
- <span class="feature-text" data-lang="fr"><strong>Confirmation obligatoire</strong> - Dialogue bloquant</span>
1503
- <span class="feature-text" data-lang="en"><strong>Mandatory confirmation</strong> - Blocking dialog</span>
1504
- </div>
1505
- <div class="feature-item">
1506
- <span class="feature-icon">&#128190;</span>
1507
- <span class="feature-text" data-lang="fr"><strong>Backup propose</strong> - Avant suppression</span>
1508
- <span class="feature-text" data-lang="en"><strong>Backup offered</strong> - Before deletion</span>
1509
- </div>
1510
- <div class="feature-item">
1511
- <span class="feature-icon">&#128683;</span>
1512
- <span class="feature-text" data-lang="fr"><strong>Check environnement</strong> - Bloque si Production</span>
1513
- <span class="feature-text" data-lang="en"><strong>Environment check</strong> - Blocks if Production</span>
1514
- </div>
1515
- <div class="feature-item">
1516
- <span class="feature-icon">&#127793;</span>
1517
- <span class="feature-text" data-lang="fr"><strong>Seed optionnel</strong> - Apres recreation</span>
1518
- <span class="feature-text" data-lang="en"><strong>Optional seed</strong> - After recreation</span>
1519
- </div>
1520
- </div>
1521
-
1522
- <div class="code-block">
1523
- <button class="copy-btn">Copy</button>
1524
- <pre><code># Complete database reset
1525
- /efcore db-reset
1526
-
1527
- # Workflow:
1528
- # 1. Mandatory confirmation
1529
- # 2. Optional backup (recommended)
1530
- # 3. DROP DATABASE
1531
- # 4. CREATE DATABASE (via migrations)
1532
- # 5. Optional seed</code></pre>
1533
- </div>
1534
- </div>
1535
- </div>
1536
-
1537
- <!-- ==================== /efcore scan ==================== -->
1538
- <div class="command-card" id="cmd-scan">
1539
- <div class="command-header">
1540
- <code class="command-name">/efcore scan</code>
1541
- <span class="tag tag-command">READ</span>
1542
- </div>
1543
- <div class="command-body">
1544
- <p data-lang="fr">
1545
- Cette commande read-only scanne tous les worktrees actifs (main, develop, et toutes les branches feature/hotfix) pour cartographier les migrations EF Core presentes. Elle compare chaque ModelSnapshot avec celui de develop pour calculer un niveau de risque : NONE (identique), LOW (tables differentes), MEDIUM (FK vers memes tables), HIGH (meme table modifiee), ou CRITICAL (meme colonne). Le resultat inclut un ordre de merge recommande basant sur ces risques. Executez cette commande avant de commencer une integration pour avoir une vue globale de l'etat des migrations dans l'equipe.
1546
- </p>
1547
- <p data-lang="en">
1548
- This read-only command scans all active worktrees (main, develop, and all feature/hotfix branches) to map present EF Core migrations. It compares each ModelSnapshot with develop's to calculate a risk level: NONE (identical), LOW (different tables), MEDIUM (FK to same tables), HIGH (same table modified), or CRITICAL (same column). The result includes a recommended merge order based on these risks. Run this command before starting an integration to get a global view of migration state across the team.
1549
- </p>
1550
-
1551
- <div class="table-container">
1552
- <table>
1553
- <tbody>
1554
- <tr>
1555
- <td><strong>Agent</strong></td>
1556
- <td><code>efcore-scan</code></td>
1557
- </tr>
1558
- <tr>
1559
- <td><strong>Model</strong></td>
1560
- <td>sonnet</td>
1561
- </tr>
1562
- <tr>
1563
- <td><strong>Tools</strong></td>
1564
- <td>Bash, Glob, Read</td>
1565
- </tr>
1566
- </tbody>
1567
- </table>
1568
- </div>
1569
-
1570
- <h4 data-lang="fr">Niveaux de risque</h4>
1571
- <h4 data-lang="en">Risk Levels</h4>
1572
-
1573
- <div class="table-container">
1574
- <table>
1575
- <thead>
1576
- <tr>
1577
- <th>
1578
- <span data-lang="fr">Niveau</span>
1579
- <span data-lang="en">Level</span>
1580
- </th>
1581
- <th>
1582
- <span data-lang="fr">Signification</span>
1583
- <span data-lang="en">Meaning</span>
1584
- </th>
1585
- <th>Action</th>
1586
- </tr>
1587
- </thead>
1588
- <tbody>
1589
- <tr>
1590
- <td><span class="tag tag-command">NONE</span></td>
1591
- <td>
1592
- <span data-lang="fr">Snapshot = develop</span>
1593
- <span data-lang="en">Snapshot = develop</span>
1594
- </td>
1595
- <td>Merge direct</td>
1596
- </tr>
1597
- <tr>
1598
- <td><span class="tag tag-workflow">LOW</span></td>
1599
- <td>
1600
- <span data-lang="fr">Tables differentes</span>
1601
- <span data-lang="en">Different tables</span>
1602
- </td>
1603
- <td>Merge OK</td>
1604
- </tr>
1605
- <tr>
1606
- <td><span class="tag tag-warning">MEDIUM</span></td>
1607
- <td>
1608
- <span data-lang="fr">FK vers memes tables</span>
1609
- <span data-lang="en">FK to same tables</span>
1610
- </td>
1611
- <td>
1612
- <span data-lang="fr">Attention a l'ordre</span>
1613
- <span data-lang="en">Order matters</span>
1614
- </td>
1615
- </tr>
1616
- <tr>
1617
- <td><span class="tag tag-danger">HIGH</span></td>
1618
- <td>
1619
- <span data-lang="fr">Meme table modifiee</span>
1620
- <span data-lang="en">Same table modified</span>
1621
- </td>
1622
- <td>
1623
- <span data-lang="fr">Rebase requis</span>
1624
- <span data-lang="en">Rebase required</span>
1625
- </td>
1626
- </tr>
1627
- <tr>
1628
- <td><span class="tag tag-danger">CRITICAL</span></td>
1629
- <td>
1630
- <span data-lang="fr">Meme colonne modifiee</span>
1631
- <span data-lang="en">Same column modified</span>
1632
- </td>
1633
- <td>
1634
- <span data-lang="fr">Intervention manuelle</span>
1635
- <span data-lang="en">Manual intervention</span>
1636
- </td>
1637
- </tr>
1638
- </tbody>
1639
- </table>
1640
- </div>
1641
-
1642
- <div class="code-block">
1643
- <pre><code>================================================================================
1644
- EF CORE CROSS-BRANCH SCAN
1645
- ================================================================================
1646
-
1647
- WORKTREES DETECTES (5)
1648
- main/ [main]
1649
- develop/ [develop]
1650
- features/user-auth/ [feature/user-auth]
1651
- features/add-products/ [feature/add-products]
1652
- hotfixes/login-fix/ [hotfix/login-fix]
1653
-
1654
- MIGRATIONS PAR BRANCHE
1655
- develop | 12 migrations | Snapshot: a1b2c3d4 (REFERENCE)
1656
- feature/user-auth | 13 migrations | Snapshot: e5f6g7h8
1657
- feature/add-products | 13 migrations | Snapshot: i9j0k1l2
1658
- hotfix/login-fix | 12 migrations | Snapshot: a1b2c3d4
1659
-
1660
- ANALYSE DES RISQUES
1661
- feature/user-auth : LOW (tables differentes)
1662
- feature/add-products : MEDIUM (FK vers meme table)
1663
- hotfix/login-fix : NONE (snapshot = develop)
1664
-
1665
- ORDRE DE MERGE RECOMMANDE
1666
- 1. hotfix/login-fix (NONE - merge direct)
1667
- 2. feature/user-auth (LOW - merge OK)
1668
- 3. feature/add-products (MEDIUM - apres user-auth)
1669
-
1670
- ================================================================================</code></pre>
1671
- </div>
1672
-
1673
- <h4>Options</h4>
1674
- <div class="table-container">
1675
- <table>
1676
- <thead>
1677
- <tr>
1678
- <th>Option</th>
1679
- <th>Description</th>
1680
- </tr>
1681
- </thead>
1682
- <tbody>
1683
- <tr>
1684
- <td><code>--json</code></td>
1685
- <td>
1686
- <span data-lang="fr">Output en format JSON pour CI/CD</span>
1687
- <span data-lang="en">JSON output for CI/CD</span>
1688
- </td>
1689
- </tr>
1690
- <tr>
1691
- <td><code>--branch {name}</code></td>
1692
- <td>
1693
- <span data-lang="fr">Scanner une branche specifique</span>
1694
- <span data-lang="en">Scan a specific branch</span>
1695
- </td>
1696
- </tr>
1697
- <tr>
1698
- <td><code>--verbose</code></td>
1699
- <td>
1700
- <span data-lang="fr">Afficher les details des differences</span>
1701
- <span data-lang="en">Show difference details</span>
1702
- </td>
1703
- </tr>
1704
- <tr>
1705
- <td><code>--no-recommend</code></td>
1706
- <td>
1707
- <span data-lang="fr">Ne pas afficher les recommandations</span>
1708
- <span data-lang="en">Don't show recommendations</span>
1709
- </td>
1710
- </tr>
1711
- </tbody>
1712
- </table>
1713
- </div>
1714
- </div>
1715
- </div>
1716
-
1717
- <!-- ==================== /efcore conflicts ==================== -->
1718
- <div class="command-card" id="cmd-conflicts">
1719
- <div class="command-header">
1720
- <code class="command-name">/efcore conflicts</code>
1721
- <span class="tag tag-command">READ - BLOCKING</span>
1722
- </div>
1723
- <div class="command-body">
1724
- <p data-lang="fr">
1725
- Cette commande analyse si la branche courante peut etre mergee dans develop sans conflit de migration EF Core. Elle compare le ModelSnapshot local avec celui de develop et des autres branches actives pour detecter les modifications qui se chevauchent : tables communes modifiees, colonnes identiques ajoutees, ou FK vers les memes entites. Si un conflit HIGH ou CRITICAL est detecte, la commande est BLOQUANTE et retourne un code d'erreur, empechant le merge. Elle recommande alors d'utiliser /efcore rebase-snapshot pour resoudre le conflit avant de continuer.
1726
- </p>
1727
- <p data-lang="en">
1728
- This command analyzes if the current branch can be merged into develop without EF Core migration conflict. It compares local ModelSnapshot with develop's and other active branches to detect overlapping modifications: common tables modified, identical columns added, or FK to same entities. If a HIGH or CRITICAL conflict is detected, the command is BLOCKING and returns an error code, preventing merge. It then recommends using /efcore rebase-snapshot to resolve the conflict before continuing.
1729
- </p>
1730
-
1731
- <div class="table-container">
1732
- <table>
1733
- <tbody>
1734
- <tr>
1735
- <td><strong>Agent</strong></td>
1736
- <td><code>efcore-conflicts</code></td>
1737
- </tr>
1738
- <tr>
1739
- <td><strong>Model</strong></td>
1740
- <td>sonnet</td>
1741
- </tr>
1742
- <tr>
1743
- <td><strong>Tools</strong></td>
1744
- <td>Bash, Glob, Read</td>
1745
- </tr>
1746
- </tbody>
1747
- </table>
1748
- </div>
1749
-
1750
- <h4 data-lang="fr">Exit Codes</h4>
1751
- <h4 data-lang="en">Exit Codes</h4>
1752
-
1753
- <div class="table-container">
1754
- <table>
1755
- <thead>
1756
- <tr>
1757
- <th>Code</th>
1758
- <th>
1759
- <span data-lang="fr">Signification</span>
1760
- <span data-lang="en">Meaning</span>
1761
- </th>
1762
- </tr>
1763
- </thead>
1764
- <tbody>
1765
- <tr>
1766
- <td><code>0</code></td>
1767
- <td>
1768
- <span data-lang="fr">Aucun conflit ou conflit mineur</span>
1769
- <span data-lang="en">No conflict or minor conflict</span>
1770
- </td>
1771
- </tr>
1772
- <tr>
1773
- <td><code>1</code></td>
1774
- <td>
1775
- <span data-lang="fr">Conflit detecte - merge bloque</span>
1776
- <span data-lang="en">Conflict detected - merge blocked</span>
1777
- </td>
1778
- </tr>
1779
- <tr>
1780
- <td><code>2</code></td>
1781
- <td>
1782
- <span data-lang="fr">Erreur technique</span>
1783
- <span data-lang="en">Technical error</span>
1784
- </td>
1785
- </tr>
1786
- </tbody>
1787
- </table>
1788
- </div>
1789
-
1790
- <div class="code-block">
1791
- <button class="copy-btn">Copy</button>
1792
- <pre><code># Check conflicts before merge
1793
- /efcore conflicts
1794
-
1795
- # If conflict detected:
1796
- # → /efcore rebase-snapshot (recommended)
1797
- # → /efcore conflicts --force (not recommended)</code></pre>
1798
- </div>
1799
-
1800
- <h4>Options</h4>
1801
- <div class="table-container">
1802
- <table>
1803
- <thead>
1804
- <tr>
1805
- <th>Option</th>
1806
- <th>Description</th>
1807
- </tr>
1808
- </thead>
1809
- <tbody>
1810
- <tr>
1811
- <td><code>--force</code></td>
1812
- <td>
1813
- <span data-lang="fr">Ignorer le conflit (non recommande)</span>
1814
- <span data-lang="en">Ignore conflict (not recommended)</span>
1815
- </td>
1816
- </tr>
1817
- <tr>
1818
- <td><code>--verbose</code></td>
1819
- <td>
1820
- <span data-lang="fr">Afficher les differences detaillees</span>
1821
- <span data-lang="en">Show detailed differences</span>
1822
- </td>
1823
- </tr>
1824
- <tr>
1825
- <td><code>--json</code></td>
1826
- <td>
1827
- <span data-lang="fr">Output JSON pour CI/CD</span>
1828
- <span data-lang="en">JSON output for CI/CD</span>
1829
- </td>
1830
- </tr>
1831
- <tr>
1832
- <td><code>--target {branch}</code></td>
1833
- <td>
1834
- <span data-lang="fr">Comparer avec une autre branche que develop</span>
1835
- <span data-lang="en">Compare with branch other than develop</span>
1836
- </td>
1837
- </tr>
1838
- </tbody>
1839
- </table>
1840
- </div>
1841
- </div>
1842
- </div>
1843
-
1844
- <!-- ==================== /efcore rebase-snapshot ==================== -->
1845
- <div class="command-card" id="cmd-rebase-snapshot">
1846
- <div class="command-header">
1847
- <code class="command-name">/efcore rebase-snapshot</code>
1848
- <span class="tag tag-warning">MEDIUM</span>
1849
- </div>
1850
- <div class="command-body">
1851
- <p data-lang="fr">
1852
- Cette commande resout les conflits ModelSnapshot detectes par /efcore conflicts en resynchronisant votre branche avec develop. Elle commence par creer un backup automatique de vos migrations, identifie les migrations specifiques a votre branche, remplace le ModelSnapshot par la version de develop, supprime vos migrations de branche, puis regenere une nouvelle migration consolidee qui inclut tous vos changements mais base sur le snapshot actuel de develop. En cas d'echec du build, elle peut restaurer automatiquement depuis le backup. C'est la solution recommandee quand un conflit HIGH est detecte.
1853
- </p>
1854
- <p data-lang="en">
1855
- This command resolves ModelSnapshot conflicts detected by /efcore conflicts by resynchronizing your branch with develop. It starts by creating an automatic backup of your migrations, identifies branch-specific migrations, replaces ModelSnapshot with develop's version, deletes your branch migrations, then regenerates a new consolidated migration that includes all your changes but based on develop's current snapshot. On build failure, it can automatically restore from backup. This is the recommended solution when a HIGH conflict is detected.
1856
- </p>
1857
-
1858
- <div class="table-container">
1859
- <table>
1860
- <tbody>
1861
- <tr>
1862
- <td><strong>Agent</strong></td>
1863
- <td><code>efcore-rebase-snapshot</code></td>
1864
- </tr>
1865
- <tr>
1866
- <td><strong>Model</strong></td>
1867
- <td>sonnet</td>
1868
- </tr>
1869
- <tr>
1870
- <td><strong>Tools</strong></td>
1871
- <td>Bash, Glob, Read, Edit</td>
1872
- </tr>
1873
- </tbody>
1874
- </table>
1875
- </div>
1876
-
1877
- <h4 data-lang="fr">Workflow en 8 etapes</h4>
1878
- <h4 data-lang="en">8-Step Workflow</h4>
1879
-
1880
- <div class="workflow-stepper-vertical" data-lang="fr">
1881
- <div class="step-item">
1882
- <div class="step-number step-validate">1</div>
1883
- <div class="step-content">
1884
- <div class="step-title">Prerequis</div>
1885
- <div class="step-desc">Branche GitFlow, directory propre</div>
1886
- </div>
1887
- </div>
1888
- <div class="step-item">
1889
- <div class="step-number step-detect">2</div>
1890
- <div class="step-content">
1891
- <div class="step-title">Backup</div>
1892
- <div class="step-desc">Sauvegarde automatique</div>
1893
- </div>
1894
- </div>
1895
- <div class="step-item">
1896
- <div class="step-number step-search">3</div>
1897
- <div class="step-content">
1898
- <div class="step-title">Identification</div>
1899
- <div class="step-desc">Migrations branche vs develop</div>
1900
- </div>
1901
- </div>
1902
- <div class="step-item">
1903
- <div class="step-number step-decision">4</div>
1904
- <div class="step-content">
1905
- <div class="step-title">Reset Snapshot</div>
1906
- <div class="step-desc">Checkout depuis develop</div>
1907
- </div>
1908
- </div>
1909
- <div class="step-item">
1910
- <div class="step-number step-input">5</div>
1911
- <div class="step-content">
1912
- <div class="step-title">Suppression</div>
1913
- <div class="step-desc">Anciennes migrations</div>
1914
- </div>
1915
- </div>
1916
- <div class="step-item">
1917
- <div class="step-number step-create">6</div>
1918
- <div class="step-content">
1919
- <div class="step-title">Regeneration</div>
1920
- <div class="step-desc">Migration consolidee</div>
1921
- </div>
1922
- </div>
1923
- <div class="step-item">
1924
- <div class="step-number step-confirm">7</div>
1925
- <div class="step-content">
1926
- <div class="step-title">Validation</div>
1927
- <div class="step-desc">Build + script SQL</div>
1928
- </div>
1929
- </div>
1930
- <div class="step-item">
1931
- <div class="step-number step-generate">8</div>
1932
- <div class="step-content">
1933
- <div class="step-title">Resume</div>
1934
- <div class="step-desc">Prochaines etapes</div>
1935
- </div>
1936
- </div>
1937
- </div>
1938
-
1939
- <div class="workflow-stepper-vertical" data-lang="en">
1940
- <div class="step-item">
1941
- <div class="step-number step-validate">1</div>
1942
- <div class="step-content">
1943
- <div class="step-title">Prerequisites</div>
1944
- <div class="step-desc">GitFlow branch, clean directory</div>
1945
- </div>
1946
- </div>
1947
- <div class="step-item">
1948
- <div class="step-number step-detect">2</div>
1949
- <div class="step-content">
1950
- <div class="step-title">Backup</div>
1951
- <div class="step-desc">Automatic backup</div>
1952
- </div>
1953
- </div>
1954
- <div class="step-item">
1955
- <div class="step-number step-search">3</div>
1956
- <div class="step-content">
1957
- <div class="step-title">Identification</div>
1958
- <div class="step-desc">Branch migrations vs develop</div>
1959
- </div>
1960
- </div>
1961
- <div class="step-item">
1962
- <div class="step-number step-decision">4</div>
1963
- <div class="step-content">
1964
- <div class="step-title">Reset Snapshot</div>
1965
- <div class="step-desc">Checkout from develop</div>
1966
- </div>
1967
- </div>
1968
- <div class="step-item">
1969
- <div class="step-number step-input">5</div>
1970
- <div class="step-content">
1971
- <div class="step-title">Deletion</div>
1972
- <div class="step-desc">Old migrations</div>
1973
- </div>
1974
- </div>
1975
- <div class="step-item">
1976
- <div class="step-number step-create">6</div>
1977
- <div class="step-content">
1978
- <div class="step-title">Regeneration</div>
1979
- <div class="step-desc">Consolidated migration</div>
1980
- </div>
1981
- </div>
1982
- <div class="step-item">
1983
- <div class="step-number step-confirm">7</div>
1984
- <div class="step-content">
1985
- <div class="step-title">Validation</div>
1986
- <div class="step-desc">Build + SQL script</div>
1987
- </div>
1988
- </div>
1989
- <div class="step-item">
1990
- <div class="step-number step-generate">8</div>
1991
- <div class="step-content">
1992
- <div class="step-title">Summary</div>
1993
- <div class="step-desc">Next steps</div>
1994
- </div>
1995
- </div>
1996
- </div>
1997
-
1998
- <h4 data-lang="fr">Quand utiliser</h4>
1999
- <h4 data-lang="en">When to use</h4>
2000
-
2001
- <div class="table-container">
2002
- <table>
2003
- <thead>
2004
- <tr>
2005
- <th>Situation</th>
2006
- <th>Action</th>
2007
- </tr>
2008
- </thead>
2009
- <tbody>
2010
- <tr>
2011
- <td><code>/efcore conflicts</code> retourne HIGH</td>
2012
- <td>
2013
- <span data-lang="fr">Utiliser rebase-snapshot</span>
2014
- <span data-lang="en">Use rebase-snapshot</span>
2015
- </td>
2016
- </tr>
2017
- <tr>
2018
- <td>
2019
- <span data-lang="fr">Merge conflit sur ModelSnapshot</span>
2020
- <span data-lang="en">Merge conflict on ModelSnapshot</span>
2021
- </td>
2022
- <td>
2023
- <span data-lang="fr">Utiliser rebase-snapshot</span>
2024
- <span data-lang="en">Use rebase-snapshot</span>
2025
- </td>
2026
- </tr>
2027
- <tr>
2028
- <td>
2029
- <span data-lang="fr">Plusieurs migrations a consolider</span>
2030
- <span data-lang="en">Multiple migrations to consolidate</span>
2031
- </td>
2032
- <td>
2033
- <span data-lang="fr">Utiliser rebase-snapshot</span>
2034
- <span data-lang="en">Use rebase-snapshot</span>
2035
- </td>
2036
- </tr>
2037
- <tr>
2038
- <td>
2039
- <span data-lang="fr">Migration cassee</span>
2040
- <span data-lang="en">Broken migration</span>
2041
- </td>
2042
- <td>
2043
- <span data-lang="fr">Utiliser rebase-snapshot</span>
2044
- <span data-lang="en">Use rebase-snapshot</span>
2045
- </td>
2046
- </tr>
2047
- </tbody>
2048
- </table>
2049
- </div>
2050
-
2051
- <h4>Options</h4>
2052
- <div class="table-container">
2053
- <table>
2054
- <thead>
2055
- <tr>
2056
- <th>Option</th>
2057
- <th>Description</th>
2058
- </tr>
2059
- </thead>
2060
- <tbody>
2061
- <tr>
2062
- <td><code>--no-backup</code></td>
2063
- <td>
2064
- <span data-lang="fr">Ne pas creer de backup (dangereux)</span>
2065
- <span data-lang="en">Don't create backup (dangerous)</span>
2066
- </td>
2067
- </tr>
2068
- <tr>
2069
- <td><code>--name {name}</code></td>
2070
- <td>
2071
- <span data-lang="fr">Forcer un nom de migration</span>
2072
- <span data-lang="en">Force migration name</span>
2073
- </td>
2074
- </tr>
2075
- <tr>
2076
- <td><code>--dry-run</code></td>
2077
- <td>
2078
- <span data-lang="fr">Afficher ce qui serait fait</span>
2079
- <span data-lang="en">Show what would be done</span>
2080
- </td>
2081
- </tr>
2082
- </tbody>
2083
- </table>
2084
- </div>
2085
- </div>
2086
- </div>
2087
-
2088
- <!-- ==================== /efcore squash ==================== -->
2089
- <div class="command-card" id="cmd-squash">
2090
- <div class="command-header">
2091
- <code class="command-name">/efcore squash</code>
2092
- <span class="tag tag-danger">HIGH - DESTRUCTIVE</span>
2093
- </div>
2094
- <div class="command-body">
2095
- <p data-lang="fr">
2096
- Cette commande destructive consolide toutes les migrations existantes en une seule migration propre pour les releases. Elle est utilisee typiquement avant de creer une release pour avoir un historique de migrations clean en production. Le processus cree un backup complet (migrations + script SQL du schema actuel), supprime toutes les migrations, genere une migration unique representant l'etat final du schema, puis genere un script SQL idempotent. Important : si des migrations sont deja appliquees en production, utilisez le script SQL genere plutot que la nouvelle migration pour eviter les conflits d'historique.
2097
- </p>
2098
- <p data-lang="en">
2099
- This destructive command consolidates all existing migrations into a single clean migration for releases. It's typically used before creating a release to have a clean migration history in production. The process creates a full backup (migrations + SQL script of current schema), deletes all migrations, generates a single migration representing the final schema state, then generates an idempotent SQL script. Important: if migrations are already applied in production, use the generated SQL script rather than the new migration to avoid history conflicts.
2100
- </p>
2101
-
2102
- <div class="alert alert-warning">
2103
- <span class="alert-icon">&#9888;</span>
2104
- <div class="alert-content">
2105
- <p data-lang="fr"><strong>ATTENTION:</strong> L'historique des migrations sera perdu!</p>
2106
- <p data-lang="en"><strong>WARNING:</strong> Migration history will be lost!</p>
2107
- </div>
2108
- </div>
2109
-
2110
- <div class="table-container">
2111
- <table>
2112
- <tbody>
2113
- <tr>
2114
- <td><strong>Agent</strong></td>
2115
- <td><code>efcore-squash</code></td>
2116
- </tr>
2117
- <tr>
2118
- <td><strong>Model</strong></td>
2119
- <td>sonnet</td>
2120
- </tr>
2121
- <tr>
2122
- <td><strong>Tools</strong></td>
2123
- <td>Bash, Glob, Read</td>
2124
- </tr>
2125
- </tbody>
2126
- </table>
2127
- </div>
2128
-
2129
- <h4 data-lang="fr">Quand utiliser Squash</h4>
2130
- <h4 data-lang="en">When to use Squash</h4>
2131
-
2132
- <div class="table-container">
2133
- <table>
2134
- <thead>
2135
- <tr>
2136
- <th>Situation</th>
2137
- <th>Squash ?</th>
2138
- </tr>
2139
- </thead>
2140
- <tbody>
2141
- <tr>
2142
- <td>
2143
- <span data-lang="fr">Avant release</span>
2144
- <span data-lang="en">Before release</span>
2145
- </td>
2146
- <td>
2147
- <span data-lang="fr">OUI - nettoyer l'historique</span>
2148
- <span data-lang="en">YES - clean history</span>
2149
- </td>
2150
- </tr>
2151
- <tr>
2152
- <td>
2153
- <span data-lang="fr">Apres merge de plusieurs features</span>
2154
- <span data-lang="en">After merging multiple features</span>
2155
- </td>
2156
- <td>
2157
- <span data-lang="fr">OUI - consolider</span>
2158
- <span data-lang="en">YES - consolidate</span>
2159
- </td>
2160
- </tr>
2161
- <tr>
2162
- <td>
2163
- <span data-lang="fr">En production</span>
2164
- <span data-lang="en">In production</span>
2165
- </td>
2166
- <td>
2167
- <span data-lang="fr">NON - utiliser scripts SQL</span>
2168
- <span data-lang="en">NO - use SQL scripts</span>
2169
- </td>
2170
- </tr>
2171
- <tr>
2172
- <td>
2173
- <span data-lang="fr">Branche feature en cours</span>
2174
- <span data-lang="en">Feature branch in progress</span>
2175
- </td>
2176
- <td>
2177
- <span data-lang="fr">ATTENTION - preferer rebase-snapshot</span>
2178
- <span data-lang="en">CAUTION - prefer rebase-snapshot</span>
2179
- </td>
2180
- </tr>
2181
- </tbody>
2182
- </table>
2183
- </div>
2184
-
2185
- <h4>Options</h4>
2186
- <div class="table-container">
2187
- <table>
2188
- <thead>
2189
- <tr>
2190
- <th>Option</th>
2191
- <th>Description</th>
2192
- </tr>
2193
- </thead>
2194
- <tbody>
2195
- <tr>
2196
- <td><code>--no-backup</code></td>
2197
- <td>
2198
- <span data-lang="fr">Ne pas creer de backup (dangereux)</span>
2199
- <span data-lang="en">Don't create backup (dangerous)</span>
2200
- </td>
2201
- </tr>
2202
- <tr>
2203
- <td><code>--no-script</code></td>
2204
- <td>
2205
- <span data-lang="fr">Ne pas generer de script SQL</span>
2206
- <span data-lang="en">Don't generate SQL script</span>
2207
- </td>
2208
- </tr>
2209
- <tr>
2210
- <td><code>--name {name}</code></td>
2211
- <td>
2212
- <span data-lang="fr">Forcer un nom de migration</span>
2213
- <span data-lang="en">Force migration name</span>
2214
- </td>
2215
- </tr>
2216
- <tr>
2217
- <td><code>--keep-snapshot</code></td>
2218
- <td>
2219
- <span data-lang="fr">Garder le ModelSnapshot actuel</span>
2220
- <span data-lang="en">Keep current ModelSnapshot</span>
2221
- </td>
2222
- </tr>
2223
- <tr>
2224
- <td><code>--dry-run</code></td>
2225
- <td>
2226
- <span data-lang="fr">Afficher sans executer</span>
2227
- <span data-lang="en">Show without executing</span>
2228
- </td>
2229
- </tr>
2230
- </tbody>
2231
- </table>
2232
- </div>
2233
- </div>
2234
- </div>
2235
-
2236
- </section>
2237
-
2238
- <!-- ============================================================ -->
2239
- <!-- SECTION: CROSS-BRANCH -->
2240
- <!-- ============================================================ -->
2241
- <section id="cross-branch">
2242
- <h2>Cross-Branch</h2>
2243
-
2244
- <div class="alert alert-info">
2245
- <span class="alert-icon">&#127775;</span>
2246
- <div class="alert-content">
2247
- <h5>New Feature</h5>
2248
- <p data-lang="fr">
2249
- Nouvelles commandes pour gerer les migrations entre plusieurs branches en parallele avec les worktrees GitFlow.
2250
- </p>
2251
- <p data-lang="en">
2252
- New commands to manage migrations across multiple branches in parallel with GitFlow worktrees.
2253
- </p>
2254
- </div>
2255
- </div>
2256
-
2257
- <p data-lang="fr">
2258
- Avec les worktrees GitFlow, plusieurs features peuvent etre developpees simultanement. Le systeme cross-branch previent les conflits de ModelSnapshot avant qu'ils ne se produisent.
2259
- </p>
2260
- <p data-lang="en">
2261
- With GitFlow worktrees, multiple features can be developed simultaneously. The cross-branch system prevents ModelSnapshot conflicts before they occur.
2262
- </p>
2263
-
2264
- <h3 data-lang="fr">Workflow Cross-Branch</h3>
2265
- <h3 data-lang="en">Cross-Branch Workflow</h3>
2266
-
2267
- <div class="code-block">
2268
- <button class="copy-btn">Copy</button>
2269
- <pre><code># 1. Scan all active branches
2270
- /efcore scan
2271
-
2272
- # 2. Check conflicts before creating a migration
2273
- /efcore conflicts
2274
-
2275
- # 3. If conflict detected, rebase on develop
2276
- /efcore rebase-snapshot
2277
-
2278
- # 4. Create migration (automatic cross-branch validation)
2279
- /efcore migration</code></pre>
2280
- </div>
2281
-
2282
- <h3>Configuration</h3>
2283
-
2284
- <div class="code-block">
2285
- <button class="copy-btn">Copy</button>
2286
- <pre><code>{
2287
- "efcore": {
2288
- "crossBranch": {
2289
- "enabled": true,
2290
- "scanOnMigrationCreate": true,
2291
- "blockOnConflict": true,
2292
- "cacheExpiry": 300
2293
- }
2294
- }
2295
- }</code></pre>
2296
- </div>
2297
-
2298
- <div class="table-container">
2299
- <table>
2300
- <thead>
2301
- <tr>
2302
- <th>Option</th>
2303
- <th>Description</th>
2304
- <th>
2305
- <span data-lang="fr">Defaut</span>
2306
- <span data-lang="en">Default</span>
2307
- </th>
2308
- </tr>
2309
- </thead>
2310
- <tbody>
2311
- <tr>
2312
- <td><code>enabled</code></td>
2313
- <td>
2314
- <span data-lang="fr">Activer la validation cross-branch</span>
2315
- <span data-lang="en">Enable cross-branch validation</span>
2316
- </td>
2317
- <td><code>true</code></td>
2318
- </tr>
2319
- <tr>
2320
- <td><code>scanOnMigrationCreate</code></td>
2321
- <td>
2322
- <span data-lang="fr">Scanner avant /efcore migration</span>
2323
- <span data-lang="en">Scan before /efcore migration</span>
2324
- </td>
2325
- <td><code>true</code></td>
2326
- </tr>
2327
- <tr>
2328
- <td><code>blockOnConflict</code></td>
2329
- <td>
2330
- <span data-lang="fr">Bloquer si conflit detecte</span>
2331
- <span data-lang="en">Block if conflict detected</span>
2332
- </td>
2333
- <td><code>true</code></td>
2334
- </tr>
2335
- <tr>
2336
- <td><code>cacheExpiry</code></td>
2337
- <td>
2338
- <span data-lang="fr">Duree de cache du scan (secondes)</span>
2339
- <span data-lang="en">Scan cache duration (seconds)</span>
2340
- </td>
2341
- <td><code>300</code></td>
2342
- </tr>
2343
- </tbody>
2344
- </table>
2345
- </div>
2346
- </section>
2347
-
2348
- <!-- ============================================================ -->
2349
- <!-- SECTION: BONNES PRATIQUES -->
2350
- <!-- ============================================================ -->
2351
- <section id="best-practices">
2352
- <h2>
2353
- <span data-lang="fr">Bonnes pratiques</span>
2354
- <span data-lang="en">Best Practices</span>
2355
- </h2>
2356
-
2357
- <div class="best-practice">
2358
- <h4>
2359
- <span class="bp-icon">&#9989;</span>
2360
- <span data-lang="fr">Toujours commiter les 3 fichiers ensemble</span>
2361
- <span data-lang="en">Always commit all 3 files together</span>
2362
- </h4>
2363
- <p data-lang="fr">Ne jamais commiter une migration incomplete. <code>/gitflow commit</code> valide automatiquement la presence des 3 fichiers.</p>
2364
- <p data-lang="en">Never commit an incomplete migration. <code>/gitflow commit</code> automatically validates the presence of all 3 files.</p>
2365
- </div>
2366
-
2367
- <div class="best-practice">
2368
- <h4>
2369
- <span class="bp-icon">&#9989;</span>
2370
- <span data-lang="fr">Nommer les migrations de maniere descriptive</span>
2371
- <span data-lang="en">Name migrations descriptively</span>
2372
- </h4>
2373
- <div class="code-block">
2374
- <pre><code># Bon / Good
2375
- dotnet ef migrations add AddUserEmailIndex
2376
- dotnet ef migrations add CreateOrdersTable
2377
- dotnet ef migrations add AddPaymentStatusToOrders
2378
-
2379
- # Mauvais / Bad
2380
- dotnet ef migrations add Migration1
2381
- dotnet ef migrations add Fix
2382
- dotnet ef migrations add Update</code></pre>
2383
- </div>
2384
- </div>
2385
-
2386
- <div class="best-practice">
2387
- <h4>
2388
- <span class="bp-icon">&#9989;</span>
2389
- <span data-lang="fr">Verifier les operations destructives</span>
2390
- <span data-lang="en">Check destructive operations</span>
2391
- </h4>
2392
- <p data-lang="fr"><code>/gitflow commit</code> detecte automatiquement et alerte sur les operations suivantes :</p>
2393
- <p data-lang="en"><code>/gitflow commit</code> automatically detects and alerts on the following operations:</p>
2394
-
2395
- <div class="table-container">
2396
- <table>
2397
- <thead>
2398
- <tr>
2399
- <th>Operation</th>
2400
- <th>
2401
- <span data-lang="fr">Risque</span>
2402
- <span data-lang="en">Risk</span>
2403
- </th>
2404
- <th>
2405
- <span data-lang="fr">Niveau</span>
2406
- <span data-lang="en">Level</span>
2407
- </th>
2408
- </tr>
2409
- </thead>
2410
- <tbody>
2411
- <tr>
2412
- <td><code>DropTable</code></td>
2413
- <td>
2414
- <span data-lang="fr">Suppression de table entiere</span>
2415
- <span data-lang="en">Entire table deletion</span>
2416
- </td>
2417
- <td><span class="tag tag-danger">CRITICAL</span></td>
2418
- </tr>
2419
- <tr>
2420
- <td><code>DropColumn</code></td>
2421
- <td>
2422
- <span data-lang="fr">Perte de donnees de colonne</span>
2423
- <span data-lang="en">Column data loss</span>
2424
- </td>
2425
- <td><span class="tag tag-danger">CRITICAL</span></td>
2426
- </tr>
2427
- <tr>
2428
- <td><code>DeleteData</code></td>
2429
- <td>
2430
- <span data-lang="fr">Suppression de lignes</span>
2431
- <span data-lang="en">Row deletion</span>
2432
- </td>
2433
- <td><span class="tag tag-danger">CRITICAL</span></td>
2434
- </tr>
2435
- <tr>
2436
- <td><code>DropForeignKey</code></td>
2437
- <td>
2438
- <span data-lang="fr">Casse l'integrite referentielle</span>
2439
- <span data-lang="en">Breaks referential integrity</span>
2440
- </td>
2441
- <td><span class="tag tag-warning">HIGH</span></td>
2442
- </tr>
2443
- <tr>
2444
- <td><code>DropIndex</code></td>
2445
- <td>
2446
- <span data-lang="fr">Impact sur les performances</span>
2447
- <span data-lang="en">Performance impact</span>
2448
- </td>
2449
- <td><span class="tag tag-workflow">MEDIUM</span></td>
2450
- </tr>
2451
- </tbody>
2452
- </table>
2453
- </div>
2454
- </div>
2455
-
2456
- <div class="best-practice">
2457
- <h4>
2458
- <span class="bp-icon">&#9989;</span>
2459
- <span data-lang="fr">Generer des scripts SQL idempotents pour la production</span>
2460
- <span data-lang="en">Generate idempotent SQL scripts for production</span>
2461
- </h4>
2462
- <div class="code-block">
2463
- <button class="copy-btn">Copy</button>
2464
- <pre><code># Generate an idempotent SQL script
2465
- dotnet ef migrations script --idempotent -o ./scripts/migrations/v1.2.0.sql
2466
-
2467
- # The script checks if each migration has already been applied
2468
- # before executing it, making it safe for re-execution</code></pre>
2469
- </div>
2470
- </div>
2471
-
2472
- <div class="alert alert-warning">
2473
- <span class="alert-icon">&#9888;</span>
2474
- <div class="alert-content">
2475
- <h5 data-lang="fr">Anti-patterns a eviter</h5>
2476
- <h5 data-lang="en">Anti-patterns to avoid</h5>
2477
- <div class="feature-grid">
2478
- <div class="feature-item">
2479
- <span class="feature-icon">&#10060;</span>
2480
- <span class="feature-text" data-lang="fr">Ne jamais modifier manuellement le ModelSnapshot</span>
2481
- <span class="feature-text" data-lang="en">Never manually modify the ModelSnapshot</span>
2482
- </div>
2483
- <div class="feature-item">
2484
- <span class="feature-icon">&#10060;</span>
2485
- <span class="feature-text" data-lang="fr">Ne pas supprimer des migrations deja appliquees en production</span>
2486
- <span class="feature-text" data-lang="en">Don't delete migrations already applied in production</span>
2487
- </div>
2488
- <div class="feature-item">
2489
- <span class="feature-icon">&#10060;</span>
2490
- <span class="feature-text" data-lang="fr">Eviter les migrations qui dependent de donnees specifiques</span>
2491
- <span class="feature-text" data-lang="en">Avoid migrations that depend on specific data</span>
2492
- </div>
2493
- <div class="feature-item">
2494
- <span class="feature-icon">&#10060;</span>
2495
- <span class="feature-text" data-lang="fr">Ne pas utiliser SQL brut sans tester sur une copie</span>
2496
- <span class="feature-text" data-lang="en">Don't use raw SQL without testing on a copy</span>
2497
- </div>
2498
- </div>
2499
- </div>
2500
- </div>
2501
- </section>
2502
-
2503
- <!-- ============================================================ -->
2504
- <!-- SECTION: INTEGRATION GITFLOW -->
2505
- <!-- ============================================================ -->
2506
- <section id="integration">
2507
- <h2>
2508
- <span data-lang="fr">Integration avec GitFlow</span>
2509
- <span data-lang="en">GitFlow Integration</span>
2510
- </h2>
2511
-
2512
- <p data-lang="fr">
2513
- SmartStack CLI integre la gestion des migrations EF Core directement dans le workflow GitFlow :
2514
- </p>
2515
- <p data-lang="en">
2516
- SmartStack CLI integrates EF Core migration management directly into the GitFlow workflow:
2517
- </p>
2518
-
2519
- <div class="card-grid">
2520
- <div class="card">
2521
- <div class="card-header">
2522
- <div class="card-icon" style="background: var(--primary);">1</div>
2523
- <div>
2524
- <div class="card-title">/gitflow init</div>
2525
- <div class="card-subtitle" data-lang="fr">Detection automatique</div>
2526
- <div class="card-subtitle" data-lang="en">Automatic detection</div>
2527
- </div>
2528
- </div>
2529
- <div class="card-body">
2530
- <p data-lang="fr">Detecte EF Core et configure les DbContext dans le fichier de configuration.</p>
2531
- <p data-lang="en">Detects EF Core and configures DbContexts in the config file.</p>
2532
- </div>
2533
- </div>
2534
-
2535
- <div class="card">
2536
- <div class="card-header">
2537
- <div class="card-icon" style="background: var(--success);">3</div>
2538
- <div>
2539
- <div class="card-title">/gitflow commit</div>
2540
- <div class="card-subtitle" data-lang="fr">Validation des migrations</div>
2541
- <div class="card-subtitle" data-lang="en">Migration validation</div>
2542
- </div>
2543
- </div>
2544
- <div class="card-body">
2545
- <p data-lang="fr">Valide que les 3 fichiers sont presents et detecte les operations destructives.</p>
2546
- <p data-lang="en">Validates that all 3 files are present and detects destructive operations.</p>
2547
- </div>
2548
- </div>
2549
-
2550
- <div class="card">
2551
- <div class="card-header">
2552
- <div class="card-icon" style="background: var(--warning);">4</div>
2553
- <div>
2554
- <div class="card-title">/gitflow plan</div>
2555
- <div class="card-subtitle" data-lang="fr">Analyse des conflits</div>
2556
- <div class="card-subtitle" data-lang="en">Conflict analysis</div>
2557
- </div>
2558
- </div>
2559
- <div class="card-body">
2560
- <p data-lang="fr">Detecte les conflits potentiels de ModelSnapshot entre branches.</p>
2561
- <p data-lang="en">Detects potential ModelSnapshot conflicts between branches.</p>
2562
- </div>
2563
- </div>
2564
-
2565
- <div class="card">
2566
- <div class="card-header">
2567
- <div class="card-icon" style="background: var(--secondary);">5</div>
2568
- <div>
2569
- <div class="card-title">/gitflow exec</div>
2570
- <div class="card-subtitle" data-lang="fr">Resolution automatique</div>
2571
- <div class="card-subtitle" data-lang="en">Automatic resolution</div>
2572
- </div>
2573
- </div>
2574
- <div class="card-body">
2575
- <p data-lang="fr">Resout les conflits ModelSnapshot automatiquement pendant le rebase.</p>
2576
- <p data-lang="en">Resolves ModelSnapshot conflicts automatically during rebase.</p>
2577
- </div>
2578
- </div>
2579
- </div>
2580
- </section>
2581
-
2582
- <!-- ============================================================ -->
2583
- <!-- SECTION: CONFIGURATION -->
2584
- <!-- ============================================================ -->
2585
- <section id="configuration">
2586
- <h2>Configuration</h2>
2587
-
2588
- <p data-lang="fr">La configuration EF Core est stockee dans <code>.claude/gitflow/config.json</code> :</p>
2589
- <p data-lang="en">EF Core configuration is stored in <code>.claude/gitflow/config.json</code>:</p>
2590
-
2591
- <div class="code-block">
2592
- <button class="copy-btn">Copy</button>
2593
- <pre><code>{
2594
- "efcore": {
2595
- "enabled": true,
2596
- "autoDetect": true,
2597
- "contexts": [
2598
- {
2599
- "name": "CoreDbContext",
2600
- "type": "core",
2601
- "schema": "core",
2602
- "projectPath": "./src/SmartStack.Domain",
2603
- "migrationsFolder": "Persistence/Migrations",
2604
- "startupProject": "./src/SmartStack.Api"
2605
- },
2606
- {
2607
- "name": "ExtensionsDbContext",
2608
- "type": "extensions",
2609
- "schema": "extensions",
2610
- "projectPath": "./src/Client.Domain",
2611
- "migrationsFolder": "Persistence/Migrations",
2612
- "startupProject": "./src/Client.Api"
2613
- }
2614
- ],
2615
- "database": {
2616
- "configFile": "appsettings.Local.json",
2617
- "connectionStringName": "DefaultConnection",
2618
- "provider": "SqlServer"
2619
- },
2620
- "naming": {
2621
- "pattern": "{context}_v{version}_{sequence}_{Description}",
2622
- "useMcp": true,
2623
- "mcpTool": "mcp__smartstack__suggest_migration"
2624
- },
2625
- "crossBranch": {
2626
- "enabled": true,
2627
- "scanOnMigrationCreate": true,
2628
- "blockOnConflict": true,
2629
- "cacheExpiry": 300
2630
- },
2631
- "validation": {
2632
- "validateBeforeCommit": true,
2633
- "validateBeforeMerge": true,
2634
- "checkModelSnapshotConflicts": true,
2635
- "crossBranchValidation": true,
2636
- "requireBuildSuccess": true,
2637
- "warnOnPendingMigrations": true
2638
- },
2639
- "backup": {
2640
- "enabled": true,
2641
- "beforeRebase": true,
2642
- "beforeSquash": true,
2643
- "beforeMerge": true,
2644
- "retentionDays": 7,
2645
- "location": ".claude/gitflow/backup/migrations"
2646
- },
2647
- "rules": {
2648
- "oneMigrationPerFeature": true,
2649
- "recreateOnChange": true,
2650
- "requireDescription": true,
2651
- "validateNaming": true
2652
- },
2653
- "scripts": {
2654
- "generateOnRelease": true,
2655
- "outputPath": "./scripts/migrations",
2656
- "idempotent": true
2657
- }
2658
- }
2659
- }</code></pre>
2660
- </div>
2661
- </section>
124
+ <div class="content content-wide">
125
+ <nav class="breadcrumb">
126
+ <span class="breadcrumb-item"><span data-lang="fr">Workflows</span><span data-lang="en">Workflows</span></span>
127
+ <span class="breadcrumb-sep">›</span>
128
+ <span class="breadcrumb-item current">EF Core</span>
129
+
130
+ </nav>
131
+ <h1><span data-lang="fr">EF Core workflow de migrations</span><span data-lang="en">EF Core — migration workflow</span></h1>
132
+ <p><span data-lang="fr">Le skill <code>/efcore</code> couvre le cycle de vie complet des migrations Entity Framework Core sur un projet généré SmartStack (dual context : <code>CoreDbContext</code> + <code>ExtensionsDbContext</code>) ou sur le Studio (single context, providers Sqlite / Postgres / SqlServer).</span>
133
+ <span data-lang="en">The <code>/efcore</code> skill covers the full Entity Framework Core migration lifecycle on a generated SmartStack project (dual context: <code>CoreDbContext</code> + <code>ExtensionsDbContext</code>) or on the Studio (single context, Sqlite / Postgres / SqlServer providers).</span></p>
134
+ <h2><span data-lang="fr">Routing des opérations</span><span data-lang="en">Operation routing</span></h2>
135
+ <table>
136
+ <thead>
137
+ <tr>
138
+ <th><span data-lang="fr">Intention</span><span data-lang="en">Intent</span></th>
139
+ <th>Agent</th>
140
+ <th>CLI</th>
141
+ </tr>
142
+ </thead>
143
+ <tbody><tr>
144
+ <td><span data-lang="fr">Lister les migrations</span><span data-lang="en">List migrations</span></td>
145
+ <td><code>agents/list.md</code></td>
146
+ <td><code>cli/list</code></td>
147
+ </tr>
148
+ <tr>
149
+ <td><span data-lang="fr">État (pending / applied)</span><span data-lang="en">Status (pending / applied)</span></td>
150
+ <td><code>agents/status.md</code></td>
151
+ <td><code>cli/status</code></td>
152
+ </tr>
153
+ <tr>
154
+ <td><span data-lang="fr">Créer une migration</span><span data-lang="en">Create a migration</span></td>
155
+ <td><code>agents/create.md</code></td>
156
+ <td><code>cli/create</code></td>
157
+ </tr>
158
+ <tr>
159
+ <td><span data-lang="fr">Compresser avant merge</span><span data-lang="en">Squash before merge</span></td>
160
+ <td><code>agents/squash.md</code></td>
161
+ <td><code>cli/squash</code></td>
162
+ </tr>
163
+ <tr>
164
+ <td><span data-lang="fr">Rebase snapshot</span><span data-lang="en">Rebase snapshot</span></td>
165
+ <td><code>agents/rebase-snapshot.md</code></td>
166
+ <td><code>cli/rebase-snapshot</code></td>
167
+ </tr>
168
+ <tr>
169
+ <td><span data-lang="fr">Appliquer (dotnet ef database update)</span><span data-lang="en">Apply (dotnet ef database update)</span></td>
170
+ <td><code>agents/db-update.md</code></td>
171
+ <td>—</td>
172
+ </tr>
173
+ </tbody></table>
174
+ <h2><span data-lang="fr">Convention de nommage</span><span data-lang="en">Naming convention</span></h2>
175
+ <p><span data-lang="fr">Toutes les migrations suivent le pattern <code>{prefix}<em>v{version}</em>{seq3}<em>{Description}</code>, calculé par <code>cli/lib/migration-name.ts</code> :</span>
176
+ <span data-lang="en">All migrations follow the pattern <code>{prefix}<em>v{version}</em>{seq3}</em>{Description}</code>, computed by <code>cli/lib/migration-name.ts</code>:</span></p>
177
+ <pre><code class="language-text">Core_v5_0_0_001_AddInitialSchema
178
+ Ext_v5_0_0_002_AddInvoiceTable
179
+ </code></pre>
180
+ <table>
181
+ <thead>
182
+ <tr>
183
+ <th><span data-lang="fr">Token</span><span data-lang="en">Token</span></th>
184
+ <th><span data-lang="fr">Source</span><span data-lang="en">Source</span></th>
185
+ </tr>
186
+ </thead>
187
+ <tbody><tr>
188
+ <td><code>prefix</code></td>
189
+ <td><code>Core</code> / <code>Ext</code> / <code>Sqlite</code> / <code>Postgres</code> / <code>SqlServer</code></td>
190
+ </tr>
191
+ <tr>
192
+ <td><code>version</code></td>
193
+ <td><span data-lang="fr">depuis <code>.csproj</code> (PackageVersion)</span><span data-lang="en">from <code>.csproj</code> (PackageVersion)</span></td>
194
+ </tr>
195
+ <tr>
196
+ <td><code>seq3</code></td>
197
+ <td><span data-lang="fr">numérotation séquentielle à 3 chiffres</span><span data-lang="en">3-digit sequential numbering</span></td>
198
+ </tr>
199
+ <tr>
200
+ <td><code>Description</code></td>
201
+ <td><span data-lang="fr">PascalCase</span><span data-lang="en">PascalCase</span></td>
202
+ </tr>
203
+ </tbody></table>
204
+ <h2><span data-lang="fr">Détection automatique</span><span data-lang="en">Automatic detection</span></h2>
205
+ <p><span data-lang="fr">Le CLI détecte automatiquement la structure :</span>
206
+ <span data-lang="en">The CLI auto-detects the structure:</span></p>
207
+ <ul>
208
+ <li><span data-lang="fr"><strong>App générée</strong> : 2 contextes, 2 fichiers de migrations.</span><span data-lang="en"><strong>Generated app</strong>: 2 contexts, 2 migration files.</span></li>
209
+ <li><span data-lang="fr"><strong>Studio</strong> : 1 contexte, 3 projets de migrations (un par provider).</span><span data-lang="en"><strong>Studio</strong>: 1 context, 3 migration projects (one per provider).</span></li>
210
+ </ul>
211
+ <p><span data-lang="fr">Plus aucune dépendance MCP — <code>cli/lib/ef-runner.ts</code> appelle <code>dotnet ef</code> directement.</span>
212
+ <span data-lang="en">No more MCP dependency — <code>cli/lib/ef-runner.ts</code> calls <code>dotnet ef</code> directly.</span></p>
213
+
214
+
215
+ <section class="skills-section">
216
+ <h2 data-lang="fr">Skills disponibles</h2>
217
+ <h2 data-lang="en">Available Skills</h2>
218
+ <h3>infrastructure</h3>
219
+ <div class="skill-grid">
220
+ <div class="skill-card" id="skill-efcore">
221
+ <div class="skill-card-header">
222
+ <code class="skill-slug">/efcore</code>
223
+ <span class="skill-badge skill-badge-phase">infrastructure</span>
224
+ </div>
225
+ <p class="skill-description">EF Core migration workflow — create, squash, rebase-snapshot, apply, list, status. Applies the best practices of the global /efcore agents without MCP or external dependencies. Works against a single-assembly generated app (CoreDbContext + ExtensionsDbContext) or the multi-assembly Studio (StudioDbContext with Sqlite / Postgres / SqlServer migration projects).</p>
226
+ </div>
227
+ </div>
228
+ </section>
2662
229
 
2663
- </div>
230
+ </div>
2664
231
  </main>
2665
232
  </div>
2666
233
  </div>
2667
-
2668
- <!-- Mobile Menu Button -->
2669
- <button class="mobile-menu-btn">&#9776;</button>
2670
- <div class="overlay"></div>
2671
-
2672
234
  <script src="js/app.js"></script>
2673
235
  </body>
2674
236
  </html>