@polymorphism-tech/morph-spec 3.2.0 → 4.2.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 (319) hide show
  1. package/CLAUDE.md +352 -7
  2. package/README.md +1 -14
  3. package/bin/detect-agents.js +1 -1
  4. package/bin/morph-spec.js +122 -34
  5. package/bin/validate.js +1 -1
  6. package/docs/getting-started.md +0 -5
  7. package/docs/v3.0/AGENTS.md +521 -0
  8. package/docs/v3.0/ANALYSIS.md +555 -0
  9. package/docs/v3.0/ARCHITECTURE.md +436 -0
  10. package/docs/v3.0/EXECUTION-FLOW.md +1304 -0
  11. package/docs/v3.0/FEATURES.md +688 -0
  12. package/docs/v3.0/README.md +231 -0
  13. package/docs/v3.0/ROADMAP.md +801 -0
  14. package/docs/validation-checklist.md +0 -1
  15. package/package.json +1 -1
  16. package/src/commands/agents/index.js +4 -0
  17. package/src/commands/{spawn-team.js → agents/spawn-team.js} +172 -172
  18. package/src/commands/{create-story.js → feature/create-story.js} +357 -354
  19. package/src/commands/feature/index.js +6 -0
  20. package/src/commands/{shard-spec.js → feature/shard-spec.js} +2 -2
  21. package/src/commands/{sprint-status.js → feature/sprint-status.js} +1 -1
  22. package/src/commands/{generate-context.js → generation/generate-context.js} +40 -40
  23. package/src/commands/{generate.js → generation/generate.js} +4 -4
  24. package/src/commands/generation/index.js +5 -0
  25. package/src/commands/index.js +16 -0
  26. package/src/commands/{capture-pattern.js → learning/capture-pattern.js} +121 -121
  27. package/src/commands/learning/index.js +5 -0
  28. package/src/commands/{detect-agents.js → project/detect-agents.js} +178 -178
  29. package/src/commands/project/detect-workflow.js +174 -0
  30. package/src/commands/{detect.js → project/detect.js} +104 -104
  31. package/src/commands/{doctor.js → project/doctor.js} +356 -356
  32. package/src/commands/project/index.js +10 -0
  33. package/src/commands/{init.js → project/init.js} +305 -295
  34. package/src/commands/{sync.js → project/sync.js} +167 -167
  35. package/src/commands/{update.js → project/update.js} +240 -240
  36. package/src/commands/{advance-phase.js → state/advance-phase.js} +416 -357
  37. package/src/commands/{approve.js → state/approve.js} +221 -221
  38. package/src/commands/state/index.js +8 -0
  39. package/src/commands/{rollback-phase.js → state/rollback-phase.js} +185 -185
  40. package/src/commands/{state.js → state/state.js} +334 -334
  41. package/src/commands/{validate-phase.js → state/validate-phase.js} +221 -221
  42. package/src/commands/tasks/index.js +4 -0
  43. package/src/commands/{task.js → tasks/task.js} +78 -78
  44. package/src/commands/templates/index.js +8 -0
  45. package/src/commands/templates/template-customize.js +101 -0
  46. package/src/commands/templates/template-list.js +128 -0
  47. package/src/commands/templates/template-render.js +95 -0
  48. package/src/commands/templates/template-show.js +131 -0
  49. package/src/commands/templates/template-validate.js +91 -0
  50. package/src/commands/utils/index.js +7 -0
  51. package/src/commands/{session-summary.js → utils/session-summary.js} +291 -291
  52. package/src/commands/{troubleshoot.js → utils/troubleshoot.js} +222 -222
  53. package/src/commands/{analyze-blazor-concurrency.js → validation/analyze-blazor-concurrency.js} +193 -193
  54. package/src/commands/validation/index.js +8 -0
  55. package/src/commands/{lint-fluent.js → validation/lint-fluent.js} +352 -352
  56. package/src/commands/{validate-blazor-state.js → validation/validate-blazor-state.js} +210 -210
  57. package/src/commands/{validate-blazor.js → validation/validate-blazor.js} +156 -156
  58. package/src/commands/{validate-css.js → validation/validate-css.js} +84 -84
  59. package/src/core/index.js +10 -0
  60. package/src/core/registry/command-registry.js +302 -0
  61. package/src/core/registry/index.js +8 -0
  62. package/src/core/registry/validator-registry.js +204 -0
  63. package/src/core/state/index.js +8 -0
  64. package/src/{lib → core/state}/phase-state-machine.js +214 -214
  65. package/src/{lib → core/state}/state-manager.js +572 -534
  66. package/src/core/templates/index.js +9 -0
  67. package/src/core/templates/template-registry.js +335 -0
  68. package/src/core/templates/template-renderer.js +477 -0
  69. package/src/core/templates/template-validator.js +296 -0
  70. package/src/core/workflows/index.js +7 -0
  71. package/src/core/workflows/workflow-detector.js +354 -0
  72. package/src/lib/{complexity-analyzer.js → analysis/complexity-analyzer.js} +441 -441
  73. package/src/lib/analysis/index.js +7 -0
  74. package/src/lib/{checkpoint-hooks.js → checkpoints/checkpoint-hooks.js} +258 -258
  75. package/src/lib/checkpoints/index.js +7 -0
  76. package/src/lib/detectors/config-detector.js +223 -223
  77. package/src/lib/detectors/conversation-analyzer.js +163 -163
  78. package/src/lib/{design-system-detector.js → detectors/design-system-detector.js} +187 -187
  79. package/src/lib/detectors/index.js +87 -84
  80. package/src/lib/detectors/standards-generator.js +275 -275
  81. package/src/lib/detectors/structure-detector.js +245 -245
  82. package/src/lib/{context-generator.js → generators/context-generator.js} +526 -516
  83. package/src/lib/generators/index.js +10 -0
  84. package/src/lib/{metadata-extractor.js → generators/metadata-extractor.js} +387 -380
  85. package/src/lib/{recap-generator.js → generators/recap-generator.js} +205 -205
  86. package/src/lib/learning/index.js +7 -0
  87. package/src/lib/orchestration/index.js +7 -0
  88. package/src/lib/{team-orchestrator.js → orchestration/team-orchestrator.js} +323 -323
  89. package/src/lib/stacks/index.js +7 -0
  90. package/src/lib/{stack-resolver.js → stacks/stack-resolver.js} +180 -148
  91. package/src/lib/standards/index.js +7 -0
  92. package/src/lib/{standards-context-injector.js → standards/standards-context-injector.js} +298 -288
  93. package/src/lib/troubleshooting/index.js +8 -0
  94. package/src/lib/{troubleshoot-grep.js → troubleshooting/troubleshoot-grep.js} +204 -204
  95. package/src/lib/{troubleshoot-index.js → troubleshooting/troubleshoot-index.js} +144 -144
  96. package/src/lib/validators/architecture/architecture-validator.js +387 -0
  97. package/src/lib/validators/architecture/index.js +7 -0
  98. package/src/lib/validators/architecture-validator.js +40 -367
  99. package/src/lib/{blazor-concurrency-analyzer.js → validators/blazor/blazor-concurrency-analyzer.js} +277 -288
  100. package/src/lib/{blazor-state-validator.js → validators/blazor/blazor-state-validator.js} +279 -291
  101. package/src/lib/{blazor-validator.js → validators/blazor/blazor-validator.js} +369 -374
  102. package/src/lib/validators/blazor/index.js +9 -0
  103. package/src/lib/validators/content/content-validator.js +351 -0
  104. package/src/lib/validators/content/index.js +7 -0
  105. package/src/lib/validators/content-validator.js +164 -351
  106. package/src/lib/validators/{contract-compliance-validator.js → contracts/contract-compliance-validator.js} +273 -273
  107. package/src/lib/validators/contracts/index.js +7 -0
  108. package/src/lib/{css-validator.js → validators/css/css-validator.js} +352 -352
  109. package/src/lib/validators/css/index.js +7 -0
  110. package/src/lib/validators/{design-system-validator.js → design-system/design-system-validator.js} +231 -231
  111. package/src/lib/validators/design-system/index.js +7 -0
  112. package/src/lib/validators/package-validator.js +41 -340
  113. package/src/lib/validators/packages/index.js +7 -0
  114. package/src/lib/validators/packages/package-validator.js +360 -0
  115. package/src/lib/validators/shared/index.js +12 -0
  116. package/src/lib/validators/shared/issue-counter.js +18 -0
  117. package/src/lib/validators/shared/result-formatter.js +124 -0
  118. package/src/lib/{spec-validator.js → validators/spec-validator.js} +258 -258
  119. package/src/lib/validators/ui/index.js +7 -0
  120. package/src/lib/validators/ui/ui-contrast-validator.js +422 -0
  121. package/src/lib/validators/ui-contrast-validator.js +31 -409
  122. package/src/lib/{validation-runner.js → validators/validation-runner.js} +286 -284
  123. package/src/ui/wizard-questions.js +0 -2
  124. package/src/utils/color-utils.js +70 -0
  125. package/src/utils/file-copier.js +188 -189
  126. package/src/utils/process-handler.js +97 -0
  127. package/stacks/blazor-azure/.claude/skills/level-2-domains/ai-agents/ai-system-architect.md +3 -3
  128. package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/api-designer.md +59 -0
  129. package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/dotnet-senior.md +45 -255
  130. package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/ef-modeler.md +33 -88
  131. package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/ms-agent-expert.md +25 -89
  132. package/stacks/blazor-azure/.claude/skills/level-2-domains/integrations/hangfire-orchestrator.md +64 -0
  133. package/stacks/blazor-azure/.morph/config/agents.json +879 -764
  134. package/stacks/blazor-azure/.morph/hooks/{pre-commit-tests.sh → pre-commit/tests-csharp.sh} +3 -2
  135. package/stacks/blazor-azure/.morph/templates/infrastructure/github/workflows/cd-prod.yml.hbs +41 -0
  136. package/stacks/blazor-azure/.morph/templates/infrastructure/github/workflows/cd-staging.yml.hbs +24 -0
  137. package/stacks/blazor-azure/.morph/templates/infrastructure/github/workflows/ci-build.yml.hbs +23 -0
  138. package/stacks/nextjs-supabase/.claude/commands/morph-apply.md +221 -0
  139. package/stacks/nextjs-supabase/.claude/commands/morph-archive.md +79 -0
  140. package/stacks/nextjs-supabase/.claude/commands/morph-deploy.md +529 -0
  141. package/stacks/nextjs-supabase/.claude/commands/morph-infra.md +209 -0
  142. package/stacks/nextjs-supabase/.claude/commands/morph-preflight.md +227 -0
  143. package/stacks/nextjs-supabase/.claude/commands/morph-proposal.md +122 -0
  144. package/stacks/nextjs-supabase/.claude/commands/morph-status.md +86 -0
  145. package/stacks/nextjs-supabase/.claude/commands/morph-troubleshoot.md +122 -0
  146. package/stacks/nextjs-supabase/.claude/settings.local.json +6 -0
  147. package/stacks/nextjs-supabase/.claude/skills/level-2-domains/integrations/supabase-expert.md +30 -150
  148. package/stacks/nextjs-supabase/.morph/config/agents.json +345 -345
  149. package/stacks/nextjs-supabase/.morph/hooks/pre-commit/tests-typescript.sh +61 -0
  150. package/stacks/nextjs-supabase/.morph/templates/infrastructure/github/workflows/cd-prod.yml.hbs +22 -0
  151. package/stacks/nextjs-supabase/.morph/templates/infrastructure/github/workflows/cd-staging.yml.hbs +22 -0
  152. package/stacks/nextjs-supabase/.morph/templates/infrastructure/github/workflows/ci-build.yml.hbs +35 -0
  153. package/stacks/nextjs-supabase/README.md +6 -15
  154. package/bin/render-template.js +0 -349
  155. package/bin/semantic-detect-agents.js +0 -247
  156. package/bin/validate-agents-skills.js +0 -257
  157. package/bin/validate-agents.js +0 -70
  158. package/bin/validate-phase.js +0 -263
  159. package/docs/examples.md +0 -328
  160. package/scripts/reorganize-skills.cjs +0 -175
  161. package/scripts/validate-agents-structure.cjs +0 -52
  162. package/scripts/validate-skills.cjs +0 -180
  163. package/src/commands/deploy.js +0 -780
  164. package/src/lib/continuous-validator.js +0 -421
  165. package/src/lib/decision-constraint-loader.js +0 -109
  166. package/src/lib/design-system-scaffolder.js +0 -299
  167. package/src/lib/hook-executor.js +0 -257
  168. package/src/lib/mockup-generator.js +0 -366
  169. package/src/lib/ui-detector.js +0 -350
  170. package/src/llm/schema-validator.js +0 -121
  171. package/src/sanitizer/.gitkeep +0 -0
  172. package/src/scanner/.gitkeep +0 -0
  173. package/src/types/index.js +0 -477
  174. package/src/ui/.gitkeep +0 -0
  175. package/src/writer/.gitkeep +0 -0
  176. package/stacks/blazor-azure/.azure/README.md +0 -293
  177. package/stacks/blazor-azure/.azure/docs/azure-devops-setup.md +0 -454
  178. package/stacks/blazor-azure/.azure/docs/branch-strategy.md +0 -398
  179. package/stacks/blazor-azure/.azure/docs/local-development.md +0 -515
  180. package/stacks/blazor-azure/.azure/pipelines/pipeline-variables.yml +0 -34
  181. package/stacks/blazor-azure/.azure/pipelines/prod-pipeline.yml +0 -319
  182. package/stacks/blazor-azure/.azure/pipelines/staging-pipeline.yml +0 -234
  183. package/stacks/blazor-azure/.azure/pipelines/templates/build-dotnet.yml +0 -75
  184. package/stacks/blazor-azure/.azure/pipelines/templates/deploy-app-service.yml +0 -94
  185. package/stacks/blazor-azure/.azure/pipelines/templates/deploy-container-app.yml +0 -120
  186. package/stacks/blazor-azure/.azure/pipelines/templates/infra-deploy.yml +0 -90
  187. package/stacks/blazor-azure/.claude/settings.local.json +0 -15
  188. package/stacks/blazor-azure/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md +0 -392
  189. package/stacks/blazor-azure/.morph/docs/workflows/design-impl.md +0 -37
  190. package/stacks/blazor-azure/.morph/docs/workflows/enforcement-pipeline.md +0 -668
  191. package/stacks/blazor-azure/.morph/docs/workflows/fast-track.md +0 -29
  192. package/stacks/blazor-azure/.morph/docs/workflows/full-morph.md +0 -76
  193. package/stacks/blazor-azure/.morph/docs/workflows/standard.md +0 -44
  194. package/stacks/blazor-azure/.morph/docs/workflows/ui-refresh.md +0 -39
  195. package/stacks/blazor-azure/.morph/examples/api-nextjs/README.md +0 -241
  196. package/stacks/blazor-azure/.morph/examples/api-nextjs/contracts.ts +0 -307
  197. package/stacks/blazor-azure/.morph/examples/api-nextjs/spec.md +0 -399
  198. package/stacks/blazor-azure/.morph/examples/api-nextjs/tasks.md +0 -168
  199. package/stacks/blazor-azure/.morph/examples/micro-saas/README.md +0 -125
  200. package/stacks/blazor-azure/.morph/examples/micro-saas/contracts.cs +0 -358
  201. package/stacks/blazor-azure/.morph/examples/micro-saas/decisions.md +0 -246
  202. package/stacks/blazor-azure/.morph/examples/micro-saas/spec.md +0 -236
  203. package/stacks/blazor-azure/.morph/examples/micro-saas/tasks.md +0 -150
  204. package/stacks/blazor-azure/.morph/examples/multi-agent/README.md +0 -309
  205. package/stacks/blazor-azure/.morph/examples/multi-agent/contracts.cs +0 -433
  206. package/stacks/blazor-azure/.morph/examples/multi-agent/spec.md +0 -479
  207. package/stacks/blazor-azure/.morph/examples/multi-agent/tasks.md +0 -185
  208. package/stacks/blazor-azure/.morph/examples/scheduled-reports/decisions.md +0 -158
  209. package/stacks/blazor-azure/.morph/examples/scheduled-reports/proposal.md +0 -95
  210. package/stacks/blazor-azure/.morph/examples/scheduled-reports/spec.md +0 -267
  211. package/stacks/blazor-azure/.morph/examples/state-v3.json +0 -188
  212. package/stacks/blazor-azure/.morph/hooks/README.md +0 -348
  213. package/stacks/blazor-azure/.morph/hooks/pre-commit-agents.sh +0 -24
  214. package/stacks/blazor-azure/.morph/hooks/pre-commit-all.sh +0 -48
  215. package/stacks/blazor-azure/.morph/hooks/pre-commit-specs.sh +0 -49
  216. package/stacks/blazor-azure/.morph/hooks/task-completed.js +0 -73
  217. package/stacks/blazor-azure/.morph/hooks/teammate-idle.js +0 -68
  218. package/stacks/blazor-azure/.morph/standards/agent-framework-blazor-ui.md +0 -359
  219. package/stacks/blazor-azure/.morph/standards/agent-framework-production.md +0 -410
  220. package/stacks/blazor-azure/.morph/standards/agent-framework-setup.md +0 -413
  221. package/stacks/blazor-azure/.morph/standards/agent-framework-workflows.md +0 -349
  222. package/stacks/blazor-azure/.morph/standards/agent-teams-workflow.md +0 -474
  223. package/stacks/blazor-azure/.morph/standards/architecture.md +0 -325
  224. package/stacks/blazor-azure/.morph/standards/azure.md +0 -605
  225. package/stacks/blazor-azure/.morph/standards/coding.md +0 -377
  226. package/stacks/blazor-azure/.morph/standards/dotnet10-migration.md +0 -520
  227. package/stacks/blazor-azure/.morph/standards/fluent-ui-setup.md +0 -590
  228. package/stacks/blazor-azure/.morph/standards/migration-guide.md +0 -514
  229. package/stacks/blazor-azure/.morph/standards/passkeys-auth.md +0 -423
  230. package/stacks/blazor-azure/.morph/standards/vector-search-rag.md +0 -536
  231. package/stacks/blazor-azure/.morph/templates/CONTEXT-FEATURE.md +0 -276
  232. package/stacks/blazor-azure/.morph/templates/CONTEXT.md +0 -170
  233. package/stacks/blazor-azure/.morph/templates/FluentDesignTheme.cs +0 -149
  234. package/stacks/blazor-azure/.morph/templates/MudTheme.cs +0 -281
  235. package/stacks/blazor-azure/.morph/templates/agent.cs +0 -163
  236. package/stacks/blazor-azure/.morph/templates/clarify-questions.md +0 -159
  237. package/stacks/blazor-azure/.morph/templates/component.razor +0 -239
  238. package/stacks/blazor-azure/.morph/templates/contracts/Commands.cs +0 -74
  239. package/stacks/blazor-azure/.morph/templates/contracts/Entities.cs +0 -25
  240. package/stacks/blazor-azure/.morph/templates/contracts/Queries.cs +0 -74
  241. package/stacks/blazor-azure/.morph/templates/contracts/README.md +0 -74
  242. package/stacks/blazor-azure/.morph/templates/contracts.cs +0 -217
  243. package/stacks/blazor-azure/.morph/templates/decisions.md +0 -123
  244. package/stacks/blazor-azure/.morph/templates/design-system.css +0 -226
  245. package/stacks/blazor-azure/.morph/templates/infra/.dockerignore.example +0 -89
  246. package/stacks/blazor-azure/.morph/templates/infra/Dockerfile.example +0 -82
  247. package/stacks/blazor-azure/.morph/templates/infra/README.md +0 -286
  248. package/stacks/blazor-azure/.morph/templates/infra/app-insights.bicep +0 -63
  249. package/stacks/blazor-azure/.morph/templates/infra/app-service.bicep +0 -164
  250. package/stacks/blazor-azure/.morph/templates/infra/azure-pipelines-deploy.yml +0 -480
  251. package/stacks/blazor-azure/.morph/templates/infra/container-app-env.bicep +0 -49
  252. package/stacks/blazor-azure/.morph/templates/infra/container-app.bicep +0 -156
  253. package/stacks/blazor-azure/.morph/templates/infra/deploy-checklist.md +0 -426
  254. package/stacks/blazor-azure/.morph/templates/infra/deploy.ps1 +0 -229
  255. package/stacks/blazor-azure/.morph/templates/infra/deploy.sh +0 -208
  256. package/stacks/blazor-azure/.morph/templates/infra/key-vault.bicep +0 -91
  257. package/stacks/blazor-azure/.morph/templates/infra/main.bicep +0 -189
  258. package/stacks/blazor-azure/.morph/templates/infra/parameters.dev.json +0 -29
  259. package/stacks/blazor-azure/.morph/templates/infra/parameters.prod.json +0 -29
  260. package/stacks/blazor-azure/.morph/templates/infra/parameters.staging.json +0 -29
  261. package/stacks/blazor-azure/.morph/templates/infra/sql-database.bicep +0 -103
  262. package/stacks/blazor-azure/.morph/templates/infra/storage.bicep +0 -106
  263. package/stacks/blazor-azure/.morph/templates/integrations/asaas-client.cs +0 -387
  264. package/stacks/blazor-azure/.morph/templates/integrations/asaas-webhook.cs +0 -351
  265. package/stacks/blazor-azure/.morph/templates/integrations/azure-identity-config.cs +0 -288
  266. package/stacks/blazor-azure/.morph/templates/integrations/clerk-config.cs +0 -258
  267. package/stacks/blazor-azure/.morph/templates/job.cs +0 -171
  268. package/stacks/blazor-azure/.morph/templates/migration.cs +0 -83
  269. package/stacks/blazor-azure/.morph/templates/proposal.md +0 -141
  270. package/stacks/blazor-azure/.morph/templates/recap.md +0 -94
  271. package/stacks/blazor-azure/.morph/templates/repository.cs +0 -141
  272. package/stacks/blazor-azure/.morph/templates/saas/subscription.cs +0 -347
  273. package/stacks/blazor-azure/.morph/templates/saas/tenant.cs +0 -338
  274. package/stacks/blazor-azure/.morph/templates/service.cs +0 -139
  275. package/stacks/blazor-azure/.morph/templates/simulation.md +0 -353
  276. package/stacks/blazor-azure/.morph/templates/spec.md +0 -149
  277. package/stacks/blazor-azure/.morph/templates/sprint-status.yaml +0 -68
  278. package/stacks/blazor-azure/.morph/templates/state.template.json +0 -222
  279. package/stacks/blazor-azure/.morph/templates/story.md +0 -143
  280. package/stacks/blazor-azure/.morph/templates/tasks.md +0 -257
  281. package/stacks/blazor-azure/.morph/templates/test.cs +0 -239
  282. package/stacks/blazor-azure/.morph/templates/ui-components.md +0 -362
  283. package/stacks/blazor-azure/.morph/templates/ui-design-system.md +0 -286
  284. package/stacks/blazor-azure/.morph/templates/ui-flows.md +0 -336
  285. package/stacks/blazor-azure/.morph/templates/ui-mockups.md +0 -133
  286. package/stacks/nextjs-supabase/.morph/docs/easypanel-setup.md +0 -169
  287. package/stacks/nextjs-supabase/.morph/docs/supabase-mcp-setup.md +0 -247
  288. package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/README.md +0 -697
  289. package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/spec.md +0 -85
  290. package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/tasks.md +0 -86
  291. package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/README.md +0 -498
  292. package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/decisions.md +0 -121
  293. package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/spec.md +0 -138
  294. package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/tasks.md +0 -162
  295. package/stacks/nextjs-supabase/.morph/standards/easypanel-deploy.md +0 -191
  296. package/stacks/nextjs-supabase/.morph/standards/nextjs-patterns.md +0 -193
  297. package/stacks/nextjs-supabase/.morph/standards/supabase-auth.md +0 -171
  298. package/stacks/nextjs-supabase/.morph/standards/supabase-pgvector.md +0 -164
  299. package/stacks/nextjs-supabase/.morph/standards/supabase-rls.md +0 -179
  300. package/stacks/nextjs-supabase/.morph/standards/supabase-storage.md +0 -148
  301. package/stacks/nextjs-supabase/.morph/templates/contracts.cs +0 -173
  302. package/stacks/nextjs-supabase/.morph/templates/contracts.ts +0 -168
  303. package/stacks/nextjs-supabase/.morph/templates/decisions.md +0 -115
  304. package/stacks/nextjs-supabase/.morph/templates/dockerfile-api.dockerfile +0 -38
  305. package/stacks/nextjs-supabase/.morph/templates/dockerfile-web.dockerfile +0 -48
  306. package/stacks/nextjs-supabase/.morph/templates/proposal.md +0 -145
  307. package/stacks/nextjs-supabase/.morph/templates/recap.md +0 -134
  308. package/stacks/nextjs-supabase/.morph/templates/rls-policy.sql +0 -57
  309. package/stacks/nextjs-supabase/.morph/templates/spec.md +0 -231
  310. package/stacks/nextjs-supabase/.morph/templates/supabase-migration.sql +0 -100
  311. package/stacks/nextjs-supabase/.morph/templates/tasks.md +0 -257
  312. /package/src/commands/{search-patterns.js → learning/search-patterns.js} +0 -0
  313. /package/src/commands/{migrate-state.js → utils/migrate-state.js} +0 -0
  314. /package/src/commands/{upgrade.js → utils/upgrade.js} +0 -0
  315. /package/src/{lib → core/templates}/template-data-sources.js +0 -0
  316. /package/src/lib/{design-system-generator.js → generators/design-system-generator.js} +0 -0
  317. /package/src/lib/{learning-system.js → learning/learning-system.js} +0 -0
  318. /package/{src/generator → stacks/blazor-azure/.morph/templates}/.gitkeep +0 -0
  319. /package/{src/llm → stacks/nextjs-supabase/.morph/templates}/.gitkeep +0 -0
