@maestro-ai/cli 1.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 (252) hide show
  1. package/README.md +59 -0
  2. package/content/guides/Cat/303/241logo de Stacks para Cloud Moderna.md" +119 -0
  3. package/content/guides/Cat/303/241logo de Stacks para Hospedagem Compartilhada.md" +147 -0
  4. package/content/guides/Checklist Mestre de Entrega.md +68 -0
  5. package/content/guides/Gates de Qualidade.md +209 -0
  6. package/content/guides/Guia de Adi/303/247/303/243o de Novas Funcionalidades.md" +355 -0
  7. package/content/guides/Guia de Chaos Engineering.md +267 -0
  8. package/content/guides/Guia de Debugging com IA.md +135 -0
  9. package/content/guides/Guia de Estrat/303/251gias de Cache.md" +352 -0
  10. package/content/guides/Guia de Migrations Zero-Downtime.md +311 -0
  11. package/content/guides/Guia de Multi-tenancy.md +368 -0
  12. package/content/guides/Guia de Otimiza/303/247/303/243o de Custos Cloud.md" +195 -0
  13. package/content/guides/Guia de Refatora/303/247/303/243o de C/303/263digo Legado com IA.md" +162 -0
  14. package/content/guides/Guia de SLOs e Error Budgets.md +315 -0
  15. package/content/guides/M/303/251tricas de Efici/303/252ncia do Desenvolvimento com IA.md" +93 -0
  16. package/content/guides/Rules base.md +90 -0
  17. package/content/prompts/README.md +203 -0
  18. package/content/prompts/acessibilidade/analise-acessibilidade.md +257 -0
  19. package/content/prompts/apis/design-api-rest.md +303 -0
  20. package/content/prompts/apis/idempotencia.md +254 -0
  21. package/content/prompts/apis/versionamento.md +313 -0
  22. package/content/prompts/arquitetura/arquitetura-c4-completo.md +190 -0
  23. package/content/prompts/arquitetura/clean-architecture.md +151 -0
  24. package/content/prompts/arquitetura/ddd-bounded-contexts.md +183 -0
  25. package/content/prompts/arquitetura/ddd-cqrs.md +176 -0
  26. package/content/prompts/arquitetura/modelo-dominio.md +207 -0
  27. package/content/prompts/arquitetura/multi-tenancy.md +235 -0
  28. package/content/prompts/database/migrations-zero-downtime.md +192 -0
  29. package/content/prompts/database/otimizacao-queries.md +296 -0
  30. package/content/prompts/desenvolvimento/code-review.md +301 -0
  31. package/content/prompts/desenvolvimento/gerar-servico.md +271 -0
  32. package/content/prompts/devops/docker-compose.md +336 -0
  33. package/content/prompts/devops/feature-flags.md +374 -0
  34. package/content/prompts/devops/kubernetes-deploy.md +460 -0
  35. package/content/prompts/devops/pipeline-cicd.md +358 -0
  36. package/content/prompts/devops/terraform-iac.md +502 -0
  37. package/content/prompts/escalabilidade/analise-performance.md +240 -0
  38. package/content/prompts/escalabilidade/analise-performance.txt +94 -0
  39. package/content/prompts/escalabilidade/caching.md +255 -0
  40. package/content/prompts/observabilidade/chaos-testing.md +237 -0
  41. package/content/prompts/observabilidade/estrategia-observabilidade.md +263 -0
  42. package/content/prompts/observabilidade/estrategia-observabilidade.txt +134 -0
  43. package/content/prompts/observabilidade/slos.md +215 -0
  44. package/content/prompts/produto/discovery-inicial.md +203 -0
  45. package/content/prompts/produto/discovery-inicial.txt +33 -0
  46. package/content/prompts/requisitos/refinar-requisitos.md +232 -0
  47. package/content/prompts/requisitos/refinar-requisitos.txt +40 -0
  48. package/content/prompts/seguranca/analise-seguranca.md +243 -0
  49. package/content/prompts/seguranca/pentest-checklist.md +333 -0
  50. package/content/prompts/seguranca/rate-limiting.md +356 -0
  51. package/content/prompts/seguranca/revisao-lgpd.md +227 -0
  52. package/content/prompts/seguranca/threat-modeling.md +224 -0
  53. package/content/prompts/testes/contract-testing.md +340 -0
  54. package/content/prompts/testes/gerar-testes-unitarios.md +474 -0
  55. package/content/prompts/testes/testes-e2e.md +460 -0
  56. package/content/prompts/testes/testes-integracao.md +418 -0
  57. package/content/prompts/testes/testes-performance.md +458 -0
  58. package/content/prompts/ux/gerar-ui-stitch.md +151 -0
  59. package/content/skills/api-patterns/SKILL.md +81 -0
  60. package/content/skills/api-patterns/api-style.md +42 -0
  61. package/content/skills/api-patterns/auth.md +24 -0
  62. package/content/skills/api-patterns/documentation.md +26 -0
  63. package/content/skills/api-patterns/graphql.md +41 -0
  64. package/content/skills/api-patterns/rate-limiting.md +31 -0
  65. package/content/skills/api-patterns/response.md +37 -0
  66. package/content/skills/api-patterns/rest.md +40 -0
  67. package/content/skills/api-patterns/scripts/api_validator.py +211 -0
  68. package/content/skills/api-patterns/security-testing.md +122 -0
  69. package/content/skills/api-patterns/trpc.md +41 -0
  70. package/content/skills/api-patterns/versioning.md +22 -0
  71. package/content/skills/app-builder/SKILL.md +75 -0
  72. package/content/skills/app-builder/agent-coordination.md +71 -0
  73. package/content/skills/app-builder/feature-building.md +53 -0
  74. package/content/skills/app-builder/project-detection.md +34 -0
  75. package/content/skills/app-builder/scaffolding.md +118 -0
  76. package/content/skills/app-builder/tech-stack.md +40 -0
  77. package/content/skills/app-builder/templates/SKILL.md +39 -0
  78. package/content/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
  79. package/content/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
  80. package/content/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
  81. package/content/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
  82. package/content/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
  83. package/content/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
  84. package/content/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
  85. package/content/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +82 -0
  86. package/content/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +100 -0
  87. package/content/skills/app-builder/templates/nextjs-static/TEMPLATE.md +106 -0
  88. package/content/skills/app-builder/templates/nuxt-app/TEMPLATE.md +101 -0
  89. package/content/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
  90. package/content/skills/app-builder/templates/react-native-app/TEMPLATE.md +93 -0
  91. package/content/skills/architecture/SKILL.md +55 -0
  92. package/content/skills/architecture/context-discovery.md +43 -0
  93. package/content/skills/architecture/examples.md +94 -0
  94. package/content/skills/architecture/pattern-selection.md +68 -0
  95. package/content/skills/architecture/patterns-reference.md +50 -0
  96. package/content/skills/architecture/trade-off-analysis.md +77 -0
  97. package/content/skills/bash-linux/SKILL.md +199 -0
  98. package/content/skills/behavioral-modes/SKILL.md +242 -0
  99. package/content/skills/brainstorming/SKILL.md +163 -0
  100. package/content/skills/brainstorming/dynamic-questioning.md +350 -0
  101. package/content/skills/clean-code/SKILL.md +201 -0
  102. package/content/skills/code-review-checklist/SKILL.md +109 -0
  103. package/content/skills/database-design/SKILL.md +52 -0
  104. package/content/skills/database-design/database-selection.md +43 -0
  105. package/content/skills/database-design/indexing.md +39 -0
  106. package/content/skills/database-design/migrations.md +48 -0
  107. package/content/skills/database-design/optimization.md +36 -0
  108. package/content/skills/database-design/orm-selection.md +30 -0
  109. package/content/skills/database-design/schema-design.md +56 -0
  110. package/content/skills/database-design/scripts/schema_validator.py +172 -0
  111. package/content/skills/deployment-procedures/SKILL.md +241 -0
  112. package/content/skills/doc.md +177 -0
  113. package/content/skills/documentation-templates/SKILL.md +194 -0
  114. package/content/skills/frontend-design/SKILL.md +396 -0
  115. package/content/skills/frontend-design/animation-guide.md +331 -0
  116. package/content/skills/frontend-design/color-system.md +311 -0
  117. package/content/skills/frontend-design/decision-trees.md +418 -0
  118. package/content/skills/frontend-design/motion-graphics.md +306 -0
  119. package/content/skills/frontend-design/scripts/accessibility_checker.py +183 -0
  120. package/content/skills/frontend-design/scripts/ux_audit.py +722 -0
  121. package/content/skills/frontend-design/typography-system.md +345 -0
  122. package/content/skills/frontend-design/ux-psychology.md +541 -0
  123. package/content/skills/frontend-design/visual-effects.md +383 -0
  124. package/content/skills/game-development/2d-games/SKILL.md +119 -0
  125. package/content/skills/game-development/3d-games/SKILL.md +135 -0
  126. package/content/skills/game-development/SKILL.md +167 -0
  127. package/content/skills/game-development/game-art/SKILL.md +185 -0
  128. package/content/skills/game-development/game-audio/SKILL.md +190 -0
  129. package/content/skills/game-development/game-design/SKILL.md +129 -0
  130. package/content/skills/game-development/mobile-games/SKILL.md +108 -0
  131. package/content/skills/game-development/multiplayer/SKILL.md +132 -0
  132. package/content/skills/game-development/pc-games/SKILL.md +144 -0
  133. package/content/skills/game-development/vr-ar/SKILL.md +123 -0
  134. package/content/skills/game-development/web-games/SKILL.md +150 -0
  135. package/content/skills/geo-fundamentals/SKILL.md +156 -0
  136. package/content/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
  137. package/content/skills/i18n-localization/SKILL.md +154 -0
  138. package/content/skills/i18n-localization/scripts/i18n_checker.py +241 -0
  139. package/content/skills/intelligent-routing/SKILL.md +334 -0
  140. package/content/skills/lint-and-validate/SKILL.md +45 -0
  141. package/content/skills/lint-and-validate/scripts/lint_runner.py +172 -0
  142. package/content/skills/lint-and-validate/scripts/type_coverage.py +173 -0
  143. package/content/skills/mcp-builder/SKILL.md +176 -0
  144. package/content/skills/mobile-design/SKILL.md +394 -0
  145. package/content/skills/mobile-design/decision-trees.md +516 -0
  146. package/content/skills/mobile-design/mobile-backend.md +491 -0
  147. package/content/skills/mobile-design/mobile-color-system.md +420 -0
  148. package/content/skills/mobile-design/mobile-debugging.md +122 -0
  149. package/content/skills/mobile-design/mobile-design-thinking.md +357 -0
  150. package/content/skills/mobile-design/mobile-navigation.md +458 -0
  151. package/content/skills/mobile-design/mobile-performance.md +767 -0
  152. package/content/skills/mobile-design/mobile-testing.md +356 -0
  153. package/content/skills/mobile-design/mobile-typography.md +433 -0
  154. package/content/skills/mobile-design/platform-android.md +666 -0
  155. package/content/skills/mobile-design/platform-ios.md +561 -0
  156. package/content/skills/mobile-design/scripts/mobile_audit.py +670 -0
  157. package/content/skills/mobile-design/touch-psychology.md +537 -0
  158. package/content/skills/nextjs-best-practices/SKILL.md +203 -0
  159. package/content/skills/nodejs-best-practices/SKILL.md +333 -0
  160. package/content/skills/parallel-agents/SKILL.md +175 -0
  161. package/content/skills/performance-profiling/SKILL.md +143 -0
  162. package/content/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
  163. package/content/skills/plan-writing/SKILL.md +152 -0
  164. package/content/skills/powershell-windows/SKILL.md +167 -0
  165. package/content/skills/python-patterns/SKILL.md +441 -0
  166. package/content/skills/react-patterns/SKILL.md +198 -0
  167. package/content/skills/red-team-tactics/SKILL.md +199 -0
  168. package/content/skills/seo-fundamentals/SKILL.md +129 -0
  169. package/content/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
  170. package/content/skills/server-management/SKILL.md +161 -0
  171. package/content/skills/systematic-debugging/SKILL.md +109 -0
  172. package/content/skills/tailwind-patterns/SKILL.md +269 -0
  173. package/content/skills/tdd-workflow/SKILL.md +149 -0
  174. package/content/skills/testing-patterns/SKILL.md +178 -0
  175. package/content/skills/testing-patterns/scripts/test_runner.py +219 -0
  176. package/content/skills/vulnerability-scanner/SKILL.md +276 -0
  177. package/content/skills/vulnerability-scanner/checklists.md +121 -0
  178. package/content/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
  179. package/content/skills/webapp-testing/SKILL.md +187 -0
  180. package/content/skills/webapp-testing/scripts/playwright_runner.py +173 -0
  181. package/content/specialists/Especialista em Acessibilidade.md +266 -0
  182. package/content/specialists/Especialista em An/303/241lise de Testes.md" +434 -0
  183. package/content/specialists/Especialista em Arquitetura Avan/303/247ada.md" +358 -0
  184. package/content/specialists/Especialista em Arquitetura de Software.md +177 -0
  185. package/content/specialists/Especialista em Banco de Dados.md +260 -0
  186. package/content/specialists/Especialista em Contrato de API.md +172 -0
  187. package/content/specialists/Especialista em Dados e Analytics com IA.md +246 -0
  188. package/content/specialists/Especialista em Debugging e Troubleshooting.md +191 -0
  189. package/content/specialists/Especialista em Desenvolvimento Frontend.md +477 -0
  190. package/content/specialists/Especialista em Desenvolvimento Mobile.md +241 -0
  191. package/content/specialists/Especialista em Desenvolvimento e Vibe Coding Estruturado.md +417 -0
  192. package/content/specialists/Especialista em DevOps e Infraestrutura.md +294 -0
  193. package/content/specialists/Especialista em Documenta/303/247/303/243o T/303/251cnica.md" +227 -0
  194. package/content/specialists/Especialista em Engenharia de Requisitos com IA.md +299 -0
  195. package/content/specialists/Especialista em Explora/303/247/303/243o de Codebase.md" +179 -0
  196. package/content/specialists/Especialista em Gest/303/243o de Produto.md" +179 -0
  197. package/content/specialists/Especialista em Migra/303/247/303/243o e Moderniza/303/247/303/243o.md" +410 -0
  198. package/content/specialists/Especialista em Modelagem e Arquitetura de Dom/303/255nio com IA.md" +248 -0
  199. package/content/specialists/Especialista em Observabilidade.md +415 -0
  200. package/content/specialists/Especialista em Performance e Escalabilidade.md +373 -0
  201. package/content/specialists/Especialista em Plano de Execu/303/247/303/243o com IA.md" +341 -0
  202. package/content/specialists/Especialista em Prototipagem R/303/241pida com Google Stitch.md" +419 -0
  203. package/content/specialists/Especialista em Seguran/303/247a da Informa/303/247/303/243o.md" +508 -0
  204. package/content/specialists/Especialista em UX Design.md +453 -0
  205. package/content/specialists/INDEX.md +43 -0
  206. package/content/templates/PRD.md +165 -0
  207. package/content/templates/README.md +65 -0
  208. package/content/templates/adr.md +103 -0
  209. package/content/templates/arquitetura.md +279 -0
  210. package/content/templates/backlog.md +185 -0
  211. package/content/templates/checklist-seguranca.md +180 -0
  212. package/content/templates/contexto.md +120 -0
  213. package/content/templates/criterios-aceite.md +99 -0
  214. package/content/templates/design-banco.md +270 -0
  215. package/content/templates/design-doc.md +240 -0
  216. package/content/templates/feature.md +88 -0
  217. package/content/templates/historia-backend.md +84 -0
  218. package/content/templates/historia-frontend.md +75 -0
  219. package/content/templates/historia-usuario.md +125 -0
  220. package/content/templates/mapa-navegacao.md +133 -0
  221. package/content/templates/matriz-rastreabilidade.md +121 -0
  222. package/content/templates/modelo-dominio.md +219 -0
  223. package/content/templates/plano-testes.md +199 -0
  224. package/content/templates/prototipo-stitch.md +138 -0
  225. package/content/templates/requisitos.md +162 -0
  226. package/content/templates/slo-sli.md +197 -0
  227. package/content/workflows/README-MCP.md +363 -0
  228. package/content/workflows/brainstorm.md +113 -0
  229. package/content/workflows/create.md +59 -0
  230. package/content/workflows/debug.md +103 -0
  231. package/content/workflows/deploy.md +176 -0
  232. package/content/workflows/enhance.md +63 -0
  233. package/content/workflows/mcp-debug.md +506 -0
  234. package/content/workflows/mcp-feature.md +385 -0
  235. package/content/workflows/mcp-gate.md +413 -0
  236. package/content/workflows/mcp-next.md +388 -0
  237. package/content/workflows/mcp-refactor.md +600 -0
  238. package/content/workflows/mcp-start.md +304 -0
  239. package/content/workflows/mcp-status.md +400 -0
  240. package/content/workflows/orchestrate.md +237 -0
  241. package/content/workflows/plan.md +89 -0
  242. package/content/workflows/preview.md +81 -0
  243. package/content/workflows/status.md +86 -0
  244. package/content/workflows/test.md +144 -0
  245. package/content/workflows/ui-ux-pro-max.md +296 -0
  246. package/dist/commands/init.d.ts +6 -0
  247. package/dist/commands/init.js +138 -0
  248. package/dist/commands/update.d.ts +5 -0
  249. package/dist/commands/update.js +50 -0
  250. package/dist/index.d.ts +2 -0
  251. package/dist/index.js +21 -0
  252. package/package.json +48 -0
