@polymorphism-tech/morph-spec 4.12.0 → 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 (314) 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 +215 -1453
  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/validator-feedback.js +4 -6
  30. package/framework/hooks/claude-code/pre-compact/save-morph-context.js +12 -7
  31. package/framework/hooks/claude-code/pre-tool-use/enforce-phase-writes.js +2 -2
  32. package/framework/hooks/claude-code/pre-tool-use/protect-spec-files.js +2 -2
  33. package/framework/hooks/claude-code/pre-tool-use/task-tracking-guard.js +5 -10
  34. package/framework/hooks/claude-code/session-start/inject-morph-context.js +63 -30
  35. package/framework/hooks/claude-code/session-start/resume-context.js +77 -0
  36. package/framework/hooks/claude-code/statusline.py +4 -5
  37. package/framework/hooks/claude-code/stop/validate-completion.js +4 -4
  38. package/framework/hooks/claude-code/user-prompt/enrich-prompt.js +8 -8
  39. package/framework/hooks/shared/compact-restore.js +28 -5
  40. package/framework/hooks/shared/phase-utils.js +4 -8
  41. package/framework/hooks/shared/state-reader.js +34 -3
  42. package/framework/phases.json +7 -45
  43. package/framework/rules/ai-agents-standards.md +15 -0
  44. package/framework/rules/asaas-standards.md +13 -0
  45. package/framework/rules/clerk-standards.md +13 -0
  46. package/framework/rules/csharp-standards.md +8 -4
  47. package/framework/rules/data-standards.md +18 -0
  48. package/framework/rules/dotnet-templates.md +87 -0
  49. package/framework/rules/frontend-standards.md +13 -13
  50. package/framework/rules/hangfire-standards.md +13 -0
  51. package/framework/rules/infrastructure-standards.md +27 -16
  52. package/framework/rules/morph-workflow.md +73 -13
  53. package/framework/rules/nextjs-standards.md +1 -0
  54. package/framework/rules/nextjs-templates.md +40 -0
  55. package/framework/rules/resend-standards.md +12 -0
  56. package/framework/rules/supabase-standards.md +29 -0
  57. package/framework/skills/README.md +6 -8
  58. package/framework/skills/level-0-meta/mcp-registry.json +21 -99
  59. package/framework/{standards/ai-agents/team-orchestration.md → skills/level-0-meta/morph-agent-teams/SKILL.md} +472 -479
  60. package/framework/skills/level-0-meta/morph-brainstorming/SKILL.md +28 -1
  61. package/framework/skills/level-0-meta/morph-checklist/SKILL.md +2 -2
  62. package/framework/skills/level-0-meta/morph-code-review/SKILL.md +1 -5
  63. package/framework/skills/level-0-meta/morph-code-review/scripts/scan-csharp.mjs +1 -1
  64. package/framework/skills/level-0-meta/morph-frontend-review/SKILL.md +23 -41
  65. package/framework/skills/level-0-meta/morph-init/SKILL.md +18 -14
  66. package/framework/skills/level-0-meta/morph-parallel-dispatch/SKILL.md +225 -0
  67. package/framework/skills/level-0-meta/morph-post-implementation/SKILL.md +20 -0
  68. package/framework/skills/level-0-meta/morph-tool-usage-guide/SKILL.md +4 -8
  69. package/framework/skills/level-0-meta/morph-tool-usage-guide/references/tools-per-phase.md +15 -59
  70. package/framework/skills/level-0-meta/morph-verification-before-completion/SKILL.md +7 -19
  71. package/framework/skills/level-0-meta/morph-verification-before-completion/scripts/check-phase-outputs.mjs +8 -8
  72. package/framework/skills/level-1-workflows/README.md +1 -1
  73. package/framework/skills/level-1-workflows/morph-phase-codebase-analysis/SKILL.md +49 -50
  74. package/framework/skills/level-1-workflows/morph-phase-design/SKILL.md +58 -124
  75. package/framework/skills/level-1-workflows/morph-phase-design/references/architecture-analysis-guide.md +5 -50
  76. package/framework/skills/level-1-workflows/morph-phase-design/references/spec-example.md +1 -1
  77. package/framework/skills/level-1-workflows/morph-phase-implement/SKILL.md +127 -159
  78. package/framework/skills/level-1-workflows/morph-phase-implement/prompts/implementer-prompt.md +4 -3
  79. package/framework/skills/level-1-workflows/morph-phase-implement/prompts/spec-reviewer-prompt.md +2 -2
  80. package/framework/skills/level-1-workflows/morph-phase-implement/references/recap-example.md +1 -1
  81. package/framework/skills/level-1-workflows/morph-phase-plan/SKILL.md +17 -13
  82. package/framework/skills/level-1-workflows/morph-phase-tasks/SKILL.md +22 -40
  83. package/framework/skills/level-1-workflows/morph-phase-tasks/references/task-planning-patterns.md +0 -2
  84. package/framework/skills/level-1-workflows/morph-phase-tasks/references/tasks-example.md +5 -5
  85. package/framework/skills/level-1-workflows/morph-phase-uiux/SKILL.md +57 -77
  86. package/framework/skills/level-1-workflows/morph-scope-escalation/SKILL.md +1 -1
  87. package/framework/squad-templates/backend-only.json +6 -6
  88. package/framework/squad-templates/frontend-only.json +17 -8
  89. package/framework/squad-templates/full-stack.json +29 -24
  90. package/framework/standards/STANDARDS.json +1021 -2369
  91. package/framework/standards/backend/dotnet/fluent-validation-vsa.md +200 -0
  92. package/framework/standards/backend/dotnet/result-pattern.md +213 -0
  93. package/framework/standards/backend/dotnet/scalar-ui.md +172 -0
  94. package/framework/standards/backend/dotnet/scrutor.md +158 -0
  95. package/framework/standards/backend/dotnet/vsa-handler-patterns.md +274 -0
  96. package/framework/standards/frontend/nextjs/motion-patterns.md +1 -1
  97. package/framework/standards/infrastructure/supabase/mcp-setup.md +83 -193
  98. package/framework/standards/integration/mcp/mcp-tools.md +91 -77
  99. package/framework/templates/IDE-SNIPPETS.md +2 -6
  100. package/framework/templates/README.md +709 -814
  101. package/framework/templates/REGISTRY.json +223 -762
  102. package/framework/templates/code/dotnet/abstractions/api-endpoint.cs +7 -0
  103. package/framework/templates/code/dotnet/abstractions/error.cs +60 -0
  104. package/framework/templates/code/dotnet/abstractions/handler.cs +12 -0
  105. package/framework/templates/code/dotnet/abstractions/result.cs +74 -0
  106. package/framework/templates/code/dotnet/backend/repository.cs +148 -141
  107. package/framework/templates/code/dotnet/constants/api-tags.cs +6 -0
  108. package/framework/templates/code/dotnet/exceptions/exception-handler.cs +32 -0
  109. package/framework/templates/code/dotnet/extensions/database-extensions.cs +20 -0
  110. package/framework/templates/code/dotnet/extensions/handler-registration.cs +38 -0
  111. package/framework/templates/code/dotnet/extensions/health-checks.cs +24 -0
  112. package/framework/templates/code/dotnet/extensions/map-endpoints.cs +35 -0
  113. package/framework/templates/code/dotnet/extensions/result-extensions.cs +29 -0
  114. package/framework/templates/code/dotnet/feature/endpoint.cs.hbs +21 -0
  115. package/framework/templates/code/dotnet/feature/entity.cs.hbs +8 -0
  116. package/framework/templates/code/dotnet/feature/errors.cs.hbs +8 -0
  117. package/framework/templates/code/dotnet/feature/handler.cs.hbs +24 -0
  118. package/framework/templates/code/dotnet/feature/request.cs.hbs +4 -0
  119. package/framework/templates/code/dotnet/feature/response.cs.hbs +4 -0
  120. package/framework/templates/code/dotnet/feature/validator.cs.hbs +15 -0
  121. package/framework/templates/code/dotnet/jobs/job.cs +21 -17
  122. package/framework/templates/code/dotnet/pipelines/logging-decorator.cs +31 -0
  123. package/framework/templates/code/dotnet/pipelines/validation-decorator.cs +97 -0
  124. package/framework/templates/code/dotnet/test.cs +192 -106
  125. package/framework/templates/context/ARCHITECTURE.md +89 -0
  126. package/framework/templates/context/CONTEXT-FEATURE.md +2 -2
  127. package/framework/templates/context/CONTEXT.md +180 -181
  128. package/framework/templates/context/design-system.md +1 -5
  129. package/framework/templates/docs/onboarding.md +2 -3
  130. package/framework/templates/docs/proposal.md +171 -182
  131. package/framework/templates/docs/spec.md +1 -3
  132. package/framework/templates/docs/ui-components.md +0 -72
  133. package/framework/templates/examples/design-system-examples.md +4 -4
  134. package/framework/templates/feature/decisions.md +0 -66
  135. package/framework/templates/feature/recap.md +1 -2
  136. package/framework/templates/infrastructure/github/README.md +56 -593
  137. package/framework/templates/integrations/clerk-config.cs +0 -41
  138. package/framework/templates/meta-prompts/parallel-workers/parallel-worker.md +2 -2
  139. package/framework/templates/meta-prompts/squad-leaders/backend-squad.md +1 -2
  140. package/framework/templates/meta-prompts/squad-leaders/frontend-squad.md +83 -126
  141. package/framework/templates/meta-prompts/validators/pre-commit-validator.md +2 -2
  142. package/framework/templates/project/validate.js +2 -4
  143. package/framework/templates/ui/design-system.css +1 -1
  144. package/framework/workflows/README.md +8 -8
  145. package/framework/workflows/configs/fast-track.json +51 -0
  146. package/framework/workflows/configs/full.json +68 -0
  147. package/framework/workflows/configs/standard.json +7 -3
  148. package/framework/workflows/docs/STORY-DRIVEN-DEVELOPMENT.md +1 -1
  149. package/framework/workflows/docs/enforcement-pipeline.md +18 -19
  150. package/framework/workflows/docs/full-morph.md +69 -76
  151. package/framework/workflows/docs/standard.md +49 -44
  152. package/framework/workflows/docs/ui-refresh.md +1 -1
  153. package/package.json +3 -3
  154. package/src/commands/agents/dispatch-agents.js +55 -116
  155. package/src/commands/context/context-refresh.js +79 -0
  156. package/src/commands/phase/phase-reset.js +1 -1
  157. package/src/commands/project/doctor.js +10 -32
  158. package/src/commands/project/init.js +12 -0
  159. package/src/commands/project/status.js +6 -12
  160. package/src/commands/scaffold/scaffold.js +131 -0
  161. package/src/commands/scope/escalate.js +1 -1
  162. package/src/commands/state/advance-phase.js +15 -29
  163. package/src/commands/state/state.js +20 -5
  164. package/src/commands/tasks/task.js +0 -30
  165. package/src/commands/validation/validate-feature.js +3 -10
  166. package/src/core/paths/output-schema.js +12 -13
  167. package/src/core/state/phase-state-machine.js +211 -217
  168. package/src/core/state/state-manager.js +9 -9
  169. package/src/lib/agents/agents-manager.js +2 -2
  170. package/src/lib/agents/output-collector.js +1 -2
  171. package/src/lib/detectors/design-system-detector.js +4 -4
  172. package/src/lib/detectors/index.js +1 -11
  173. package/src/lib/generators/architecture-scanner.js +640 -0
  174. package/src/lib/generators/context-generator.js +3 -3
  175. package/src/lib/generators/design-system-generator.js +508 -587
  176. package/src/lib/generators/index.js +12 -10
  177. package/src/lib/generators/metadata-extractor.js +386 -387
  178. package/src/lib/generators/recap-generator.js +4 -4
  179. package/src/lib/generators/scaffold-generator.js +317 -0
  180. package/src/lib/generators/settings-generator.js +0 -1
  181. package/src/lib/phase-chain/phase-validator.js +64 -42
  182. package/src/lib/stack/stack-profile.js +2 -2
  183. package/src/lib/standards/digest-builder.js +72 -285
  184. package/src/lib/tasks/task-parser.js +11 -5
  185. package/src/lib/validators/architecture/architecture-validator.js +259 -387
  186. package/src/lib/validators/content/content-validator.js +287 -287
  187. package/src/lib/validators/css/css-validator.js +340 -352
  188. package/src/lib/validators/packages/package-validator.js +347 -360
  189. package/src/lib/validators/shared/issue-counter.js +14 -18
  190. package/src/lib/validators/validation-runner.js +3 -19
  191. package/src/scripts/setup-infra.js +1 -1
  192. package/src/utils/agents-installer.js +24 -3
  193. package/src/utils/file-copier.js +1 -0
  194. package/src/utils/hooks-installer.js +11 -19
  195. package/src/utils/skills-installer.js +178 -178
  196. package/framework/agents/architecture/prompt-engineer.md +0 -195
  197. package/framework/agents/backend/api-designer.md +0 -106
  198. package/framework/agents/frontend/blazor-builder.md +0 -229
  199. package/framework/agents/frontend/nextjs-ui-specialist.md +0 -218
  200. package/framework/agents/infrastructure/azure-architect.md +0 -150
  201. package/framework/agents/infrastructure/azure-deploy-specialist.md +0 -707
  202. package/framework/agents/infrastructure/bicep-architect.md +0 -132
  203. package/framework/agents/infrastructure/container-specialist.md +0 -137
  204. package/framework/agents/infrastructure/devops-engineer.md +0 -126
  205. package/framework/agents/integrations/azure-identity.md +0 -148
  206. package/framework/agents/quality/code-analyzer.md +0 -239
  207. package/framework/agents/quality/testing-specialist.md +0 -130
  208. package/framework/hooks/claude-code/notification/approval-reminder.js +0 -57
  209. package/framework/hooks/claude-code/post-tool-use/context-refresh.js +0 -109
  210. package/framework/hooks/claude-code/post-tool-use/skill-reminder.js +0 -78
  211. package/framework/index/troubleshooting-index.json +0 -184
  212. package/framework/rules/testing-standards.md +0 -14
  213. package/framework/skills/level-0-meta/morph-replicate/SKILL.md +0 -230
  214. package/framework/skills/level-0-meta/morph-replicate/references/blazor-html-mapping.md +0 -70
  215. package/framework/skills/level-1-workflows/morph-phase-clarify/SKILL.md +0 -256
  216. package/framework/skills/level-1-workflows/morph-phase-clarify/references/clarifications-example.md +0 -117
  217. package/framework/skills/level-1-workflows/morph-phase-setup/SKILL.md +0 -269
  218. package/framework/standards/ai-agents/blazor-ui.md +0 -364
  219. package/framework/standards/architecture/ddd/aggregates.md +0 -120
  220. package/framework/standards/architecture/ddd/bounded-contexts.md +0 -105
  221. package/framework/standards/architecture/ddd/complexity-levels.md +0 -108
  222. package/framework/standards/architecture/ddd/entities.md +0 -99
  223. package/framework/standards/architecture/ddd/ubiquitous-language.md +0 -58
  224. package/framework/standards/architecture/ddd/value-objects.md +0 -124
  225. package/framework/standards/backend/api/minimal-api.md +0 -494
  226. package/framework/standards/backend/api/rest.md +0 -492
  227. package/framework/standards/backend/authentication/passkeys.md +0 -428
  228. package/framework/standards/backend/database/ef-core.md +0 -199
  229. package/framework/standards/backend/database/migrations.md +0 -393
  230. package/framework/standards/backend/database/repository-patterns.md +0 -528
  231. package/framework/standards/backend/dotnet/async.md +0 -366
  232. package/framework/standards/backend/dotnet/core.md +0 -117
  233. package/framework/standards/backend/dotnet/di.md +0 -439
  234. package/framework/standards/backend/dotnet/program-cs-checklist.md +0 -92
  235. package/framework/standards/context/analytics.md +0 -96
  236. package/framework/standards/context/bundles.md +0 -110
  237. package/framework/standards/context/priming.md +0 -78
  238. package/framework/standards/core/architecture.md +0 -185
  239. package/framework/standards/core/coding.md +0 -214
  240. package/framework/standards/core/git-branching-strategy.md +0 -403
  241. package/framework/standards/core/git.md +0 -185
  242. package/framework/standards/core/testing.md +0 -295
  243. package/framework/standards/data/nosql/blob-storage.md +0 -102
  244. package/framework/standards/data/vector-search/azure-ai-search.md +0 -121
  245. package/framework/standards/frontend/blazor/design-checklist.md +0 -222
  246. package/framework/standards/frontend/blazor/fluent-ui-setup.md +0 -595
  247. package/framework/standards/frontend/blazor/fluent-ui.md +0 -137
  248. package/framework/standards/frontend/blazor/html-conversion.md +0 -184
  249. package/framework/standards/frontend/blazor/lifecycle.md +0 -195
  250. package/framework/standards/frontend/blazor/pitfalls.md +0 -198
  251. package/framework/standards/frontend/blazor/state.md +0 -191
  252. package/framework/standards/frontend/design-system/aesthetic-direction.md +0 -266
  253. package/framework/standards/frontend/design-system/design-trends.md +0 -171
  254. package/framework/standards/infrastructure/azure/azure.md +0 -624
  255. package/framework/standards/infrastructure/azure/bicep/bicep-patterns.md +0 -422
  256. package/framework/standards/infrastructure/azure/devops/azure-devops-setup.md +0 -516
  257. package/framework/standards/infrastructure/azure/devops/local-development.md +0 -520
  258. package/framework/standards/infrastructure/azure/services/functions.md +0 -486
  259. package/framework/standards/infrastructure/azure/services/service-bus.md +0 -459
  260. package/framework/standards/infrastructure/azure/services/storage.md +0 -407
  261. package/framework/standards/infrastructure/vercel/vercel-database.md +0 -106
  262. package/framework/standards/integration/api/graphql.md +0 -91
  263. package/framework/standards/integration/api/grpc.md +0 -114
  264. package/framework/standards/integration/api/rest-design.md +0 -95
  265. package/framework/standards/integration/event-driven/cqrs.md +0 -101
  266. package/framework/standards/integration/event-driven/event-sourcing.md +0 -124
  267. package/framework/standards/integration/event-driven/service-bus.md +0 -95
  268. package/framework/standards/observability/logging.md +0 -131
  269. package/framework/standards/observability/metrics.md +0 -121
  270. package/framework/standards/observability/monitoring.md +0 -114
  271. package/framework/standards/observability/tracing.md +0 -132
  272. package/framework/standards/workflows/parallel-execution.md +0 -112
  273. package/framework/standards/workflows/thread-management.md +0 -113
  274. package/framework/templates/code/dotnet/backend/service.cs +0 -139
  275. package/framework/templates/code/dotnet/contracts/Commands.cs +0 -74
  276. package/framework/templates/code/dotnet/contracts/Entities.cs +0 -25
  277. package/framework/templates/code/dotnet/contracts/Queries.cs +0 -74
  278. package/framework/templates/code/dotnet/contracts/api-contracts.cs +0 -173
  279. package/framework/templates/code/dotnet/contracts/contracts-level1.cs +0 -69
  280. package/framework/templates/code/dotnet/contracts/contracts-level2.cs +0 -86
  281. package/framework/templates/code/dotnet/contracts/contracts-level3.cs +0 -41
  282. package/framework/templates/code/dotnet/frontend/component.razor +0 -239
  283. package/framework/templates/infrastructure/azure/Dockerfile.example +0 -82
  284. package/framework/templates/infrastructure/azure/README.md +0 -286
  285. package/framework/templates/infrastructure/azure/app-insights.bicep +0 -63
  286. package/framework/templates/infrastructure/azure/app-service.bicep +0 -164
  287. package/framework/templates/infrastructure/azure/container-app-env.bicep +0 -49
  288. package/framework/templates/infrastructure/azure/container-app.bicep +0 -156
  289. package/framework/templates/infrastructure/azure/deploy-checklist.md +0 -426
  290. package/framework/templates/infrastructure/azure/deploy.ps1 +0 -229
  291. package/framework/templates/infrastructure/azure/deploy.sh +0 -208
  292. package/framework/templates/infrastructure/azure/key-vault.bicep +0 -91
  293. package/framework/templates/infrastructure/azure/main.bicep +0 -189
  294. package/framework/templates/infrastructure/azure/parameters.dev.json +0 -29
  295. package/framework/templates/infrastructure/azure/parameters.prod.json +0 -29
  296. package/framework/templates/infrastructure/azure/parameters.staging.json +0 -29
  297. package/framework/templates/infrastructure/azure/sql-database.bicep +0 -103
  298. package/framework/templates/infrastructure/azure/storage.bicep +0 -106
  299. package/framework/templates/infrastructure/github/actions/azure-auth/action.yml.hbs +0 -22
  300. package/framework/templates/infrastructure/github/workflows/deploy-azure-app-service.yml.hbs +0 -61
  301. package/framework/templates/integrations/azure-identity-config.cs +0 -288
  302. package/framework/templates/project-structure/dotnet-ddd.md +0 -70
  303. package/framework/templates/saas/subscription.cs +0 -347
  304. package/framework/templates/saas/tenant.cs +0 -338
  305. package/framework/templates/ui/FluentDesignTheme.cs +0 -149
  306. package/framework/templates/ui/MudTheme.cs +0 -281
  307. package/framework/workflows/configs/nodejs-cli.json +0 -40
  308. package/src/commands/standards/context-budget.js +0 -89
  309. package/src/lib/standards/index.js +0 -7
  310. package/src/lib/standards/standards-context-injector.js +0 -302
  311. package/src/lib/validators/blazor/blazor-concurrency-analyzer.js +0 -316
  312. package/src/lib/validators/blazor/blazor-state-validator.js +0 -279
  313. package/src/lib/validators/blazor/blazor-validator.js +0 -369
  314. 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
  ---