@polymorphism-tech/morph-spec 4.5.0 → 4.7.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 (292) hide show
  1. package/CLAUDE.md +77 -56
  2. package/README.md +394 -700
  3. package/docs/ARCHITECTURE.md +331 -0
  4. package/docs/CHEATSHEET.md +221 -0
  5. package/docs/COMMAND-FLOWS.md +368 -0
  6. package/docs/QUICKSTART.md +212 -0
  7. package/docs/examples/order-management/contracts.cs +84 -0
  8. package/docs/examples/order-management/proposal.md +24 -0
  9. package/docs/examples/order-management/spec.md +162 -0
  10. package/docs/plans/2026-02-23-ddd-architecture-refactor.md +1153 -0
  11. package/docs/plans/2026-02-23-ddd-nextsteps.md +682 -0
  12. package/docs/plans/2026-02-23-infra-architect-refactor.md +437 -0
  13. package/docs/plans/2026-02-23-nextjs-code-review-design.md +156 -0
  14. package/docs/plans/2026-02-23-nextjs-code-review-impl.md +1254 -0
  15. package/docs/plans/2026-02-23-nextjs-standards-design.md +149 -0
  16. package/docs/plans/2026-02-23-nextjs-standards-impl.md +1846 -0
  17. package/framework/{skills/level-2-domains → agents}/README.md +14 -14
  18. package/framework/{skills/level-2-domains → agents}/ai-agents/ai-system-architect.md +1 -4
  19. package/framework/{skills/level-2-domains → agents}/architecture/po-pm-advisor.md +1 -2
  20. package/framework/{skills/level-2-domains → agents}/architecture/prompt-engineer.md +1 -2
  21. package/framework/{skills/level-2-domains → agents}/architecture/seo-growth-hacker.md +1 -2
  22. package/framework/{skills/level-2-domains → agents}/architecture/standards-architect.md +159 -162
  23. package/framework/agents/backend/api-designer.md +103 -0
  24. package/framework/{skills/level-2-domains → agents}/backend/dotnet-senior.md +1 -2
  25. package/framework/agents/backend/ef-modeler.md +119 -0
  26. package/framework/{skills/level-2-domains → agents}/backend/hangfire-orchestrator.md +1 -4
  27. package/framework/{skills/level-2-domains → agents}/backend/ms-agent-expert.md +1 -4
  28. package/framework/{skills/level-2-domains → agents}/frontend/blazor-builder.md +1 -4
  29. package/framework/agents/frontend/nextjs-expert.md +118 -0
  30. package/framework/{skills/level-2-domains → agents}/frontend/ui-ux-designer.md +1 -2
  31. package/framework/{skills/level-2-domains → agents}/infrastructure/azure-architect.md +147 -148
  32. package/framework/{skills/level-2-domains → agents}/infrastructure/azure-deploy-specialist.md +1 -2
  33. package/framework/{skills/level-2-domains → agents}/infrastructure/bicep-architect.md +1 -4
  34. package/framework/{skills/level-2-domains → agents}/infrastructure/container-specialist.md +1 -4
  35. package/framework/{skills/level-2-domains → agents}/infrastructure/devops-engineer.md +1 -4
  36. package/framework/agents/infrastructure/infra-architect.md +45 -0
  37. package/framework/{skills/level-2-domains → agents}/integrations/asaas-financial.md +1 -4
  38. package/framework/{skills/level-2-domains → agents}/integrations/azure-identity.md +1 -4
  39. package/framework/{skills/level-2-domains → agents}/integrations/clerk-auth.md +1 -4
  40. package/framework/{skills/level-2-domains → agents}/integrations/hangfire-integration.md +1 -2
  41. package/framework/{skills/level-2-domains → agents}/integrations/resend-email.md +1 -4
  42. package/framework/{skills/level-2-domains → agents}/quality/code-analyzer.md +1 -4
  43. package/framework/{skills/level-2-domains → agents}/quality/testing-specialist.md +1 -4
  44. package/framework/agents.json +1145 -278
  45. package/framework/hooks/claude-code/statusline.py +384 -85
  46. package/framework/hooks/shared/phase-utils.js +129 -129
  47. package/framework/rules/frontend-standards.md +0 -3
  48. package/framework/rules/nextjs-standards.md +17 -0
  49. package/framework/skills/README.md +66 -0
  50. package/framework/skills/level-0-meta/{brainstorming.md → brainstorming/SKILL.md} +3 -1
  51. package/framework/skills/level-0-meta/brainstorming/references/proposal-example.md +138 -0
  52. package/framework/skills/level-0-meta/{code-review.md → code-review/SKILL.md} +3 -2
  53. package/framework/skills/level-0-meta/code-review/references/review-example.md +164 -0
  54. package/framework/skills/level-0-meta/code-review/scripts/scan-csharp.mjs +121 -0
  55. package/framework/skills/level-0-meta/code-review-nextjs/SKILL.md +147 -0
  56. package/framework/skills/level-0-meta/code-review-nextjs/references/review-example-nextjs.md +254 -0
  57. package/framework/skills/level-0-meta/{morph-checklist.md → morph-checklist/SKILL.md} +2 -5
  58. package/framework/skills/{level-1-workflows/morph-replicate.md → level-0-meta/morph-replicate/SKILL.md} +6 -7
  59. package/framework/skills/level-0-meta/{simulation-checklist.md → simulation-checklist/SKILL.md} +3 -6
  60. package/framework/skills/level-0-meta/{tool-usage-guide.md → tool-usage-guide/SKILL.md} +4 -5
  61. package/framework/skills/level-0-meta/{verification-before-completion.md → verification-before-completion/SKILL.md} +3 -1
  62. package/framework/skills/level-0-meta/verification-before-completion/scripts/check-phase-outputs.mjs +110 -0
  63. package/framework/skills/level-1-workflows/{phase-clarify.md → phase-clarify/SKILL.md} +3 -3
  64. package/framework/skills/level-1-workflows/phase-clarify/references/clarifications-example.md +117 -0
  65. package/framework/skills/level-1-workflows/{phase-codebase-analysis.md → phase-codebase-analysis/SKILL.md} +2 -3
  66. package/framework/skills/level-1-workflows/{phase-design.md → phase-design/SKILL.md} +46 -182
  67. package/framework/skills/level-1-workflows/phase-design/references/spec-example.md +253 -0
  68. package/framework/skills/level-1-workflows/{phase-implement.md → phase-implement/SKILL.md} +3 -3
  69. package/framework/skills/level-1-workflows/phase-implement/references/recap-example.md +132 -0
  70. package/framework/skills/level-1-workflows/{phase-setup.md → phase-setup/SKILL.md} +2 -3
  71. package/framework/skills/level-1-workflows/{phase-tasks.md → phase-tasks/SKILL.md} +42 -3
  72. package/framework/skills/level-1-workflows/phase-tasks/references/tasks-example.md +231 -0
  73. package/framework/skills/level-1-workflows/phase-tasks/scripts/validate-tasks.mjs +112 -0
  74. package/framework/skills/level-1-workflows/{phase-uiux.md → phase-uiux/SKILL.md} +2 -3
  75. package/framework/standards/STANDARDS.json +121 -0
  76. package/framework/standards/architecture/ddd/bounded-contexts.md +105 -0
  77. package/framework/standards/architecture/ddd/complexity-levels.md +108 -0
  78. package/framework/standards/architecture/ddd/ubiquitous-language.md +58 -0
  79. package/framework/standards/frontend/nextjs/app-router.md +123 -0
  80. package/framework/standards/frontend/nextjs/components.md +132 -0
  81. package/framework/standards/frontend/nextjs/data-fetching.md +126 -0
  82. package/framework/standards/frontend/nextjs/forms.md +128 -0
  83. package/framework/standards/frontend/nextjs/naming-conventions.md +67 -0
  84. package/framework/standards/frontend/nextjs/project-structure.md +102 -0
  85. package/framework/standards/frontend/nextjs/state-management.md +72 -0
  86. package/framework/standards/frontend/nextjs/testing.md +111 -0
  87. package/framework/templates/REGISTRY.json +538 -142
  88. package/framework/templates/code/dotnet/contracts/contracts-level1.cs +69 -0
  89. package/framework/templates/code/dotnet/contracts/contracts-level2.cs +86 -0
  90. package/framework/templates/code/dotnet/contracts/contracts-level3.cs +41 -0
  91. package/framework/templates/docs/spec.md +49 -0
  92. package/framework/templates/frontend/nextjs/Dockerfile.nextjs.hbs +43 -0
  93. package/framework/templates/frontend/nextjs/client-component.tsx.hbs +26 -0
  94. package/framework/templates/frontend/nextjs/env.mjs.hbs +32 -0
  95. package/framework/templates/frontend/nextjs/feature-form.tsx.hbs +56 -0
  96. package/framework/templates/frontend/nextjs/page.tsx.hbs +22 -0
  97. package/framework/templates/frontend/nextjs/tsconfig.json.hbs +26 -0
  98. package/framework/templates/frontend/nextjs/use-feature.ts.hbs +54 -0
  99. package/framework/templates/project-structure/dotnet-ddd.md +70 -0
  100. package/framework/workflows/docs/enforcement-pipeline.md +2 -1
  101. package/package.json +1 -1
  102. package/scripts/scan-nextjs.mjs +169 -0
  103. package/src/commands/project/doctor.js +52 -1
  104. package/src/commands/project/init.js +19 -65
  105. package/src/commands/project/update.js +7 -63
  106. package/src/lib/detectors/claude-config-detector.js +1 -3
  107. package/src/lib/standards/standards-context-injector.js +5 -0
  108. package/src/lib/validators/nextjs/index.js +6 -0
  109. package/src/lib/validators/nextjs/next-component-validator.js +181 -0
  110. package/src/lib/validators/validation-runner.js +5 -0
  111. package/src/utils/agents-installer.js +16 -4
  112. package/src/utils/skills-installer.js +59 -15
  113. package/.morph/.morphversion +0 -5
  114. package/.morph/analytics/threads-log.jsonl +0 -44
  115. package/.morph/config/config.json +0 -8
  116. package/.morph/context/README.md +0 -17
  117. package/.morph/framework/agents.json +0 -948
  118. package/.morph/framework/standards/STANDARDS.json +0 -812
  119. package/.morph/framework/standards/ai-agents/blazor-ui.md +0 -364
  120. package/.morph/framework/standards/ai-agents/production.md +0 -415
  121. package/.morph/framework/standards/ai-agents/setup.md +0 -418
  122. package/.morph/framework/standards/ai-agents/team-orchestration.md +0 -479
  123. package/.morph/framework/standards/ai-agents/workflows.md +0 -354
  124. package/.morph/framework/standards/architecture/ddd/aggregates.md +0 -120
  125. package/.morph/framework/standards/architecture/ddd/entities.md +0 -99
  126. package/.morph/framework/standards/architecture/ddd/value-objects.md +0 -124
  127. package/.morph/framework/standards/backend/api/minimal-api.md +0 -494
  128. package/.morph/framework/standards/backend/api/rest.md +0 -492
  129. package/.morph/framework/standards/backend/api/validation.md +0 -88
  130. package/.morph/framework/standards/backend/authentication/passkeys.md +0 -428
  131. package/.morph/framework/standards/backend/database/ef-core.md +0 -199
  132. package/.morph/framework/standards/backend/database/migrations.md +0 -393
  133. package/.morph/framework/standards/backend/database/postgresql/database.md +0 -352
  134. package/.morph/framework/standards/backend/database/repository-patterns.md +0 -528
  135. package/.morph/framework/standards/backend/database/vector-search-rag.md +0 -541
  136. package/.morph/framework/standards/backend/dotnet/async.md +0 -366
  137. package/.morph/framework/standards/backend/dotnet/core.md +0 -117
  138. package/.morph/framework/standards/backend/dotnet/di.md +0 -439
  139. package/.morph/framework/standards/backend/dotnet/program-cs-checklist.md +0 -92
  140. package/.morph/framework/standards/backend/integrations/asaas/asaas-api.md +0 -216
  141. package/.morph/framework/standards/backend/integrations/clerk/clerk-auth.md +0 -290
  142. package/.morph/framework/standards/backend/integrations/hangfire/hangfire-jobs.md +0 -350
  143. package/.morph/framework/standards/backend/integrations/resend/resend-email.md +0 -385
  144. package/.morph/framework/standards/context/analytics.md +0 -96
  145. package/.morph/framework/standards/context/bundles.md +0 -110
  146. package/.morph/framework/standards/context/priming.md +0 -78
  147. package/.morph/framework/standards/core/architecture.md +0 -185
  148. package/.morph/framework/standards/core/coding.md +0 -214
  149. package/.morph/framework/standards/core/git-branching-strategy.md +0 -403
  150. package/.morph/framework/standards/core/git.md +0 -185
  151. package/.morph/framework/standards/core/testing.md +0 -295
  152. package/.morph/framework/standards/data/nosql/blob-storage.md +0 -102
  153. package/.morph/framework/standards/data/nosql/cache/redis.md +0 -97
  154. package/.morph/framework/standards/data/nosql/cosmos-db.md +0 -118
  155. package/.morph/framework/standards/data/vector-search/azure-ai-search.md +0 -121
  156. package/.morph/framework/standards/data/vector-search/rag-chunking.md +0 -104
  157. package/.morph/framework/standards/frontend/blazor/design-checklist.md +0 -222
  158. package/.morph/framework/standards/frontend/blazor/fluent-ui-setup.md +0 -595
  159. package/.morph/framework/standards/frontend/blazor/fluent-ui.md +0 -137
  160. package/.morph/framework/standards/frontend/blazor/html-conversion.md +0 -184
  161. package/.morph/framework/standards/frontend/blazor/lifecycle.md +0 -195
  162. package/.morph/framework/standards/frontend/blazor/pitfalls.md +0 -198
  163. package/.morph/framework/standards/frontend/blazor/state.md +0 -191
  164. package/.morph/framework/standards/frontend/design-system/animations.md +0 -151
  165. package/.morph/framework/standards/frontend/design-system/naming.md +0 -64
  166. package/.morph/framework/standards/frontend/nextjs/nextjs-patterns.md +0 -198
  167. package/.morph/framework/standards/infrastructure/azure/azure.md +0 -624
  168. package/.morph/framework/standards/infrastructure/azure/bicep/bicep-patterns.md +0 -422
  169. package/.morph/framework/standards/infrastructure/azure/devops/azure-devops-setup.md +0 -516
  170. package/.morph/framework/standards/infrastructure/azure/devops/local-development.md +0 -520
  171. package/.morph/framework/standards/infrastructure/azure/services/functions.md +0 -486
  172. package/.morph/framework/standards/infrastructure/azure/services/service-bus.md +0 -459
  173. package/.morph/framework/standards/infrastructure/azure/services/storage.md +0 -407
  174. package/.morph/framework/standards/infrastructure/docker/easypanel-deploy.md +0 -196
  175. package/.morph/framework/standards/infrastructure/supabase/mcp-setup.md +0 -252
  176. package/.morph/framework/standards/infrastructure/supabase/supabase-auth.md +0 -176
  177. package/.morph/framework/standards/infrastructure/supabase/supabase-pgvector.md +0 -169
  178. package/.morph/framework/standards/infrastructure/supabase/supabase-rls.md +0 -184
  179. package/.morph/framework/standards/infrastructure/supabase/supabase-storage.md +0 -153
  180. package/.morph/framework/standards/integration/api/graphql.md +0 -91
  181. package/.morph/framework/standards/integration/api/grpc.md +0 -114
  182. package/.morph/framework/standards/integration/api/rest-design.md +0 -95
  183. package/.morph/framework/standards/integration/event-driven/cqrs.md +0 -101
  184. package/.morph/framework/standards/integration/event-driven/event-sourcing.md +0 -124
  185. package/.morph/framework/standards/integration/event-driven/service-bus.md +0 -95
  186. package/.morph/framework/standards/integration/mcp/mcp-tools.md +0 -384
  187. package/.morph/framework/standards/observability/logging.md +0 -131
  188. package/.morph/framework/standards/observability/metrics.md +0 -121
  189. package/.morph/framework/standards/observability/monitoring.md +0 -114
  190. package/.morph/framework/standards/observability/tracing.md +0 -132
  191. package/.morph/framework/standards/workflows/parallel-execution.md +0 -112
  192. package/.morph/framework/standards/workflows/thread-management.md +0 -113
  193. package/.morph/framework/templates/.idea/morph-templates.xml +0 -92
  194. package/.morph/framework/templates/.vscode/morph-templates.code-snippets +0 -186
  195. package/.morph/framework/templates/IDE-SNIPPETS.md +0 -266
  196. package/.morph/framework/templates/README.md +0 -814
  197. package/.morph/framework/templates/REGISTRY.json +0 -1492
  198. package/.morph/framework/templates/code/dotnet/backend/repository.cs +0 -141
  199. package/.morph/framework/templates/code/dotnet/backend/service.cs +0 -139
  200. package/.morph/framework/templates/code/dotnet/contracts/Commands.cs +0 -74
  201. package/.morph/framework/templates/code/dotnet/contracts/Entities.cs +0 -25
  202. package/.morph/framework/templates/code/dotnet/contracts/Queries.cs +0 -74
  203. package/.morph/framework/templates/code/dotnet/contracts/README.md +0 -74
  204. package/.morph/framework/templates/code/dotnet/contracts/api-contracts.cs +0 -173
  205. package/.morph/framework/templates/code/dotnet/contracts/contracts.cs +0 -217
  206. package/.morph/framework/templates/code/dotnet/contracts/contracts.cs.hbs +0 -172
  207. package/.morph/framework/templates/code/dotnet/database/migration.cs +0 -83
  208. package/.morph/framework/templates/code/dotnet/frontend/component.razor +0 -239
  209. package/.morph/framework/templates/code/dotnet/jobs/agent.cs +0 -163
  210. package/.morph/framework/templates/code/dotnet/jobs/job.cs +0 -171
  211. package/.morph/framework/templates/code/dotnet/test.cs +0 -239
  212. package/.morph/framework/templates/code/sql/rls-policy.sql +0 -57
  213. package/.morph/framework/templates/code/sql/supabase-migration.sql +0 -100
  214. package/.morph/framework/templates/code/sql/supabase-migration.template.sql +0 -113
  215. package/.morph/framework/templates/code/typescript/contracts.ts +0 -168
  216. package/.morph/framework/templates/context/CONTEXT-FEATURE.md +0 -276
  217. package/.morph/framework/templates/context/CONTEXT.md +0 -181
  218. package/.morph/framework/templates/docs/clarifications.md +0 -253
  219. package/.morph/framework/templates/docs/onboarding.md +0 -123
  220. package/.morph/framework/templates/docs/proposal.md +0 -182
  221. package/.morph/framework/templates/docs/schema-analysis.md +0 -119
  222. package/.morph/framework/templates/docs/spec.md +0 -149
  223. package/.morph/framework/templates/docs/ui-components.md +0 -124
  224. package/.morph/framework/templates/docs/ui-design-system.md +0 -76
  225. package/.morph/framework/templates/docs/ui-flows.md +0 -167
  226. package/.morph/framework/templates/docs/ui-mockups.md +0 -98
  227. package/.morph/framework/templates/examples/design-system-examples.md +0 -357
  228. package/.morph/framework/templates/examples/spec-examples.md +0 -90
  229. package/.morph/framework/templates/feature/decisions.md +0 -187
  230. package/.morph/framework/templates/feature/recap.md +0 -146
  231. package/.morph/framework/templates/feature/tasks.md +0 -199
  232. package/.morph/framework/templates/infrastructure/azure/Dockerfile.example +0 -82
  233. package/.morph/framework/templates/infrastructure/azure/README.md +0 -286
  234. package/.morph/framework/templates/infrastructure/azure/app-insights.bicep +0 -63
  235. package/.morph/framework/templates/infrastructure/azure/app-service.bicep +0 -164
  236. package/.morph/framework/templates/infrastructure/azure/container-app-env.bicep +0 -49
  237. package/.morph/framework/templates/infrastructure/azure/container-app.bicep +0 -156
  238. package/.morph/framework/templates/infrastructure/azure/deploy-checklist.md +0 -426
  239. package/.morph/framework/templates/infrastructure/azure/deploy.ps1 +0 -229
  240. package/.morph/framework/templates/infrastructure/azure/deploy.sh +0 -208
  241. package/.morph/framework/templates/infrastructure/azure/key-vault.bicep +0 -91
  242. package/.morph/framework/templates/infrastructure/azure/main.bicep +0 -189
  243. package/.morph/framework/templates/infrastructure/azure/parameters.dev.json +0 -29
  244. package/.morph/framework/templates/infrastructure/azure/parameters.prod.json +0 -29
  245. package/.morph/framework/templates/infrastructure/azure/parameters.staging.json +0 -29
  246. package/.morph/framework/templates/infrastructure/azure/sql-database.bicep +0 -103
  247. package/.morph/framework/templates/infrastructure/azure/storage.bicep +0 -106
  248. package/.morph/framework/templates/infrastructure/docker/Dockerfile.template +0 -58
  249. package/.morph/framework/templates/infrastructure/docker/docker-compose.template.yml +0 -67
  250. package/.morph/framework/templates/infrastructure/docker/dockerfile-api.dockerfile +0 -38
  251. package/.morph/framework/templates/infrastructure/docker/dockerfile-web.dockerfile +0 -48
  252. package/.morph/framework/templates/infrastructure/docker/easypanel.template.json +0 -54
  253. package/.morph/framework/templates/infrastructure/github/README.md +0 -593
  254. package/.morph/framework/templates/infrastructure/github/actions/azure-auth/action.yml.hbs +0 -22
  255. package/.morph/framework/templates/infrastructure/github/actions/docker-build-push/action.yml.hbs +0 -45
  256. package/.morph/framework/templates/infrastructure/github/actions/health-check/action.yml.hbs +0 -27
  257. package/.morph/framework/templates/infrastructure/github/workflows/deploy-azure-app-service.yml.hbs +0 -61
  258. package/.morph/framework/templates/infrastructure/github/workflows/deploy-easypanel.yml.hbs +0 -31
  259. package/.morph/framework/templates/infrastructure/github/workflows/docker-build-push.yml.hbs +0 -59
  260. package/.morph/framework/templates/infrastructure/github/workflows/dotnet-build.yml.hbs +0 -39
  261. package/.morph/framework/templates/integrations/asaas-client.cs +0 -387
  262. package/.morph/framework/templates/integrations/asaas-webhook.cs +0 -351
  263. package/.morph/framework/templates/integrations/azure-identity-config.cs +0 -288
  264. package/.morph/framework/templates/integrations/clerk-config.cs +0 -258
  265. package/.morph/framework/templates/meta-prompts/fusion/fusion-agent.md +0 -76
  266. package/.morph/framework/templates/meta-prompts/fusion/fusion-aggregator.md +0 -100
  267. package/.morph/framework/templates/meta-prompts/hops/hop-retry.md +0 -78
  268. package/.morph/framework/templates/meta-prompts/hops/hop-validation.md +0 -97
  269. package/.morph/framework/templates/meta-prompts/hops/hop-wrapper.md +0 -36
  270. package/.morph/framework/templates/meta-prompts/parallel-workers/parallel-coordinator.md +0 -113
  271. package/.morph/framework/templates/meta-prompts/parallel-workers/parallel-worker.md +0 -80
  272. package/.morph/framework/templates/meta-prompts/squad-leaders/backend-squad.md +0 -90
  273. package/.morph/framework/templates/meta-prompts/squad-leaders/frontend-squad.md +0 -126
  274. package/.morph/framework/templates/meta-prompts/squad-leaders/squad-leader.md +0 -43
  275. package/.morph/framework/templates/meta-prompts/validators/checkpoint-validator.md +0 -107
  276. package/.morph/framework/templates/meta-prompts/validators/pre-commit-validator.md +0 -95
  277. package/.morph/framework/templates/saas/subscription.cs +0 -347
  278. package/.morph/framework/templates/saas/tenant.cs +0 -338
  279. package/.morph/framework/templates/state.template.json +0 -17
  280. package/.morph/framework/templates/ui/FluentDesignTheme.cs +0 -149
  281. package/.morph/framework/templates/ui/MudTheme.cs +0 -281
  282. package/.morph/framework/templates/ui/design-system.css +0 -226
  283. package/.morph/logs/tool-failures.log +0 -51
  284. package/.morph/memory/pre-compact-2026-02-22T17-01-01-658Z.json +0 -16
  285. package/.morph/state.json +0 -48
  286. package/framework/skills/level-2-domains/backend/api-designer.md +0 -66
  287. package/framework/skills/level-2-domains/backend/ef-modeler.md +0 -65
  288. package/framework/skills/level-2-domains/frontend/nextjs-expert.md +0 -161
  289. package/framework/skills/level-3-technologies/README.md +0 -7
  290. package/framework/skills/level-4-patterns/README.md +0 -7
  291. package/framework/templates/code/dotnet/contracts/contracts.cs +0 -217
  292. package/framework/templates/code/dotnet/contracts/contracts.cs.hbs +0 -172