@@ -0,0 +1,502 @@
1
+ # Prompt: Infrastructure as Code com Terraform
2
+
3
+ > **Quando usar**: Provisionar infraestrutura em cloud de forma reproduzível
4
+ > **Especialista**: [DevOps e Infraestrutura](../../02-especialistas/Especialista%20em%20DevOps%20e%20Infraestrutura.md)
5
+ > **Nível**: Médio a Complexo
6
+
7
+ ---
8
+
9
+ ## Fluxo de Contexto
10
+
11
+ Antes de usar este prompt, tenha em mãos:
12
+ - `docs/CONTEXTO.md` - Entendimento do projeto
13
+ - `docs/05-arquitetura/arquitetura.md` - Arquitetura e requisitos de infra
14
+
15
+ Após gerar, salve o resultado em:
16
+ - `infra/terraform/` - Diretório com módulos
17
+ - `infra/terraform/environments/` - Configs por ambiente
18
+
19
+ ---
20
+
21
+ ## Prompt Completo
22
+
23
+ ```text
24
+ Atue como especialista em Terraform e Infrastructure as Code.
25
+
26
+ ## Contexto do Projeto
27
+
28
+ [COLE O CONTEÚDO DE docs/CONTEXTO.md]
29
+
30
+ ## Cloud Provider
31
+
32
+ - Provider: [AWS/GCP/Azure]
33
+ - Região principal: [região]
34
+ - Multi-região: [Sim/Não]
35
+
36
+ ## Recursos Necessários
37
+
38
+ ### Computação
39
+ - [ ] VMs/EC2 instances
40
+ - [ ] Containers (ECS/EKS/GKE/AKS)
41
+ - [ ] Serverless (Lambda/Cloud Functions)
42
+ - [ ] Auto Scaling Groups
43
+
44
+ ### Banco de Dados
45
+ - [ ] PostgreSQL managed (RDS/Cloud SQL/Azure DB)
46
+ - [ ] MySQL managed
47
+ - [ ] MongoDB managed
48
+ - [ ] Redis managed
49
+ - [ ] ElasticSearch
50
+
51
+ ### Rede
52
+ - [ ] VPC dedicada
53
+ - [ ] Subnets (públicas/privadas)
54
+ - [ ] Load Balancer
55
+ - [ ] CDN
56
+ - [ ] VPN/Direct Connect
57
+
58
+ ### Storage
59
+ - [ ] Object Storage (S3/GCS/Blob)
60
+ - [ ] File Storage
61
+ - [ ] Block Storage
62
+
63
+ ### Segurança
64
+ - [ ] IAM roles/policies
65
+ - [ ] Security Groups
66
+ - [ ] WAF
67
+ - [ ] Secrets Manager
68
+ - [ ] KMS
69
+
70
+ ### Observabilidade
71
+ - [ ] CloudWatch/Cloud Monitoring
72
+ - [ ] Logs centralizados
73
+
74
+ ## Ambientes
75
+
76
+ - [ ] Development
77
+ - [ ] Staging
78
+ - [ ] Production
79
+
80
+ ## Requisitos
81
+
82
+ - State backend: [S3/GCS/Terraform Cloud]
83
+ - Módulos: [monolítico/modularizado]
84
+ - Tagging strategy: [padrão de tags]
85
+
86
+ ---
87
+
88
+ ## Sua Missão
89
+
90
+ Gere código Terraform organizado:
91
+
92
+ ### 1. Estrutura de Diretórios
93
+
94
+ ```
95
+ infra/terraform/
96
+ ├── modules/
97
+ │ ├── vpc/
98
+ │ │ ├── main.tf
99
+ │ │ ├── variables.tf
100
+ │ │ └── outputs.tf
101
+ │ ├── database/
102
+ │ ├── compute/
103
+ │ └── security/
104
+ ├── environments/
105
+ │ ├── dev/
106
+ │ │ ├── main.tf
107
+ │ │ ├── terraform.tfvars
108
+ │ │ └── backend.tf
109
+ │ ├── staging/
110
+ │ └── prod/
111
+ ├── versions.tf
112
+ └── README.md
113
+ ```
114
+
115
+ ### 2. Provider e Versões
116
+
117
+ ```hcl
118
+ # versions.tf
119
+ terraform {
120
+ required_version = ">= 1.5.0"
121
+
122
+ required_providers {
123
+ aws = {
124
+ source = "hashicorp/aws"
125
+ version = "~> 5.0"
126
+ }
127
+ }
128
+ }
129
+
130
+ provider "aws" {
131
+ region = var.aws_region
132
+
133
+ default_tags {
134
+ tags = {
135
+ Project = var.project_name
136
+ Environment = var.environment
137
+ ManagedBy = "terraform"
138
+ }
139
+ }
140
+ }
141
+ ```
142
+
143
+ ### 3. Backend Configuration
144
+
145
+ ```hcl
146
+ # environments/prod/backend.tf
147
+ terraform {
148
+ backend "s3" {
149
+ bucket = "[project]-terraform-state"
150
+ key = "prod/terraform.tfstate"
151
+ region = "[region]"
152
+ encrypt = true
153
+ dynamodb_table = "[project]-terraform-lock"
154
+ }
155
+ }
156
+ ```
157
+
158
+ ### 4. Módulo VPC
159
+
160
+ ```hcl
161
+ # modules/vpc/main.tf
162
+ resource "aws_vpc" "main" {
163
+ cidr_block = var.vpc_cidr
164
+ enable_dns_hostnames = true
165
+ enable_dns_support = true
166
+
167
+ tags = {
168
+ Name = "${var.project_name}-vpc"
169
+ }
170
+ }
171
+
172
+ resource "aws_subnet" "public" {
173
+ count = length(var.public_subnet_cidrs)
174
+ vpc_id = aws_vpc.main.id
175
+ cidr_block = var.public_subnet_cidrs[count.index]
176
+ availability_zone = var.azs[count.index]
177
+
178
+ map_public_ip_on_launch = true
179
+
180
+ tags = {
181
+ Name = "${var.project_name}-public-${count.index + 1}"
182
+ Type = "public"
183
+ }
184
+ }
185
+
186
+ resource "aws_subnet" "private" {
187
+ count = length(var.private_subnet_cidrs)
188
+ vpc_id = aws_vpc.main.id
189
+ cidr_block = var.private_subnet_cidrs[count.index]
190
+ availability_zone = var.azs[count.index]
191
+
192
+ tags = {
193
+ Name = "${var.project_name}-private-${count.index + 1}"
194
+ Type = "private"
195
+ }
196
+ }
197
+
198
+ resource "aws_internet_gateway" "main" {
199
+ vpc_id = aws_vpc.main.id
200
+
201
+ tags = {
202
+ Name = "${var.project_name}-igw"
203
+ }
204
+ }
205
+
206
+ resource "aws_nat_gateway" "main" {
207
+ count = var.enable_nat_gateway ? 1 : 0
208
+ allocation_id = aws_eip.nat[0].id
209
+ subnet_id = aws_subnet.public[0].id
210
+
211
+ tags = {
212
+ Name = "${var.project_name}-nat"
213
+ }
214
+ }
215
+
216
+ resource "aws_eip" "nat" {
217
+ count = var.enable_nat_gateway ? 1 : 0
218
+ domain = "vpc"
219
+ }
220
+ ```
221
+
222
+ ```hcl
223
+ # modules/vpc/variables.tf
224
+ variable "project_name" {
225
+ type = string
226
+ description = "Nome do projeto"
227
+ }
228
+
229
+ variable "vpc_cidr" {
230
+ type = string
231
+ default = "10.0.0.0/16"
232
+ description = "CIDR block da VPC"
233
+ }
234
+
235
+ variable "public_subnet_cidrs" {
236
+ type = list(string)
237
+ default = ["10.0.1.0/24", "10.0.2.0/24"]
238
+ description = "CIDRs das subnets públicas"
239
+ }
240
+
241
+ variable "private_subnet_cidrs" {
242
+ type = list(string)
243
+ default = ["10.0.10.0/24", "10.0.11.0/24"]
244
+ description = "CIDRs das subnets privadas"
245
+ }
246
+
247
+ variable "azs" {
248
+ type = list(string)
249
+ description = "Availability zones"
250
+ }
251
+
252
+ variable "enable_nat_gateway" {
253
+ type = bool
254
+ default = true
255
+ description = "Habilitar NAT Gateway"
256
+ }
257
+ ```
258
+
259
+ ```hcl
260
+ # modules/vpc/outputs.tf
261
+ output "vpc_id" {
262
+ value = aws_vpc.main.id
263
+ description = "ID da VPC"
264
+ }
265
+
266
+ output "public_subnet_ids" {
267
+ value = aws_subnet.public[*].id
268
+ description = "IDs das subnets públicas"
269
+ }
270
+
271
+ output "private_subnet_ids" {
272
+ value = aws_subnet.private[*].id
273
+ description = "IDs das subnets privadas"
274
+ }
275
+ ```
276
+
277
+ ### 5. Módulo Database
278
+
279
+ ```hcl
280
+ # modules/database/main.tf
281
+ resource "aws_db_subnet_group" "main" {
282
+ name = "${var.project_name}-db-subnet"
283
+ subnet_ids = var.subnet_ids
284
+
285
+ tags = {
286
+ Name = "${var.project_name}-db-subnet"
287
+ }
288
+ }
289
+
290
+ resource "aws_security_group" "db" {
291
+ name = "${var.project_name}-db-sg"
292
+ description = "Security group for RDS"
293
+ vpc_id = var.vpc_id
294
+
295
+ ingress {
296
+ from_port = 5432
297
+ to_port = 5432
298
+ protocol = "tcp"
299
+ security_groups = var.allowed_security_groups
300
+ }
301
+
302
+ egress {
303
+ from_port = 0
304
+ to_port = 0
305
+ protocol = "-1"
306
+ cidr_blocks = ["0.0.0.0/0"]
307
+ }
308
+ }
309
+
310
+ resource "aws_db_instance" "main" {
311
+ identifier = "${var.project_name}-db"
312
+ engine = "postgres"
313
+ engine_version = var.postgres_version
314
+ instance_class = var.instance_class
315
+ allocated_storage = var.allocated_storage
316
+ max_allocated_storage = var.max_allocated_storage
317
+
318
+ db_name = var.database_name
319
+ username = var.master_username
320
+ password = var.master_password
321
+
322
+ db_subnet_group_name = aws_db_subnet_group.main.name
323
+ vpc_security_group_ids = [aws_security_group.db.id]
324
+
325
+ multi_az = var.multi_az
326
+ publicly_accessible = false
327
+ storage_encrypted = true
328
+ deletion_protection = var.environment == "prod" ? true : false
329
+ skip_final_snapshot = var.environment != "prod"
330
+
331
+ backup_retention_period = var.backup_retention_days
332
+ backup_window = "03:00-04:00"
333
+ maintenance_window = "Mon:04:00-Mon:05:00"
334
+
335
+ performance_insights_enabled = true
336
+
337
+ tags = {
338
+ Name = "${var.project_name}-db"
339
+ }
340
+
341
+ lifecycle {
342
+ prevent_destroy = false # Mudar para true em prod
343
+ }
344
+ }
345
+ ```
346
+
347
+ ### 6. Arquivo de Variáveis por Ambiente
348
+
349
+ ```hcl
350
+ # environments/prod/terraform.tfvars
351
+ project_name = "myapp"
352
+ environment = "prod"
353
+ aws_region = "us-east-1"
354
+
355
+ # VPC
356
+ vpc_cidr = "10.0.0.0/16"
357
+ public_subnet_cidrs = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"]
358
+ private_subnet_cidrs = ["10.0.10.0/24", "10.0.11.0/24", "10.0.12.0/24"]
359
+ azs = ["us-east-1a", "us-east-1b", "us-east-1c"]
360
+
361
+ # Database
362
+ instance_class = "db.t3.medium"
363
+ allocated_storage = 50
364
+ max_allocated_storage = 200
365
+ multi_az = true
366
+ backup_retention_days = 7
367
+
368
+ # Compute
369
+ instance_type = "t3.medium"
370
+ min_size = 2
371
+ max_size = 10
372
+ desired_capacity = 2
373
+ ```
374
+
375
+ ### 7. Main Entry Point
376
+
377
+ ```hcl
378
+ # environments/prod/main.tf
379
+ module "vpc" {
380
+ source = "../../modules/vpc"
381
+
382
+ project_name = var.project_name
383
+ vpc_cidr = var.vpc_cidr
384
+ public_subnet_cidrs = var.public_subnet_cidrs
385
+ private_subnet_cidrs = var.private_subnet_cidrs
386
+ azs = var.azs
387
+ enable_nat_gateway = true
388
+ }
389
+
390
+ module "database" {
391
+ source = "../../modules/database"
392
+
393
+ project_name = var.project_name
394
+ environment = var.environment
395
+ vpc_id = module.vpc.vpc_id
396
+ subnet_ids = module.vpc.private_subnet_ids
397
+ allowed_security_groups = [module.compute.app_security_group_id]
398
+
399
+ instance_class = var.instance_class
400
+ allocated_storage = var.allocated_storage
401
+ max_allocated_storage = var.max_allocated_storage
402
+ multi_az = var.multi_az
403
+ backup_retention_days = var.backup_retention_days
404
+
405
+ database_name = "${var.project_name}_${var.environment}"
406
+ master_username = "admin"
407
+ master_password = var.db_password # De variável sensível
408
+ }
409
+ ```
410
+
411
+ ### 8. Comandos Úteis
412
+
413
+ ```bash
414
+ # Inicializar
415
+ cd environments/prod
416
+ terraform init
417
+
418
+ # Planejar
419
+ terraform plan -out=tfplan
420
+
421
+ # Aplicar
422
+ terraform apply tfplan
423
+
424
+ # Ver estado
425
+ terraform state list
426
+
427
+ # Destruir (cuidado!)
428
+ terraform destroy
429
+
430
+ # Formatar código
431
+ terraform fmt -recursive
432
+
433
+ # Validar
434
+ terraform validate
435
+
436
+ # Importar recurso existente
437
+ terraform import module.vpc.aws_vpc.main vpc-12345
438
+ ```
439
+ ```
440
+
441
+ ---
442
+
443
+ ## Exemplo de Uso
444
+
445
+ ```text
446
+ Atue como especialista em Terraform.
447
+
448
+ ## Contexto
449
+
450
+ SaaS de gestão financeira para PMEs.
451
+
452
+ ## Cloud Provider
453
+
454
+ - AWS
455
+ - Região: sa-east-1
456
+ - Multi-região: Não (por enquanto)
457
+
458
+ ## Recursos
459
+
460
+ ### Computação
461
+ - [x] ECS Fargate
462
+
463
+ ### Banco
464
+ - [x] PostgreSQL RDS (Multi-AZ em prod)
465
+ - [x] Redis ElastiCache
466
+
467
+ ### Rede
468
+ - [x] VPC dedicada
469
+ - [x] ALB público
470
+ - [x] Subnets públicas e privadas
471
+
472
+ ### Segurança
473
+ - [x] IAM roles
474
+ - [x] Security Groups
475
+ - [x] Secrets Manager
476
+
477
+ ## Ambientes
478
+
479
+ - [x] staging
480
+ - [x] prod
481
+
482
+ ## Requisitos
483
+
484
+ - State no S3 com lock DynamoDB
485
+ - Módulos reutilizáveis
486
+ - Tags: Project, Environment, Team, CostCenter
487
+ ```
488
+
489
+ ---
490
+
491
+ ## Checklist Pós-Geração
492
+
493
+ - [ ] Estrutura de diretórios organizada
494
+ - [ ] Backend remoto configurado (S3 + DynamoDB)
495
+ - [ ] Providers versionados
496
+ - [ ] Módulos com variables e outputs
497
+ - [ ] Separação por ambiente (tfvars)
498
+ - [ ] Tags padrão aplicadas
499
+ - [ ] Outputs para recursos importantes
500
+ - [ ] README com instruções
501
+ - [ ] .gitignore configurado (*.tfstate, .terraform/)
502
+ - [ ] Sensitive variables marcadas