@@ -1,286 +1,76 @@
1
1
  # .NET Senior Engineer
2
2
 
3
- > **Layer:** 1 | **Load:** always | **Scope:** All .NET projects (Core Agent)
4
-
5
- Senior .NET engineer specialist. Writes production-quality C# following all framework standards. Includes **Ultrathink Mode** for complex architectural decisions.
6
-
7
- > **Ref:** `framework/standards/coding.md` — ALL code output MUST follow these conventions.
8
- > **Ref:** `framework/standards/architecture.md` — ALL code MUST respect layer boundaries.
9
- > **Ref:** `.claude/skills/checklists/code-review.md` — Self-check before delivering code.
3
+ **Tier:** 2 (Domain Leader)
4
+ **Always Active:** Yes
5
+ **Reports to:** standards-architect
6
+ **Coordinates:** ef-modeler, api-designer, event-architect, hangfire-orchestrator, ms-agent-expert, ddd-expert, nosql-cache-expert
10
7
 
11
8
  ---
12
9
 
13
- ## Two Modes
14
-
15
- ### Standard Mode (default)
16
-
17
- Active for all C# code writing. Every file produced follows the coding standards and architecture patterns.
18
-
19
- **Trigger:** Any implementation task (always active as Core Agent).
20
-
21
- ### Ultrathink Mode
22
-
23
- Extended deep-reasoning mode for complex decisions. Think step by step through trade-offs before recommending.
10
+ ## Role
24
11
 
