@polymorphism-tech/morph-spec 4.12.0 → 4.14.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 (316) hide show
  1. package/CLAUDE.md +7 -7
  2. package/README.md +28 -34
  3. package/bin/morph-spec.js +41 -24
  4. package/bin/task-manager.js +962 -1341
  5. package/bin/validate.js +1 -1
  6. package/claude-plugin.json +1 -1
  7. package/docs/CHEATSHEET.md +14 -16
  8. package/docs/QUICKSTART.md +15 -15
  9. package/framework/CLAUDE.md +5 -2
  10. package/framework/agents/README.md +3 -4
  11. package/framework/agents/ai-agents/ai-system-architect.md +6 -10
  12. package/framework/agents/architecture/seo-growth-hacker.md +166 -326
  13. package/framework/agents/architecture/standards-architect.md +21 -31
  14. package/framework/agents/backend/dotnet-senior.md +160 -86
  15. package/framework/agents/backend/ef-modeler.md +2 -6
  16. package/framework/agents/backend/hangfire-orchestrator.md +8 -9
  17. package/framework/agents/backend/ms-agent-expert.md +1 -1
  18. package/framework/agents/frontend/nextjs-expert.md +198 -133
  19. package/framework/agents/frontend/ui-ux-designer.md +226 -267
  20. package/framework/agents/infrastructure/infra-architect.md +191 -27
  21. package/framework/agents/integrations/clerk-auth.md +19 -26
  22. package/framework/agents/integrations/hangfire-integration.md +1 -4
  23. package/framework/agents.json +1084 -2278
  24. package/framework/commands/morph-apply.md +4 -6
  25. package/framework/commands/morph-preflight.md +192 -269
  26. package/framework/commands/morph-proposal.md +210 -238
  27. package/framework/commands/morph-status.md +72 -92
  28. package/framework/commands/morph-troubleshoot.md +6 -13
  29. package/framework/hooks/README.md +1 -6
  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/phase-utils.js +4 -8
  42. package/framework/hooks/shared/state-reader.js +34 -3
  43. package/framework/phases.json +162 -200
  44. package/framework/rules/ai-agents-standards.md +15 -0
  45. package/framework/rules/asaas-standards.md +13 -0
  46. package/framework/rules/clerk-standards.md +13 -0
  47. package/framework/rules/csharp-standards.md +8 -4
  48. package/framework/rules/data-standards.md +18 -0
  49. package/framework/rules/dotnet-templates.md +87 -0
  50. package/framework/rules/frontend-standards.md +13 -13
  51. package/framework/rules/hangfire-standards.md +13 -0
  52. package/framework/rules/infrastructure-standards.md +27 -16
  53. package/framework/rules/morph-workflow.md +73 -13
  54. package/framework/rules/nextjs-standards.md +1 -0
  55. package/framework/rules/nextjs-templates.md +40 -0
  56. package/framework/rules/resend-standards.md +12 -0
  57. package/framework/rules/supabase-standards.md +29 -0
  58. package/framework/skills/README.md +6 -8
  59. package/framework/skills/level-0-meta/mcp-registry.json +21 -99
  60. package/framework/{standards/ai-agents/team-orchestration.md → skills/level-0-meta/morph-agent-teams/SKILL.md} +472 -479
  61. package/framework/skills/level-0-meta/morph-brainstorming/SKILL.md +28 -1
  62. package/framework/skills/level-0-meta/morph-checklist/SKILL.md +2 -2
  63. package/framework/skills/level-0-meta/morph-code-review/SKILL.md +1 -5
  64. package/framework/skills/level-0-meta/morph-code-review/scripts/scan-csharp.mjs +1 -1
  65. package/framework/skills/level-0-meta/morph-frontend-review/SKILL.md +23 -41
  66. package/framework/skills/level-0-meta/morph-init/SKILL.md +18 -14
  67. package/framework/skills/level-0-meta/morph-parallel-dispatch/SKILL.md +225 -0
  68. package/framework/skills/level-0-meta/morph-post-implementation/SKILL.md +20 -0
  69. package/framework/skills/level-0-meta/morph-tool-usage-guide/SKILL.md +4 -8
  70. package/framework/skills/level-0-meta/morph-tool-usage-guide/references/tools-per-phase.md +15 -59
  71. package/framework/skills/level-0-meta/morph-verification-before-completion/SKILL.md +7 -19
  72. package/framework/skills/level-0-meta/morph-verification-before-completion/scripts/check-phase-outputs.mjs +8 -8
  73. package/framework/skills/level-1-workflows/README.md +1 -1
  74. package/framework/skills/level-1-workflows/morph-phase-codebase-analysis/SKILL.md +49 -50
  75. package/framework/skills/level-1-workflows/morph-phase-design/SKILL.md +57 -123
  76. package/framework/skills/level-1-workflows/morph-phase-design/references/architecture-analysis-guide.md +5 -50
  77. package/framework/skills/level-1-workflows/morph-phase-design/references/spec-example.md +1 -1
  78. package/framework/skills/level-1-workflows/morph-phase-implement/SKILL.md +127 -159
  79. package/framework/skills/level-1-workflows/morph-phase-implement/prompts/code-quality-reviewer-prompt.md +1 -1
  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 +143 -172
  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 +57 -77
  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 -2369
  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 +1 -5
  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/phase/phase-reset.js +1 -1
  159. package/src/commands/project/doctor.js +10 -32
  160. package/src/commands/project/init.js +12 -0
  161. package/src/commands/project/status.js +6 -12
  162. package/src/commands/scaffold/scaffold.js +131 -0
  163. package/src/commands/scope/escalate.js +1 -1
  164. package/src/commands/state/advance-phase.js +15 -29
  165. package/src/commands/state/state.js +20 -5
  166. package/src/commands/tasks/task.js +0 -30
  167. package/src/commands/validation/validate-feature.js +3 -10
  168. package/src/core/paths/output-schema.js +12 -13
  169. package/src/core/state/phase-state-machine.js +211 -217
  170. package/src/core/state/state-manager.js +9 -9
  171. package/src/lib/agents/agents-manager.js +2 -2
  172. package/src/lib/agents/output-collector.js +1 -2
  173. package/src/lib/detectors/design-system-detector.js +4 -4
  174. package/src/lib/detectors/index.js +1 -11
  175. package/src/lib/generators/architecture-scanner.js +640 -0
  176. package/src/lib/generators/context-generator.js +3 -3
  177. package/src/lib/generators/design-system-generator.js +508 -587
  178. package/src/lib/generators/index.js +12 -10
  179. package/src/lib/generators/metadata-extractor.js +386 -387
  180. package/src/lib/generators/recap-generator.js +4 -4
  181. package/src/lib/generators/scaffold-generator.js +317 -0
  182. package/src/lib/generators/settings-generator.js +0 -1
  183. package/src/lib/phase-chain/phase-validator.js +64 -42
  184. package/src/lib/stack/stack-profile.js +2 -2
  185. package/src/lib/standards/digest-builder.js +72 -285
  186. package/src/lib/tasks/task-parser.js +11 -5
  187. package/src/lib/validators/architecture/architecture-validator.js +259 -387
  188. package/src/lib/validators/content/content-validator.js +287 -287
  189. package/src/lib/validators/css/css-validator.js +340 -352
  190. package/src/lib/validators/packages/package-validator.js +347 -360
  191. package/src/lib/validators/shared/issue-counter.js +14 -18
  192. package/src/lib/validators/validation-runner.js +3 -19
  193. package/src/scripts/setup-infra.js +1 -1
  194. package/src/utils/agents-installer.js +61 -10
  195. package/src/utils/file-copier.js +1 -0
  196. package/src/utils/hooks-installer.js +11 -19
  197. package/src/utils/skills-installer.js +178 -178
  198. package/framework/agents/architecture/prompt-engineer.md +0 -195
  199. package/framework/agents/backend/api-designer.md +0 -106
  200. package/framework/agents/frontend/blazor-builder.md +0 -229
  201. package/framework/agents/frontend/nextjs-ui-specialist.md +0 -218
  202. package/framework/agents/infrastructure/azure-architect.md +0 -150
  203. package/framework/agents/infrastructure/azure-deploy-specialist.md +0 -707
  204. package/framework/agents/infrastructure/bicep-architect.md +0 -132
  205. package/framework/agents/infrastructure/container-specialist.md +0 -137
  206. package/framework/agents/infrastructure/devops-engineer.md +0 -126
  207. package/framework/agents/integrations/azure-identity.md +0 -148
  208. package/framework/agents/quality/code-analyzer.md +0 -239
  209. package/framework/agents/quality/testing-specialist.md +0 -130
  210. package/framework/hooks/claude-code/notification/approval-reminder.js +0 -57
  211. package/framework/hooks/claude-code/post-tool-use/context-refresh.js +0 -109
  212. package/framework/hooks/claude-code/post-tool-use/skill-reminder.js +0 -78
  213. package/framework/index/troubleshooting-index.json +0 -184
  214. package/framework/rules/testing-standards.md +0 -14
  215. package/framework/skills/level-0-meta/morph-replicate/SKILL.md +0 -230
  216. package/framework/skills/level-0-meta/morph-replicate/references/blazor-html-mapping.md +0 -70
  217. package/framework/skills/level-1-workflows/morph-phase-clarify/SKILL.md +0 -256
  218. package/framework/skills/level-1-workflows/morph-phase-clarify/references/clarifications-example.md +0 -117
  219. package/framework/skills/level-1-workflows/morph-phase-setup/SKILL.md +0 -269
  220. package/framework/standards/ai-agents/blazor-ui.md +0 -364
  221. package/framework/standards/architecture/ddd/aggregates.md +0 -120
  222. package/framework/standards/architecture/ddd/bounded-contexts.md +0 -105
  223. package/framework/standards/architecture/ddd/complexity-levels.md +0 -108
  224. package/framework/standards/architecture/ddd/entities.md +0 -99
  225. package/framework/standards/architecture/ddd/ubiquitous-language.md +0 -58
  226. package/framework/standards/architecture/ddd/value-objects.md +0 -124
  227. package/framework/standards/backend/api/minimal-api.md +0 -494
  228. package/framework/standards/backend/api/rest.md +0 -492
  229. package/framework/standards/backend/authentication/passkeys.md +0 -428
  230. package/framework/standards/backend/database/ef-core.md +0 -199
  231. package/framework/standards/backend/database/migrations.md +0 -393
  232. package/framework/standards/backend/database/repository-patterns.md +0 -528
  233. package/framework/standards/backend/dotnet/async.md +0 -366
  234. package/framework/standards/backend/dotnet/core.md +0 -117
  235. package/framework/standards/backend/dotnet/di.md +0 -439
  236. package/framework/standards/backend/dotnet/program-cs-checklist.md +0 -92
  237. package/framework/standards/context/analytics.md +0 -96
  238. package/framework/standards/context/bundles.md +0 -110
  239. package/framework/standards/context/priming.md +0 -78
  240. package/framework/standards/core/architecture.md +0 -185
  241. package/framework/standards/core/coding.md +0 -214
  242. package/framework/standards/core/git-branching-strategy.md +0 -403
  243. package/framework/standards/core/git.md +0 -185
  244. package/framework/standards/core/testing.md +0 -295
  245. package/framework/standards/data/nosql/blob-storage.md +0 -102
  246. package/framework/standards/data/vector-search/azure-ai-search.md +0 -121
  247. package/framework/standards/frontend/blazor/design-checklist.md +0 -222
  248. package/framework/standards/frontend/blazor/fluent-ui-setup.md +0 -595
  249. package/framework/standards/frontend/blazor/fluent-ui.md +0 -137
  250. package/framework/standards/frontend/blazor/html-conversion.md +0 -184
  251. package/framework/standards/frontend/blazor/lifecycle.md +0 -195
  252. package/framework/standards/frontend/blazor/pitfalls.md +0 -198
  253. package/framework/standards/frontend/blazor/state.md +0 -191
  254. package/framework/standards/frontend/design-system/aesthetic-direction.md +0 -266
  255. package/framework/standards/frontend/design-system/design-trends.md +0 -171
  256. package/framework/standards/infrastructure/azure/azure.md +0 -624
  257. package/framework/standards/infrastructure/azure/bicep/bicep-patterns.md +0 -422
  258. package/framework/standards/infrastructure/azure/devops/azure-devops-setup.md +0 -516
  259. package/framework/standards/infrastructure/azure/devops/local-development.md +0 -520
  260. package/framework/standards/infrastructure/azure/services/functions.md +0 -486
  261. package/framework/standards/infrastructure/azure/services/service-bus.md +0 -459
  262. package/framework/standards/infrastructure/azure/services/storage.md +0 -407
  263. package/framework/standards/infrastructure/vercel/vercel-database.md +0 -106
  264. package/framework/standards/integration/api/graphql.md +0 -91
  265. package/framework/standards/integration/api/grpc.md +0 -114
  266. package/framework/standards/integration/api/rest-design.md +0 -95
  267. package/framework/standards/integration/event-driven/cqrs.md +0 -101
  268. package/framework/standards/integration/event-driven/event-sourcing.md +0 -124
  269. package/framework/standards/integration/event-driven/service-bus.md +0 -95
  270. package/framework/standards/observability/logging.md +0 -131
  271. package/framework/standards/observability/metrics.md +0 -121
  272. package/framework/standards/observability/monitoring.md +0 -114
  273. package/framework/standards/observability/tracing.md +0 -132
  274. package/framework/standards/workflows/parallel-execution.md +0 -112
  275. package/framework/standards/workflows/thread-management.md +0 -113
  276. package/framework/templates/code/dotnet/backend/service.cs +0 -139
  277. package/framework/templates/code/dotnet/contracts/Commands.cs +0 -74
  278. package/framework/templates/code/dotnet/contracts/Entities.cs +0 -25
  279. package/framework/templates/code/dotnet/contracts/Queries.cs +0 -74
  280. package/framework/templates/code/dotnet/contracts/api-contracts.cs +0 -173
  281. package/framework/templates/code/dotnet/contracts/contracts-level1.cs +0 -69
  282. package/framework/templates/code/dotnet/contracts/contracts-level2.cs +0 -86
  283. package/framework/templates/code/dotnet/contracts/contracts-level3.cs +0 -41
  284. package/framework/templates/code/dotnet/frontend/component.razor +0 -239
  285. package/framework/templates/infrastructure/azure/Dockerfile.example +0 -82
  286. package/framework/templates/infrastructure/azure/README.md +0 -286
  287. package/framework/templates/infrastructure/azure/app-insights.bicep +0 -63
  288. package/framework/templates/infrastructure/azure/app-service.bicep +0 -164
  289. package/framework/templates/infrastructure/azure/container-app-env.bicep +0 -49
  290. package/framework/templates/infrastructure/azure/container-app.bicep +0 -156
  291. package/framework/templates/infrastructure/azure/deploy-checklist.md +0 -426
  292. package/framework/templates/infrastructure/azure/deploy.ps1 +0 -229
  293. package/framework/templates/infrastructure/azure/deploy.sh +0 -208
  294. package/framework/templates/infrastructure/azure/key-vault.bicep +0 -91
  295. package/framework/templates/infrastructure/azure/main.bicep +0 -189
  296. package/framework/templates/infrastructure/azure/parameters.dev.json +0 -29
  297. package/framework/templates/infrastructure/azure/parameters.prod.json +0 -29
  298. package/framework/templates/infrastructure/azure/parameters.staging.json +0 -29
  299. package/framework/templates/infrastructure/azure/sql-database.bicep +0 -103
  300. package/framework/templates/infrastructure/azure/storage.bicep +0 -106
  301. package/framework/templates/infrastructure/github/actions/azure-auth/action.yml.hbs +0 -22
  302. package/framework/templates/infrastructure/github/workflows/deploy-azure-app-service.yml.hbs +0 -61
  303. package/framework/templates/integrations/azure-identity-config.cs +0 -288
  304. package/framework/templates/project-structure/dotnet-ddd.md +0 -70
  305. package/framework/templates/saas/subscription.cs +0 -347
  306. package/framework/templates/saas/tenant.cs +0 -338
  307. package/framework/templates/ui/FluentDesignTheme.cs +0 -149
  308. package/framework/templates/ui/MudTheme.cs +0 -281
  309. package/framework/workflows/configs/nodejs-cli.json +0 -40
  310. package/src/commands/standards/context-budget.js +0 -89
  311. package/src/lib/standards/index.js +0 -7
  312. package/src/lib/standards/standards-context-injector.js +0 -302
  313. package/src/lib/validators/blazor/blazor-concurrency-analyzer.js +0 -316
  314. package/src/lib/validators/blazor/blazor-state-validator.js +0 -279
  315. package/src/lib/validators/blazor/blazor-validator.js +0 -369
  316. 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
  ---