@polymorphism-tech/morph-spec 4.11.1 → 4.13.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 (317) hide show
  1. package/README.md +21 -29
  2. package/bin/morph-spec.js +41 -24
  3. package/bin/task-manager.js +962 -1341
  4. package/bin/validate.js +1 -1
  5. package/claude-plugin.json +1 -1
  6. package/docs/CHEATSHEET.md +10 -11
  7. package/docs/QUICKSTART.md +15 -15
  8. package/framework/CLAUDE.md +5 -2
  9. package/framework/agents/README.md +3 -4
  10. package/framework/agents/ai-agents/ai-system-architect.md +6 -10
  11. package/framework/agents/architecture/seo-growth-hacker.md +166 -326
  12. package/framework/agents/architecture/standards-architect.md +21 -31
  13. package/framework/agents/backend/dotnet-senior.md +160 -86
  14. package/framework/agents/backend/ef-modeler.md +2 -6
  15. package/framework/agents/backend/hangfire-orchestrator.md +8 -9
  16. package/framework/agents/backend/ms-agent-expert.md +1 -1
  17. package/framework/agents/frontend/nextjs-expert.md +198 -133
  18. package/framework/agents/frontend/ui-ux-designer.md +226 -267
  19. package/framework/agents/infrastructure/infra-architect.md +191 -27
  20. package/framework/agents/integrations/clerk-auth.md +19 -26
  21. package/framework/agents/integrations/hangfire-integration.md +1 -4
  22. package/framework/agents.json +226 -1454
  23. package/framework/commands/morph-apply.md +4 -4
  24. package/framework/commands/morph-preflight.md +4 -26
  25. package/framework/commands/morph-proposal.md +19 -19
  26. package/framework/commands/morph-status.md +2 -2
  27. package/framework/commands/morph-troubleshoot.md +6 -13
  28. package/framework/hooks/README.md +1 -6
  29. package/framework/hooks/claude-code/post-tool-use/agent-complete.js +122 -0
  30. package/framework/hooks/claude-code/post-tool-use/validator-feedback.js +4 -6
  31. package/framework/hooks/claude-code/pre-compact/save-morph-context.js +12 -7
  32. package/framework/hooks/claude-code/pre-tool-use/enforce-phase-writes.js +2 -2
  33. package/framework/hooks/claude-code/pre-tool-use/protect-spec-files.js +2 -2
  34. package/framework/hooks/claude-code/pre-tool-use/task-tracking-guard.js +5 -10
  35. package/framework/hooks/claude-code/session-start/inject-morph-context.js +63 -30
  36. package/framework/hooks/claude-code/session-start/resume-context.js +77 -0
  37. package/framework/hooks/claude-code/statusline.py +4 -5
  38. package/framework/hooks/claude-code/stop/validate-completion.js +4 -4
  39. package/framework/hooks/claude-code/user-prompt/enrich-prompt.js +8 -8
  40. package/framework/hooks/shared/compact-restore.js +28 -5
  41. package/framework/hooks/shared/dispatch-helpers.js +17 -0
  42. package/framework/hooks/shared/phase-utils.js +4 -8
  43. package/framework/hooks/shared/state-reader.js +34 -3
  44. package/framework/phases.json +7 -45
  45. package/framework/rules/ai-agents-standards.md +15 -0
  46. package/framework/rules/asaas-standards.md +13 -0
  47. package/framework/rules/clerk-standards.md +13 -0
  48. package/framework/rules/csharp-standards.md +8 -4
  49. package/framework/rules/data-standards.md +18 -0
  50. package/framework/rules/dotnet-templates.md +87 -0
  51. package/framework/rules/frontend-standards.md +13 -13
  52. package/framework/rules/hangfire-standards.md +13 -0
  53. package/framework/rules/infrastructure-standards.md +27 -16
  54. package/framework/rules/morph-workflow.md +73 -13
  55. package/framework/rules/nextjs-standards.md +1 -0
  56. package/framework/rules/nextjs-templates.md +40 -0
  57. package/framework/rules/resend-standards.md +12 -0
  58. package/framework/rules/supabase-standards.md +29 -0
  59. package/framework/skills/README.md +6 -8
  60. package/framework/skills/level-0-meta/mcp-registry.json +21 -99
  61. package/framework/{standards/ai-agents/team-orchestration.md → skills/level-0-meta/morph-agent-teams/SKILL.md} +472 -479
  62. package/framework/skills/level-0-meta/morph-brainstorming/SKILL.md +28 -1
  63. package/framework/skills/level-0-meta/morph-checklist/SKILL.md +2 -2
  64. package/framework/skills/level-0-meta/morph-code-review/SKILL.md +1 -5
  65. package/framework/skills/level-0-meta/morph-code-review/scripts/scan-csharp.mjs +1 -1
  66. package/framework/skills/level-0-meta/morph-frontend-review/SKILL.md +23 -41
  67. package/framework/skills/level-0-meta/morph-init/SKILL.md +18 -14
  68. package/framework/skills/level-0-meta/morph-parallel-dispatch/SKILL.md +225 -0
  69. package/framework/skills/level-0-meta/morph-post-implementation/SKILL.md +20 -0
  70. package/framework/skills/level-0-meta/morph-tool-usage-guide/SKILL.md +4 -8
  71. package/framework/skills/level-0-meta/morph-tool-usage-guide/references/tools-per-phase.md +15 -59
  72. package/framework/skills/level-0-meta/morph-verification-before-completion/SKILL.md +7 -19
  73. package/framework/skills/level-0-meta/morph-verification-before-completion/scripts/check-phase-outputs.mjs +8 -8
  74. package/framework/skills/level-1-workflows/README.md +1 -1
  75. package/framework/skills/level-1-workflows/morph-phase-codebase-analysis/SKILL.md +49 -50
  76. package/framework/skills/level-1-workflows/morph-phase-design/SKILL.md +58 -124
  77. package/framework/skills/level-1-workflows/morph-phase-design/references/architecture-analysis-guide.md +5 -50
  78. package/framework/skills/level-1-workflows/morph-phase-design/references/spec-example.md +1 -1
  79. package/framework/skills/level-1-workflows/morph-phase-implement/SKILL.md +127 -159
  80. package/framework/skills/level-1-workflows/morph-phase-implement/prompts/implementer-prompt.md +4 -3
  81. package/framework/skills/level-1-workflows/morph-phase-implement/prompts/spec-reviewer-prompt.md +2 -2
  82. package/framework/skills/level-1-workflows/morph-phase-implement/references/recap-example.md +1 -1
  83. package/framework/skills/level-1-workflows/morph-phase-plan/SKILL.md +17 -13
  84. package/framework/skills/level-1-workflows/morph-phase-tasks/SKILL.md +22 -40
  85. package/framework/skills/level-1-workflows/morph-phase-tasks/references/task-planning-patterns.md +0 -2
  86. package/framework/skills/level-1-workflows/morph-phase-tasks/references/tasks-example.md +5 -5
  87. package/framework/skills/level-1-workflows/morph-phase-uiux/SKILL.md +275 -61
  88. package/framework/skills/level-1-workflows/morph-scope-escalation/SKILL.md +1 -1
  89. package/framework/squad-templates/backend-only.json +6 -6
  90. package/framework/squad-templates/frontend-only.json +17 -8
  91. package/framework/squad-templates/full-stack.json +29 -24
  92. package/framework/standards/STANDARDS.json +1021 -2338
  93. package/framework/standards/backend/dotnet/fluent-validation-vsa.md +200 -0
  94. package/framework/standards/backend/dotnet/result-pattern.md +213 -0
  95. package/framework/standards/backend/dotnet/scalar-ui.md +172 -0
  96. package/framework/standards/backend/dotnet/scrutor.md +158 -0
  97. package/framework/standards/backend/dotnet/vsa-handler-patterns.md +274 -0
  98. package/framework/standards/frontend/nextjs/motion-patterns.md +1 -1
  99. package/framework/standards/infrastructure/supabase/mcp-setup.md +83 -193
  100. package/framework/standards/integration/mcp/mcp-tools.md +91 -77
  101. package/framework/templates/IDE-SNIPPETS.md +2 -6
  102. package/framework/templates/README.md +709 -814
  103. package/framework/templates/REGISTRY.json +223 -762
  104. package/framework/templates/code/dotnet/abstractions/api-endpoint.cs +7 -0
  105. package/framework/templates/code/dotnet/abstractions/error.cs +60 -0
  106. package/framework/templates/code/dotnet/abstractions/handler.cs +12 -0
  107. package/framework/templates/code/dotnet/abstractions/result.cs +74 -0
  108. package/framework/templates/code/dotnet/backend/repository.cs +148 -141
  109. package/framework/templates/code/dotnet/constants/api-tags.cs +6 -0
  110. package/framework/templates/code/dotnet/exceptions/exception-handler.cs +32 -0
  111. package/framework/templates/code/dotnet/extensions/database-extensions.cs +20 -0
  112. package/framework/templates/code/dotnet/extensions/handler-registration.cs +38 -0
  113. package/framework/templates/code/dotnet/extensions/health-checks.cs +24 -0
  114. package/framework/templates/code/dotnet/extensions/map-endpoints.cs +35 -0
  115. package/framework/templates/code/dotnet/extensions/result-extensions.cs +29 -0
  116. package/framework/templates/code/dotnet/feature/endpoint.cs.hbs +21 -0
  117. package/framework/templates/code/dotnet/feature/entity.cs.hbs +8 -0
  118. package/framework/templates/code/dotnet/feature/errors.cs.hbs +8 -0
  119. package/framework/templates/code/dotnet/feature/handler.cs.hbs +24 -0
  120. package/framework/templates/code/dotnet/feature/request.cs.hbs +4 -0
  121. package/framework/templates/code/dotnet/feature/response.cs.hbs +4 -0
  122. package/framework/templates/code/dotnet/feature/validator.cs.hbs +15 -0
  123. package/framework/templates/code/dotnet/jobs/job.cs +21 -17
  124. package/framework/templates/code/dotnet/pipelines/logging-decorator.cs +31 -0
  125. package/framework/templates/code/dotnet/pipelines/validation-decorator.cs +97 -0
  126. package/framework/templates/code/dotnet/test.cs +192 -106
  127. package/framework/templates/context/ARCHITECTURE.md +89 -0
  128. package/framework/templates/context/CONTEXT-FEATURE.md +2 -2
  129. package/framework/templates/context/CONTEXT.md +180 -181
  130. package/framework/templates/context/design-system.md +342 -211
  131. package/framework/templates/docs/onboarding.md +2 -3
  132. package/framework/templates/docs/proposal.md +171 -182
  133. package/framework/templates/docs/spec.md +1 -3
  134. package/framework/templates/docs/ui-components.md +0 -72
  135. package/framework/templates/examples/design-system-examples.md +4 -4
  136. package/framework/templates/feature/decisions.md +0 -66
  137. package/framework/templates/feature/recap.md +1 -2
  138. package/framework/templates/infrastructure/github/README.md +56 -593
  139. package/framework/templates/integrations/clerk-config.cs +0 -41
  140. package/framework/templates/meta-prompts/parallel-workers/parallel-worker.md +2 -2
  141. package/framework/templates/meta-prompts/squad-leaders/backend-squad.md +1 -2
  142. package/framework/templates/meta-prompts/squad-leaders/frontend-squad.md +83 -126
  143. package/framework/templates/meta-prompts/validators/pre-commit-validator.md +2 -2
  144. package/framework/templates/project/validate.js +2 -4
  145. package/framework/templates/ui/design-system.css +1 -1
  146. package/framework/workflows/README.md +8 -8
  147. package/framework/workflows/configs/fast-track.json +51 -0
  148. package/framework/workflows/configs/full.json +68 -0
  149. package/framework/workflows/configs/standard.json +7 -3
  150. package/framework/workflows/docs/STORY-DRIVEN-DEVELOPMENT.md +1 -1
  151. package/framework/workflows/docs/enforcement-pipeline.md +18 -19
  152. package/framework/workflows/docs/full-morph.md +69 -76
  153. package/framework/workflows/docs/standard.md +49 -44
  154. package/framework/workflows/docs/ui-refresh.md +1 -1
  155. package/package.json +3 -3
  156. package/src/commands/agents/dispatch-agents.js +55 -116
  157. package/src/commands/context/context-refresh.js +79 -0
  158. package/src/commands/mcp/mcp-setup.js +28 -6
  159. package/src/commands/phase/phase-reset.js +1 -1
  160. package/src/commands/project/doctor.js +10 -32
  161. package/src/commands/project/init.js +32 -1
  162. package/src/commands/project/status.js +6 -12
  163. package/src/commands/scaffold/scaffold.js +131 -0
  164. package/src/commands/scope/escalate.js +1 -1
  165. package/src/commands/state/advance-phase.js +15 -29
  166. package/src/commands/state/state.js +20 -5
  167. package/src/commands/tasks/task.js +0 -30
  168. package/src/commands/validation/validate-feature.js +3 -10
  169. package/src/core/paths/output-schema.js +12 -13
  170. package/src/core/state/phase-state-machine.js +211 -217
  171. package/src/core/state/state-manager.js +9 -9
  172. package/src/lib/agents/agents-manager.js +2 -2
  173. package/src/lib/agents/output-collector.js +1 -2
  174. package/src/lib/detectors/design-system-detector.js +4 -4
  175. package/src/lib/detectors/index.js +1 -11
  176. package/src/lib/generators/architecture-scanner.js +640 -0
  177. package/src/lib/generators/context-generator.js +3 -3
  178. package/src/lib/generators/design-system-generator.js +508 -298
  179. package/src/lib/generators/index.js +12 -10
  180. package/src/lib/generators/metadata-extractor.js +386 -387
  181. package/src/lib/generators/recap-generator.js +4 -4
  182. package/src/lib/generators/scaffold-generator.js +317 -0
  183. package/src/lib/generators/settings-generator.js +0 -1
  184. package/src/lib/phase-chain/phase-validator.js +64 -42
  185. package/src/lib/stack/stack-profile.js +2 -2
  186. package/src/lib/standards/digest-builder.js +72 -285
  187. package/src/lib/tasks/task-parser.js +11 -5
  188. package/src/lib/validators/architecture/architecture-validator.js +259 -387
  189. package/src/lib/validators/content/content-validator.js +287 -287
  190. package/src/lib/validators/css/css-validator.js +340 -352
  191. package/src/lib/validators/design-system/design-system-validator.js +11 -5
  192. package/src/lib/validators/packages/package-validator.js +347 -360
  193. package/src/lib/validators/shared/issue-counter.js +14 -18
  194. package/src/lib/validators/validation-runner.js +3 -19
  195. package/src/scripts/setup-infra.js +1 -1
  196. package/src/utils/agents-installer.js +24 -3
  197. package/src/utils/file-copier.js +1 -0
  198. package/src/utils/hooks-installer.js +21 -19
  199. package/src/utils/skills-installer.js +178 -178
  200. package/framework/agents/architecture/prompt-engineer.md +0 -195
  201. package/framework/agents/backend/api-designer.md +0 -106
  202. package/framework/agents/frontend/blazor-builder.md +0 -229
  203. package/framework/agents/frontend/nextjs-ui-specialist.md +0 -218
  204. package/framework/agents/infrastructure/azure-architect.md +0 -150
  205. package/framework/agents/infrastructure/azure-deploy-specialist.md +0 -707
  206. package/framework/agents/infrastructure/bicep-architect.md +0 -132
  207. package/framework/agents/infrastructure/container-specialist.md +0 -137
  208. package/framework/agents/infrastructure/devops-engineer.md +0 -126
  209. package/framework/agents/integrations/azure-identity.md +0 -148
  210. package/framework/agents/quality/code-analyzer.md +0 -239
  211. package/framework/agents/quality/testing-specialist.md +0 -130
  212. package/framework/hooks/claude-code/notification/approval-reminder.js +0 -57
  213. package/framework/hooks/claude-code/post-tool-use/context-refresh.js +0 -109
  214. package/framework/hooks/claude-code/post-tool-use/skill-reminder.js +0 -78
  215. package/framework/index/troubleshooting-index.json +0 -184
  216. package/framework/rules/testing-standards.md +0 -14
  217. package/framework/skills/level-0-meta/morph-replicate/SKILL.md +0 -230
  218. package/framework/skills/level-0-meta/morph-replicate/references/blazor-html-mapping.md +0 -70
  219. package/framework/skills/level-1-workflows/morph-phase-clarify/SKILL.md +0 -256
  220. package/framework/skills/level-1-workflows/morph-phase-clarify/references/clarifications-example.md +0 -117
  221. package/framework/skills/level-1-workflows/morph-phase-setup/SKILL.md +0 -269
  222. package/framework/standards/ai-agents/blazor-ui.md +0 -364
  223. package/framework/standards/architecture/ddd/aggregates.md +0 -120
  224. package/framework/standards/architecture/ddd/bounded-contexts.md +0 -105
  225. package/framework/standards/architecture/ddd/complexity-levels.md +0 -108
  226. package/framework/standards/architecture/ddd/entities.md +0 -99
  227. package/framework/standards/architecture/ddd/ubiquitous-language.md +0 -58
  228. package/framework/standards/architecture/ddd/value-objects.md +0 -124
  229. package/framework/standards/backend/api/minimal-api.md +0 -494
  230. package/framework/standards/backend/api/rest.md +0 -492
  231. package/framework/standards/backend/authentication/passkeys.md +0 -428
  232. package/framework/standards/backend/database/ef-core.md +0 -199
  233. package/framework/standards/backend/database/migrations.md +0 -393
  234. package/framework/standards/backend/database/repository-patterns.md +0 -528
  235. package/framework/standards/backend/dotnet/async.md +0 -366
  236. package/framework/standards/backend/dotnet/core.md +0 -117
  237. package/framework/standards/backend/dotnet/di.md +0 -439
  238. package/framework/standards/backend/dotnet/program-cs-checklist.md +0 -92
  239. package/framework/standards/context/analytics.md +0 -96
  240. package/framework/standards/context/bundles.md +0 -110
  241. package/framework/standards/context/priming.md +0 -78
  242. package/framework/standards/core/architecture.md +0 -185
  243. package/framework/standards/core/coding.md +0 -214
  244. package/framework/standards/core/git-branching-strategy.md +0 -403
  245. package/framework/standards/core/git.md +0 -185
  246. package/framework/standards/core/testing.md +0 -295
  247. package/framework/standards/data/nosql/blob-storage.md +0 -102
  248. package/framework/standards/data/vector-search/azure-ai-search.md +0 -121
  249. package/framework/standards/frontend/blazor/design-checklist.md +0 -222
  250. package/framework/standards/frontend/blazor/fluent-ui-setup.md +0 -595
  251. package/framework/standards/frontend/blazor/fluent-ui.md +0 -137
  252. package/framework/standards/frontend/blazor/html-conversion.md +0 -184
  253. package/framework/standards/frontend/blazor/lifecycle.md +0 -195
  254. package/framework/standards/frontend/blazor/pitfalls.md +0 -198
  255. package/framework/standards/frontend/blazor/state.md +0 -191
  256. package/framework/standards/frontend/design-system/aesthetic-direction.md +0 -213
  257. package/framework/standards/infrastructure/azure/azure.md +0 -624
  258. package/framework/standards/infrastructure/azure/bicep/bicep-patterns.md +0 -422
  259. package/framework/standards/infrastructure/azure/devops/azure-devops-setup.md +0 -516
  260. package/framework/standards/infrastructure/azure/devops/local-development.md +0 -520
  261. package/framework/standards/infrastructure/azure/services/functions.md +0 -486
  262. package/framework/standards/infrastructure/azure/services/service-bus.md +0 -459
  263. package/framework/standards/infrastructure/azure/services/storage.md +0 -407
  264. package/framework/standards/infrastructure/vercel/vercel-database.md +0 -106
  265. package/framework/standards/integration/api/graphql.md +0 -91
  266. package/framework/standards/integration/api/grpc.md +0 -114
  267. package/framework/standards/integration/api/rest-design.md +0 -95
  268. package/framework/standards/integration/event-driven/cqrs.md +0 -101
  269. package/framework/standards/integration/event-driven/event-sourcing.md +0 -124
  270. package/framework/standards/integration/event-driven/service-bus.md +0 -95
  271. package/framework/standards/observability/logging.md +0 -131
  272. package/framework/standards/observability/metrics.md +0 -121
  273. package/framework/standards/observability/monitoring.md +0 -114
  274. package/framework/standards/observability/tracing.md +0 -132
  275. package/framework/standards/workflows/parallel-execution.md +0 -112
  276. package/framework/standards/workflows/thread-management.md +0 -113
  277. package/framework/templates/code/dotnet/backend/service.cs +0 -139
  278. package/framework/templates/code/dotnet/contracts/Commands.cs +0 -74
  279. package/framework/templates/code/dotnet/contracts/Entities.cs +0 -25
  280. package/framework/templates/code/dotnet/contracts/Queries.cs +0 -74
  281. package/framework/templates/code/dotnet/contracts/api-contracts.cs +0 -173
  282. package/framework/templates/code/dotnet/contracts/contracts-level1.cs +0 -69
  283. package/framework/templates/code/dotnet/contracts/contracts-level2.cs +0 -86
  284. package/framework/templates/code/dotnet/contracts/contracts-level3.cs +0 -41
  285. package/framework/templates/code/dotnet/frontend/component.razor +0 -239
  286. package/framework/templates/infrastructure/azure/Dockerfile.example +0 -82
  287. package/framework/templates/infrastructure/azure/README.md +0 -286
  288. package/framework/templates/infrastructure/azure/app-insights.bicep +0 -63
  289. package/framework/templates/infrastructure/azure/app-service.bicep +0 -164
  290. package/framework/templates/infrastructure/azure/container-app-env.bicep +0 -49
  291. package/framework/templates/infrastructure/azure/container-app.bicep +0 -156
  292. package/framework/templates/infrastructure/azure/deploy-checklist.md +0 -426
  293. package/framework/templates/infrastructure/azure/deploy.ps1 +0 -229
  294. package/framework/templates/infrastructure/azure/deploy.sh +0 -208
  295. package/framework/templates/infrastructure/azure/key-vault.bicep +0 -91
  296. package/framework/templates/infrastructure/azure/main.bicep +0 -189
  297. package/framework/templates/infrastructure/azure/parameters.dev.json +0 -29
  298. package/framework/templates/infrastructure/azure/parameters.prod.json +0 -29
  299. package/framework/templates/infrastructure/azure/parameters.staging.json +0 -29
  300. package/framework/templates/infrastructure/azure/sql-database.bicep +0 -103
  301. package/framework/templates/infrastructure/azure/storage.bicep +0 -106
  302. package/framework/templates/infrastructure/github/actions/azure-auth/action.yml.hbs +0 -22
  303. package/framework/templates/infrastructure/github/workflows/deploy-azure-app-service.yml.hbs +0 -61
  304. package/framework/templates/integrations/azure-identity-config.cs +0 -288
  305. package/framework/templates/project-structure/dotnet-ddd.md +0 -70
  306. package/framework/templates/saas/subscription.cs +0 -347
  307. package/framework/templates/saas/tenant.cs +0 -338
  308. package/framework/templates/ui/FluentDesignTheme.cs +0 -149
  309. package/framework/templates/ui/MudTheme.cs +0 -281
  310. package/framework/workflows/configs/nodejs-cli.json +0 -40
  311. package/src/commands/standards/context-budget.js +0 -89
  312. package/src/lib/standards/index.js +0 -7
  313. package/src/lib/standards/standards-context-injector.js +0 -302
  314. package/src/lib/validators/blazor/blazor-concurrency-analyzer.js +0 -316
  315. package/src/lib/validators/blazor/blazor-state-validator.js +0 -279
  316. package/src/lib/validators/blazor/blazor-validator.js +0 -369
  317. package/src/lib/validators/blazor/index.js +0 -9
