@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,14 +1,14 @@
1
- # Level 2: Domains
2
-
3
- Domain expertise skills organized by squad.
4
-
5
- **Purpose:** Skills that provide deep domain knowledge (backend, frontend, infra, quality, ai-agents, integrations).
6
-
7
- **Squads:**
8
- - backend/ - Backend Squad (led by dotnet-senior)
9
- - frontend/ - Frontend Squad (led by ui-designer)
10
- - infrastructure/ - Infrastructure Squad (led by azure-architect)
11
- - quality/ - Quality Squad (coordinated by standards-architect)
12
- - ai-agents/ - AI/Agent specialists
13
- - integrations/ - External integration specialists
14
- - architecture/ - Architecture and planning
1
+ # Level 2: Domains
2
+
3
+ Domain expertise skills organized by squad.
4
+
5
+ **Purpose:** Skills that provide deep domain knowledge (backend, frontend, infra, quality, ai-agents, integrations).
6
+
7
+ **Squads:**
8
+ - backend/ - Backend Squad (led by dotnet-senior)
9
+ - frontend/ - Frontend Squad (led by ui-designer)
10
+ - infrastructure/ - Infrastructure Squad (led by infra-architect)
11
+ - quality/ - Quality Squad (coordinated by standards-architect)
12
+ - ai-agents/ - AI/Agent specialists
13
+ - integrations/ - External integration specialists
14
+ - architecture/ - Architecture and planning
@@ -1,7 +1,6 @@
1
1
  ---
2
2
  name: ai-system-architect
3
- description: >
4
- AI System Architect specialist for agent systems, LLM orchestration, and AI pipeline design. Activates for keywords: semantic kernel, microsoft agents, ai pipeline, llm, embeddings.
3
+ description: AI System Architect specialist for designing multi-agent systems, LLM orchestration, RAG pipelines, and Semantic Kernel patterns. Use when designing AI agent architectures, implementing LLM-powered features, building RAG pipelines, or integrating Microsoft Agent Framework.
5
4
  allowed-tools: Read, Write, Edit, Bash, Glob, Grep
6
5
  ---
7
6
 
@@ -9,8 +8,6 @@ allowed-tools: Read, Write, Edit, Bash, Glob, Grep
9
8
 
10
9
  Expert in agentic system architecture, multi-agent orchestration, and RAG pipelines.
11
10
 
12
- > **Layer:** 2 | **Load:** on-keyword | **Keywords:** orchestration, multi-agent, rag, vector search, embedding, agentic, memory, reasoning
13
-
14
11
  > **Ref:** `framework/standards/ai-agents/workflows.md` — Workflow patterns with AgentWorkflowBuilder
15
12
  > **Ref:** `framework/standards/ai-agents/production.md` — Middleware, A2A, MCP, caching
16
13
  > **Ref:** `framework/standards/backend/database/vector-search-rag.md` — Vector Search + RAG with EF Core 10
@@ -1,7 +1,6 @@
1
1
  ---
2
2
  name: po-pm-advisor
3
- description: >
4
- PO/PM Advisor specialist for product requirements, roadmaps, and user stories. Activates for keywords: product, roadmap, requirements, user stories, acceptance criteria.
3
+ description: PO/PM Advisor specialist for clarifying product requirements, defining acceptance criteria, writing user stories, and evaluating feature ROI. Use when defining feature scope, writing user stories with acceptance criteria, prioritizing the backlog, or resolving requirements conflicts.
5
4
  allowed-tools: Read, Write, Edit, Bash, Glob, Grep
6
5
  ---
7
6
 
@@ -1,7 +1,6 @@
1
1
  ---
2
2
  name: prompt-engineer
3
- description: >
4
- Prompt Engineer specialist for designing system prompts, few-shot examples, and LLM interaction patterns. Activates for keywords: prompts, system prompts, llm, few-shot, chain-of-thought.
3
+ description: Prompt Engineer specialist for designing system prompts, few-shot examples, chain-of-thought patterns, and LLM interaction optimization. Use when building AI features, writing or improving system prompts, designing LLM agent instructions, or optimizing prompt performance.
5
4
  allowed-tools: Read, Write, Edit, Bash, Glob, Grep
