@polymorphism-tech/morph-spec 4.11.1 → 4.13.0

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