@@ -1,47 +1,211 @@
1
1
  ---
2
2
  name: infra-architect
3
- description: Infrastructure Squad Leader for cloud-agnostic infrastructure coordination. Use when planning deployments, provisioning any cloud resources, setting up CI/CD pipelines, containerizing applications, or designing infrastructure architecture regardless of cloud provider.
3
+ description: Infrastructure Squad Leader for Docker containerization, GitHub Actions CI/CD, and EasyPanel deployment. Use when planning deployments, containerizing applications, setting up CI/CD pipelines, or designing infrastructure architecture.
4
4
  allowed-tools: Read, Write, Edit, Bash, Glob, Grep
5
5
  stacks:
6
- - azure
7
6
  - docker
8
7
  ---
9
8
 
10
9
  # Infrastructure Squad Leader
11
10
 
12
- Cloud-agnostic infrastructure coordinator. Delegates to cloud-specific specialists.
11
+ Docker + GitHub Actions + EasyPanel infrastructure coordinator.
13
12
 
14
- ## Responsabilidades
13
+ ## Code Templates
15
14
 
16
- 1. **Coordenar especialistas de infra** independente do cloud provider
17
- 2. **Decidir stack de infra** com base no config do projeto
18
- 3. **Garantir IaC** — tudo via código, nada manual
19
- 4. **CI/CD** — pipelines para todos os ambientes
15
+ ```
16
+ .morph/framework/templates/infrastructure/
17
+ ```
20
18
 