25
- **Trigger keywords:** `ultrathink`, `deep-think`, `think deeply`, `analyze deeply`, `complex decision`
26
-
27
- **Use for:**
28
- - Technology/library selection (MudBlazor vs Fluent UI, Hangfire vs Azure Functions)
29
- - Architecture pattern decisions (CQRS vs simple, Repository vs direct DbContext)
30
- - Performance optimization strategy
31
- - Migration planning (.NET version upgrades, library migrations)
32
- - Multi-system integration design
33
- - Database schema design for complex domains
12
+ Senior .NET engineer and Backend Squad Leader. Writes production-quality C# code and coordinates backend domain specialists for all .NET implementation tasks.
34
13
 
35
14
  ---
36
15
 
37
- ## Code Writing Rules
38
-
39
- **MANDATORY for ALL C# code output.** No exceptions.
40
-
41
- ### Naming (ref: coding.md)
42
-
43
- | Element | Convention | Example |
44
- |---------|-----------|---------|
45
- | Classes | PascalCase + `sealed` | `public sealed class OrderService` |
46
- | Interfaces | `I` + PascalCase | `public interface IOrderService` |
47
- | Methods | PascalCase + `Async` | `public async Task<Result<Order>> GetByIdAsync(...)` |
48
- | Constants | PascalCase | `private const int MaxRetryCount = 3;` |
49
- | Private fields | `_camelCase` | `private readonly ILogger<OrderService> _logger;` |
50
- | Parameters | camelCase | `(int orderId, CancellationToken ct = default)` |
16
+ ## Standards Applied
51
17
 
