@polymorphism-tech/morph-spec 2.4.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.
- package/CLAUDE.md +158 -26
- package/LICENSE +72 -72
- package/bin/detect-agents.js +225 -225
- package/bin/morph-spec.js +8 -0
- package/bin/render-template.js +302 -302
- package/bin/semantic-detect-agents.js +246 -246
- package/bin/validate-agents-skills.js +251 -251
- package/bin/validate-agents.js +69 -69
- package/bin/validate-phase.js +263 -263
- package/content/.azure/README.md +293 -293
- package/content/.azure/docs/azure-devops-setup.md +454 -454
- package/content/.azure/docs/branch-strategy.md +398 -398
- package/content/.azure/docs/local-development.md +515 -515
- package/content/.azure/pipelines/pipeline-variables.yml +34 -34
- package/content/.azure/pipelines/prod-pipeline.yml +319 -319
- package/content/.azure/pipelines/staging-pipeline.yml +234 -234
- package/content/.azure/pipelines/templates/build-dotnet.yml +75 -75
- package/content/.azure/pipelines/templates/deploy-app-service.yml +94 -94
- package/content/.azure/pipelines/templates/deploy-container-app.yml +120 -120
- package/content/.azure/pipelines/templates/infra-deploy.yml +90 -90
- package/content/.claude/commands/morph-archive.md +79 -79
- package/content/.claude/commands/morph-deploy.md +529 -0
- package/content/.claude/commands/morph-infra.md +209 -209
- package/content/.claude/commands/morph-preflight.md +227 -227
- package/content/.claude/commands/morph-troubleshoot.md +122 -122
- package/content/.claude/settings.local.json +15 -15
- package/content/.claude/skills/infra/azure-deploy-specialist.md +699 -0
- package/content/.claude/skills/level-0-meta/README.md +7 -0
- package/content/.claude/skills/{checklists → level-0-meta}/morph-checklist.md +117 -117
- package/content/.claude/skills/level-1-workflows/README.md +7 -0
- package/content/.claude/skills/{workflows → level-1-workflows}/morph-replicate.md +213 -213
- package/content/.claude/skills/{workflows → level-1-workflows}/phase-clarify.md +131 -131
- package/content/.claude/skills/{workflows → level-1-workflows}/phase-design.md +213 -205
- package/content/.claude/skills/{workflows → level-1-workflows}/phase-setup.md +106 -92
- package/content/.claude/skills/{workflows → level-1-workflows}/phase-tasks.md +164 -164
- package/content/.claude/skills/{workflows → level-1-workflows}/phase-uiux.md +169 -138
- package/content/.claude/skills/level-2-domains/README.md +14 -0
- package/content/.claude/skills/{specialists → level-2-domains/quality}/testing-specialist.md +126 -126
- package/content/.claude/skills/level-3-technologies/README.md +7 -0
- package/content/.claude/skills/level-4-patterns/README.md +7 -0
- package/content/.claude/skills/specialists/prompt-engineer.md +189 -0
- package/content/.claude/skills/specialists/seo-growth-hacker.md +320 -0
- package/content/.morph/.morphversion +5 -5
- package/content/.morph/archive/.gitkeep +25 -25
- package/content/.morph/config/agents.json +742 -358
- package/content/.morph/config/config.template.json +33 -0
- package/content/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md +392 -392
- package/content/.morph/docs/workflows/enforcement-pipeline.md +668 -0
- package/content/.morph/examples/api-nextjs/README.md +241 -241
- package/content/.morph/examples/api-nextjs/contracts.ts +307 -307
- package/content/.morph/examples/api-nextjs/spec.md +399 -399
- package/content/.morph/examples/api-nextjs/tasks.md +168 -168
- package/content/.morph/examples/micro-saas/README.md +125 -125
- package/content/.morph/examples/micro-saas/contracts.cs +358 -358
- package/content/.morph/examples/micro-saas/decisions.md +246 -246
- package/content/.morph/examples/micro-saas/spec.md +236 -236
- package/content/.morph/examples/micro-saas/tasks.md +150 -150
- package/content/.morph/examples/multi-agent/README.md +309 -309
- package/content/.morph/examples/multi-agent/contracts.cs +433 -433
- package/content/.morph/examples/multi-agent/spec.md +479 -479
- package/content/.morph/examples/multi-agent/tasks.md +185 -185
- package/content/.morph/examples/scheduled-reports/decisions.md +158 -158
- package/content/.morph/examples/scheduled-reports/proposal.md +95 -95
- package/content/.morph/examples/scheduled-reports/spec.md +267 -267
- package/content/.morph/examples/state-v3.json +188 -188
- package/content/.morph/features/.gitkeep +25 -25
- package/content/.morph/hooks/README.md +158 -0
- package/content/.morph/hooks/pre-commit-all.sh +48 -48
- package/content/.morph/hooks/pre-commit-specs.sh +49 -49
- package/content/.morph/hooks/pre-commit-tests.sh +60 -60
- package/content/.morph/hooks/task-completed.js +73 -0
- package/content/.morph/hooks/teammate-idle.js +68 -0
- package/content/.morph/project.md +160 -160
- package/content/.morph/schemas/agent.schema.json +296 -296
- package/content/.morph/schemas/tasks.schema.json +220 -220
- package/content/.morph/specs/.gitkeep +20 -20
- package/content/.morph/standards/agent-teams-workflow.md +474 -0
- package/content/.morph/standards/coding.md +377 -377
- package/content/.morph/standards/fluent-ui-setup.md +590 -590
- package/content/.morph/standards/migration-guide.md +514 -514
- package/content/.morph/standards/passkeys-auth.md +423 -423
- package/content/.morph/standards/vector-search-rag.md +536 -536
- package/content/.morph/state.json +17 -17
- package/content/.morph/templates/CONTEXT-FEATURE.md +276 -0
- package/content/.morph/templates/CONTEXT.md +170 -0
- package/content/.morph/templates/FluentDesignTheme.cs +149 -149
- package/content/.morph/templates/MudTheme.cs +281 -281
- package/content/.morph/templates/clarify-questions.md +159 -159
- package/content/.morph/templates/component.razor +239 -239
- package/content/.morph/templates/contracts/Commands.cs +74 -74
- package/content/.morph/templates/contracts/Entities.cs +25 -25
- package/content/.morph/templates/contracts/Queries.cs +74 -74
- package/content/.morph/templates/contracts/README.md +74 -74
- package/content/.morph/templates/contracts.cs +217 -217
- package/content/.morph/templates/design-system.css +226 -226
- package/content/.morph/templates/infra/.dockerignore.example +89 -89
- package/content/.morph/templates/infra/Dockerfile.example +82 -82
- package/content/.morph/templates/infra/README.md +286 -286
- package/content/.morph/templates/infra/app-insights.bicep +63 -63
- package/content/.morph/templates/infra/app-service.bicep +164 -164
- package/content/.morph/templates/infra/azure-pipelines-deploy.yml +480 -0
- package/content/.morph/templates/infra/container-app-env.bicep +49 -49
- package/content/.morph/templates/infra/container-app.bicep +156 -156
- package/content/.morph/templates/infra/deploy-checklist.md +426 -426
- package/content/.morph/templates/infra/deploy.ps1 +229 -229
- package/content/.morph/templates/infra/deploy.sh +208 -208
- package/content/.morph/templates/infra/key-vault.bicep +91 -91
- package/content/.morph/templates/infra/main.bicep +189 -189
- package/content/.morph/templates/infra/parameters.dev.json +29 -29
- package/content/.morph/templates/infra/parameters.prod.json +29 -29
- package/content/.morph/templates/infra/parameters.staging.json +29 -29
- package/content/.morph/templates/infra/sql-database.bicep +103 -103
- package/content/.morph/templates/infra/storage.bicep +106 -106
- package/content/.morph/templates/integrations/asaas-client.cs +387 -387
- package/content/.morph/templates/integrations/asaas-webhook.cs +351 -351
- package/content/.morph/templates/integrations/azure-identity-config.cs +288 -288
- package/content/.morph/templates/integrations/clerk-config.cs +258 -258
- package/content/.morph/templates/job.cs +171 -171
- package/content/.morph/templates/migration.cs +83 -83
- package/content/.morph/templates/repository.cs +141 -141
- package/content/.morph/templates/saas/subscription.cs +347 -347
- package/content/.morph/templates/saas/tenant.cs +338 -338
- package/content/.morph/templates/service.cs +139 -139
- package/content/.morph/templates/sprint-status.yaml +68 -68
- package/content/.morph/templates/story.md +143 -143
- package/content/.morph/templates/test.cs +239 -239
- package/content/.morph/templates/ui-design-system.md +286 -286
- package/content/.morph/templates/ui-flows.md +336 -336
- package/content/.morph/templates/ui-mockups.md +133 -133
- package/content/.morph/test-infra/example.bicep +59 -59
- package/content/README.md +79 -79
- package/detectors/config-detector.js +223 -223
- package/detectors/conversation-analyzer.js +163 -163
- package/detectors/index.js +84 -84
- package/detectors/standards-generator.js +275 -275
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +977 -977
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +1048 -1048
- package/docs/api/scripts/collapse.js +38 -38
- package/docs/api/scripts/commonNav.js +28 -28
- package/docs/api/scripts/linenumber.js +25 -25
- package/docs/api/scripts/nav.js +12 -12
- package/docs/api/scripts/polyfill.js +3 -3
- package/docs/api/scripts/prettify/Apache-License-2.0.txt +202 -202
- package/docs/api/scripts/prettify/lang-css.js +2 -2
- package/docs/api/scripts/prettify/prettify.js +28 -28
- package/docs/api/scripts/search.js +98 -98
- package/docs/api/styles/jsdoc.css +776 -776
- package/docs/api/styles/prettify.css +80 -80
- package/docs/examples.md +328 -328
- package/docs/templates.md +418 -418
- package/package.json +1 -1
- package/scripts/postinstall.js +132 -132
- package/src/commands/advance-phase.js +83 -0
- package/src/commands/analyze-blazor-concurrency.js +193 -193
- package/src/commands/create-story.js +351 -351
- package/src/commands/deploy.js +780 -0
- package/src/commands/detect-agents.js +34 -6
- package/src/commands/detect.js +104 -104
- package/src/commands/generate-context.js +40 -0
- package/src/commands/generate.js +149 -149
- package/src/commands/lint-fluent.js +352 -352
- package/src/commands/rollback-phase.js +185 -185
- package/src/commands/session-summary.js +291 -291
- package/src/commands/shard-spec.js +224 -224
- package/src/commands/sprint-status.js +250 -250
- package/src/commands/state.js +333 -333
- package/src/commands/sync.js +167 -167
- package/src/commands/troubleshoot.js +222 -222
- package/src/commands/validate-blazor-state.js +210 -210
- package/src/commands/validate-blazor.js +156 -156
- package/src/commands/validate-css.js +84 -84
- package/src/commands/validate-phase.js +221 -221
- package/src/lib/blazor-concurrency-analyzer.js +288 -288
- package/src/lib/blazor-state-validator.js +291 -291
- package/src/lib/blazor-validator.js +374 -374
- package/src/lib/context-generator.js +513 -0
- package/src/lib/css-validator.js +352 -352
- package/src/lib/design-system-detector.js +187 -0
- package/src/lib/design-system-generator.js +298 -298
- package/src/lib/design-system-scaffolder.js +299 -0
- package/src/lib/hook-executor.js +256 -0
- package/src/lib/learning-system.js +520 -520
- package/src/lib/mockup-generator.js +366 -366
- package/src/lib/spec-validator.js +258 -0
- package/src/lib/standards-context-injector.js +287 -0
- package/src/lib/team-orchestrator.js +322 -0
- package/src/lib/troubleshoot-grep.js +194 -194
- package/src/lib/troubleshoot-index.js +144 -144
- package/src/lib/ui-detector.js +350 -350
- package/src/lib/validation-runner.js +65 -13
- package/src/lib/validators/architecture-validator.js +387 -387
- package/src/lib/validators/design-system-validator.js +231 -0
- package/src/lib/validators/package-validator.js +360 -360
- package/src/lib/validators/ui-contrast-validator.js +422 -422
- package/src/utils/file-copier.js +9 -1
- package/src/utils/logger.js +32 -32
- package/src/utils/version-checker.js +175 -175
- /package/content/.claude/skills/{checklists → level-0-meta}/code-review.md +0 -0
- /package/content/.claude/skills/{checklists → level-0-meta}/simulation-checklist.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/ai-agents}/ai-system-architect.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/architecture}/po-pm-advisor.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/architecture}/standards-architect.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/backend}/dotnet-senior.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/backend}/ef-modeler.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/backend}/hangfire-orchestrator.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/backend}/ms-agent-expert.md +0 -0
- /package/content/.claude/skills/{stacks/dotnet-blazor.md → level-2-domains/frontend/blazor-builder.md} +0 -0
- /package/content/.claude/skills/{stacks/dotnet-nextjs.md → level-2-domains/frontend/nextjs-expert.md} +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/frontend}/ui-ux-designer.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/infrastructure}/azure-architect.md +0 -0
- /package/content/.claude/skills/{infra → level-2-domains/infrastructure}/bicep-architect.md +0 -0
- /package/content/.claude/skills/{infra → level-2-domains/infrastructure}/container-specialist.md +0 -0
- /package/content/.claude/skills/{infra → level-2-domains/infrastructure}/devops-engineer.md +0 -0
- /package/content/.claude/skills/{integrations → level-2-domains/integrations}/asaas-financial.md +0 -0
- /package/content/.claude/skills/{integrations → level-2-domains/integrations}/azure-identity.md +0 -0
- /package/content/.claude/skills/{integrations → level-2-domains/integrations}/clerk-auth.md +0 -0
- /package/content/.claude/skills/{integrations → level-2-domains/integrations}/resend-email.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/quality}/code-analyzer.md +0 -0
|
@@ -1,209 +1,209 @@
|
|
|
1
|
-
# /morph-infra - Infrastructure Management
|
|
2
|
-
|
|
3
|
-
Gerencia infraestrutura Azure usando Bicep templates.
|
|
4
|
-
|
|
5
|
-
## Uso
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
/morph-infra [action] [options]
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
### Actions
|
|
12
|
-
|
|
13
|
-
| Action | Descrição |
|
|
14
|
-
|--------|-----------|
|
|
15
|
-
| `init` | Inicializa estrutura IaC no projeto |
|
|
16
|
-
| `validate` | Valida templates Bicep |
|
|
17
|
-
| `plan` | Mostra what-if de mudanças |
|
|
18
|
-
| `deploy` | Executa deploy dos recursos |
|
|
19
|
-
| `destroy` | Remove todos os recursos |
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## Workflow
|
|
24
|
-
|
|
25
|
-
### 1. INIT - Inicializar IaC
|
|
26
|
-
|
|
27
|
-
Quando o usuário solicitar `/morph-infra init`:
|
|
28
|
-
|
|
29
|
-
1. Criar estrutura `infra/` no projeto:
|
|
30
|
-
```
|
|
31
|
-
infra/
|
|
32
|
-
├── main.bicep
|
|
33
|
-
├── parameters.dev.json
|
|
34
|
-
├── parameters.prod.json
|
|
35
|
-
└── modules/
|
|
36
|
-
├── container-app.bicep
|
|
37
|
-
├── container-app-env.bicep
|
|
38
|
-
├── sql-database.bicep
|
|
39
|
-
├── storage.bicep
|
|
40
|
-
├── key-vault.bicep
|
|
41
|
-
└── app-insights.bicep
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
2. Copiar templates de `.morph/templates/infra/`
|
|
45
|
-
|
|
46
|
-
3. Substituir placeholders:
|
|
47
|
-
- `{{APP_NAME}}` → nome do projeto
|
|
48
|
-
- `{{SUBSCRIPTION_ID}}` → solicitar ao usuário
|
|
49
|
-
- `{{RESOURCE_GROUP}}` → sugerir padrão `rg-{app}-{env}`
|
|
50
|
-
|
|
51
|
-
4. Documentar no `decisions.md` a estrutura criada
|
|
52
|
-
|
|
53
|
-
---
|
|
54
|
-
|
|
55
|
-
### 2. VALIDATE - Validar Templates
|
|
56
|
-
|
|
57
|
-
Quando o usuário solicitar `/morph-infra validate`:
|
|
58
|
-
|
|
59
|
-
1. Executar validação Bicep:
|
|
60
|
-
```bash
|
|
61
|
-
az bicep build --file infra/main.bicep
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
2. Verificar parâmetros necessários
|
|
65
|
-
|
|
66
|
-
3. Reportar erros ou sucesso
|
|
67
|
-
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
### 3. PLAN - Preview de Mudanças
|
|
71
|
-
|
|
72
|
-
Quando o usuário solicitar `/morph-infra plan [env]`:
|
|
73
|
-
|
|
74
|
-
1. Verificar se Azure CLI está autenticado:
|
|
75
|
-
```bash
|
|
76
|
-
az account show
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
2. Executar what-if:
|
|
80
|
-
```bash
|
|
81
|
-
az deployment group what-if \
|
|
82
|
-
--resource-group rg-{app}-{env} \
|
|
83
|
-
--template-file infra/main.bicep \
|
|
84
|
-
--parameters @infra/parameters.{env}.json
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
3. Apresentar resumo de mudanças:
|
|
88
|
-
- Recursos a criar
|
|
89
|
-
- Recursos a modificar
|
|
90
|
-
- Recursos a deletar
|
|
91
|
-
- Custos estimados
|
|
92
|
-
|
|
93
|
-
4. ⛔ **PARE e aguarde aprovação** para deploy
|
|
94
|
-
|
|
95
|
-
---
|
|
96
|
-
|
|
97
|
-
### 4. DEPLOY - Executar Deploy
|
|
98
|
-
|
|
99
|
-
Quando o usuário solicitar `/morph-infra deploy [env]`:
|
|
100
|
-
|
|
101
|
-
1. Verificar aprovação do plan
|
|
102
|
-
|
|
103
|
-
2. Criar resource group se não existir:
|
|
104
|
-
```bash
|
|
105
|
-
az group create --name rg-{app}-{env} --location brazilsouth
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
3. Executar deploy:
|
|
109
|
-
```bash
|
|
110
|
-
az deployment group create \
|
|
111
|
-
--resource-group rg-{app}-{env} \
|
|
112
|
-
--template-file infra/main.bicep \
|
|
113
|
-
--parameters @infra/parameters.{env}.json
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
4. Capturar outputs:
|
|
117
|
-
- Container App URL
|
|
118
|
-
- SQL Connection String
|
|
119
|
-
- Key Vault URI
|
|
120
|
-
|
|
121
|
-
5. Atualizar documentação com informações do deploy
|
|
122
|
-
|
|
123
|
-
---
|
|
124
|
-
|
|
125
|
-
### 5. DESTROY - Remover Recursos
|
|
126
|
-
|
|
127
|
-
Quando o usuário solicitar `/morph-infra destroy [env]`:
|
|
128
|
-
|
|
129
|
-
1. ⚠️ **ALERTAR** que esta ação é irreversível
|
|
130
|
-
|
|
131
|
-
2. Listar recursos que serão deletados
|
|
132
|
-
|
|
133
|
-
3. ⛔ **PARE e aguarde confirmação explícita** ("sim, deletar")
|
|
134
|
-
|
|
135
|
-
4. Executar:
|
|
136
|
-
```bash
|
|
137
|
-
az group delete --name rg-{app}-{env} --yes --no-wait
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
---
|
|
141
|
-
|
|
142
|
-
## Regras de Segurança
|
|
143
|
-
|
|
144
|
-
### NUNCA:
|
|
145
|
-
- Expor secrets em logs
|
|
146
|
-
- Commitar arquivos com secrets
|
|
147
|
-
- Deletar recursos de produção sem confirmação explícita
|
|
148
|
-
- Criar recursos fora do Bicep (zero portal)
|
|
149
|
-
|
|
150
|
-
### SEMPRE:
|
|
151
|
-
- Usar Key Vault para secrets
|
|
152
|
-
- Validar Bicep antes de deploy
|
|
153
|
-
- Executar what-if antes de deploy
|
|
154
|
-
- Documentar custos estimados
|
|
155
|
-
- Manter parameters.json separados por ambiente
|
|
156
|
-
|
|
157
|
-
---
|
|
158
|
-
|
|
159
|
-
## Cost Guardian Integration
|
|
160
|
-
|
|
161
|
-
Antes de qualquer deploy, verificar com Cost Guardian:
|
|
162
|
-
|
|
163
|
-
1. Estimar custos mensais dos recursos
|
|
164
|
-
2. Verificar se está dentro dos limites aprovados:
|
|
165
|
-
- Free tier: sem aprovação
|
|
166
|
-
- Até $10/mês: requer confirmação
|
|
167
|
-
- Acima de $10: requer ADR
|
|
168
|
-
|
|
169
|
-
---
|
|
170
|
-
|
|
171
|
-
## Exemplo de Uso
|
|
172
|
-
|
|
173
|
-
```
|
|
174
|
-
Usuário: /morph-infra init
|
|
175
|
-
Claude: Criando estrutura IaC...
|
|
176
|
-
- infra/main.bicep
|
|
177
|
-
- infra/parameters.dev.json
|
|
178
|
-
- infra/modules/*.bicep
|
|
179
|
-
Pronto! Execute /morph-infra validate para verificar.
|
|
180
|
-
|
|
181
|
-
Usuário: /morph-infra plan dev
|
|
182
|
-
Claude: Analisando mudanças para ambiente dev...
|
|
183
|
-
|
|
184
|
-
CRIAR:
|
|
185
|
-
+ Container App Environment
|
|
186
|
-
+ Container App
|
|
187
|
-
+ SQL Server (Free)
|
|
188
|
-
+ Storage Account (LRS)
|
|
189
|
-
+ Key Vault
|
|
190
|
-
+ Application Insights
|
|
191
|
-
|
|
192
|
-
CUSTO ESTIMADO: ~$0/mês (Free tier)
|
|
193
|
-
|
|
194
|
-
Aprovar deploy? (sim/não)
|
|
195
|
-
|
|
196
|
-
Usuário: sim
|
|
197
|
-
Claude: Executando deploy...
|
|
198
|
-
✓ Resource Group criado
|
|
199
|
-
✓ Deploy concluído em 3m 45s
|
|
200
|
-
|
|
201
|
-
OUTPUTS:
|
|
202
|
-
- URL: https://myapp-dev.azurecontainerapps.io
|
|
203
|
-
- SQL: tcp:myapp-dev-sql.database.windows.net
|
|
204
|
-
- Key Vault: https://myapp-dev-kv.vault.azure.net
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
---
|
|
208
|
-
|
|
209
|
-
*MORPH-SPEC by Polymorphism Tech*
|
|
1
|
+
# /morph-infra - Infrastructure Management
|
|
2
|
+
|
|
3
|
+
Gerencia infraestrutura Azure usando Bicep templates.
|
|
4
|
+
|
|
5
|
+
## Uso
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
/morph-infra [action] [options]
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
### Actions
|
|
12
|
+
|
|
13
|
+
| Action | Descrição |
|
|
14
|
+
|--------|-----------|
|
|
15
|
+
| `init` | Inicializa estrutura IaC no projeto |
|
|
16
|
+
| `validate` | Valida templates Bicep |
|
|
17
|
+
| `plan` | Mostra what-if de mudanças |
|
|
18
|
+
| `deploy` | Executa deploy dos recursos |
|
|
19
|
+
| `destroy` | Remove todos os recursos |
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Workflow
|
|
24
|
+
|
|
25
|
+
### 1. INIT - Inicializar IaC
|
|
26
|
+
|
|
27
|
+
Quando o usuário solicitar `/morph-infra init`:
|
|
28
|
+
|
|
29
|
+
1. Criar estrutura `infra/` no projeto:
|
|
30
|
+
```
|
|
31
|
+
infra/
|
|
32
|
+
├── main.bicep
|
|
33
|
+
├── parameters.dev.json
|
|
34
|
+
├── parameters.prod.json
|
|
35
|
+
└── modules/
|
|
36
|
+
├── container-app.bicep
|
|
37
|
+
├── container-app-env.bicep
|
|
38
|
+
├── sql-database.bicep
|
|
39
|
+
├── storage.bicep
|
|
40
|
+
├── key-vault.bicep
|
|
41
|
+
└── app-insights.bicep
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
2. Copiar templates de `.morph/templates/infra/`
|
|
45
|
+
|
|
46
|
+
3. Substituir placeholders:
|
|
47
|
+
- `{{APP_NAME}}` → nome do projeto
|
|
48
|
+
- `{{SUBSCRIPTION_ID}}` → solicitar ao usuário
|
|
49
|
+
- `{{RESOURCE_GROUP}}` → sugerir padrão `rg-{app}-{env}`
|
|
50
|
+
|
|
51
|
+
4. Documentar no `decisions.md` a estrutura criada
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
### 2. VALIDATE - Validar Templates
|
|
56
|
+
|
|
57
|
+
Quando o usuário solicitar `/morph-infra validate`:
|
|
58
|
+
|
|
59
|
+
1. Executar validação Bicep:
|
|
60
|
+
```bash
|
|
61
|
+
az bicep build --file infra/main.bicep
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
2. Verificar parâmetros necessários
|
|
65
|
+
|
|
66
|
+
3. Reportar erros ou sucesso
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
### 3. PLAN - Preview de Mudanças
|
|
71
|
+
|
|
72
|
+
Quando o usuário solicitar `/morph-infra plan [env]`:
|
|
73
|
+
|
|
74
|
+
1. Verificar se Azure CLI está autenticado:
|
|
75
|
+
```bash
|
|
76
|
+
az account show
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
2. Executar what-if:
|
|
80
|
+
```bash
|
|
81
|
+
az deployment group what-if \
|
|
82
|
+
--resource-group rg-{app}-{env} \
|
|
83
|
+
--template-file infra/main.bicep \
|
|
84
|
+
--parameters @infra/parameters.{env}.json
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
3. Apresentar resumo de mudanças:
|
|
88
|
+
- Recursos a criar
|
|
89
|
+
- Recursos a modificar
|
|
90
|
+
- Recursos a deletar
|
|
91
|
+
- Custos estimados
|
|
92
|
+
|
|
93
|
+
4. ⛔ **PARE e aguarde aprovação** para deploy
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
### 4. DEPLOY - Executar Deploy
|
|
98
|
+
|
|
99
|
+
Quando o usuário solicitar `/morph-infra deploy [env]`:
|
|
100
|
+
|
|
101
|
+
1. Verificar aprovação do plan
|
|
102
|
+
|
|
103
|
+
2. Criar resource group se não existir:
|
|
104
|
+
```bash
|
|
105
|
+
az group create --name rg-{app}-{env} --location brazilsouth
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
3. Executar deploy:
|
|
109
|
+
```bash
|
|
110
|
+
az deployment group create \
|
|
111
|
+
--resource-group rg-{app}-{env} \
|
|
112
|
+
--template-file infra/main.bicep \
|
|
113
|
+
--parameters @infra/parameters.{env}.json
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
4. Capturar outputs:
|
|
117
|
+
- Container App URL
|
|
118
|
+
- SQL Connection String
|
|
119
|
+
- Key Vault URI
|
|
120
|
+
|
|
121
|
+
5. Atualizar documentação com informações do deploy
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
### 5. DESTROY - Remover Recursos
|
|
126
|
+
|
|
127
|
+
Quando o usuário solicitar `/morph-infra destroy [env]`:
|
|
128
|
+
|
|
129
|
+
1. ⚠️ **ALERTAR** que esta ação é irreversível
|
|
130
|
+
|
|
131
|
+
2. Listar recursos que serão deletados
|
|
132
|
+
|
|
133
|
+
3. ⛔ **PARE e aguarde confirmação explícita** ("sim, deletar")
|
|
134
|
+
|
|
135
|
+
4. Executar:
|
|
136
|
+
```bash
|
|
137
|
+
az group delete --name rg-{app}-{env} --yes --no-wait
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## Regras de Segurança
|
|
143
|
+
|
|
144
|
+
### NUNCA:
|
|
145
|
+
- Expor secrets em logs
|
|
146
|
+
- Commitar arquivos com secrets
|
|
147
|
+
- Deletar recursos de produção sem confirmação explícita
|
|
148
|
+
- Criar recursos fora do Bicep (zero portal)
|
|
149
|
+
|
|
150
|
+
### SEMPRE:
|
|
151
|
+
- Usar Key Vault para secrets
|
|
152
|
+
- Validar Bicep antes de deploy
|
|
153
|
+
- Executar what-if antes de deploy
|
|
154
|
+
- Documentar custos estimados
|
|
155
|
+
- Manter parameters.json separados por ambiente
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Cost Guardian Integration
|
|
160
|
+
|
|
161
|
+
Antes de qualquer deploy, verificar com Cost Guardian:
|
|
162
|
+
|
|
163
|
+
1. Estimar custos mensais dos recursos
|
|
164
|
+
2. Verificar se está dentro dos limites aprovados:
|
|
165
|
+
- Free tier: sem aprovação
|
|
166
|
+
- Até $10/mês: requer confirmação
|
|
167
|
+
- Acima de $10: requer ADR
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## Exemplo de Uso
|
|
172
|
+
|
|
173
|
+
```
|
|
174
|
+
Usuário: /morph-infra init
|
|
175
|
+
Claude: Criando estrutura IaC...
|
|
176
|
+
- infra/main.bicep
|
|
177
|
+
- infra/parameters.dev.json
|
|
178
|
+
- infra/modules/*.bicep
|
|
179
|
+
Pronto! Execute /morph-infra validate para verificar.
|
|
180
|
+
|
|
181
|
+
Usuário: /morph-infra plan dev
|
|
182
|
+
Claude: Analisando mudanças para ambiente dev...
|
|
183
|
+
|
|
184
|
+
CRIAR:
|
|
185
|
+
+ Container App Environment
|
|
186
|
+
+ Container App
|
|
187
|
+
+ SQL Server (Free)
|
|
188
|
+
+ Storage Account (LRS)
|
|
189
|
+
+ Key Vault
|
|
190
|
+
+ Application Insights
|
|
191
|
+
|
|
192
|
+
CUSTO ESTIMADO: ~$0/mês (Free tier)
|
|
193
|
+
|
|
194
|
+
Aprovar deploy? (sim/não)
|
|
195
|
+
|
|
196
|
+
Usuário: sim
|
|
197
|
+
Claude: Executando deploy...
|
|
198
|
+
✓ Resource Group criado
|
|
199
|
+
✓ Deploy concluído em 3m 45s
|
|
200
|
+
|
|
201
|
+
OUTPUTS:
|
|
202
|
+
- URL: https://myapp-dev.azurecontainerapps.io
|
|
203
|
+
- SQL: tcp:myapp-dev-sql.database.windows.net
|
|
204
|
+
- Key Vault: https://myapp-dev-kv.vault.azure.net
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
*MORPH-SPEC by Polymorphism Tech*
|