21
- ## Quando ativar sub-especialistas
19
+ ---
20
+
21
+ ## Responsibilities
22
+
23
+ 1. **Docker containerization** — multi-stage builds for .NET and Next.js
24
+ 2. **Docker Compose** — local development environment orchestration
25
+ 3. **GitHub Actions CI/CD** — build, test, deploy pipelines
26
+ 4. **EasyPanel deployment** — VPS-based hosting via EasyPanel
27
+ 5. **Secrets management** — environment variables, never hardcoded
28
+ 6. **Infrastructure as Code** — everything via code, nothing manual
29
+
30
+ ---
31
+
32
+ ## Docker Multi-Stage Builds
33
+
34
+ ### .NET API
35
+
36
+ ```dockerfile
37
+ # Build stage
38
+ FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
39
+ WORKDIR /src
40
+ COPY *.sln .
41
+ COPY src/**/*.csproj ./
42
+ RUN dotnet restore
43
+ COPY . .
44
+ RUN dotnet publish src/Web/Web.csproj -c Release -o /app/publish
45
+
46
+ # Runtime stage
47
+ FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS runtime
48
+ WORKDIR /app
49
+ COPY --from=build /app/publish .
50
+ EXPOSE 8080
51
+ ENTRYPOINT ["dotnet", "Web.dll"]
52
+ ```
53
+
54
+ ### Next.js
55
+
56
+ ```dockerfile
57
+ FROM node:22-alpine AS deps
58
+ WORKDIR /app
59
+ COPY package*.json ./
60
+ RUN npm ci --only=production
61
+
62
+ FROM node:22-alpine AS builder
63
+ WORKDIR /app
64
+ COPY --from=deps /app/node_modules ./node_modules
65
+ COPY . .
66
+ ARG NEXT_PUBLIC_API_URL
67
+ ENV NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL
68
+ RUN npm run build
69
+
70
+ FROM node:22-alpine AS runner
71
+ WORKDIR /app
72
+ ENV NODE_ENV=production
73
+ COPY --from=builder /app/.next/standalone ./
74
+ COPY --from=builder /app/.next/static ./.next/static
75
+ COPY --from=builder /app/public ./public
76
+ EXPOSE 3000
77
+ CMD ["node", "server.js"]
78
+ ```
79
+
80
+ ---
81
+
82
+ ## Docker Compose (Local Development)
83
+
84
+ ```yaml
85
+ services:
86
+ api:
87
+ build:
88
+ context: ./api
89
+ dockerfile: Dockerfile
90
+ ports:
91
+ - "5000:8080"
92
+ environment:
93
+ - ConnectionStrings__Default=Server=db;Database=app;User=sa;Password=${DB_PASSWORD};TrustServerCertificate=true
94
+ depends_on:
95
+ db:
96
+ condition: service_healthy
22
97
 
23
- | Cenário | Especialista |
24
- |---------|-------------|
25
- | Deploy em Azure | azure-architect |
26
- | Templates Bicep | bicep-architect (via azure-architect) |
27
- | Pipelines CI/CD | devops-engineer |
28
- | Docker / containers | container-specialist |
29
- | Logs / métricas | observability-expert |
30
- | Auth Microsoft/Entra | azure-identity (via azure-architect) |
98
+ web:
99
+ build:
100
+ context: ./web
101
+ dockerfile: Dockerfile
102
+ args:
103
+ NEXT_PUBLIC_API_URL: http://localhost:5000
104
+ ports:
105
+ - "3000:3000"
106
+ depends_on:
107
+ - api
31
108
 
32
- ## Princípio: Infrastructure as Code
109
+ db:
110
+ image: mcr.microsoft.com/mssql/server:2022-latest
111
+ environment:
112
+ - ACCEPT_EULA=Y
113
+ - SA_PASSWORD=${DB_PASSWORD}
114
+ ports:
115
+ - "1433:1433"
116
+ volumes:
117
+ - db-data:/var/opt/mssql
118
+ healthcheck:
119
+ test: /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "$$SA_PASSWORD" -Q "SELECT 1" -C
120
+ interval: 10s
121
+ timeout: 5s
122
+ retries: 5
33
123
 
34
- > Nunca criar recursos de infra manualmente. Toda infra via código (Bicep, Terraform, Pulumi, Compose).
124
+ volumes:
125
+ db-data:
126
+ ```
127
+
128
+ ---
129
+
130
+ ## GitHub Actions CI/CD
131
+
132
+ ### Build & Test
133
+
134
+ ```yaml
135
+ name: CI
136
+ on:
137
+ push:
138
+ branches: [main, develop]
139
+ pull_request:
140
+ branches: [main]
141
+
142
+ jobs:
143
+ build:
144
+ runs-on: ubuntu-latest
145
+ steps:
146
+ - uses: actions/checkout@v4
147
+ - uses: actions/setup-dotnet@v4
148
+ with:
149
+ dotnet-version: '10.0.x'
150
+ - run: dotnet restore
151
+ - run: dotnet build --no-restore
152
+ - run: dotnet test --no-build --verbosity normal
153
+ ```
154
+
155
+ ### Deploy to EasyPanel
156
+
157
+ ```yaml
158
+ name: Deploy
159
+ on:
160
+ push:
161
+ branches: [main]
162
+
163
+ jobs:
164
+ deploy:
165
+ runs-on: ubuntu-latest
166
+ steps:
167
+ - uses: actions/checkout@v4
168
+ - name: Deploy to EasyPanel
169
+ uses: easypanel-io/deploy@v1
170
+ with:
171
+ easypanel-url: ${{ secrets.EASYPANEL_URL }}
172
+ easypanel-token: ${{ secrets.EASYPANEL_TOKEN }}
173
+ project: ${{ secrets.EASYPANEL_PROJECT }}
174
+ service: api
175
+ ```
176
+
177
+ ---
178
+
179
+ ## EasyPanel Deployment Patterns
180
+
181
+ - **Services:** Each container (api, web, db) is an EasyPanel service
182
+ - **Environment variables:** Set in EasyPanel dashboard per service
183
+ - **Domains:** Configure custom domains via EasyPanel domain settings
184
+ - **Volumes:** Persistent storage for databases via EasyPanel volumes
185
+ - **Health checks:** Configure per service for auto-restart
186
+ - **Scaling:** Horizontal scaling via EasyPanel service replicas
187
+
188
+ ### EasyPanel Service Setup
189
+
190
+ | Service | Type | Port | Notes |
191
+ |---------|------|------|-------|
192
+ | api | App (Docker) | 8080 | .NET API |
193
+ | web | App (Docker) | 3000 | Next.js frontend |
194
+ | db | Database (SQL Server) | 1433 | Managed by EasyPanel |
195
+
196
+ ---
35
197
 