@@ -1,393 +0,0 @@
1
- # EF Core Migrations Standards
2
-
3
- > **Scope:** blazor-azure,nextjs-supabase
4
- > **Layer:** 1 (on domain)
5
- > **Keywords:** migration, schema, database update, ef migrations
6
- > **Load When:** database work
7
-
8
- Migration naming, creation, and deployment best practices
9
-
10
- ---
11
-
12
- ## Migration Naming
13
-
14
- ### Format
15
-
16
- ```
17
- {Timestamp}_{DescriptiveAction}
18
-
19
- Examples:
20
- 20260216103000_CreateUserTable
21
- 20260216104500_AddEmailIndexToUsers
22
- 20260216110000_AlterOrdersAddTotalColumn
23
- ```
24
-
25
- ### Naming Convention
26
-
27
- - Use PascalCase
28
- - Start with action verb: `Create`, `Add`, `Alter`, `Remove`, `Update`
29
- - Be specific about what changed
30
- - Keep under 50 characters
31
-
32
- ```bash
33
- # ✅ GOOD
34
- dotnet ef migrations add CreateUserTable
35
- dotnet ef migrations add AddEmailIndexToUsers
36
- dotnet ef migrations add AlterOrdersAddStatusColumn
37
-
38
- # ❌ BAD
39
- dotnet ef migrations add Update
40
- dotnet ef migrations add Changes
41
- dotnet ef migrations add Fix
42
- ```
43
-
44
- ---
45
-
46
- ## Creating Migrations
47
-
48
- ### Command
49
-
50
- ```bash
51
- # Create migration
52
- dotnet ef migrations add CreateUserTable --project Infrastructure --startup-project Web
53
-
54
- # Create migration with output folder
55
- dotnet ef migrations add AddOrderEntity --output-dir Data/Migrations
56
- ```
57
-
58
- ### Before Creating Migration
59
-
60
- 1. **Build project** - Ensure no compilation errors
61
- 2. **Review model changes** - Verify entity changes are correct
62
- 3. **Check DbContext** - Ensure DbSet and OnModelCreating are updated
63
-
64
- ---
65
-
66
- ## Migration Content
67
-
68
- ### Up Method (Apply Changes)
69
-
70
- ```csharp
71
- protected override void Up(MigrationBuilder migrationBuilder)
72
- {
73
- // Create table
74
- migrationBuilder.CreateTable(
75
- name: "Users",
76
- columns: table => new
77
- {
78
- Id = table.Column<int>(nullable: false)
79
- .Annotation("SqlServer:Identity", "1, 1"),
80
- Email = table.Column<string>(maxLength: 256, nullable: false),
81
- PasswordHash = table.Column<string>(nullable: false),
82
- CreatedAt = table.Column<DateTime>(nullable: false, defaultValueSql: "GETUTCDATE()")
83
- },
84
- constraints: table =>
85
- {
86
- table.PrimaryKey("PK_Users", x => x.Id);
87
- });
88
-
89
- // Create index
90
- migrationBuilder.CreateIndex(
91
- name: "IX_Users_Email",
92
- table: "Users",
93
- column: "Email",
94
- unique: true);
95
- }
96
- ```
97
-
98
- ### Down Method (Rollback Changes)
99
-
100
- ```csharp
101
- protected override void Down(MigrationBuilder migrationBuilder)
102
- {
103
- // Drop in reverse order
104
- migrationBuilder.DropIndex(
105
- name: "IX_Users_Email",
106
- table: "Users");
107
-
108
- migrationBuilder.DropTable(
109
- name: "Users");
110
- }
111
- ```
112
-
113
- ---
114
-
115
- ## Data Seeding in Migrations
116
-
117
- ### Seed Required Data
118
-
119
- ```csharp
120
- protected override void Up(MigrationBuilder migrationBuilder)
121
- {
122
- // Create table
123
- migrationBuilder.CreateTable(...);
124
-
125
- // Seed data
126
- migrationBuilder.InsertData(
127
- table: "Roles",
128
- columns: new[] { "Id", "Name" },
129
- values: new object[,]
130
- {
131
- { 1, "Admin" },
132
- { 2, "User" }
133
- });
134
- }
135
-
136
- protected override void Down(MigrationBuilder migrationBuilder)
137
- {
138
- // Delete data
139
- migrationBuilder.DeleteData(
140
- table: "Roles",
141
- keyColumn: "Id",
142
- keyValues: new object[] { 1, 2 });
143
-
144
- migrationBuilder.DropTable("Roles");
145
- }
146
- ```
147
-
148
- ---
149
-
150
- ## Applying Migrations
151
-
152
- ### Development
153
-
154
- ```bash
155
- # Apply all pending migrations
156
- dotnet ef database update
157
-
158
- # Apply to specific migration
159
- dotnet ef database update CreateUserTable
160
-
161
- # Rollback to previous migration
162
- dotnet ef database update PreviousMigrationName
163
-
164
- # Rollback all migrations
165
- dotnet ef database update 0
166
- ```
167
-
168
- ### Production
169
-
170
- **Option 1: SQL Script (Recommended)**
171
-
172
- ```bash
173
- # Generate SQL script for all pending migrations
174
- dotnet ef migrations script --output migrate.sql
175
-
176
- # Generate SQL from specific range
177
- dotnet ef migrations script FromMigration ToMigration --output migrate.sql
178
-
179
- # Idempotent script (can run multiple times)
180
- dotnet ef migrations script --idempotent --output migrate.sql
181
- ```
182
-
183
- **Option 2: Automatic (Startup)**
184
-
185
- ```csharp
186
- // Program.cs
187
- using (var scope = app.Services.CreateScope())
188
- {
189
- var context = scope.ServiceProvider.GetRequiredService<AppDbContext>();
190
-
191
- if (builder.Environment.IsDevelopment())
192
- {
193
- await context.Database.MigrateAsync(); // ✅ Dev only
194
- }
195
- }
196
- ```
197
-
198
- ---
199
-
200
- ## Handling Production Data
201
-
202
- ### Adding Column with Default
203
-
204
- ```csharp
205
- protected override void Up(MigrationBuilder migrationBuilder)
206
- {
207
- // Add column with default value (safe for existing rows)
208
- migrationBuilder.AddColumn<string>(
209
- name: "Status",
210
- table: "Orders",
211
- nullable: false,
212
- defaultValue: "Pending"); // ✅ Default prevents NULL for existing rows
213
- }
214
- ```
215
-
216
- ### Renaming Column (Preserve Data)
217
-
218
- ```csharp
219
- protected override void Up(MigrationBuilder migrationBuilder)
220
- {
221
- // Rename column (data preserved)
222
- migrationBuilder.RenameColumn(
223
- name: "OldName",
224
- table: "Users",
225
- newName: "NewName");
226
- }
227
-
228
- protected override void Down(MigrationBuilder migrationBuilder)
229
- {
230
- migrationBuilder.RenameColumn(
231
- name: "NewName",
232
- table: "Users",
233
- newName: "OldName");
234
- }
235
- ```
236
-
237
- ### Altering Column Type (Risky)
238
-
239
- ```csharp
240
- protected override void Up(MigrationBuilder migrationBuilder)
241
- {
242
- // ⚠️ RISKY: May lose data if not compatible
243
- // Example: VARCHAR(50) → VARCHAR(100) is safe
244
- // VARCHAR(100) → VARCHAR(50) may truncate
245
- // NVARCHAR → INT will fail
246
-
247
- migrationBuilder.AlterColumn<string>(
248
- name: "Email",
249
- table: "Users",
250
- maxLength: 512, // Increased from 256
251
- nullable: false,
252
- oldClrType: typeof(string),
253
- oldMaxLength: 256);
254
- }
255
- ```
256
-
257
- ---
258
-
259
- ## Best Practices
260
-
261
- ### DO
262
-
263
- ✅ **Review generated migration before applying**
264
-
265
- ```bash
266
- dotnet ef migrations add AddUserEntity
267
- # Review Migrations/xxxxx_AddUserEntity.cs file
268
- # Verify Up and Down methods are correct
269
- dotnet ef database update
270
- ```
271
-
272
- ✅ **Create migrations for each logical change**
273
-
274
- ```bash
275
- # ✅ GOOD (separate migrations)
276
- dotnet ef migrations add CreateUserTable
277
- dotnet ef migrations add CreateOrderTable
278
-
279
- # ❌ BAD (one big migration)
280
- dotnet ef migrations add CreateAllTables
281
- ```
282
-
283
- ✅ **Test migrations in dev before production**
284
-
285
- ```bash
286
- # Test migration
287
- dotnet ef database update
288
-
289
- # Test rollback
290
- dotnet ef database update PreviousMigration
291
-
292
- # Test re-apply
293
- dotnet ef database update LatestMigration
294
- ```
295
-
296
- ✅ **Use idempotent scripts for production**
297
-
298
- ```bash
299
- dotnet ef migrations script --idempotent --output deploy.sql
300
- ```
301
-
302
- ### DON'T
303
-
304
- ❌ **Don't modify applied migrations**
305
-
306
- ```csharp
307
- // ❌ WRONG (migration already applied in prod)
308
- protected override void Up(MigrationBuilder migrationBuilder)
309
- {
310
- // Changed this after already deployed - will cause issues!
311
- migrationBuilder.CreateTable(...);
312
- }
313
-
314
- // ✅ CORRECT (create new migration)
315
- dotnet ef migrations add FixUserTable
316
- ```
317
-
318
- ❌ **Don't delete migrations already in production**
319
-
320
- ```bash
321
- # ❌ WRONG (will break production)
322
- rm Migrations/20260216_CreateUserTable.cs
323
-
324
- # ✅ CORRECT (rollback properly)
325
- dotnet ef migrations remove
326
- ```
327
-
328
- ❌ **Don't use database.EnsureCreated() with migrations**
329
-
330
- ```csharp
331
- // ❌ WRONG (conflicts with migrations)
332
- context.Database.EnsureCreated();
333
-
334
- // ✅ CORRECT
335
- context.Database.Migrate();
336
- ```
337
-
338
- ---
339
-
340
- ## Troubleshooting
341
-
342
- ### Migration Pending Error
343
-
344
- ```
345
- Error: Pending model changes detected
346
- ```
347
-
348
- **Solution:**
349
-
350
- ```bash
351
- dotnet ef migrations add FixPendingChanges
352
- dotnet ef database update
353
- ```
354
-
355
- ### Migration Already Applied
356
-
357
- ```
358
- Error: Migration 'xxx' has already been applied
359
- ```
360
-
361
- **Solution:**
362
-
363
- ```bash
364
- # Remove last migration (if not in prod)
365
- dotnet ef migrations remove
366
-
367
- # Or create new migration
368
- dotnet ef migrations add AdditionalChanges
369
- ```
370
-
371
- ### Rollback Failed
372
-
373
- ```
374
- Error: Could not rollback migration
375
- ```
376
-
377
- **Solution:**
378
-
379
- ```bash
380
- # Manually fix database state, then:
381
- dotnet ef database update LastGoodMigration --force
382
- ```
383
-
384
- ---
385
-
386
- ## Related Standards
387
-
388
- - [EF Core Standards](./ef-core.md)
389
- - [Database Performance](./performance.md)
390
-
391
- ---
392
-
393
- *MORPH-SPEC by Polymorphism Tech*