@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,161 +0,0 @@
1
- ---
2
- name: nextjs-expert
3
- description: >
4
- Next.js Expert specialist for React, App Router, Pages Router, and Next.js ecosystem patterns. Activates for keywords: nextjs, react, frontend, app router, pages, ssr, ssg.
5
- allowed-tools: Read, Write, Edit, Bash, Glob, Grep
6
- ---
7
-
8
- # .NET + Next.js Stack
9
-
10
- > **Layer:** 2 | **Load:** on-keyword | **Keywords:** nextjs, next.js, react, api, frontend, spa, typescript
11
-
12
- | Aspect | Technology |
13
- |--------|------------|
14
- | **Backend** | .NET 10 Web API / C# 14 |
15
- | **Frontend** | Next.js 15+ / React 19 |
16
- | **Database** | EF Core 10 + Azure SQL |
17
- | **API** | REST + OpenAPI |
18
- | **Hosting** | Azure Container Apps |
19
-
20
- ## Project Structure
21
-
22
- ```
23
- /
24
- ├── backend/
25
- │ ├── src/{Api,Application,Domain,Infrastructure}/
26
- │ ├── tests/
27
- │ └── Backend.sln
28
- ├── frontend/
29
- │ ├── src/{app,components,lib,hooks}/
30
- │ ├── package.json
31
- │ └── next.config.js
32
- ├── docker-compose.yml
33
- └── infra/main.bicep
34
- ```
35
-
36
- ---
37
-
38
- ## Backend (.NET Minimal API)
39
-
40
- ```csharp
41
- // Program.cs
42
- var builder = WebApplication.CreateBuilder(args);
43
- builder.Services.AddEndpointsApiExplorer();
44
- builder.Services.AddSwaggerGen();
45
- builder.Services.AddCors(o => o.AddPolicy("Frontend", p =>
46
- p.WithOrigins(builder.Configuration["Frontend:Url"]!)
47
- .AllowAnyHeader().AllowAnyMethod().AllowCredentials()));
48
- builder.Services.AddDbContext<AppDbContext>(o => o.UseSqlServer(connString));
49
-
50
- var app = builder.Build();
51
- if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); }
52
- app.UseCors("Frontend");
53
- app.UseAuthentication();
54
- app.UseAuthorization();
55
- app.MapOrderEndpoints();
56
- app.Run();
57
- ```
58
-
59
- ### Minimal API Endpoints
60
-
61
- ```csharp
62
- public static class OrderEndpoints
63
- {
64
- public static void MapOrderEndpoints(this WebApplication app)
65
- {
66
- var group = app.MapGroup("/api/orders").WithTags("Orders").RequireAuthorization();
67
- group.MapGet("/", GetAll);
68
- group.MapGet("/{id:int}", GetById);
69
- group.MapPost("/", Create);
70
- group.MapPut("/{id:int}", Update);
71
- group.MapDelete("/{id:int}", Delete);
72
- }
73
- // Each handler: inject IService + params → return Results.Ok/NotFound/Created/NoContent
74
- }
75
- ```
76
-
77
- ---
78
-
79
- ## Frontend (Next.js)
80
-
81
- ### API Client
82
-
83
- ```typescript
84
- const API_URL = process.env.NEXT_PUBLIC_API_URL!;
85
-
86
- async function fetchApi<T>(endpoint: string, options?: RequestInit): Promise<T> {
87
- const res = await fetch(`${API_URL}${endpoint}`, {
88
- ...options,
89
- headers: { 'Content-Type': 'application/json', ...options?.headers },
90
- credentials: 'include',
91
- });
92
- if (!res.ok) throw new Error(`API error: ${res.status}`);
93
- return res.json();
94
- }
95
-
96
- export const api = {
97
- orders: {
98
- getAll: (params?) => fetchApi<PaginatedResult<Order>>(`/api/orders?${new URLSearchParams(params)}`),
99
- getById: (id: number) => fetchApi<Order>(`/api/orders/${id}`),
100
- create: (data) => fetchApi<Order>('/api/orders', { method: 'POST', body: JSON.stringify(data) }),
101
- },
102
- };
103
- ```
104
-
105
- ### Types (generated from OpenAPI)
106
-
107
- ```typescript
108
- export interface Order { id: number; orderNumber: string; total: number; status: OrderStatus; }
109
- export type OrderStatus = 'Pending' | 'Processing' | 'Completed' | 'Cancelled';
110
- export interface PaginatedResult<T> { items: T[]; totalCount: number; page: number; totalPages: number; }
111
- ```
112
-
113
- ### Server Component (App Router)
114
- ```tsx
115
- export default async function OrdersPage() {
116
- const orders = await api.orders.getAll();
117
- return <OrderList initialOrders={orders} />;
118
- }
119
- ```
120
-
121
- ### Client Component
122
- ```tsx
123
- 'use client';
124
- // Use useState + api calls for client-side pagination/interaction
125
- ```
126
-
127
- ---
128
-
129
- ## Docker Compose
130
-
131
- ```yaml
132
- services:
133
- backend:
134
- build: { context: ./backend }
135
- ports: ["5000:8080"]
136
- environment:
137
- - ConnectionStrings__Default=Server=db;Database=App;User=sa;Password=Pass!;TrustServerCertificate=true
138
- - Frontend__Url=http://localhost:3000
139
- frontend:
140
- build: { context: ./frontend }
141
- ports: ["3000:3000"]
142
- environment: [NEXT_PUBLIC_API_URL=http://localhost:5000]
143
- db:
144
- image: mcr.microsoft.com/mssql/server:2022-latest
145
- environment: [ACCEPT_EULA=Y, SA_PASSWORD=YourStrong!Passw0rd]
146
- ports: ["1433:1433"]
147
- ```
148
-
149
- ## Checklist
150
- - [ ] Backend with Minimal APIs
151
- - [ ] OpenAPI/Swagger configured
152
- - [ ] CORS configured for frontend
153
- - [ ] Frontend with App Router (Next.js 15+)
154
- - [ ] API client typed
155
- - [ ] Types generated from OpenAPI
156
- - [ ] Docker Compose for dev
157
- - [ ] Environment variables configured
158
-
159
- ---
160
-
161
- *MORPH-SPEC by Polymorphism Tech*
@@ -1,7 +0,0 @@
1
- # Level 3: Technologies
2
-
3
- Technology-specific implementation patterns.
4
-
5
- **Purpose:** Skills for specific technologies (EF Core, Blazor, Hangfire, SignalR, etc.).
6
-
7
- **To be populated in Phase 8/9.**
@@ -1,7 +0,0 @@
1
- # Level 4: Patterns
2
-
3
- Architectural and design patterns.
4
-
5
- **Purpose:** Skills for specific patterns (CQRS, Event Sourcing, DDD, Repository, etc.).
6
-
7
- **To be populated later.**
@@ -1,217 +0,0 @@
1
- // ============================================================
2
- // CONTRACTS: {{titleCase FEATURE_NAME}}
3
- // Generated by MORPH Framework
4
- // Date: {{DATE}}
5
- // ============================================================
6
-
7
- #region Usings
8
-
9
- using System;
10
- using System.Collections.Generic;
11
- using System.Threading;
12
- using System.Threading.Tasks;
13
-
14
- #endregion
15
-
16
- namespace {{NAMESPACE}}.Application.Features.{{pascalCase FEATURE_NAME}};
17
-
18
- #region Service Interfaces
19
-
20
- /// <summary>
21
- /// Service for managing {{pascalCase FEATURE_NAME}} operations.
22
- /// </summary>
23
- public interface I{{pascalCase FEATURE_NAME}}Service
24
- {
25
- /// <summary>
26
- /// Gets a {{FEATURE_NAME_LOWER_SNAKE}} by its identifier.
27
- /// </summary>
28
- Task<{{pascalCase FEATURE_NAME}}Dto?> GetByIdAsync(int id, CancellationToken cancellationToken = default);
29
-
30
- /// <summary>
31
- /// Gets all {{FEATURE_NAME_LOWER_SNAKE}}s.
32
- /// </summary>
33
- Task<List<{{pascalCase FEATURE_NAME}}Dto>> GetAllAsync(CancellationToken cancellationToken = default);
34
-
35
- /// <summary>
36
- /// Creates a new {{FEATURE_NAME_LOWER_SNAKE}}.
37
- /// </summary>
38
- Task<{{pascalCase FEATURE_NAME}}Dto> CreateAsync(Create{{pascalCase FEATURE_NAME}}Request request, CancellationToken cancellationToken = default);
39
-
40
- /// <summary>
41
- /// Updates an existing {{FEATURE_NAME_LOWER_SNAKE}}.
42
- /// </summary>
43
- Task UpdateAsync(int id, Update{{pascalCase FEATURE_NAME}}Request request, CancellationToken cancellationToken = default);
44
-
45
- /// <summary>
46
- /// Deletes a {{FEATURE_NAME_LOWER_SNAKE}}.
47
- /// </summary>
48
- Task DeleteAsync(int id, CancellationToken cancellationToken = default);
49
- }
50
-
51
- #endregion
52
-
53
- #region DTOs
54
-
55
- /// <summary>
56
- /// Data transfer object for {{pascalCase FEATURE_NAME}}.
57
- /// </summary>
58
- public record {{pascalCase FEATURE_NAME}}Dto(
59
- int Id,
60
- string Name,
61
- {{pascalCase FEATURE_NAME}}Status Status,
62
- DateTime CreatedAt,
63
- DateTime? UpdatedAt
64
- );
65
-
66
- /// <summary>
67
- /// Request to create a new {{pascalCase FEATURE_NAME}}.
68
- /// </summary>
69
- public record Create{{pascalCase FEATURE_NAME}}Request(
70
- string Name
71
- // Add other required fields
72
- );
73
-
74
- /// <summary>
75
- /// Request to update an existing {{pascalCase FEATURE_NAME}}.
76
- /// </summary>
77
- public record Update{{pascalCase FEATURE_NAME}}Request(
78
- string Name
79
- // Add other updatable fields
80
- );
81
-
82
- #endregion
83
-
84
- #region Enums
85
-
86
- /// <summary>
87
- /// Status of a {{pascalCase FEATURE_NAME}}.
88
- /// </summary>
89
- public enum {{pascalCase FEATURE_NAME}}Status
90
- {
91
- Pending = 0,
92
- Active = 1,
93
- Completed = 2,
94
- Failed = 3
95
- }
96
-
97
- #endregion
98
-
99
- #region Repository Interfaces
100
-
101
- /// <summary>
102
- /// Repository for {{pascalCase FEATURE_NAME}} data access.
103
- /// </summary>
104
- public interface I{{pascalCase FEATURE_NAME}}Repository
105
- {
106
- Task<{{pascalCase FEATURE_NAME}}?> GetByIdAsync(int id, CancellationToken cancellationToken = default);
107
- Task<List<{{pascalCase FEATURE_NAME}}>> GetAllAsync(CancellationToken cancellationToken = default);
108
- Task AddAsync({{pascalCase FEATURE_NAME}} entity, CancellationToken cancellationToken = default);
109
- void Update({{pascalCase FEATURE_NAME}} entity);
110
- void Remove({{pascalCase FEATURE_NAME}} entity);
111
- Task SaveChangesAsync(CancellationToken cancellationToken = default);
112
- }
113
-
114
- #endregion
115
-
116
- #region Domain Entity Reference
117
-
118
- /*
119
- /// <summary>
120
- /// {{pascalCase FEATURE_NAME}} domain entity.
121
- /// Implement in Domain/Entities/{{pascalCase FEATURE_NAME}}.cs
122
- /// </summary>
123
- public class {{pascalCase FEATURE_NAME}}
124
- {
125
- public int Id { get; private set; }
126
- public string Name { get; private set; } = string.Empty;
127
- public {{pascalCase FEATURE_NAME}}Status Status { get; private set; }
128
- public DateTime CreatedAt { get; private set; }
129
- public DateTime? UpdatedAt { get; private set; }
130
-
131
- private {{pascalCase FEATURE_NAME}}() { } // EF Constructor
132
-
133
- public static {{pascalCase FEATURE_NAME}} Create(string name)
134
- {
135
- return new {{pascalCase FEATURE_NAME}}
136
- {
137
- Name = name,
138
- Status = {{pascalCase FEATURE_NAME}}Status.Pending,
139
- CreatedAt = DateTime.UtcNow
140
- };
141
- }
142
-
143
- public void Activate()
144
- {
145
- Status = {{pascalCase FEATURE_NAME}}Status.Active;
146
- UpdatedAt = DateTime.UtcNow;
147
- }
148
-
149
- public void Complete()
150
- {
151
- Status = {{pascalCase FEATURE_NAME}}Status.Completed;
152
- UpdatedAt = DateTime.UtcNow;
153
- }
154
- }
155
- */
156
-
157
- #endregion
158
-
159
- #region AI Agent Interfaces (if applicable)
160
-
161
- /// <summary>
162
- /// AI Agent for {{pascalCase FEATURE_NAME}} analysis.
163
- /// </summary>
164
- public interface I{{pascalCase FEATURE_NAME}}AnalyzerAgent
165
- {
166
- /// <summary>
167
- /// Analyzes {{FEATURE_NAME_LOWER_SNAKE}} data using AI.
168
- /// </summary>
169
- Task<{{pascalCase FEATURE_NAME}}AnalysisResult> AnalyzeAsync(
170
- {{pascalCase FEATURE_NAME}}Data data,
171
- CancellationToken cancellationToken = default);
172
- }
173
-
174
- public record {{pascalCase FEATURE_NAME}}Data(
175
- // Input data for analysis
176
- string Content
177
- );
178
-
179
- public record {{pascalCase FEATURE_NAME}}AnalysisResult(
180
- string Summary,
181
- List<string> Insights,
182
- List<string> Recommendations,
183
- double ConfidenceScore
184
- );
185
-
186
- #endregion
187
-
188
- #region Hangfire Job Interfaces (if applicable)
189
-
190
- /// <summary>
191
- /// Background job for processing {{pascalCase FEATURE_NAME}}.
192
- /// </summary>
193
- public interface I{{pascalCase FEATURE_NAME}}ProcessorJob
194
- {
195
- /// <summary>
196
- /// Executes the {{FEATURE_NAME_LOWER_SNAKE}} processing job.
197
- /// </summary>
198
- Task ExecuteAsync(int id, CancellationToken cancellationToken = default);
199
- }
200
-
201
- #endregion
202
-
203
- #region Exceptions
204
-
205
- public class {{pascalCase FEATURE_NAME}}NotFoundException : Exception
206
- {
207
- public {{pascalCase FEATURE_NAME}}NotFoundException(int id)
208
- : base($"{{pascalCase FEATURE_NAME}} with ID {id} was not found.") { }
209
- }
210
-
211
- public class {{pascalCase FEATURE_NAME}}ProcessingException : Exception
212
- {
213
- public {{pascalCase FEATURE_NAME}}ProcessingException(string message, Exception? innerException = null)
214
- : base(message, innerException) { }
215
- }
216
-
217
- #endregion
@@ -1,172 +0,0 @@
1
- // ====================================================================
2
- // Feature: {{FEATURE_NAME_TITLE}}
3
- // Contracts: DTOs, Interfaces, Enums, Value Objects
4
- // Generated: {{DATE}}
5
- // Author: {{AUTHOR}}
6
- // ====================================================================
7
- //
8
- // IMPORTANT: This file was generated from schema-analysis.md
9
- // All field names, types, and relationships are based on REAL database schema
10
- // DO NOT modify without checking schema-analysis.md first!
11
- //
12
- // ====================================================================
13
-
14
- namespace {{NAMESPACE}}.Features.{{FEATURE_NAME_PASCAL}};
15
-
16
- // ====================================================================
17
- // DTOs (Data Transfer Objects)
18
- // ====================================================================
19
- // Pattern: Use records for immutability
20
- // Pattern: All DTOs must have XML documentation
21
- // Pattern: Use nullable reference types appropriately
22
- // ====================================================================
23
-
24
- {{#each dtos}}
25
- /// <summary>
26
- /// {{this.description}}
27
- /// </summary>
28
- {{#if this.isCreateDto}}
29
- public record {{this.name}}(
30
- {{#each this.fields}}
31
- {{this.type}}{{#if this.nullable}}?{{/if}} {{this.name}}{{#unless @last}},{{/unless}}{{#if this.comment}} // {{this.comment}}{{/if}}
32
- {{/each}}
33
- );
34
- {{else if this.isUpdateDto}}
35
- public record {{this.name}}(
36
- {{#each this.fields}}
37
- {{this.type}}{{#if this.nullable}}?{{/if}} {{this.name}}{{#unless @last}},{{/unless}}{{#if this.comment}} // {{this.comment}}{{/if}}
38
- {{/each}}
39
- );
40
- {{else}}
41
- /// <summary>
42
- /// Response DTO for {{this.entityName}}
43
- /// </summary>
44
- public record {{this.name}}(
45
- {{#each this.fields}}
46
- {{this.type}}{{#if this.nullable}}?{{/if}} {{this.name}}{{#unless @last}},{{/unless}}{{#if this.comment}} // {{this.comment}}{{/if}}
47
- {{/each}}
48
- );
49
- {{/if}}
50
-
51
- {{/each}}
52
-
53
- // ====================================================================
54
- // Service Interfaces
55
- // ====================================================================
56
- // Pattern: All async methods must accept CancellationToken
57
- // Pattern: Use Task<TResult?> for operations that may return null
58
- // Pattern: Document exceptions in XML comments
59
- // ====================================================================
60
-
61
- {{#each interfaces}}
62
- /// <summary>
63
- /// {{this.description}}
64
- /// </summary>
65
- public interface {{this.name}}
66
- {
67
- {{#each this.methods}}
68
- /// <summary>
69
- /// {{this.description}}
70
- /// </summary>
71
- {{#if this.exceptions}}
72
- {{#each this.exceptions}}
73
- /// <exception cref="{{this.type}}">{{this.condition}}</exception>
74
- {{/each}}
75
- {{/if}}
76
- Task<{{this.returnType}}{{#if this.nullable}}?{{/if}}> {{this.name}}({{#each this.parameters}}{{this.type}} {{this.name}}{{#unless @last}}, {{/unless}}{{/each}}, CancellationToken ct);
77
-
78
- {{/each}}
79
- }
80
-
81
- {{/each}}
82
-
83
- // ====================================================================
84
- // Enums
85
- // ====================================================================
86
-
87
- {{#each enums}}
88
- /// <summary>
89
- /// {{this.description}}
90
- /// </summary>
91
- public enum {{this.name}}
92
- {
93
- {{#each this.values}}
94
- /// <summary>
95
- /// {{this.description}}
96
- /// </summary>
97
- {{this.name}}{{#if this.value}} = {{this.value}}{{/if}}{{#unless @last}},{{/unless}}
98
- {{/each}}
99
- }
100
-
101
- {{/each}}
102
-
103
- // ====================================================================
104
- // Value Objects (if applicable)
105
- // ====================================================================
106
-
107
- {{#each valueObjects}}
108
- /// <summary>
109
- /// {{this.description}}
110
- /// </summary>
111
- public record {{this.name}}
112
- {
113
- {{#each this.properties}}
114
- /// <summary>
115
- /// {{this.description}}
116
- /// </summary>
117
- public {{this.type}}{{#if this.nullable}}?{{/if}} {{this.name}} { get; init; }{{#if this.default}} = {{this.default}};{{/if}}
118
- {{/each}}
119
-
120
- {{#if this.validation}}
121
- /// <summary>
122
- /// Validates the value object
123
- /// </summary>
124
- public bool IsValid()
125
- {
126
- {{this.validation}}
127
- }
128
- {{/if}}
129
- }
130
-
131
- {{/each}}
132
-
133
- // ====================================================================
134
- // Request/Response Wrappers (if using CQRS)
135
- // ====================================================================
136
-
137
- {{#if useCQRS}}
138
- {{#each commands}}
139
- /// <summary>
140
- /// Command: {{this.description}}
141
- /// </summary>
142
- public record {{this.name}}(
143
- {{#each this.parameters}}
144
- {{this.type}}{{#if this.nullable}}?{{/if}} {{this.name}}{{#unless @last}},{{/unless}}
145
- {{/each}}
146
- );
147
-
148
- {{/each}}
149
-
150
- {{#each queries}}
151
- /// <summary>
152
- /// Query: {{this.description}}
153
- /// </summary>
154
- public record {{this.name}}(
155
- {{#each this.parameters}}
156
- {{this.type}}{{#if this.nullable}}?{{/if}} {{this.name}}{{#unless @last}},{{/unless}}
157
- {{/each}}
158
- );
159
-
160
- {{/each}}
161
- {{/if}}
162
-
163
- // ====================================================================
164
- // Notes
165
- // ====================================================================
166
- // - All field names match database schema (see schema-analysis.md)
167
- // - Nullability matches database constraints
168
- // - Complex types (JSONB → JsonObject) correctly mapped
169
- // - Relationships preserved in navigation properties
170
- // - Immutable records used for DTOs (recommended pattern)
171
- // - CancellationToken required for all async operations
172
- // ====================================================================