36
- ## Checklist de Infra
198
+ ## Checklist
37
199
 
38
- - [ ] Cloud provider definido em config.json
39
- - [ ] IaC templates criados e validados
40
- - [ ] Ambientes dev/staging/prod separados
41
- - [ ] Secrets nunca hardcoded
42
- - [ ] CI/CD pipeline configurado
43
- - [ ] Observability básica (logs + métricas)
44
- - [ ] Estimativa de custos documentada
200
+ - [ ] Dockerfile uses multi-stage builds (separate build/runtime)
201
+ - [ ] Docker Compose for local development
202
+ - [ ] GitHub Actions CI pipeline (build + test)
203
+ - [ ] GitHub Actions CD pipeline (deploy to EasyPanel)
204
+ - [ ] Secrets in GitHub Secrets / EasyPanel env vars (never hardcoded)
205
+ - [ ] Health checks configured for all services
206
+ - [ ] `.dockerignore` excludes node_modules, .git, test files
207
+ - [ ] Environment variables documented
208
+ - [ ] Volumes configured for persistent data
45
209
 
46
210
  ---
47
211
 
@@ -8,7 +8,7 @@ stacks:
8
8
 
9
9
  # Clerk Auth
10
10
 
11
- Autenticação SaaS com Clerk para .NET/Blazor. SDK: `Clerk.Net.AspNetCore.Security`.
11
+ Autenticação SaaS com Clerk para .NET e Next.js. SDK: `Clerk.Net.AspNetCore.Security` (.NET) / `@clerk/nextjs` (Next.js).
12
12
 
