@polymorphism-tech/morph-spec 2.3.0 → 3.0.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 (166) hide show
  1. package/CLAUDE.md +446 -1730
  2. package/README.md +515 -516
  3. package/bin/morph-spec.js +366 -294
  4. package/bin/task-manager.js +429 -368
  5. package/bin/validate.js +369 -268
  6. package/content/.claude/commands/morph-apply.md +221 -158
  7. package/content/.claude/commands/morph-deploy.md +529 -0
  8. package/content/.claude/commands/morph-preflight.md +227 -0
  9. package/content/.claude/commands/morph-proposal.md +122 -101
  10. package/content/.claude/commands/morph-status.md +86 -86
  11. package/content/.claude/commands/morph-troubleshoot.md +122 -0
  12. package/content/.claude/skills/infra/azure-deploy-specialist.md +699 -0
  13. package/content/.claude/skills/level-0-meta/README.md +7 -0
  14. package/content/.claude/skills/level-0-meta/code-review.md +226 -0
  15. package/content/.claude/skills/level-0-meta/morph-checklist.md +117 -0
  16. package/content/.claude/skills/level-0-meta/simulation-checklist.md +77 -0
  17. package/content/.claude/skills/level-1-workflows/README.md +7 -0
  18. package/content/.claude/skills/level-1-workflows/morph-replicate.md +213 -0
  19. package/content/.claude/{commands/morph-clarify.md → skills/level-1-workflows/phase-clarify.md} +131 -184
  20. package/content/.claude/{commands/morph-design.md → skills/level-1-workflows/phase-design.md} +213 -275
  21. package/content/.claude/skills/level-1-workflows/phase-setup.md +106 -0
  22. package/content/.claude/skills/level-1-workflows/phase-tasks.md +164 -0
  23. package/content/.claude/{commands/morph-uiux.md → skills/level-1-workflows/phase-uiux.md} +169 -211
  24. package/content/.claude/skills/level-2-domains/README.md +14 -0
  25. package/content/.claude/skills/level-2-domains/ai-agents/ai-system-architect.md +192 -0
  26. package/content/.claude/skills/{specialists → level-2-domains/architecture}/po-pm-advisor.md +197 -197
  27. package/content/.claude/skills/level-2-domains/architecture/standards-architect.md +156 -0
  28. package/content/.claude/skills/level-2-domains/backend/dotnet-senior.md +287 -0
  29. package/content/.claude/skills/level-2-domains/backend/ef-modeler.md +113 -0
  30. package/content/.claude/skills/level-2-domains/backend/hangfire-orchestrator.md +126 -0
  31. package/content/.claude/skills/level-2-domains/backend/ms-agent-expert.md +109 -0
  32. package/content/.claude/skills/level-2-domains/frontend/blazor-builder.md +210 -0
  33. package/content/.claude/skills/level-2-domains/frontend/nextjs-expert.md +154 -0
  34. package/content/.claude/skills/level-2-domains/frontend/ui-ux-designer.md +191 -0
  35. package/content/.claude/skills/{specialists → level-2-domains/infrastructure}/azure-architect.md +142 -142
  36. package/content/.claude/skills/level-2-domains/infrastructure/bicep-architect.md +126 -0
  37. package/content/.claude/skills/level-2-domains/infrastructure/container-specialist.md +131 -0
  38. package/content/.claude/skills/level-2-domains/infrastructure/devops-engineer.md +119 -0
  39. package/content/.claude/skills/level-2-domains/integrations/asaas-financial.md +130 -0
  40. package/content/.claude/skills/level-2-domains/integrations/azure-identity.md +142 -0
  41. package/content/.claude/skills/level-2-domains/integrations/clerk-auth.md +108 -0
  42. package/content/.claude/skills/level-2-domains/integrations/resend-email.md +119 -0
  43. package/content/.claude/skills/level-2-domains/quality/code-analyzer.md +235 -0
  44. package/content/.claude/skills/level-2-domains/quality/testing-specialist.md +126 -0
  45. package/content/.claude/skills/level-3-technologies/README.md +7 -0
  46. package/content/.claude/skills/level-4-patterns/README.md +7 -0
  47. package/content/.claude/skills/specialists/prompt-engineer.md +189 -0
  48. package/content/.claude/skills/specialists/seo-growth-hacker.md +320 -0
  49. package/content/.morph/config/agents.json +762 -242
  50. package/content/.morph/config/config.template.json +122 -108
  51. package/content/.morph/docs/workflows/design-impl.md +37 -0
  52. package/content/.morph/docs/workflows/enforcement-pipeline.md +668 -0
  53. package/content/.morph/docs/workflows/fast-track.md +29 -0
  54. package/content/.morph/docs/workflows/full-morph.md +76 -0
  55. package/content/.morph/docs/workflows/standard.md +44 -0
  56. package/content/.morph/docs/workflows/ui-refresh.md +39 -0
  57. package/content/.morph/examples/scheduled-reports/decisions.md +158 -0
  58. package/content/.morph/examples/scheduled-reports/proposal.md +95 -0
  59. package/content/.morph/examples/scheduled-reports/spec.md +267 -0
  60. package/content/.morph/hooks/README.md +348 -239
  61. package/content/.morph/hooks/pre-commit-agents.sh +24 -24
  62. package/content/.morph/hooks/task-completed.js +73 -0
  63. package/content/.morph/hooks/teammate-idle.js +68 -0
  64. package/content/.morph/schemas/tasks.schema.json +220 -0
  65. package/content/.morph/standards/agent-framework-blazor-ui.md +359 -0
  66. package/content/.morph/standards/agent-framework-production.md +410 -0
  67. package/content/.morph/standards/agent-framework-setup.md +413 -453
  68. package/content/.morph/standards/agent-framework-workflows.md +349 -0
  69. package/content/.morph/standards/agent-teams-workflow.md +474 -0
  70. package/content/.morph/standards/architecture.md +325 -325
  71. package/content/.morph/standards/azure.md +605 -379
  72. package/content/.morph/standards/dotnet10-migration.md +520 -494
  73. package/content/.morph/templates/CONTEXT-FEATURE.md +276 -0
  74. package/content/.morph/templates/CONTEXT.md +170 -0
  75. package/content/.morph/templates/agent.cs +163 -172
  76. package/content/.morph/templates/clarify-questions.md +159 -0
  77. package/content/.morph/templates/contracts/Commands.cs +74 -0
  78. package/content/.morph/templates/contracts/Entities.cs +25 -0
  79. package/content/.morph/templates/contracts/Queries.cs +74 -0
  80. package/content/.morph/templates/contracts/README.md +74 -0
  81. package/content/.morph/templates/decisions.md +123 -106
  82. package/content/.morph/templates/infra/azure-pipelines-deploy.yml +480 -0
  83. package/content/.morph/templates/infra/deploy-checklist.md +426 -0
  84. package/content/.morph/templates/proposal.md +141 -155
  85. package/content/.morph/templates/recap.md +94 -105
  86. package/content/.morph/templates/simulation.md +353 -0
  87. package/content/.morph/templates/spec.md +149 -148
  88. package/content/.morph/templates/state.template.json +222 -222
  89. package/content/.morph/templates/tasks.md +257 -235
  90. package/content/.morph/templates/ui-components.md +362 -276
  91. package/content/CLAUDE.md +150 -442
  92. package/detectors/structure-detector.js +245 -250
  93. package/docs/README.md +144 -149
  94. package/docs/getting-started.md +301 -302
  95. package/docs/installation.md +361 -361
  96. package/docs/validation-checklist.md +265 -266
  97. package/package.json +80 -80
  98. package/src/commands/advance-phase.js +266 -0
  99. package/src/commands/analyze-blazor-concurrency.js +193 -0
  100. package/src/commands/deploy.js +780 -0
  101. package/src/commands/detect-agents.js +167 -0
  102. package/src/commands/doctor.js +356 -280
  103. package/src/commands/generate-context.js +40 -0
  104. package/src/commands/init.js +258 -245
  105. package/src/commands/lint-fluent.js +352 -0
  106. package/src/commands/rollback-phase.js +185 -0
  107. package/src/commands/session-summary.js +291 -0
  108. package/src/commands/task.js +78 -75
  109. package/src/commands/troubleshoot.js +222 -0
  110. package/src/commands/update.js +192 -159
  111. package/src/commands/validate-blazor-state.js +210 -0
  112. package/src/commands/validate-blazor.js +156 -0
  113. package/src/commands/validate-css.js +84 -0
  114. package/src/commands/validate-phase.js +221 -0
  115. package/src/lib/blazor-concurrency-analyzer.js +288 -0
  116. package/src/lib/blazor-state-validator.js +291 -0
  117. package/src/lib/blazor-validator.js +374 -0
  118. package/src/lib/complexity-analyzer.js +441 -292
  119. package/src/lib/context-generator.js +513 -0
  120. package/src/lib/continuous-validator.js +421 -440
  121. package/src/lib/css-validator.js +352 -0
  122. package/src/lib/decision-constraint-loader.js +109 -0
  123. package/src/lib/design-system-detector.js +187 -0
  124. package/src/lib/design-system-scaffolder.js +299 -0
  125. package/src/lib/hook-executor.js +256 -0
  126. package/src/lib/recap-generator.js +205 -0
  127. package/src/lib/spec-validator.js +258 -0
  128. package/src/lib/standards-context-injector.js +287 -0
  129. package/src/lib/state-manager.js +397 -340
  130. package/src/lib/team-orchestrator.js +322 -0
  131. package/src/lib/troubleshoot-grep.js +194 -0
  132. package/src/lib/troubleshoot-index.js +144 -0
  133. package/src/lib/validation-runner.js +283 -0
  134. package/src/lib/validators/contract-compliance-validator.js +273 -0
  135. package/src/lib/validators/design-system-validator.js +231 -0
  136. package/src/utils/file-copier.js +187 -139
  137. package/content/.claude/commands/morph-costs.md +0 -206
  138. package/content/.claude/commands/morph-setup.md +0 -100
  139. package/content/.claude/commands/morph-tasks.md +0 -319
  140. package/content/.claude/skills/infra/bicep-architect.md +0 -419
  141. package/content/.claude/skills/infra/container-specialist.md +0 -437
  142. package/content/.claude/skills/infra/devops-engineer.md +0 -405
  143. package/content/.claude/skills/integrations/asaas-financial.md +0 -333
  144. package/content/.claude/skills/integrations/azure-identity.md +0 -309
  145. package/content/.claude/skills/integrations/clerk-auth.md +0 -290
  146. package/content/.claude/skills/specialists/ai-system-architect.md +0 -604
  147. package/content/.claude/skills/specialists/cost-guardian.md +0 -110
  148. package/content/.claude/skills/specialists/ef-modeler.md +0 -211
  149. package/content/.claude/skills/specialists/hangfire-orchestrator.md +0 -255
  150. package/content/.claude/skills/specialists/ms-agent-expert.md +0 -263
  151. package/content/.claude/skills/specialists/standards-architect.md +0 -78
  152. package/content/.claude/skills/specialists/ui-ux-designer.md +0 -1100
  153. package/content/.claude/skills/stacks/dotnet-blazor.md +0 -606
  154. package/content/.claude/skills/stacks/dotnet-nextjs.md +0 -402
  155. package/content/.claude/skills/stacks/shopify.md +0 -445
  156. package/content/.morph/config/azure-pricing.json +0 -70
  157. package/content/.morph/config/azure-pricing.schema.json +0 -50
  158. package/content/.morph/hooks/pre-commit-costs.sh +0 -91
  159. package/docs/api/cost-calculator.js.html +0 -513
  160. package/docs/api/design-system-generator.js.html +0 -382
  161. package/docs/api/global.html +0 -5263
  162. package/docs/api/index.html +0 -96
  163. package/docs/api/state-manager.js.html +0 -423
  164. package/src/commands/cost.js +0 -181
  165. package/src/commands/update-pricing.js +0 -206
  166. package/src/lib/cost-calculator.js +0 -429