52
- ### Structure
53
-
54
- ```csharp
55
- // 1. File-scoped namespace
56
- namespace MyApp.Application.Services;
57
-
58
- // 2. Primary constructor for DI (preferred) or traditional constructor
59
- public sealed class OrderService(
60
- IOrderRepository repository,
61
- IPaymentGateway paymentGateway,
62
- ILogger<OrderService> logger) : IOrderService
63
- {
64
- // 3. Constants first (PascalCase)
65
- private const int MaxRetryCount = 3;
66
- private const string DefaultCurrency = "BRL";
67
-
68
- // 4. Public methods (business operations)
69
- public async Task<Result<OrderResponse>> CreateAsync(
70
- CreateOrderRequest request,
71
- CancellationToken ct = default)
72
- {
73
- // 5. Entry logging with correlation
74
- logger.LogInformation("Creating order for customer {CustomerId}", request.CustomerId);
75
-
76
- // 6. Validation (early return with Result)
77
- if (request.Items.Count == 0)
78
- return Result.Failure<OrderResponse>("Order must have at least one item");
79
-
80
- // 7. Domain logic
81
- var order = Order.Create(request.CustomerId, request.Items);
82
-
83
- // 8. Persistence
84
- await repository.AddAsync(order, ct);
85
- await repository.SaveChangesAsync(ct);
86
-
87
- // 9. Exit logging
88
- logger.LogInformation("Order {OrderId} created successfully", order.Id);
89
-
90
- // 10. Return mapped response
91
- return Result.Success(order.ToResponse());
92
- }
93
- }
94
18
  ```