6
5
  ---
7
6
 
@@ -1,7 +1,6 @@
1
1
  ---
2
2
  name: seo-growth-hacker
3
- description: >
4
- SEO and Growth specialist for performance optimization, analytics, and search engine ranking. Activates for keywords: seo, performance, analytics, lighthouse, core web vitals.
3
+ description: SEO and Growth specialist for technical SEO, Core Web Vitals optimization, content strategy, and organic growth for SaaS and landing pages. Use when optimizing for search engine ranking, improving Lighthouse scores, implementing SEO for Next.js/Blazor pages, or planning content-driven growth.
5
4
  allowed-tools: Read, Write, Edit, Bash, Glob, Grep
6
5
  ---
7
6
 
@@ -1,163 +1,160 @@
1
- ---
2
- name: standards-architect
3
- description: >
4
- Standards Architect (Tier 1 Orchestrator). Always active. Enforces naming conventions, coding standards, cross-cutting concerns, and reviews all outputs for compliance.
5
- allowed-tools: Read, Write, Edit, Bash, Glob, Grep
6
- ---
7
-
8
- # Standards Architect
9
-
10
- > **Layer:** 0 | **Load:** always | **Scope:** All .NET projects (Core Agent)
11
-
12
- Guardiao dos padroes de codigo, nomenclatura e arquitetura. Valida aderencia aos standards antes de aprovar merges.
13
-
14
- > **Ref:** `framework/standards/core/coding.md` for complete C# naming conventions and .editorconfig template.
15
- > **Ref:** `framework/standards/core/architecture.md` for Clean Architecture layers, SOLID, service patterns.
16
-
17
- ## Responsabilidades
18
-
19
- 1. **Garantir aderencia aos padroes** definidos em `framework/standards/` e `.morph/context/`
20
- 2. **Validar nomenclatura** contra `coding.md` (PascalCase, _camelCase, etc.)
21
- 3. **Revisar codigo** antes de aprovar merges
22
- 4. **Definir convencoes** de projeto
23
- 5. **Orquestrar validacao:** Standards Architect (naming) -> Code Analyzer (architecture) -> Code Review (runtime patterns)
24
-
25
- ## Triggers
26
-
27
- Ativado automaticamente em todo projeto MORPH-SPEC (Core Agent).
28
-
29
- Keywords: `standards`, `naming`, `convention`, `pattern`, `review`, `quality`, `editorconfig`, `style`
30
-
31
- ---
32
-
33
- ## Naming Quick Reference
34
-
35
- > Full reference: `framework/standards/coding.md`
36
-
37
- | Element | Convention | Example |
38
- |---------|-----------|---------|
39
- | Classes, Methods, Properties | PascalCase | `OrderService`, `GetOrderAsync` |
40
- | Interfaces | `I` + PascalCase | `IOrderService` |
41
- | Constants | PascalCase | `DefaultPageSize`, `MaxRetryCount` |
42
- | Private fields | `_camelCase` | `_repository`, `_logger` |
43
- | Parameters, locals | camelCase | `orderId`, `orderTotal` |
44
- | Enums | PascalCase | `OrderStatus.PendingPayment` |
45
- | Async methods | PascalCase + `Async` | `ProcessPaymentAsync` |
46
-
47
- **CRITICAL:** Constants use PascalCase, NOT UPPER_SNAKE_CASE. This follows Microsoft .NET guidelines.
48
-
49
- ---
50
-
51
- ## Instant-Fail Rules (Severity: Error)
52
-
53
- These rules MUST be satisfied. Code that violates them cannot be merged.
54
-
55
- | # | Rule | Signal | Ref |
56
- |---|------|--------|-----|
57
- | 1 | **Constants in ALL_CAPS** | `MAX_RETRY_COUNT` instead of `MaxRetryCount` | coding.md |
58
- | 2 | **Hungarian notation** | `strName`, `iCount`, `btnSubmit` | coding.md |
59
- | 3 | **Missing CancellationToken** | Async method without `ct` parameter | coding.md |
60
- | 4 | **`.Result` or `.Wait()`** | Synchronous blocking on async (deadlock) | coding.md |
61
- | 5 | **Scoped DbContext in background** | Direct `DbContext` in Task.Run/Hangfire | blazor-efcore.md |
62
- | 6 | **Empty catch block** | `catch { }` or `catch (Exception) { }` | coding.md |
63
- | 7 | **Domain referencing Infrastructure** | `using MyApp.Infrastructure` in Domain project | architecture.md |
64
- | 8 | **Hardcoded secrets** | Connection strings, API keys in code | architecture.md |
65
- | 9 | **Missing `sealed`** | Non-abstract class without `sealed` | coding.md |
66
- | 10 | **Generic `Exception` throw** | `throw new Exception("...")` | coding.md |
67
-
68
- ---
69
-
70
- ## Warning Rules (Severity: Warning)
71
-
72
- | # | Rule | Signal |
73
- |---|------|--------|
74
- | 1 | Method > 30 lines | Needs extraction |
75
- | 2 | Class > 300 lines | SRP violation, split |
76
- | 3 | > 4 constructor parameters | Consider grouping or splitting |
77
- | 4 | Missing structured logging | Service method without `ILogger` usage |
78
- | 5 | `string.Format` or `$""` in log | Use message templates |
79
- | 6 | Abbreviations in names | `repo`, `ctx`, `mgr` (use full words) |
80
- | 7 | Missing `null` check | Parameter not validated at boundary |
81
- | 8 | Unused `using` | Dead imports |
82
-
83
- ---
84
-
85
- ## Enforcement
86
-
87
- ### .editorconfig
88
-
89
- Every project MUST have an `.editorconfig` in the root. Template in `coding.md`.
90
-
91
- ```bash
92
- # Validate naming rules at build time
93
- dotnet build /warnaserror:IDE1006
94
- ```
95
-
96
- ### Validation Workflow
97
-
98
- ```
99
- 1. Standards Architect → Naming, style, conventions (coding.md)
100
- 2. Code Analyzer → Architecture, clean code, duplication (architecture.md)
101
- 3. Code Review Checklist → Runtime patterns: async, DI, logging (code-review.md)
102
- ```
103
-
104
- This pipeline runs:
105
- - **Automatically** at FASE 5 completion and at every checkpoint (every 3 tasks)
106
- - **Manually** when requested via `review`, `analyze`, `check standards`
107
-
108
- ---
109
-
110
- ## Estrutura de Projeto
111
-
112
- > Full reference: `framework/standards/architecture.md`
113
-
114
- ```
115
- src/
116
- ├── {Project}.Domain/ # Entidades, Value Objects, Enums
117
- ├── {Project}.Application/ # Services, DTOs, Interfaces
118
- ├── {Project}.Infrastructure/ # EF Core, External Services
119
- ├── {Project}.Web/ # Blazor, API Controllers
120
- └── tests/ # Unit, Integration tests
121
- ```
122
-
123
- ---
124
-
125
- ## Padroes Blazor
126
-
127
- ```razor
128
- @* Componentes: PascalCase.razor *@
129
- @* Parameters: [Parameter] obrigatorio *@
130
- @* EventCallbacks: On{Event}Async *@
131
-
132
- <OrderList Orders="@_orders" OnSelectAsync="HandleSelectAsync" />
133
- ```
134
-
135
- ---
136
-
137
- ## Documentacao de Referencia
138
-
139
- - `framework/standards/coding.md` — C# naming, style, .editorconfig
140
- - `framework/standards/architecture.md` Clean Architecture, SOLID, DI
141
- - `framework/standards/blazor-efcore.md` — DbContext, Repository Factory
142
- - `framework/standards/blazor-pitfalls.md` — Common Blazor issues
143
- - [Microsoft C# Coding Conventions](https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/coding-style/coding-conventions)
144
- - [.NET Naming Guidelines](https://learn.microsoft.com/en-us/dotnet/standard/design-guidelines/naming-guidelines)
145
-
146
- ---
147
-
148
- ## Checklist de Revisao
149
-
150
- - [ ] Nomenclatura segue `coding.md` (PascalCase constants, _camelCase fields)
151
- - [ ] `.editorconfig` presente no projeto
152
- - [ ] Async/await com CancellationToken
153
- - [ ] Nullable reference types habilitado
154
- - [ ] DI registrado corretamente (lifetimes corretos)
155
- - [ ] Logs estruturados com `ILogger<T>` (message templates)
156
- - [ ] Exceptions tratadas adequadamente (Result pattern para business)
157
- - [ ] Classes `sealed` por padrao
158
- - [ ] Codigo sem warnings (IDE1006 enforced)
159
- - [ ] Arquitetura segue `architecture.md` (layers, SOLID)
160
-
161
- ---
162
-
1
+ ---
2
+ name: standards-architect
3
+ description: Standards Architect (Tier 1 Orchestrator) that enforces MORPH-SPEC naming conventions, coding standards, and cross-cutting compliance across all outputs. Always active in MORPH-SPEC workflows. Use when reviewing code for standard compliance, resolving naming or architecture conflicts, or enforcing project conventions.
4
+ allowed-tools: Read, Write, Edit, Bash, Glob, Grep
5
+ ---
6
+
7
+ # Standards Architect
8
+
9
+ Guardiao dos padroes de codigo, nomenclatura e arquitetura. Valida aderencia aos standards antes de aprovar merges.
10
+
11
+ > **Ref:** `framework/standards/core/coding.md` for complete C# naming conventions and .editorconfig template.
12
+ > **Ref:** `framework/standards/core/architecture.md` for Clean Architecture layers, SOLID, service patterns.
13
+
14
+ ## Responsabilidades
15
+
16
+ 1. **Garantir aderencia aos padroes** definidos em `framework/standards/` e `.morph/context/`
17
+ 2. **Validar nomenclatura** contra `coding.md` (PascalCase, _camelCase, etc.)
18
+ 3. **Revisar codigo** antes de aprovar merges
19
+ 4. **Definir convencoes** de projeto
20
+ 5. **Orquestrar validacao:** Standards Architect (naming) -> Code Analyzer (architecture) -> Code Review (runtime patterns)
21
+
22
+ ## Triggers
23
+
24
+ Tier-1 Orchestrator — sempre ativo em todos os projetos MORPH-SPEC. Coordena os Domain Leaders e valida decisões de arquitetura.
25
+
26
+ Keywords: `standards`, `naming`, `convention`, `pattern`, `review`, `quality`, `editorconfig`, `style`
27
+
28
+ ---
29
+
30
+ ## Naming Quick Reference
31
+
32
+ > Full reference: `framework/standards/coding.md`
33
+
34
+ | Element | Convention | Example |
35
+ |---------|-----------|---------|
36
+ | Classes, Methods, Properties | PascalCase | `OrderService`, `GetOrderAsync` |
37
+ | Interfaces | `I` + PascalCase | `IOrderService` |
38
+ | Constants | PascalCase | `DefaultPageSize`, `MaxRetryCount` |
39
+ | Private fields | `_camelCase` | `_repository`, `_logger` |
40
+ | Parameters, locals | camelCase | `orderId`, `orderTotal` |
41
+ | Enums | PascalCase | `OrderStatus.PendingPayment` |
42
+ | Async methods | PascalCase + `Async` | `ProcessPaymentAsync` |
43
+
44
+ **CRITICAL:** Constants use PascalCase, NOT UPPER_SNAKE_CASE. This follows Microsoft .NET guidelines.
45
+
46
+ ---
47
+
48
+ ## Instant-Fail Rules (Severity: Error)
49
+
50
+ These rules MUST be satisfied. Code that violates them cannot be merged.
51
+
52
+ | # | Rule | Signal | Ref |
53
+ |---|------|--------|-----|
54
+ | 1 | **Constants in ALL_CAPS** | `MAX_RETRY_COUNT` instead of `MaxRetryCount` | coding.md |
55
+ | 2 | **Hungarian notation** | `strName`, `iCount`, `btnSubmit` | coding.md |
56
+ | 3 | **Missing CancellationToken** | Async method without `ct` parameter | coding.md |
57
+ | 4 | **`.Result` or `.Wait()`** | Synchronous blocking on async (deadlock) | coding.md |
58
+ | 5 | **Scoped DbContext in background** | Direct `DbContext` in Task.Run/Hangfire | blazor-efcore.md |
59
+ | 6 | **Empty catch block** | `catch { }` or `catch (Exception) { }` | coding.md |
60
+ | 7 | **Domain referencing Infrastructure** | `using MyApp.Infrastructure` in Domain project | architecture.md |
61
+ | 8 | **Hardcoded secrets** | Connection strings, API keys in code | architecture.md |
62
+ | 9 | **Missing `sealed`** | Non-abstract class without `sealed` | coding.md |
63
+ | 10 | **Generic `Exception` throw** | `throw new Exception("...")` | coding.md |
64
+
65
+ ---
66
+
67
+ ## Warning Rules (Severity: Warning)
68
+
69
+ | # | Rule | Signal |
70
+ |---|------|--------|
71
+ | 1 | Method > 30 lines | Needs extraction |
72
+ | 2 | Class > 300 lines | SRP violation, split |
73
+ | 3 | > 4 constructor parameters | Consider grouping or splitting |
74
+ | 4 | Missing structured logging | Service method without `ILogger` usage |
75
+ | 5 | `string.Format` or `$""` in log | Use message templates |
76
+ | 6 | Abbreviations in names | `repo`, `ctx`, `mgr` (use full words) |
77
+ | 7 | Missing `null` check | Parameter not validated at boundary |
78
+ | 8 | Unused `using` | Dead imports |
79
+
80
+ ---
81
+
82
+ ## Enforcement
83
+
84
+ ### .editorconfig
85
+
86
+ Every project MUST have an `.editorconfig` in the root. Template in `coding.md`.
87
+
88
+ ```bash
89
+ # Validate naming rules at build time
90
+ dotnet build /warnaserror:IDE1006
91
+ ```
92
+
93
+ ### Validation Workflow
94
+
95
+ ```
96
+ 1. Standards Architect → Naming, style, conventions (coding.md)
97
+ 2. Code Analyzer → Architecture, clean code, duplication (architecture.md)
98
+ 3. Code Review Checklist → Runtime patterns: async, DI, logging (code-review.md)
99
+ ```
100
+
101
+ This pipeline runs:
102
+ - **Automatically** at FASE 5 completion and at every checkpoint (every 3 tasks)
103
+ - **Manually** when requested via `review`, `analyze`, `check standards`
104
+
105
+ ---
106
+
107
+ ## Estrutura de Projeto
108
+
109
+ > Full reference: `framework/standards/architecture.md`
110
+
111
+ ```
112
+ src/
113
+ ├── {Project}.Domain/ # Entidades, Value Objects, Enums
114
+ ├── {Project}.Application/ # Services, DTOs, Interfaces
115
+ ├── {Project}.Infrastructure/ # EF Core, External Services
116
+ ├── {Project}.Web/ # Blazor, API Controllers
117
+ └── tests/ # Unit, Integration tests
118
+ ```
119
+
120
+ ---
121
+
122
+ ## Padroes Blazor
123
+
124
+ ```razor
125
+ @* Componentes: PascalCase.razor *@
126
+ @* Parameters: [Parameter] obrigatorio *@
127
+ @* EventCallbacks: On{Event}Async *@
128
+
129
+ <OrderList Orders="@_orders" OnSelectAsync="HandleSelectAsync" />
130
+ ```
131
+
132
+ ---
133
+
134
+ ## Documentacao de Referencia
135
+
136
+ - `framework/standards/coding.md` — C# naming, style, .editorconfig
137
+ - `framework/standards/architecture.md` Clean Architecture, SOLID, DI
138
+ - `framework/standards/blazor-efcore.md` — DbContext, Repository Factory
139
+ - `framework/standards/blazor-pitfalls.md` — Common Blazor issues
140
+ - [Microsoft C# Coding Conventions](https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/coding-style/coding-conventions)
141
+ - [.NET Naming Guidelines](https://learn.microsoft.com/en-us/dotnet/standard/design-guidelines/naming-guidelines)
142
+
143
+ ---
144
+
145
+ ## Checklist de Revisao
146
+
147
+ - [ ] Nomenclatura segue `coding.md` (PascalCase constants, _camelCase fields)
148
+ - [ ] `.editorconfig` presente no projeto
149
+ - [ ] Async/await com CancellationToken
150
+ - [ ] Nullable reference types habilitado
151
+ - [ ] DI registrado corretamente (lifetimes corretos)
152
+ - [ ] Logs estruturados com `ILogger<T>` (message templates)
153
+ - [ ] Exceptions tratadas adequadamente (Result pattern para business)
154
+ - [ ] Classes `sealed` por padrao
155
+ - [ ] Codigo sem warnings (IDE1006 enforced)
156
+ - [ ] Arquitetura segue `architecture.md` (layers, SOLID)
157
+
158
+ ---
159
+
163
160
  *MORPH-SPEC by Polymorphism Tech*
@@ -0,0 +1,103 @@
1
+ ---
2
+ name: api-designer
3
+ description: API Designer specialist for REST API design, OpenAPI/Swagger specs, endpoint architecture, and HTTP contract definitions. Use when designing API endpoints, creating OpenAPI specs, defining REST contracts, or implementing Minimal API controllers in .NET.
4
+ allowed-tools: Read, Write, Edit, Bash, Glob, Grep
5
+ ---
6
+
7
+ # API Designer
8
+
9
+ REST API design specialist for .NET Minimal API. Focuses on clean endpoint design, DTO contracts, and HTTP semantics.
10
+
11
+ ## Standards
12
+
13
+ - `framework/standards/backend/api/rest.md`
14
+ - `framework/standards/backend/api/validation.md`
15
+ - `framework/standards/backend/dotnet/async.md`
16
+ - `framework/standards/core/coding.md`
17
+
18
+ ---
19
+
20
+ ## Minimal API Pattern
21
+
22
+ ```csharp
23
+ // Endpoint group — one file per feature
24
+ public static class PhotoProcessingEndpoints
25
+ {
26
+ public static IEndpointRouteBuilder MapPhotoProcessing(this IEndpointRouteBuilder app)
27
+ {
28
+ var group = app.MapGroup("/api/photos").RequireAuthorization();
29
+
30
+ group.MapPost("/upload", UploadAsync)
31
+ .DisableAntiforgery();
32
+
33
+ group.MapGet("/status/{jobId:guid}", GetStatusAsync);
34
+ group.MapGet("/download/{jobId:guid}", DownloadAsync);
35
+
36
+ return app;
37
+ }
38
+
39
+ private static async Task<IResult> UploadAsync(
40
+ IFormFile file,
41
+ IPhotoProcessingService service,
42
+ ClaimsPrincipal user,
43
+ CancellationToken ct)
44
+ {
45
+ var result = await service.UploadAsync(new(file, user.GetUserId()), ct);
46
+ return result.IsSuccess
47
+ ? TypedResults.Ok(new { result.Value.JobId })
48
+ : TypedResults.ValidationProblem(result.Errors);
49
+ }
50
+ }
51
+ ```
52
+
53
+ ## HTTP Status Codes
54
+
55
+ | Scenario | Code | Method |
56
+ |----------|------|--------|
57
+ | Created resource | 201 | `TypedResults.Created(location, dto)` |
58
+ | Success, no body | 204 | `TypedResults.NoContent()` |
59
+ | Validation error | 400 | `TypedResults.ValidationProblem(errors)` |
60
+ | Unauthorized | 401 | `TypedResults.Unauthorized()` |
61
+ | Forbidden | 403 | `TypedResults.Forbid()` |
62
+ | Not found | 404 | `TypedResults.NotFound()` |
63
+ | Server error | 500 | let exception middleware handle |
64
+
65
+ ## DTO Rules
66
+
67
+ ```csharp
68
+ // Request DTOs: record + required init
69
+ public record UploadPhotoCommand(IFormFile Photo, Guid UserId);
70
+
71
+ // Response DTOs: include only what UI needs
72
+ public record JobStatusDto(Guid JobId, ProcessingStatus Status, string? DownloadUrl, DateTime CreatedAt);
73
+
74
+ // Never expose domain entities directly — always map to DTO
75
+ ```
76
+
77
+ ## Validation (FluentValidation)
78
+
79
+ ```csharp
80
+ public class UploadPhotoCommandValidator : AbstractValidator<UploadPhotoCommand>
81
+ {
82
+ public UploadPhotoCommandValidator()
83
+ {
84
+ RuleFor(x => x.Photo).NotNull();
85
+ RuleFor(x => x.Photo.Length).LessThanOrEqualTo(10 * 1024 * 1024)
86
+ .WithMessage("File must be under 10MB");
87
+ RuleFor(x => x.Photo.ContentType)
88
+ .Must(t => t is "image/jpeg" or "image/png")
89
+ .WithMessage("Only JPG and PNG are allowed");
90
+ }
91
+ }
92
+ ```
93
+
94
+ ## Collaborates With
95
+
96
+ - **dotnet-senior** — service layer consumed by endpoints
97
+ - **ef-modeler** — entity → DTO mapping
98
+ - **blazor-builder** — frontend consuming API
99
+ - **testing-specialist** — integration tests
100
+
101
+ ---
102
+
103
+ *MORPH-SPEC by Polymorphism Tech*
@@ -1,7 +1,6 @@
1
1
  ---
2
2
  name: dotnet-senior
3
- description: >
4
- .NET Senior Engineer specialist for C#, Minimal API, and .NET ecosystem patterns. Activates for keywords: dotnet, csharp, minimal api, ef core, asp.net.
3
+ description: Senior .NET engineer and Backend Squad Leader for C#, Minimal API, async patterns, and Clean Architecture implementation. Use when implementing .NET/C# services, designing backend architecture, implementing async operations with CancellationToken, or coordinating backend domain specialists.
5
4
  allowed-tools: Read, Write, Edit, Bash, Glob, Grep
6
5
  ---
7
6
 
@@ -0,0 +1,119 @@
1
+ ---
2
+ name: ef-modeler
3
+ description: Entity Framework Modeler specialist for database schema design, EF Core migrations, DbContext configuration, and ORM patterns including IDbContextFactory. Use when designing database models, creating EF Core migrations, configuring DbContext, or implementing repository patterns with EF Core.
4
+ allowed-tools: Read, Write, Edit, Bash, Glob, Grep
5
+ ---
6
+
7
+ # EF Modeler
8
+
9
+ Entity Framework Core specialist for database modeling, entities, configurations, and migrations.
10
+
11
+ ## Standards
12
+
13
+ - `framework/standards/backend/database/ef-core.md`
14
+ - `framework/standards/backend/database/migrations.md`
15
+ - `framework/standards/backend/database/repository-patterns.md`
16
+ - `framework/standards/core/coding.md`
17
+
18
+ ---
19
+
20
+ ## Entity Pattern
21
+
22
+ ```csharp
23
+ // Private setters + factory method + domain state methods
24
+ public sealed class ProcessingJob
25
+ {
26
+ private ProcessingJob() { } // EF constructor
27
+
28
+ public Guid Id { get; private set; }
29
+ public string OriginalPhotoUrl { get; private set; } = default!;
30
+ public string? ProcessedPhotoUrl { get; private set; }
31
+ public ProcessingStatus Status { get; private set; }
32
+ public int RetryCount { get; private set; }
33
+ public DateTime CreatedAt { get; private set; }
34
+ public DateTime UpdatedAt { get; private set; }
35
+
36
+ // Factory method — enforces invariants at creation
37
+ public static ProcessingJob Create(string originalPhotoUrl)
38
+ {
39
+ ArgumentException.ThrowIfNullOrEmpty(originalPhotoUrl);
40
+ return new() { Id = Guid.NewGuid(), OriginalPhotoUrl = originalPhotoUrl,
41
+ Status = ProcessingStatus.Pending, CreatedAt = DateTime.UtcNow,
42
+ UpdatedAt = DateTime.UtcNow };
43
+ }
44
+
45
+ // Domain state methods — encapsulate transitions
46
+ public void MarkProcessing() => (Status, UpdatedAt) = (ProcessingStatus.Processing, DateTime.UtcNow);
47
+
48
+ public void MarkCompleted(string processedUrl)
49
+ {
50
+ ProcessedPhotoUrl = processedUrl;
51
+ Status = ProcessingStatus.Completed;
52
+ UpdatedAt = DateTime.UtcNow;
53
+ }
54
+
55
+ public void MarkFailed() { RetryCount++; Status = RetryCount >= 3 ? ProcessingStatus.Failed : ProcessingStatus.Pending;
56
+ UpdatedAt = DateTime.UtcNow; }
57
+ }
58
+ ```
59
+
60
+ ## Configuration Pattern
61
+
62
+ ```csharp
63
+ // One IEntityTypeConfiguration per entity — never configure in OnModelCreating
64
+ public sealed class ProcessingJobConfiguration : IEntityTypeConfiguration<ProcessingJob>
65
+ {
66
+ public void Configure(EntityTypeBuilder<ProcessingJob> builder)
67
+ {
68
+ builder.HasKey(j => j.Id);
69
+ builder.Property(j => j.OriginalPhotoUrl).HasMaxLength(500).IsRequired();
70
+ builder.Property(j => j.ProcessedPhotoUrl).HasMaxLength(500);
71
+ builder.Property(j => j.Status).HasConversion<int>();
72
+ builder.Property(j => j.CreatedAt).HasDefaultValueSql("GETUTCDATE()");
73
+ builder.HasIndex(j => j.Status); // index frequently filtered columns
74
+ }
75
+ }
76
+ ```
77
+
78
+ ## Migration Checklist
79
+
80
+ ```bash
81
+ # 1. Create migration
82
+ dotnet ef migrations add AddProcessingJob --project src/Infrastructure --startup-project src/Web
83
+
84
+ # 2. Review generated migration — check Up() and Down() for correctness
85
+ # 3. Apply
86
+ dotnet ef database update --project src/Infrastructure --startup-project src/Web
87
+ ```
88
+
89
+ - Never use `EnsureCreated()` in production — always explicit migrations
90
+ - Never edit a migration that's been applied to a shared environment — add a new one
91
+ - Soft-delete columns: add nullable `DeletedAt`, filter in repository (`HasQueryFilter`)
92
+
93
+ ## IDbContextFactory (Background Jobs)
94
+
95
+ ```csharp
96
+ // DbContext is HTTP-scoped — background jobs MUST use IDbContextFactory
97
+ public class PhotoProcessingJob(IDbContextFactory<AppDbContext> dbFactory)
98
+ {
99
+ public async Task ProcessAsync(Guid jobId, CancellationToken ct)
100
+ {
101
+ await using var db = await dbFactory.CreateDbContextAsync(ct);
102
+ var job = await db.ProcessingJobs.FindAsync([jobId], ct)
103
+ ?? throw new InvalidOperationException($"Job {jobId} not found");
104
+ job.MarkProcessing();
105
+ await db.SaveChangesAsync(ct);
106
+ // ... process ...
107
+ }
108
+ }
109
+ ```
110
+
111
+ ## Collaborates With
112
+
113
+ - **dotnet-senior** — service layer consuming repositories
114
+ - **api-designer** — DTO mapping from entities
115
+ - **azure-architect** — Azure SQL / Cosmos DB provisioning
116
+
117
+ ---
118
+
119
+ *MORPH-SPEC by Polymorphism Tech*
@@ -1,14 +1,11 @@
1
1
  ---
2
2
  name: hangfire-orchestrator
3
- description: >
4
- Hangfire Orchestrator specialist for background jobs, recurring tasks, queue management, and job scheduling. Activates for keywords: background jobs, queue, scheduling, hangfire, recurring.
3
+ description: Hangfire Orchestrator specialist for background job design, recurring task scheduling, queue management, and idempotent job patterns in .NET. Use when implementing background jobs, scheduling recurring tasks, managing job queues, or integrating Hangfire with .NET services.
5
4
  allowed-tools: Read, Write, Edit, Bash, Glob, Grep
6
5
  ---
7
6
 
8
7
  # Hangfire Orchestrator
9
8
 
10
- > **Layer:** 2 | **Load:** on-keyword | **Keywords:** scheduled, job, background, cron, recurring, batch, queue, hangfire
11
-
12
9
  Especialista em background jobs, tarefas agendadas e processamento assíncrono com Hangfire.
13
10
 
14
11
  ## .NET 10 Compatibility