@@ -1,405 +0,0 @@
1
- # DevOps Engineer
2
-
3
- Especialista em CI/CD, pipelines e automação de deploy.
4
-
5
- ## Responsabilidades
6
-
7
- 1. **Criar pipelines** de CI/CD para build e deploy
8
- 2. **Automatizar releases** para múltiplos ambientes
9
- 3. **Configurar testes** automatizados no pipeline
10
- 4. **Gerenciar ambientes** e variáveis
11
-
12
- ## Triggers
13
-
14
- Keywords: `pipeline`, `ci/cd`, `deploy`, `release`, `azure devops`, `github actions`, `build`, `automation`
15
-
16
- ## Azure Pipelines (Azure DevOps)
17
-
18
- ### Pipeline YAML Completo
19
-
20
- ```yaml
21
- # azure-pipelines.yml
22
- trigger:
23
- branches:
24
- include:
25
- - main
26
- - develop
27
- paths:
28
- exclude:
29
- - '**/*.md'
30
- - '.gitignore'
31
-
32
- pr:
33
- branches:
34
- include:
35
- - main
36
- - develop
37
-
38
- variables:
39
- buildConfiguration: 'Release'
40
- dotnetVersion: '9.0.x'
41
- azureSubscription: 'Azure-Service-Connection'
42
-
43
- stages:
44
- # Build Stage
45
- - stage: Build
46
- displayName: 'Build & Test'
47
- jobs:
48
- - job: BuildJob
49
- displayName: 'Build .NET App'
50
- pool:
51
- vmImage: 'ubuntu-latest'
52
- steps:
53
- - task: UseDotNet@2
54
- displayName: 'Install .NET SDK'
55
- inputs:
56
- version: '$(dotnetVersion)'
57
-
58
- - task: DotNetCoreCLI@2
59
- displayName: 'Restore packages'
60
- inputs:
61
- command: 'restore'
62
- projects: '**/*.csproj'
63
-
64
- - task: DotNetCoreCLI@2
65
- displayName: 'Build'
66
- inputs:
67
- command: 'build'
68
- projects: '**/*.csproj'
69
- arguments: '--configuration $(buildConfiguration) --no-restore'
70
-
71
- - task: DotNetCoreCLI@2
72
- displayName: 'Run Tests'
73
- inputs:
74
- command: 'test'
75
- projects: '**/tests/**/*.csproj'
76
- arguments: '--configuration $(buildConfiguration) --collect:"XPlat Code Coverage"'
77
-
78
- - task: PublishCodeCoverageResults@1
79
- displayName: 'Publish Coverage'
80
- inputs:
81
- codeCoverageTool: 'Cobertura'
82
- summaryFileLocation: '$(Agent.TempDirectory)/**/coverage.cobertura.xml'
83
-
84
- - task: DotNetCoreCLI@2
85
- displayName: 'Publish'
86
- inputs:
87
- command: 'publish'
88
- publishWebProjects: true
89
- arguments: '--configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)'
90
-
91
- - task: PublishBuildArtifacts@1
92
- displayName: 'Publish Artifacts'
93
- inputs:
94
- pathToPublish: '$(Build.ArtifactStagingDirectory)'
95
- artifactName: 'drop'
96
-
97
- # Deploy to Dev
98
- - stage: DeployDev
99
- displayName: 'Deploy to Dev'
100
- dependsOn: Build
101
- condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/develop'))
102
- jobs:
103
- - deployment: DeployToDev
104
- displayName: 'Deploy to Development'
105
- environment: 'development'
106
- pool:
107
- vmImage: 'ubuntu-latest'
108
- strategy:
109
- runOnce:
110
- deploy:
111
- steps:
112
- - task: AzureWebApp@1
113
- displayName: 'Deploy to Container App'
114
- inputs:
115
- azureSubscription: '$(azureSubscription)'
116
- appType: 'webAppContainer'
117
- appName: 'myapp-dev'
118
- deployToSlotOrASE: false
119
-
120
- # Deploy to Production
121
- - stage: DeployProd
122
- displayName: 'Deploy to Production'
123
- dependsOn: Build
124
- condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
125
- jobs:
126
- - deployment: DeployToProd
127
- displayName: 'Deploy to Production'
128
- environment: 'production'
129
- pool:
130
- vmImage: 'ubuntu-latest'
131
- strategy:
132
- runOnce:
133
- deploy:
134
- steps:
135
- - task: AzureWebApp@1
136
- displayName: 'Deploy to Container App'
137
- inputs:
138
- azureSubscription: '$(azureSubscription)'
139
- appType: 'webAppContainer'
140
- appName: 'myapp-prod'
141
- deployToSlotOrASE: true
142
- slotName: 'staging'
143
-
144
- - task: AzureAppServiceManage@0
145
- displayName: 'Swap Slots'
146
- inputs:
147
- azureSubscription: '$(azureSubscription)'
148
- action: 'Swap Slots'
149
- webAppName: 'myapp-prod'
150
- sourceSlot: 'staging'
151
- targetSlot: 'production'
152
- ```
153
-
154
- ### Pipeline com Docker
155
-
156
- ```yaml
157
- # azure-pipelines-docker.yml
158
- trigger:
159
- - main
160
-
161
- variables:
162
- dockerRegistryServiceConnection: 'acr-connection'
163
- containerRegistry: 'myacr.azurecr.io'
164
- imageRepository: 'myapp'
165
- dockerfilePath: 'Dockerfile'
166
- tag: '$(Build.BuildId)'
167
-
168
- stages:
169
- - stage: Build
170
- jobs:
171
- - job: BuildAndPush
172
- pool:
173
- vmImage: 'ubuntu-latest'
174
- steps:
175
- - task: Docker@2
176
- displayName: 'Build and push image'
177
- inputs:
178
- containerRegistry: '$(dockerRegistryServiceConnection)'
179
- repository: '$(imageRepository)'
180
- command: 'buildAndPush'
181
- Dockerfile: '$(dockerfilePath)'
182
- tags: |
183
- $(tag)
184
- latest
185
-
186
- - stage: DeployDev
187
- dependsOn: Build
188
- jobs:
189
- - deployment: Deploy
190
- environment: 'development'
191
- strategy:
192
- runOnce:
193
- deploy:
194
- steps:
195
- - task: AzureCLI@2
196
- displayName: 'Update Container App'
197
- inputs:
198
- azureSubscription: 'Azure-Connection'
199
- scriptType: 'bash'
200
- scriptLocation: 'inlineScript'
201
- inlineScript: |
202
- az containerapp update \
203
- --name myapp-dev \
204
- --resource-group rg-myapp-dev \
205
- --image $(containerRegistry)/$(imageRepository):$(tag)
206
- ```
207
-
208
- ## GitHub Actions
209
-
210
- ### Workflow Completo
211
-
212
- ```yaml
213
- # .github/workflows/ci-cd.yml
214
- name: CI/CD
215
-
216
- on:
217
- push:
218
- branches: [main, develop]
219
- pull_request:
220
- branches: [main, develop]
221
-
222
- env:
223
- DOTNET_VERSION: '9.0.x'
224
- REGISTRY: ghcr.io
225
- IMAGE_NAME: ${{ github.repository }}
226
-
227
- jobs:
228
- build:
229
- runs-on: ubuntu-latest
230
- steps:
231
- - uses: actions/checkout@v4
232
-
233
- - name: Setup .NET
234
- uses: actions/setup-dotnet@v4
235
- with:
236
- dotnet-version: ${{ env.DOTNET_VERSION }}
237
-
238
- - name: Restore
239
- run: dotnet restore
240
-
241
- - name: Build
242
- run: dotnet build --configuration Release --no-restore
243
-
244
- - name: Test
245
- run: dotnet test --configuration Release --no-build --verbosity normal
246
-
247
- - name: Publish
248
- run: dotnet publish src/Web/Web.csproj -c Release -o ./publish
249
-
250
- - name: Upload artifact
251
- uses: actions/upload-artifact@v4
252
- with:
253
- name: app
254
- path: ./publish
255
-
256
- docker:
257
- needs: build
258
- runs-on: ubuntu-latest
259
- if: github.event_name == 'push'
260
- permissions:
261
- contents: read
262
- packages: write
263
- steps:
264
- - uses: actions/checkout@v4
265
-
266
- - name: Log in to Container Registry
267
- uses: docker/login-action@v3
268
- with:
269
- registry: ${{ env.REGISTRY }}
270
- username: ${{ github.actor }}
271
- password: ${{ secrets.GITHUB_TOKEN }}
272
-
273
- - name: Build and push
274
- uses: docker/build-push-action@v5
275
- with:
276
- context: .
277
- push: true
278
- tags: |
279
- ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }}
280
- ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
281
-
282
- deploy-dev:
283
- needs: docker
284
- runs-on: ubuntu-latest
285
- if: github.ref == 'refs/heads/develop'
286
- environment: development
287
- steps:
288
- - name: Azure Login
289
- uses: azure/login@v2
290
- with:
291
- creds: ${{ secrets.AZURE_CREDENTIALS }}
292
-
293
- - name: Deploy to Container App
294
- uses: azure/container-apps-deploy-action@v1
295
- with:
296
- resourceGroup: rg-myapp-dev
297
- containerAppName: myapp-dev
298
- imageToDeploy: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }}
299
-
300
- deploy-prod:
301
- needs: docker
302
- runs-on: ubuntu-latest
303
- if: github.ref == 'refs/heads/main'
304
- environment: production
305
- steps:
306
- - name: Azure Login
307
- uses: azure/login@v2
308
- with:
309
- creds: ${{ secrets.AZURE_CREDENTIALS }}
310
-
311
- - name: Deploy to Container App
312
- uses: azure/container-apps-deploy-action@v1
313
- with:
314
- resourceGroup: rg-myapp-prod
315
- containerAppName: myapp-prod
316
- imageToDeploy: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }}
317
- ```
318
-
319
- ## Dockerfile
320
-
321
- ```dockerfile
322
- # Dockerfile
323
- FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base
324
- WORKDIR /app
325
- EXPOSE 8080
326
-
327
- FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
328
- WORKDIR /src
329
-
330
- # Copy csproj and restore
331
- COPY ["src/Web/Web.csproj", "src/Web/"]
332
- COPY ["src/Application/Application.csproj", "src/Application/"]
333
- COPY ["src/Domain/Domain.csproj", "src/Domain/"]
334
- COPY ["src/Infrastructure/Infrastructure.csproj", "src/Infrastructure/"]
335
- RUN dotnet restore "src/Web/Web.csproj"
336
-
337
- # Copy everything and build
338
- COPY . .
339
- RUN dotnet build "src/Web/Web.csproj" -c Release -o /app/build
340
-
341
- FROM build AS publish
342
- RUN dotnet publish "src/Web/Web.csproj" -c Release -o /app/publish /p:UseAppHost=false
343
-
344
- FROM base AS final
345
- WORKDIR /app
346
- COPY --from=publish /app/publish .
347
-
348
- # Non-root user
349
- USER $APP_UID
350
-
351
- ENTRYPOINT ["dotnet", "Web.dll"]
352
- ```
353
-
354
- ## Variáveis e Secrets
355
-
356
- ### Azure DevOps
357
-
358
- ```yaml
359
- # Variable Groups
360
- variables:
361
- - group: 'MyApp-Dev-Variables' # Link to variable group
362
-
363
- # Pipeline variables with secrets
364
- variables:
365
- - name: 'SqlPassword'
366
- value: '$(SQL_PASSWORD)' # From variable group or pipeline variables
367
- ```
368
-
369
- ### GitHub Actions
370
-
371
- ```yaml
372
- # Using secrets
373
- env:
374
- CONNECTION_STRING: ${{ secrets.CONNECTION_STRING }}
375
-
376
- # Using environments
377
- jobs:
378
- deploy:
379
- environment: production
380
- env:
381
- API_KEY: ${{ secrets.API_KEY }} # Environment-specific secret
382
- ```
383
-
384
- ## Documentação de Referência
385
-
386
- - [Azure Pipelines](https://learn.microsoft.com/en-us/azure/devops/pipelines/)
387
- - [GitHub Actions](https://docs.github.com/en/actions)
388
- - [YAML Schema](https://learn.microsoft.com/en-us/azure/devops/pipelines/yaml-schema/)
389
- - [Container Apps Deploy](https://learn.microsoft.com/en-us/azure/container-apps/github-actions)
390
-
391
- ## Checklist de Pipeline
392
-
393
- - [ ] Trigger configurado (branches, paths)
394
- - [ ] Build com restore, build, test
395
- - [ ] Publicação de artifacts
396
- - [ ] Code coverage publicado
397
- - [ ] Deploy para dev automático
398
- - [ ] Deploy para prod com approval
399
- - [ ] Secrets no Key Vault ou variable groups
400
- - [ ] Dockerfile otimizado (multi-stage)
401
- - [ ] Health check após deploy
402
-
403
- ---
404
-
405
- *MORPH-SPEC by Polymorphism Tech*