13
13
  ## Setup
14
14
 
@@ -41,26 +41,29 @@ app.MapGet("/api/profile", async (ClaimsPrincipal user, IClerkClient clerk) =>
41
41
  // Role-based: [Authorize(Roles = "admin")]
42
42
  ```
43
43
 
44
- ## Blazor Server
44
+ ## Next.js Integration
45
45
 
46
- > **Ref:** Same `CascadingAuthenticationState` + `AuthorizeRouteView` pattern as `azure-identity.md`
46
+ ```tsx
47
+ // middleware.ts
48
+ import { clerkMiddleware } from '@clerk/nextjs/server';
49
+ export default clerkMiddleware();
50
+ export const config = { matcher: ['/((?!.*\\..*|_next).*)', '/'] };
47
51
 
48
- ```razor
49
- @* RedirectToLogin.razor *@
50
- @inject NavigationManager Nav
51
- @code {
52
- protected override void OnInitialized() =>
53
- Nav.NavigateTo($"/sign-in?redirect_url={Uri.EscapeDataString(Nav.Uri)}", forceLoad: true);
52
+ // Protected page
53
+ import { auth } from '@clerk/nextjs/server';
54
+ export default async function DashboardPage() {
55
+ const { userId } = await auth();
56
+ if (!userId) redirect('/sign-in');
57
+ return <Dashboard />;
54
58
  }
55
59
 
56
- @* Protected page *@
57
- @page "/dashboard"
58
- @attribute [Authorize]
59
- <AuthorizeView><Authorized>Welcome, @context.User.Identity?.Name!</Authorized></AuthorizeView>
60
- <AuthorizeView Roles="admin"><Authorized><AdminPanel /></Authorized></AuthorizeView>
60
+ // Client component
61
+ 'use client';
62
+ import { useUser } from '@clerk/nextjs';
63
+ const { user, isLoaded } = useUser();
61
64
  ```
62
65
 
63
- ## Client Operations
66
+ ## Client Operations (.NET)
64
67
 
65
68
  ```csharp
66
69
  var user = await _clerk.Users.GetUserAsync(userId); // Get
@@ -90,19 +93,9 @@ public class ClerkWebhookController(IUserService users) : ControllerBase
90
93
  }
91
94
  ```
92
95
 
93
- ## Clerk vs Azure Identity
94
-
95
- | Aspecto | Clerk | Azure Identity |
96
- |---------|-------|----------------|
97
- | Setup | Faster | More complex |
98
- | Cost | Freemium (5k MAU free) | Free (Azure AD) |
99
- | Social login | 20+ providers | Limited |
100
- | UI components | Pre-built | Build your own |
101
- | Best for | SaaS B2C, MVPs | Enterprise/Azure |
102
-
103
96
  ## Checklist
104
97
 
105
- - [ ] Secret Key in Key Vault (not hardcoded)
98
+ - [ ] Secret Key in environment variables (not hardcoded)
106
99
  - [ ] Authentication scheme configured
107
100
  - [ ] Authorization policies defined
108
101
  - [ ] Webhook endpoint + signature validation
@@ -24,9 +24,6 @@ Hangfire specialist for background jobs, scheduled tasks, and asynchronous proce
24
24
  ## Standards Applied
25
25
 
26
26
  ```
27
- framework/standards/core/coding.md
28
- framework/standards/backend/dotnet/async.md
29
- framework/standards/backend/database/repository-patterns.md (Factory pattern for scoped repos)
30
27
  framework/standards/backend/integrations/hangfire/setup.md
31
28
  framework/standards/backend/integrations/hangfire/jobs.md
32
29
  ```
@@ -64,7 +61,7 @@ framework/standards/backend/integrations/hangfire/jobs.md
64
61
 
65
62
  - **dotnet-senior** - Service layer triggering jobs
66
63
  - **ef-modeler** - Repository factory implementation
67
- - **azure-architect** - Hangfire dashboard security
64
+ - **infra-architect** - Hangfire dashboard security (Docker/EasyPanel)
68
65
  - **resend-email** - Email jobs coordination
69
66
 
70
67
  ---