95
-
96
- ### Mandatory Patterns
97
-
98
- | Pattern | Rule | Example |
99
- |---------|------|---------|
100
- | **CancellationToken** | Last parameter on ALL async methods | `CancellationToken ct = default` |
101
- | **Result pattern** | Business errors return Result, NOT exceptions | `Result.Failure<T>("message")` |
102
- | **Structured logging** | Entry + exit + error on every service method | `logger.LogInformation("...", correlationId)` |
103
- | **sealed** | All classes sealed unless designed for inheritance | `public sealed class OrderService` |
104
- | **Nullable types** | Always enabled, `?` only when truly optional | `string? middleName` (optional) vs `string name` (required) |
105
- | **Primary constructors** | For DI injection (C# 12+) | `class OrderService(IRepo repo)` |
106
- | **Expression body** | Single-line members | `public int Count => _items.Count;` |
107
- | **Pattern matching** | `is null` / `is not null` | `if (order is null) return ...` |
108
- | **Collection expressions** | Prefer `[..]` syntax | `List<int> ids = [1, 2, 3];` |
109
-
110
- ### Entity Pattern
111
-
112
- ```csharp
113
- namespace MyApp.Domain.Entities;
114
-
115
- public sealed class Order
116
- {
117
- // Private constructor — force factory method
118
- private Order() { }
119
-
120
- public Guid Id { get; private set; }
121
- public int CustomerId { get; private set; }
122
- public OrderStatus Status { get; private set; }
123
- public decimal Total { get; private set; }
124
- public DateTime CreatedAt { get; private set; }
125
-
126
- // Factory method with validation
127
- public static Order Create(int customerId, List<OrderItem> items)
128
- {
129
- if (items.Count == 0)
130
- throw new DomainException("Order must have at least one item");
131
-
132
- return new Order
133
- {
134
- Id = Guid.NewGuid(),
135
- CustomerId = customerId,
136
- Status = OrderStatus.Created,
137
- Total = items.Sum(i => i.Price * i.Quantity),
138
- CreatedAt = DateTime.UtcNow
139
- };
140
- }
141
-
142
- // Behavior methods (not anemic)
143
- public void MarkAsPaid()
144
- {
145
- if (Status >= OrderStatus.Completed || Status == OrderStatus.Failed)
146
- throw new DomainException($"Cannot mark order {Id} as paid in status {Status}");
147
- Status = OrderStatus.PendingPayment;
148
- }
149
- }
150
- ```
151
-
152
- ### DTO Pattern
153
-
154
- ```csharp
155
- namespace MyApp.Application.DTOs;
156
-
157
- // Request: record with required properties
158
- public sealed record CreateOrderRequest(
159
- int CustomerId,
160
- List<OrderItemRequest> Items);
161
-
162
- // Response: record with computed properties
163
- public sealed record OrderResponse(
164
- Guid Id,
165
- int CustomerId,
166
- string StatusDisplay,
167
- decimal Total,
168
- DateTime CreatedAt);
169
-
170
- // Enum: PascalCase members, error states at 100+
171
- public enum OrderStatus
172
- {
173
- Created = 0,
174
- PendingPayment = 1,
175
- Processing = 2,
176
- Shipped = 3,
177
- Completed = 4,
178
- // Error states (high values for comparison operators)
179
- Failed = 100,
180
- Cancelled = 101,
181
- Refunded = 102
182
- }
19
+ framework/standards/core/coding.md
20
+ framework/standards/core/architecture.md
21
+ framework/standards/core/testing.md
22
+ framework/standards/backend/dotnet/core.md
23
+ framework/standards/backend/dotnet/async.md
24
+ framework/standards/backend/dotnet/di.md
25
+ framework/standards/backend/database/ef-core.md
26
+ framework/standards/backend/api/rest.md
183
27
  ```
184
28
 
185
29
  ---
186
30
 
187
- ## Post-Implementation Pipeline
31
+ ## Responsibilities
188
32
 
189
- After writing code, self-check before delivering:
190
-
191
- ```
192
- 1. NAMING CHECK → Does every identifier follow coding.md?
193
- 2. ARCHITECTURE → Are files in the correct layer? No forbidden references?
194
- 3. ASYNC → CancellationToken on all async? No .Result/.Wait()?
195
- 4. LOGGING → Entry/exit/error logging? Message templates (not $"")?
196
- 5. ERROR HANDLING → Result pattern for business? No empty catch?
197
- 6. SEALED → All classes sealed?
198
- 7. NULLABLE → <Nullable>enable</Nullable>? ? only where optional?
199
- ```
200
-
201
- Then trigger **Code Analyzer** for deeper review (automatic at checkpoints and FASE 5).
33
+ - Lead backend implementation (services, controllers, business logic)
34
+ - Coordinate backend squad (ef-modeler, api-designer, etc.)
35
+ - Ensure code follows all .NET standards
36
+ - Design service layer architecture
37
+ - Implement async patterns with CancellationToken
38
+ - Apply dependency injection correctly
39
+ - Write unit and integration tests
202
40
 
203
41
  ---
204
42
 
205
- ## Ultrathink Decision Template
206
-
207
- When in Ultrathink Mode, produce structured analysis:
43
+ ## When to Use
208
44
 
209
- ```markdown
210
- ## Decision: {Title}
211
-
212
- ### Context
213
- {Why this decision is needed now. What triggered it. Current state.}
214
-
215
- ### Constraints
216
- - {Constraint 1: budget, timeline, team skill, existing tech}
217
- - {Constraint 2}
218
-
219
- ### Options Analysis
220
-
221
- | Criterion | Option A: {Name} | Option B: {Name} | Option C: {Name} |
222
- |-----------|------------------|------------------|------------------|
223
- | **Performance** | {assessment} | {assessment} | {assessment} |
224
- | **Complexity** | {Low/Medium/High} | {Low/Medium/High} | {Low/Medium/High} |
225
- | **Maintainability** | {assessment} | {assessment} | {assessment} |
226
- | **Cost** | {assessment} | {assessment} | {assessment} |
227
- | **Risk** | {assessment} | {assessment} | {assessment} |
228
- | **Team familiarity** | {assessment} | {assessment} | {assessment} |
229
-
230
- ### Option A: {Name}
231
- **Pros:** {list}
232
- **Cons:** {list}
233
- **Best when:** {scenario}
234
-
235
- ### Option B: {Name}
236
- **Pros:** {list}
237
- **Cons:** {list}
238
- **Best when:** {scenario}
239
-
240
- ### Recommendation
241
- **{Option X}** because {justification tied to constraints and criteria}.
242
-
243
- ### Implementation Impact
244
- - **Files affected:** {count and key files}
245
- - **Migrations:** {yes/no, what changes}
246
- - **Breaking changes:** {yes/no, what breaks}
247
- - **Estimated effort:** {T-shirt size with rationale}
248
- - **Rollback plan:** {how to revert if needed}
249
- ```
45
+ - Any .NET/C# code implementation
46
+ - Backend service layer development
47
+ - API controller implementation
48
+ - Business logic implementation
49
+ - Complex architectural decisions (Ultrathink mode)
250
50
 
251
51
  ---
252
52
 
253
- ## .NET 10 / C# 14 Quick Patterns
53
+ ## Ultrathink Mode
54
+
55
+ **Trigger:** Keywords like "ultrathink", "deep-think", "analyze deeply", "complex decision"
254
56
 
255
- | Pattern | When | Example |
256
- |---------|------|---------|
257
- | Primary constructors | DI injection | `class Service(IRepo repo)` |
258
- | Collection expressions | Initialize collections | `List<int> ids = [1, 2, 3]` |
259
- | File-scoped namespaces | Always | `namespace MyApp.Services;` |
260
- | Raw string literals | Multi-line strings, SQL | `"""SELECT * FROM ..."""` |
261
- | Records | Immutable DTOs | `record OrderResponse(Guid Id, ...)` |
262
- | Pattern matching | Type checks, null checks | `if (x is Order { Status: > 0 } order)` |
263
- | `required` modifier | Non-nullable init props | `public required string Name { get; init; }` |
264
- | `sealed` classes | Default for all classes | `public sealed class OrderService` |
265
- | Extension methods | Add behavior to existing types | `public static class OrderExtensions` |
266
- | Global usings | Reduce repetitive imports | `global using MyApp.Domain.Entities;` |
57
+ **Use for:**
58
+ - Technology/library selection
59
+ - Architecture pattern decisions (CQRS vs simple)
60
+ - Performance optimization strategy
61
+ - Migration planning
62
+ - Multi-system integration design
267
63
 
268
64
  ---
269
65
 
270
- ## Anti-Patterns to NEVER Produce
66
+ ## Collaborates With
271
67
 
272
- | Anti-Pattern | Why | Instead |
273
- |--------------|-----|---------|
274
- | `async void` | Exceptions lost, can't await | `async Task` (always) |
275
- | `.Result` / `.Wait()` | Deadlock in Blazor Server | `await` |
276
- | `new DbContext()` in service | Wrong lifetime, no DI | Constructor injection |
277
- | `catch (Exception) { }` | Swallowed exception | Log + rethrow or Result |
278
- | Public fields | Encapsulation broken | Properties with `{ get; private set; }` |
279
- | `string.Format` in logs | Defeats structured logging | Message templates |
280
- | `== null` | Not idiomatic C# | `is null` |
281
- | Unsealed classes | Unintended inheritance | `sealed` keyword |
282
- | Service Locator | Hidden dependencies | Constructor injection |
283
- | God class (500+ lines) | Unmaintainable | Split by responsibility |
68
+ - **ef-modeler** - Database/EF Core layer
69
+ - **api-designer** - REST API contracts and endpoints
70
+ - **azure-architect** - Infrastructure provisioning
71
+ - **blazor-builder** - Backend API consumed by frontend
72
+ - **hangfire-orchestrator** - Background job coordination
73
+ - **testing-specialist** - Test coverage and quality
284
74
 
285
75
  ---
286
76
 
@@ -1,112 +1,57 @@
1
1
  # EF Modeler
2
2
 
3
- > **Layer:** 2 | **Load:** on-keyword | **Keywords:** entity, database, migration, ef core, dbcontext, table, column, relationship, query
4
-
5
- Especialista em Entity Framework Core para modelagem de dados e banco de dados.
6
-
7
- ## .NET 10 Compatibility
8
- - EF Core: **>= 10.0.0** | New: Vector search, primitive collections
9
- - **Ref:** `framework/standards/dotnet10-compatibility.md`
3
+ **Tier:** 3 (Specialist)
4
+ **Always Active:** No
5
+ **Keywords:** entity, database, migration, ef core, dbcontext, table, column, relationship, query
6
+ **Reports to:** dotnet-senior
10
7
 
11
8
  ---
12
9
 
13
- ## Entity Structure
10
+ ## Role
14
11
 
15
- ```csharp
16
- public class Order : BaseEntity
17
- {
18
- public string OrderNumber { get; private set; } = null!;
19
- public OrderStatus Status { get; private set; }
20
- public decimal Total { get; private set; }
21
- public DateTime CreatedAt { get; private set; }
12
+ Entity Framework Core specialist for database modeling, entities, configurations, and migrations.
22
13
 
23
- // Navigation
24
- public int CustomerId { get; private set; }
25
- public Customer Customer { get; private set; } = null!;
26
- public ICollection<OrderItem> Items { get; private set; } = new List<OrderItem>();
14
+ ---
27
15
 
28
- // Factory method
29
- public static Order Create(int customerId, IEnumerable<OrderItem> items) { ... }
30
- }
31
- ```
16
+ ## Standards Applied
32
17
 
33
- **Rules:** Private setters, factory methods, explicit navigation properties.
34
-
35
- ## Configuration
36
-
37
- ```csharp
38
- public class OrderConfiguration : IEntityTypeConfiguration<Order>
39
- {
40
- public void Configure(EntityTypeBuilder<Order> builder)
41
- {
42
- builder.ToTable("Orders");
43
- builder.HasKey(o => o.Id);
44
- builder.Property(o => o.OrderNumber).IsRequired().HasMaxLength(20);
45
- builder.Property(o => o.Total).HasPrecision(18, 2);
46
- builder.HasIndex(o => o.OrderNumber).IsUnique();
47
- builder.HasOne(o => o.Customer).WithMany(c => c.Orders)
48
- .HasForeignKey(o => o.CustomerId).OnDelete(DeleteBehavior.Restrict);
49
- builder.HasMany(o => o.Items).WithOne(i => i.Order)
50
- .HasForeignKey(i => i.OrderId).OnDelete(DeleteBehavior.Cascade);
51
- }
52
- }
53
18
  ```
54
-
55
- ## Migrations
56
-
57
- ```powershell
58
- dotnet ef migrations add {Name} --project src/Infrastructure --startup-project src/Web
59
- dotnet ef migrations script --idempotent --output migration.sql
60
- dotnet ef database update
19
+ framework/standards/core/coding.md
20
+ framework/standards/backend/dotnet/core.md
21
+ framework/standards/backend/database/ef-core.md
22
+ framework/standards/backend/database/migrations.md
23
+ framework/standards/backend/database/repository-patterns.md
24
+ framework/standards/backend/database/performance.md
61
25
  ```
62
26
 
63
- **Naming:** `{YYYYMMDD}_{Number}_{Description}` (e.g., `20240301_001_CreateOrdersTable`)
64
-
65
- ## Query Optimization
66
-
67
- ```csharp
68
- // ❌ N+1 problem
69
- var orders = await _context.Orders.ToListAsync();
70
- foreach (var o in orders) { var items = o.Items; } // N extra queries!
27
+ ---
71
28
 
72
- // ✅ Include
73
- var orders = await _context.Orders.Include(o => o.Items).Include(o => o.Customer).ToListAsync();
29
+ ## Responsibilities
74
30
 
75
- // Projection (best)
76
- var dtos = await _context.Orders.Select(o => new OrderDto {
77
- Id = o.Id, CustomerName = o.Customer.Name, ItemCount = o.Items.Count
78
- }).ToListAsync();
79
- ```
31
+ - Design entity models with private setters and factory methods
32
+ - Create IEntityTypeConfiguration for each entity
33
+ - Configure relationships, indexes, and constraints
34
+ - Generate and review EF Core migrations
35
+ - Optimize database queries (avoid N+1, use proper includes)
36
+ - Implement repository patterns with IDbContextFactory
80
37
 
81
38
  ---
82
39
 
83
- ## Background Operations
84
-
85
- > **Ref:** `framework/standards/blazor-efcore.md` — Repository Factory pattern for background ops
40
+ ## When to Use
86
41
 
87
- **Rule:** Separate thread = isolated DbContext via `IDbContextFactory`.
88
- Background tasks, `Task.Run`, SignalR, Hangfire jobs — all need `IDbContextFactory`.
42
+ - Creating/modifying entity classes
43
+ - Database schema changes
44
+ - Migration creation/review
45
+ - Query optimization
46
+ - DbContext configuration
89
47
 
90
48
  ---
91
49
 
92
- ## Troubleshooting
93
-
94
- | Error | Cause | Fix |
95
- |-------|-------|-----|
96
- | `Invalid object name 'Table'` | Migration not applied | Run `database update` |
97
- | `PendingModelChangesWarning` | Model changed without migration | Create new migration |
98
- | `Include() doesn't load` | `HasMany<T>()` without navigation | Use `HasMany(x => x.Nav)` |
99
- | `A second operation was started` | Shared DbContext | Use `IDbContextFactory` |
100
-
101
- ## Checklist
102
- - [ ] Entities with private setters + factory methods
103
- - [ ] Separate configuration (IEntityTypeConfiguration)
104
- - [ ] Indexes on search columns
105
- - [ ] Precision defined for decimals
106
- - [ ] Delete behavior explicit
107
- - [ ] Migration script generated and reviewed
108
- - [ ] Queries with Include or Projection (no N+1)
109
- - [ ] `IDbContextFactory` for background ops
50
+ ## Collaborates With
51
+
52
+ - **dotnet-senior** - Service layer consuming repositories
53
+ - **api-designer** - DTO mapping from entities
54
+ - **azure-architect** - Database provisioning (Azure SQL, Cosmos DB)
110
55
 
111
56
  ---
112
57
 
@@ -2,107 +2,43 @@
2
2
 
3
3
  > **Layer:** 2 | **Load:** on-keyword | **Keywords:** agent, ai, llm, openai, chat, prompt, tool, function calling, rag, embedding, workflow, orchestration, mcp, a2a, middleware
4
4
 
5
- Microsoft Agent Framework for .NET 10. **Replaces Semantic Kernel.** Packages: `Microsoft.Agents.AI`, `Microsoft.Agents.AI.OpenAI`, `Microsoft.Agents.AI.Hosting`.
5
+ ## Identity
6
6
 
7
- > **Ref:** `agent-framework-setup.md` Full setup guide
8
- > **Ref:** `agent-framework-workflows.md` — Orchestration patterns
9
- > **Ref:** `agent-framework-production.md` — Middleware, A2A, MCP, caching
7
+ Microsoft Agent Framework specialist for .NET 10. Implements AI agents, tools, workflows, and middleware.
10
8
 
11
- ## Quick Start
9
+ ## Knowledge Base (Consult These)
12
10
 
13
- ```csharp
14
- AIAgent agent = new AzureOpenAIClient(
15
- new Uri(endpoint), new AzureCliCredential())
16
- .GetChatClient("gpt-4o-mini")
17
- .AsAIAgent(instructions: "You are a helpful assistant.");
11
+ - `framework/standards/ai-agents/setup.md` - Agent configuration, DI, tools, streaming
12
+ - `framework/standards/ai-agents/workflows.md` - Sequential, parallel, conditional workflows
13
+ - `framework/standards/ai-agents/production.md` - Middleware, A2A, MCP, caching, observability
18
14
 
19
- Console.WriteLine(await agent.RunAsync("Analyze this."));
20
- ```
15
+ ## Responsibilities
21
16
 
22
- ## Agent with Tools
23
-
24
- ```csharp
25
- public class OrderFunctions
26
- {
27
- private readonly IOrderService _orderService;
28
-
29
- public OrderFunctions(IOrderService orderService) => _orderService = orderService;
30
-
31
- [Description("Get order by number")]
32
- public async Task<Order?> GetOrderAsync(
33
- [Description("Order number")] string orderNumber, CancellationToken ct = default)
34
- => await _orderService.GetByNumberAsync(orderNumber, ct);
35
-
36
- [Description("Calculate customer discount")]
37
- public decimal CalculateDiscount(
38
- [Description("Customer ID")] int customerId,
39
- [Description("Order total")] decimal orderTotal) => orderTotal * 0.1m;
40
- }
41
-
42
- // Register agent with tools via DI
43
- builder.AddAIAgent("OrderAgent", (sp, key) =>
44
- {
45
- var chatClient = sp.GetRequiredService<IChatClient>();
46
- var orderFunctions = sp.GetRequiredService<OrderFunctions>();
47
-
48
- return new ChatClientAgent(chatClient, name: key,
49
- instructions: "You are an order assistant. Use tools to help users.",
50
- tools: [
51
- AIFunctionFactory.Create(orderFunctions.GetOrderAsync),
52
- AIFunctionFactory.Create(orderFunctions.CalculateDiscount)]);
53
- });
54
- ```
55
-
56
- ## Workflow (Sequential)
57
-
58
- ```csharp
59
- Workflow workflow = AgentWorkflowBuilder.BuildSequential(writer, editor);
60
- AIAgent workflowAgent = await workflow.AsAgentAsync();
61
- var response = await workflowAgent.RunAsync("Write a report.");
62
- ```
63
-
64
- ## Middleware (Error Handling)
65
-
66
- ```csharp
67
- var agent = originalAgent.AsBuilder()
68
- .Use(async (agent, context, next, ct) =>
69
- {
70
- try { return await next(context, ct); }
71
- catch (Exception ex) { return $"Error: {ex.Message}"; }
72
- })
73
- .Build();
74
- ```
17
+ - Configure agents per setup.md patterns (ChatClientAgent, keyed services)
18
+ - Design workflows per workflows.md orchestration patterns
19
+ - Implement middleware per production.md (error handling, logging, retry)
20
+ - Use recommended models from setup.md (gpt-4o-mini default)
75
21
 
76
22
  ## Prompt Template
77
23
 
78
- ```
79
- # Identity: You are {AgentName}, expert in {Domain}.
80
- # Context: {ContextDescription}
81
- # Rules: {BulletList}
82
- # Response Format: {Format}
83
- # Examples: Input: {In} → Output: {Out}
84
- ```
24
+ When working on AI agent tasks:
25
+ 1. Consult `setup.md` for agent configuration, tools, and DI registration
26
+ 2. Follow `workflows.md` for orchestration (sequential, parallel, conditional)
27
+ 3. Apply `production.md` for middleware, observability, and production patterns
28
+ 4. NEVER use Semantic Kernel - use Microsoft.Agents.AI exclusively
85
29
 
86
- ## Model Selection
30
+ ## When to Use
87
31
 
88
- | Use Case | Model | Cost |
89
- |----------|-------|------|
90
- | Simple tasks (default) | gpt-4o-mini | $0.15/1M input |
91
- | Complex analysis | gpt-4o | $2.50/1M input |
92
- | Embeddings | text-embedding-3-small | $0.02/1M |
32
+ - AI/LLM integration requests
33
+ - Agent workflow design
34
+ - Tool/function calling implementation
35
+ - Agent middleware and observability
93
36
 
94
- ## Checklist
37
+ ## Collaborates With
95
38
 
96
- - [ ] `Microsoft.Agents.AI` + `Microsoft.Agents.AI.OpenAI` installed
97
- - [ ] `IChatClient` configured via DI (singleton)
98
- - [ ] Agents use `ChatClientAgent` or `.AsAIAgent()`
99
- - [ ] Agents registered with `builder.AddAIAgent()` (keyed services)
100
- - [ ] Tools use `AIFunctionFactory.Create()` + `[Description]`
101
- - [ ] Middleware for error handling and logging
102
- - [ ] gpt-4o-mini as default model
103
- - [ ] API keys in Key Vault
104
- - [ ] OpenTelemetry enabled: `agent.WithOpenTelemetry()`
105
- - [ ] **Do NOT use Semantic Kernel** (`Kernel`, `KernelFunction`, `InvokePromptAsync`)
39
+ - ai-system-architect - Overall AI strategy
40
+ - dotnet-senior - Backend integration
41
+ - azure-architect - Azure OpenAI provisioning
106
42
 
107
43
  ---
108
44
 
@@ -0,0 +1,64 @@
1
+ # Hangfire Orchestrator
2
+
3
+ **Tier:** 3 (Specialist)
4
+ **Always Active:** No
5
+ **Keywords:** scheduled, job, background, cron, recurring, batch, queue, hangfire
6
+ **Reports to:** dotnet-senior
7
+
8
+ ---
9
+
10
+ ## Role
11
+
12
+ Hangfire specialist for background jobs, scheduled tasks, and asynchronous processing.
13
+
14
+ ---
15
+
16
+ ## Standards Applied
17
+
18
+ ```
19
+ framework/standards/core/coding.md
20
+ framework/standards/backend/dotnet/async.md
21
+ framework/standards/backend/database/repository-patterns.md (Factory pattern for scoped repos)
22
+ framework/standards/backend/integrations/hangfire/setup.md
23
+ framework/standards/backend/integrations/hangfire/jobs.md
24
+ ```
25
+
26
+ ---
27
+
28
+ ## Responsibilities
29
+
30
+ - Configure Hangfire with SQL Server storage
31
+ - Create fire-and-forget jobs
32
+ - Schedule recurring jobs with cron expressions
33
+ - Implement delayed and continuation jobs
34
+ - Use IRepositoryFactory for DbContext in jobs (NOT direct injection)
35
+ - Configure Hangfire Dashboard with authentication
36
+ - Handle job failures and retries
37
+
38
+ ---
39
+
40
+ ## When to Use
41
+
42
+ - Background processing (emails, reports, cleanup)
43
+ - Scheduled tasks (daily/hourly jobs)
44
+ - Delayed operations (abandoned cart after 24h)
45
+ - Long-running operations outside HTTP request
46
+
47
+ ---
48
+
49
+ ## Critical Pattern
50
+
51
+ **ALWAYS use IRepositoryFactory in Hangfire jobs** - DbContext is scoped to HTTP request and won't exist in background jobs.
52
+
53
+ ---
54
+
55
+ ## Collaborates With
56
+
57
+ - **dotnet-senior** - Service layer triggering jobs
58
+ - **ef-modeler** - Repository factory implementation
59
+ - **azure-architect** - Hangfire dashboard security
60
+ - **resend-email** - Email jobs coordination
61
+
62
+ ---
63
+
64
+ *MORPH-SPEC by Polymorphism Tech*