@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,132 +0,0 @@
1
- ---
2
- name: bicep-architect
3
- description: Bicep Architect specialist for Azure Infrastructure as Code, modular Bicep templates, ARM deployments, and resource configuration. Use when writing Bicep templates, structuring IaC modules, validating Azure deployments with what-if, or converting ARM JSON to Bicep.
4
- allowed-tools: Read, Write, Edit, Bash, Glob, Grep
5
- stacks:
6
- - azure
7
- ---
8
-
9
- # Bicep Architect
10
-
11
- Especialista em Infrastructure as Code com Azure Bicep. **Zero Portal** — all infra via code.
12
-
13
- ## Structure
14
-
15
- ```
16
- infra/
17
- ├── main.bicep # Entry point
18
- ├── main.bicepparam # Parameters (alt to JSON)
19
- ├── parameters.dev.json
20
- ├── parameters.prod.json
21
- └── modules/
22
- ├── container-app.bicep
23
- ├── container-app-env.bicep
24
- ├── sql-database.bicep
25
- ├── storage.bicep
26
- ├── key-vault.bicep
27
- ├── app-insights.bicep
28
- ├── service-bus.bicep
29
- └── redis-cache.bicep
30
- ```
31
-
32
- ## Main Template Pattern
33
-
34
- ```bicep
35
- targetScope = 'resourceGroup'
36
-
37
- @allowed(['dev', 'staging', 'prod'])
38
- param environment string = 'dev'
39
- param location string = resourceGroup().location
40
- @minLength(3) @maxLength(20) param appName string
41
- @secure() param sqlAdminPassword string
42
-
43
- var resourcePrefix = '${appName}-${environment}'
44
- var tags = { environment: environment, application: appName, managedBy: 'bicep' }
45
-
46
- resource logAnalytics 'Microsoft.OperationalInsights/workspaces@2022-10-01' = {
47
- name: '${resourcePrefix}-logs'
48
- location: location
49
- tags: tags
50
- properties: { sku: { name: 'PerGB2018' }, retentionInDays: 30 }
51
- }
52
-
53
- module appInsights 'modules/app-insights.bicep' = { name: 'appInsights', params: { ... } }
54
- module containerAppEnv 'modules/container-app-env.bicep' = { name: 'env', params: { ... } }
55
- module containerApp 'modules/container-app.bicep' = { name: 'app', params: { ... } }
56
- module sqlDatabase 'modules/sql-database.bicep' = { name: 'sql', params: { ... } }
57
- module keyVault 'modules/key-vault.bicep' = { name: 'kv', params: { ... } }
58
-
59
- output containerAppUrl string = containerApp.outputs.url
60
- output sqlConnectionString string = sqlDatabase.outputs.connectionString
61
- ```
62
-
63
- ## SQL Database Module (Free Tier)
64
-
65
- ```bicep
66
- // modules/sql-database.bicep
67
- param serverName string
68
- param databaseName string
69
- param location string
70
- param tags object = {}
71
- param adminUsername string = 'sqladmin'
72
- @secure() param adminPassword string
73
- param useFree bool = true
74
-
75
- resource sqlServer 'Microsoft.Sql/servers@2023-05-01-preview' = {
76
- name: serverName
77
- location: location
78
- tags: tags
79
- properties: { administratorLogin: adminUsername, administratorLoginPassword: adminPassword,
80
- version: '12.0', minimalTlsVersion: '1.2', publicNetworkAccess: 'Enabled' }
81
- }
82
-
83
- resource db 'Microsoft.Sql/servers/databases@2023-05-01-preview' = {
84
- parent: sqlServer
85
- name: databaseName
86
- location: location
87
- sku: useFree ? { name: 'Free', tier: 'Free' } : { name: 'Basic', tier: 'Basic' }
88
- }
89
-
90
- resource firewall 'Microsoft.Sql/servers/firewallRules@2023-05-01-preview' = {
91
- parent: sqlServer
92
- name: 'AllowAllAzureIps'
93
- properties: { startIpAddress: '0.0.0.0', endIpAddress: '0.0.0.0' }
94
- }
95
- ```
96
-
97
- > **Container App module:** See `container-specialist.md` for full Container App + ACR Bicep.
98
-
99
- ## Commands
100
-
101
- ```bash
102
- az bicep build --file infra/main.bicep # Validate
103
- az deployment group what-if -g rg-app-dev -f infra/main.bicep -p @infra/parameters.dev.json # Preview
104
- az deployment group create -g rg-app-dev -f infra/main.bicep -p @infra/parameters.dev.json # Deploy
105
- ```
106
-
107
- ## Parameters File
108
-
109
- ```json
110
- {
111
- "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
112
- "contentVersion": "1.0.0.0",
113
- "parameters": {
114
- "environment": { "value": "dev" },
115
- "appName": { "value": "myapp" },
116
- "sqlAdminPassword": { "reference": { "keyVault": { "id": "/subscriptions/.../vaults/{kv}" }, "secretName": "sql-admin-password" } }
117
- }
118
- }
119
- ```
120
-
121
- ## Checklist
122
- - [ ] Bicep valid (`az bicep build`)
123
- - [ ] Modules for reusable resources
124
- - [ ] Parameters for dev and prod
125
- - [ ] Secrets referenced from Key Vault
126
- - [ ] Tags on all resources
127
- - [ ] What-if executed before deploy
128
- - [ ] Outputs for important values
129
-
130
- ---
131
-
132
- *MORPH-SPEC by Polymorphism Tech*
@@ -1,137 +0,0 @@
1
- ---
2
- name: container-specialist
3
- description: Container Specialist for Docker, Compose, Azure Container Registry, and containerized .NET application patterns. Use when creating Dockerfiles, configuring multi-stage builds, setting up container registries, or containerizing .NET applications for Azure Container Apps.
4
- allowed-tools: Read, Write, Edit, Bash, Glob, Grep
5
- stacks:
6
- - docker
7
- ---
8
-
9
- # Container Specialist
10
-
11
- Especialista em containerização com Docker e deploy para Azure Container Apps.
12
-
13
- ## Dockerfile (.NET Multi-stage)
14
-
15
- ```dockerfile
16
- FROM mcr.microsoft.com/dotnet/sdk:10.0-alpine AS build
17
- WORKDIR /src
18
- COPY ["src/Web/Web.csproj", "src/Web/"]
19
- COPY ["src/Application/Application.csproj", "src/Application/"]
20
- COPY ["src/Domain/Domain.csproj", "src/Domain/"]
21
- COPY ["src/Infrastructure/Infrastructure.csproj", "src/Infrastructure/"]
22
- RUN dotnet restore "src/Web/Web.csproj"
23
- COPY . .
24
- WORKDIR "/src/src/Web"
25
- RUN dotnet publish "Web.csproj" -c Release -o /app/publish /p:UseAppHost=false
26
-
27
- FROM mcr.microsoft.com/dotnet/aspnet:10.0-alpine AS final
28
- WORKDIR /app
29
- RUN addgroup -g 1000 appgroup && adduser -u 1000 -G appgroup -D appuser
30
- COPY --from=publish /app/publish .
31
- RUN chown -R appuser:appgroup /app
32
- USER appuser
33
- EXPOSE 8080
34
- HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
35
- CMD wget --quiet --tries=1 --spider http://localhost:8080/health || exit 1
36
- ENTRYPOINT ["dotnet", "Web.dll"]
37
- ```
38
-
39
- ### Image Sizes
40
- | Base Image | Size |
41
- |------------|------|
42
- | `aspnet:10.0` | ~220MB |
43
- | `aspnet:10.0-alpine` | ~110MB |
44
- | `aspnet:10.0-chiseled` | ~80MB (most secure) |
45
-
46
- ## ACR (Azure Container Registry)
47
-
48
- ```bash
49
- az acr create -g rg-myapp -n myappacr --sku Basic
50
- az acr login -n myappacr
51
- az acr build --registry myappacr --image myapp:v1 .
52
- ```
53
-
54
- ## Container App (Bicep)
55
-
56
- ```bicep
57
- param name string
58
- param location string
59
- param tags object = {}
60
- param environmentId string
61
- param containerImage string
62
- param registryServer string
63
- param registryUsername string
64
- @secure() param registryPassword string
65
-
66
- resource containerApp 'Microsoft.App/containerApps@2023-05-01' = {
67
- name: name
68
- location: location
69
- tags: tags
70
- properties: {
71
- managedEnvironmentId: environmentId
72
- configuration: {
73
- ingress: { external: true, targetPort: 8080, transport: 'http', allowInsecure: false }
74
- registries: [{ server: registryServer, username: registryUsername, passwordSecretRef: 'reg-pwd' }]
75
- secrets: [{ name: 'reg-pwd', value: registryPassword }]
76
- }
77
- template: {
78
- containers: [{
79
- name: name, image: containerImage
80
- resources: { cpu: json('0.25'), memory: '0.5Gi' }
81
- probes: [
82
- { type: 'Liveness', httpGet: { path: '/health', port: 8080 }, initialDelaySeconds: 10 }
83
- { type: 'Readiness', httpGet: { path: '/health/ready', port: 8080 }, initialDelaySeconds: 5 }
84
- ]
85
- }]
86
- scale: { minReplicas: 0, maxReplicas: 5
87
- rules: [{ name: 'http-scale', http: { metadata: { concurrentRequests: '100' } } }]
88
- }
89
- }
90
- }
91
- }
92
- output url string = 'https://${containerApp.properties.configuration.ingress.fqdn}'
93
- ```
94
-
95
- ## Health Checks (ASP.NET)
96
-
97
- ```csharp
98
- builder.Services.AddHealthChecks()
99
- .AddSqlServer(connString, name: "database", tags: new[] { "ready" });
100
-
101
- app.MapHealthChecks("/health");
102
- app.MapHealthChecks("/health/ready", new() { Predicate = c => c.Tags.Contains("ready") });
103
- app.MapHealthChecks("/health/live", new() { Predicate = _ => false }); // Always healthy
104
- ```
105
-
106
- ## Docker Compose (Dev)
107
-
108
- ```yaml
109
- services:
110
- web:
111
- build: { context: ., dockerfile: Dockerfile }
112
- ports: ["8080:8080"]
113
- environment:
114
- - ConnectionStrings__Default=Server=db;Database=App;User=sa;Password=Pass!;TrustServerCertificate=true
115
- depends_on: { db: { condition: service_healthy } }
116
- db:
117
- image: mcr.microsoft.com/mssql/server:2022-latest
118
- environment: [ACCEPT_EULA=Y, SA_PASSWORD=YourStrong!Passw0rd]
119
- ports: ["1433:1433"]
120
- volumes: [sqldata:/var/opt/mssql]
121
- volumes:
122
- sqldata:
123
- ```
124
-
125
- ## Checklist
126
- - [ ] Dockerfile multi-stage with alpine/chiseled
127
- - [ ] .dockerignore configured
128
- - [ ] Non-root user in container
129
- - [ ] Health checks (liveness + readiness)
130
- - [ ] Docker Compose for dev
131
- - [ ] ACR created and configured
132
- - [ ] Container App with scale-to-zero
133
- - [ ] Probes configured
134
-
135
- ---
136
-
137
- *MORPH-SPEC by Polymorphism Tech*
@@ -1,126 +0,0 @@
1
- ---
2
- name: devops-engineer
3
- description: DevOps Engineer (Tier 2 Domain Leader) for CI/CD pipeline strategy, GitHub Actions workflows, Azure DevOps, monitoring, and release automation. Use when designing deployment pipelines, configuring GitHub Actions, setting up Azure DevOps, or planning release strategies.
4
- allowed-tools: Read, Write, Edit, Bash, Glob, Grep
5
- stacks:
6
- - azure
7
- - docker
8
- ---
9
-
10
- # DevOps Engineer
11
-
12
- Especialista em CI/CD, pipelines e automação de deploy.
13
-
14
- ## Azure Pipelines
15
-
16
- ```yaml
17
- trigger:
18
- branches: { include: [main, develop] }
19
- paths: { exclude: ['**/*.md'] }
20
-
21
- variables:
22
- buildConfiguration: 'Release'
23
- dotnetVersion: '10.0.x'
24
-
25
- stages:
26
- - stage: Build
27
- jobs:
28
- - job: BuildJob
29
- pool: { vmImage: 'ubuntu-latest' }
30
- steps:
31
- - task: UseDotNet@2
32
- inputs: { version: '$(dotnetVersion)' }
33
- - task: DotNetCoreCLI@2
34
- displayName: 'Restore'
35
- inputs: { command: 'restore', projects: '**/*.csproj' }
36
- - task: DotNetCoreCLI@2
37
- displayName: 'Build'
38
- inputs: { command: 'build', arguments: '-c $(buildConfiguration) --no-restore' }
39
- - task: DotNetCoreCLI@2
40
- displayName: 'Test'
41
- inputs: { command: 'test', projects: '**/tests/**/*.csproj', arguments: '--collect:"XPlat Code Coverage"' }
42
- - task: DotNetCoreCLI@2
43
- displayName: 'Publish'
44
- inputs: { command: 'publish', publishWebProjects: true, arguments: '-c $(buildConfiguration) -o $(Build.ArtifactStagingDirectory)' }
45
- - task: PublishBuildArtifacts@1
46
- inputs: { pathToPublish: '$(Build.ArtifactStagingDirectory)', artifactName: 'drop' }
47
-
48
- - stage: DeployDev
49
- dependsOn: Build
50
- condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/develop'))
51
- jobs:
52
- - deployment: Deploy
53
- environment: 'development'
54
- strategy:
55
- runOnce:
56
- deploy:
57
- steps:
58
- - task: AzureCLI@2
59
- inputs:
60
- scriptType: 'bash'
61
- inlineScript: 'az containerapp update --name app-dev -g rg-dev --image $(image)'
62
- ```
63
-
64
- ## GitHub Actions
65
-
66
- ```yaml
67
- name: CI/CD
68
- on:
69
- push: { branches: [main, develop] }
70
- pull_request: { branches: [main] }
71
-
72
- jobs:
73
- build:
74
- runs-on: ubuntu-latest
75
- steps:
76
- - uses: actions/checkout@v4
77
- - uses: actions/setup-dotnet@v4
78
- with: { dotnet-version: '10.0.x' }
79
- - run: dotnet restore && dotnet build -c Release --no-restore && dotnet test -c Release --no-build
80
- - run: dotnet publish src/Web/Web.csproj -c Release -o ./publish
81
-
82
- docker:
83
- needs: build
84
- if: github.event_name == 'push'
85
- runs-on: ubuntu-latest
86
- permissions: { contents: read, packages: write }
87
- steps:
88
- - uses: actions/checkout@v4
89
- - uses: docker/login-action@v3
90
- with: { registry: ghcr.io, username: '${{ github.actor }}', password: '${{ secrets.GITHUB_TOKEN }}' }
91
- - uses: docker/build-push-action@v5
92
- with: { push: true, tags: 'ghcr.io/${{ github.repository }}:${{ github.sha }}' }
93
-
94
- deploy:
95
- needs: docker
96
- if: github.ref == 'refs/heads/main'
97
- runs-on: ubuntu-latest
98
- environment: production
99
- steps:
100
- - uses: azure/login@v2
101
- with: { creds: '${{ secrets.AZURE_CREDENTIALS }}' }
102
- - uses: azure/container-apps-deploy-action@v1
103
- with: { resourceGroup: rg-prod, containerAppName: app-prod, imageToDeploy: 'ghcr.io/${{ github.repository }}:${{ github.sha }}' }
104
- ```
105
-
106
- > **Dockerfile:** See `container-specialist.md` for optimized multi-stage Dockerfile.
107
-
108
- ## Secrets Management
109
-
110
- | Platform | Method |
111
- |----------|--------|
112
- | Azure DevOps | Variable Groups + Key Vault references |
113
- | GitHub Actions | Repository/Environment Secrets |
114
-
115
- ## Checklist
116
- - [ ] Trigger configured (branches, paths)
117
- - [ ] Build: restore, build, test, publish
118
- - [ ] Code coverage published
119
- - [ ] Deploy to dev automatic (develop branch)
120
- - [ ] Deploy to prod with approval (main branch)
121
- - [ ] Secrets in Key Vault or variable groups
122
- - [ ] Health check after deploy
123
-
124
- ---
125
-
126
- *MORPH-SPEC by Polymorphism Tech*
@@ -1,148 +0,0 @@
1
- ---
2
- name: azure-identity
3
- description: Azure Identity specialist for Microsoft Entra ID, OAuth 2.0/OIDC, MSAL, JWT authentication, and enterprise SSO patterns. Use when implementing Microsoft authentication, configuring Entra ID app registrations, securing APIs with OAuth/JWT, or setting up enterprise SSO with Azure AD.
4
- allowed-tools: Read, Write, Edit, Bash, Glob, Grep
5
- stacks:
6
- - azure
7
- ---
8
-
9
- # Azure Identity (Microsoft Identity)
10
-
11
- Microsoft Identity Platform for .NET/Blazor. SDK: `Microsoft.Identity.Web`.
12
-
13
- ## Setup
14
-
15
- ```bash
16
- dotnet add package Microsoft.Identity.Web
17
- dotnet add package Microsoft.Identity.Web.UI # For Blazor
18
- ```
19
-
20
- ```json
21
- // appsettings.json
22
- { "AzureAd": {
23
- "Instance": "https://login.microsoftonline.com/",
24
- "Domain": "yourdomain.onmicrosoft.com",
25
- "TenantId": "your-tenant-id",
26
- "ClientId": "your-client-id",
27
- "ClientSecret": "${AZURE_AD_CLIENT_SECRET}",
28
- "CallbackPath": "/signin-oidc"
29
- } }
30
- ```
31
-
32
- ```csharp
33
- // Program.cs
34
- builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
35
- .AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAd"));
36
- builder.Services.AddControllersWithViews().AddMicrosoftIdentityUI();
37
- builder.Services.AddAuthorization();
38
- app.UseAuthentication();
39
- app.UseAuthorization();
40
- ```
41
-
42
- ## Blazor Server
43
-
44
- ```csharp
45
- // Additional setup
46
- builder.Services.AddServerSideBlazor().AddMicrosoftIdentityConsentHandler();
47
-
48
- // App.razor
49
- <CascadingAuthenticationState>
50
- <Router AppAssembly="@typeof(App).Assembly">
51
- <Found Context="routeData">
52
- <AuthorizeRouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)">
53
- <NotAuthorized>
54
- @if (!context.User.Identity?.IsAuthenticated ?? true) { <RedirectToLogin /> }
55
- else { <p>No permission.</p> }
56
- </NotAuthorized>
57
- </AuthorizeRouteView>
58
- </Found>
59
- </Router>
60
- </CascadingAuthenticationState>
61
-
62
- // RedirectToLogin.razor
63
- @inject NavigationManager Nav
64
- @code {
65
- protected override void OnInitialized() =>
66
- Nav.NavigateTo($"MicrosoftIdentity/Account/SignIn?redirectUri={Uri.EscapeDataString(Nav.Uri)}", forceLoad: true);
67
- }
68
- ```
69
-
70
- ## Protected Pages
71
-
72
- ```razor
73
- @page "/secure"
74
- @attribute [Authorize]
75
-
76
- <AuthorizeView>
77
- <Authorized>Welcome, @context.User.Identity?.Name!</Authorized>
78
- </AuthorizeView>
79
-
80
- <AuthorizeView Roles="Admin"><Authorized><AdminPanel /></Authorized></AuthorizeView>
81
- ```
82
-
83
- ## API Protection
84
-
85
- ```csharp
86
- // API Program.cs
87
- builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
88
- .AddMicrosoftIdentityWebApi(builder.Configuration.GetSection("AzureAd"));
89
-
90
- // Controller
91
- [ApiController, Route("api/[controller]"), Authorize]
92
- public class ProfileController : ControllerBase
93
- {
94
- [HttpGet]
95
- public IActionResult GetProfile() => Ok(new {
96
- UserId = User.FindFirst(ClaimTypes.NameIdentifier)?.Value,
97
- Name = User.Identity?.Name
98
- });
99
-
100
- [HttpGet("admin"), Authorize(Roles = "Admin")]
101
- public IActionResult AdminOnly() => Ok("Admin access");
102
- }
103
- ```
104
-
105
- ## Downstream APIs (Microsoft Graph)
106
-
107
- ```csharp
108
- builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
109
- .AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAd"))
110
- .EnableTokenAcquisitionToCallDownstreamApi()
111
- .AddMicrosoftGraph(builder.Configuration.GetSection("Graph"))
112
- .AddInMemoryTokenCaches();
113
- ```
114
-
115
- ## Authorization Policies
116
-
117
- ```csharp
118
- builder.Services.AddAuthorization(o => {
119
- o.AddPolicy("RequireAdmin", p => p.RequireRole("Admin"));
120
- o.AddPolicy("RequireManager", p => p.RequireAssertion(c =>
121
- c.User.IsInRole("Admin") || c.User.IsInRole("Manager")));
122
- });
123
- ```
124
-
125
- ## Multi-tenant & B2C
126
-
127
- ```json
128
- // Multi-tenant: TenantId = "common" or "organizations"
129
- // Then validate allowed tenants in TokenValidationParameters.IssuerValidator
130
-
131
- // B2C: Use "AzureAdB2C" section with SignUpSignInPolicyId, ResetPasswordPolicyId
132
- ```
133
-
134
- ## Checklist
135
-
136
- - [ ] App registered in Azure Portal
137
- - [ ] Client ID + Tenant ID configured
138
- - [ ] Client Secret in Key Vault
139
- - [ ] Redirect URIs configured
140
- - [ ] API permissions defined
141
- - [ ] Token caching configured
142
- - [ ] Authorization policies created
143
- - [ ] Logout flow implemented
144
- - [ ] Token expiry error handling
145
-
146
- ---
147
-
148
- *MORPH-SPEC by Polymorphism Tech*