@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,135 @@
1
+ # Guia de Debugging com IA
2
+
3
+ Fluxo estruturado para identificar e corrigir bugs com apoio de IA.
4
+
5
+ ---
6
+
7
+ ## Fluxo de Debugging
8
+
9
+ ```
10
+ 1. Coleta → 2. Reprodução → 3. Análise → 4. Hipótese → 5. Fix → 6. Validação
11
+ ```
12
+
13
+ ---
14
+
15
+ ## 1. Coleta de Contexto
16
+
17
+ Antes de pedir ajuda à IA, colete:
18
+
19
+ - [ ] Mensagem de erro completa (stack trace)
20
+ - [ ] Logs relevantes (últimas N linhas)
21
+ - [ ] Passos para reproduzir
22
+ - [ ] Comportamento esperado vs. observado
23
+ - [ ] Ambiente (versão, SO, navegador)
24
+ - [ ] Últimas alterações no código
25
+
26
+ ---
27
+
28
+ ## 2. Prompts para IA
29
+
30
+ ### Análise de Stack Trace
31
+
32
+ ```text
33
+ Atue como engenheiro de software sênior.
34
+
35
+ Aqui está um stack trace de erro:
36
+ [COLE STACK TRACE]
37
+
38
+ Código relevante:
39
+ [COLE TRECHO DE CÓDIGO]
40
+
41
+ Analise:
42
+ - Qual é a causa provável do erro?
43
+ - Em qual linha/função o problema origina?
44
+ - Quais são as possíveis soluções?
45
+ ```
46
+
47
+ ### Debugging de Lógica
48
+
49
+ ```text
50
+ Este código deveria [COMPORTAMENTO ESPERADO], mas está [COMPORTAMENTO OBSERVADO]:
51
+ [COLE CÓDIGO]
52
+
53
+ Input de teste:
54
+ [COLE INPUT]
55
+
56
+ Output esperado:
57
+ [COLE OUTPUT ESPERADO]
58
+
59
+ Output atual:
60
+ [COLE OUTPUT ATUAL]
61
+
62
+ Identifique o bug e sugira a correção.
63
+ ```
64
+
65
+ ### Análise de Logs
66
+
67
+ ```text
68
+ Aqui estão logs de uma falha em produção:
69
+ [COLE LOGS]
70
+
71
+ Contexto do sistema:
72
+ [DESCREVA ARQUITETURA BREVEMENTE]
73
+
74
+ Identifique:
75
+ - Padrões de erro
76
+ - Possível causa raiz
77
+ - Ações de mitigação imediata
78
+ ```
79
+
80
+ ---
81
+
82
+ ## 3. Geração de Fix
83
+
84
+ ### Prompt para correção
85
+
86
+ ```text
87
+ Bug identificado:
88
+ [DESCREVA O BUG]
89
+
90
+ Código com problema:
91
+ [COLE CÓDIGO]
92
+
93
+ Gere:
94
+ 1. Código corrigido
95
+ 2. Explicação da mudança
96
+ 3. Teste que validaria a correção
97
+ ```
98
+
99
+ ---
100
+
101
+ ## 4. Validação
102
+
103
+ ### Geração de testes de regressão
104
+
105
+ ```text
106
+ Acabei de corrigir o seguinte bug:
107
+ [DESCREVA]
108
+
109
+ Código corrigido:
110
+ [COLE]
111
+
112
+ Gere testes de regressão em [FRAMEWORK] que garantam:
113
+ - O bug não volta
114
+ - Casos de borda relacionados
115
+ ```
116
+
117
+ ---
118
+
119
+ ## Checklist de Debugging
120
+
121
+ - [ ] Bug reproduzido localmente
122
+ - [ ] Causa raiz identificada
123
+ - [ ] Fix implementado e testado
124
+ - [ ] Testes de regressão adicionados
125
+ - [ ] Documentação atualizada (se necessário)
126
+ - [ ] PR aberto com descrição clara
127
+
128
+ ---
129
+
130
+ ## Boas Práticas
131
+
132
+ 1. **Não cole dados sensíveis** em prompts (tokens, senhas, PII)
133
+ 2. **Isole o problema** antes de pedir ajuda - reduza ao mínimo reproduzível
134
+ 3. **Verifique a correção** da IA - ela pode sugerir fixes incorretos
135
+ 4. **Documente bugs complexos** para referência futura
@@ -0,0 +1,352 @@
1
+ # Guia de Estratégias de Cache
2
+
3
+ > **Prioridade**: 🟡 MÉDIA
4
+ > **Aplicável a**: Projetos Nível 2 (Médio) e Nível 3 (Complexo)
5
+
6
+ ---
7
+
8
+ ## Por que Cache?
9
+
10
+ - **Latência**: Acesso a memória ~100ns vs disco ~10ms vs rede ~100ms
11
+ - **Throughput**: Reduz carga no banco de dados
12
+ - **Custo**: Menos recursos computacionais
13
+ - **Disponibilidade**: Continua servindo se origem falhar (stale data)
14
+
15
+ ---
16
+
17
+ ## Padrões de Cache
18
+
19
+ ### 1. Cache-Aside (Lazy Loading)
20
+
21
+ O mais comum. Aplicação gerencia o cache.
22
+
23
+ ```mermaid
24
+ sequenceDiagram
25
+ participant App
26
+ participant Cache
27
+ participant DB
28
+
29
+ App->>Cache: GET user:123
30
+ Cache-->>App: null (miss)
31
+ App->>DB: SELECT * FROM users WHERE id=123
32
+ DB-->>App: user data
33
+ App->>Cache: SET user:123 = data
34
+ App-->>Client: user data
35
+ ```
36
+
37
+ ```typescript
38
+ async function getUser(id: string): Promise<User> {
39
+ const cacheKey = `user:${id}`;
40
+
41
+ // 1. Tentar cache
42
+ const cached = await redis.get(cacheKey);
43
+ if (cached) {
44
+ return JSON.parse(cached);
45
+ }
46
+
47
+ // 2. Buscar no banco
48
+ const user = await db.users.findById(id);
49
+
50
+ // 3. Popular cache
51
+ if (user) {
52
+ await redis.setex(cacheKey, 3600, JSON.stringify(user));
53
+ }
54
+
55
+ return user;
56
+ }
57
+ ```
58
+
59
+ **Prós**: Simples, só cacheia o que é acessado
60
+ **Contras**: Cache miss inicial, dados podem ficar stale
61
+
62
+ ---
63
+
64
+ ### 2. Write-Through
65
+
66
+ Escreve no cache E no banco simultaneamente.
67
+
68
+ ```typescript
69
+ async function updateUser(id: string, data: Partial<User>): Promise<User> {
70
+ // 1. Atualizar banco
71
+ const user = await db.users.update(id, data);
72
+
73
+ // 2. Atualizar cache imediatamente
74
+ await redis.setex(`user:${id}`, 3600, JSON.stringify(user));
75
+
76
+ return user;
77
+ }
78
+ ```
79
+
80
+ **Prós**: Cache sempre atualizado
81
+ **Contras**: Latência de escrita dobra, escreve dados que talvez não sejam lidos
82
+
83
+ ---
84
+
85
+ ### 3. Write-Behind (Write-Back)
86
+
87
+ Escreve no cache, async para banco.
88
+
89
+ ```typescript
90
+ async function updateUser(id: string, data: Partial<User>): Promise<User> {
91
+ // 1. Atualizar só no cache
92
+ const user = { ...await getCachedUser(id), ...data };
93
+ await redis.setex(`user:${id}`, 3600, JSON.stringify(user));
94
+
95
+ // 2. Enfileirar escrita no banco
96
+ await queue.add('sync-user-to-db', { id, data });
97
+
98
+ return user;
99
+ }
100
+ ```
101
+
102
+ **Prós**: Escrita super rápida, batch possível
103
+ **Contras**: Risco de perda de dados, complexidade
104
+
105
+ ---
106
+
107
+ ### 4. Read-Through
108
+
109
+ Cache é um proxy transparente.
110
+
111
+ ```typescript
112
+ // O cache gerencia a busca automaticamente
113
+ const user = await cache.get('user:123', {
114
+ fallback: () => db.users.findById('123'),
115
+ ttl: 3600
116
+ });
117
+ ```
118
+
119
+ **Prós**: Código limpo, abstração total
120
+ **Contras**: Menos controle, dependência do cache library
121
+
122
+ ---
123
+
124
+ ## Estratégias de Invalidação
125
+
126
+ > "There are only two hard things in Computer Science: cache invalidation and naming things."
127
+
128
+ ### 1. TTL (Time-To-Live)
129
+
130
+ ```typescript
131
+ // Cache expira automaticamente
132
+ await redis.setex('user:123', 3600, data); // 1 hora
133
+ ```
134
+
135
+ **Usar quando**: Dados mudam pouco, stale data aceitável
136
+
137
+ ### 2. Invalidação Explícita
138
+
139
+ ```typescript
140
+ async function updateUser(id: string, data: any) {
141
+ await db.users.update(id, data);
142
+ await redis.del(`user:${id}`);
143
+ }
144
+ ```
145
+
146
+ **Usar quando**: Consistência importante
147
+
148
+ ### 3. Event-Driven Invalidation
149
+
150
+ ```typescript
151
+ // Producer
152
+ eventBus.emit('user.updated', { userId: '123' });
153
+
154
+ // Consumer
155
+ eventBus.on('user.updated', async ({ userId }) => {
156
+ await redis.del(`user:${userId}`);
157
+ await redis.del(`user-profile:${userId}`);
158
+ });
159
+ ```
160
+
161
+ **Usar quando**: Múltiplos caches afetados, microserviços
162
+
163
+ ### 4. Cache Tags
164
+
165
+ ```typescript
166
+ // Cachear com tags
167
+ await cache.set('product:123', data, {
168
+ tags: ['products', 'category:electronics']
169
+ });
170
+
171
+ // Invalidar por tag
172
+ await cache.invalidateTag('category:electronics');
173
+ ```
174
+
175
+ **Usar quando**: Muitos itens relacionados precisam invalidar juntos
176
+
177
+ ---
178
+
179
+ ## Padrões Avançados
180
+
181
+ ### Stale-While-Revalidate
182
+
183
+ Retorna stale imediatamente, atualiza em background.
184
+
185
+ ```typescript
186
+ async function getWithSWR(key: string, fetcher: () => Promise<any>) {
187
+ const cached = await redis.get(key);
188
+
189
+ if (cached) {
190
+ const data = JSON.parse(cached);
191
+
192
+ // Se próximo de expirar, revalidar em background
193
+ if (data._expiresAt < Date.now() + 60000) {
194
+ refreshInBackground(key, fetcher);
195
+ }
196
+
197
+ return data.value;
198
+ }
199
+
200
+ return fetchAndCache(key, fetcher);
201
+ }
202
+ ```
203
+
204
+ ### Cache Stampede Prevention
205
+
206
+ Evita que muitas requisições simultâneas busquem a mesma coisa.
207
+
208
+ ```typescript
209
+ const locks = new Map<string, Promise<any>>();
210
+
211
+ async function getWithLock(key: string, fetcher: () => Promise<any>) {
212
+ const cached = await redis.get(key);
213
+ if (cached) return JSON.parse(cached);
214
+
215
+ // Se já tem requisição em andamento, esperar ela
216
+ if (locks.has(key)) {
217
+ return locks.get(key);
218
+ }
219
+
220
+ // Criar lock
221
+ const promise = fetcher().then(async (data) => {
222
+ await redis.setex(key, 3600, JSON.stringify(data));
223
+ locks.delete(key);
224
+ return data;
225
+ });
226
+
227
+ locks.set(key, promise);
228
+ return promise;
229
+ }
230
+ ```
231
+
232
+ ### Multi-Layer Cache
233
+
234
+ ```
235
+ Browser Cache → CDN → Application Cache → Database
236
+ ```
237
+
238
+ ```typescript
239
+ async function getProduct(id: string) {
240
+ // L1: In-memory (LRU)
241
+ if (memoryCache.has(id)) {
242
+ return memoryCache.get(id);
243
+ }
244
+
245
+ // L2: Redis
246
+ const cached = await redis.get(`product:${id}`);
247
+ if (cached) {
248
+ const data = JSON.parse(cached);
249
+ memoryCache.set(id, data);
250
+ return data;
251
+ }
252
+
253
+ // L3: Database
254
+ const product = await db.products.findById(id);
255
+
256
+ // Populate caches
257
+ await redis.setex(`product:${id}`, 3600, JSON.stringify(product));
258
+ memoryCache.set(id, product);
259
+
260
+ return product;
261
+ }
262
+ ```
263
+
264
+ ---
265
+
266
+ ## Cache para diferentes tipos de dados
267
+
268
+ | Tipo de Dado | TTL Sugerido | Estratégia |
269
+ |--------------|--------------|------------|
270
+ | Dados de usuário | 5-15 min | Cache-aside + invalidação no update |
271
+ | Configurações | 1-24 horas | Read-through + event invalidation |
272
+ | Catálogo/produtos | 15-60 min | Cache-aside + SWR |
273
+ | Sessions | Até expirar | Write-through |
274
+ | Rate limit counters | 1-60 seg | Write-through |
275
+ | Agregações/reports | 5-60 min | Pre-computed, refresh periódico |
276
+
277
+ ---
278
+
279
+ ## Redis Patterns
280
+
281
+ ### Hash para objetos
282
+
283
+ ```typescript
284
+ // Mais eficiente que JSON serializado
285
+ await redis.hset('user:123', {
286
+ name: 'John',
287
+ email: 'john@example.com',
288
+ role: 'admin'
289
+ });
290
+
291
+ // Buscar campo específico
292
+ const email = await redis.hget('user:123', 'email');
293
+
294
+ // Buscar tudo
295
+ const user = await redis.hgetall('user:123');
296
+ ```
297
+
298
+ ### Sorted Set para rankings/feeds
299
+
300
+ ```typescript
301
+ // Adicionar item com score (timestamp)
302
+ await redis.zadd('user:123:feed', Date.now(), postId);
303
+
304
+ // Buscar últimos 20
305
+ const recent = await redis.zrevrange('user:123:feed', 0, 19);
306
+
307
+ // Remover antigos
308
+ await redis.zremrangebyrank('user:123:feed', 0, -101); // Manter só 100
309
+ ```
310
+
311
+ ### Set para tags/relacionamentos
312
+
313
+ ```typescript
314
+ // Adicionar tags
315
+ await redis.sadd('product:123:tags', 'electronics', 'sale', 'featured');
316
+
317
+ // Buscar produtos com múltiplas tags
318
+ const products = await redis.sinter('tag:electronics', 'tag:sale');
319
+ ```
320
+
321
+ ---
322
+
323
+ ## Checklist de Implementação
324
+
325
+ - [ ] Padrão de cache definido por tipo de dado
326
+ - [ ] TTLs configurados apropriadamente
327
+ - [ ] Estratégia de invalidação documentada
328
+ - [ ] Proteção contra cache stampede
329
+ - [ ] Monitoramento de hit/miss ratio
330
+ - [ ] Alertas para Redis indisponível
331
+ - [ ] Fallback gracioso se cache falhar
332
+ - [ ] Testes com cache habilitado E desabilitado
333
+
334
+ ---
335
+
336
+ ## Métricas para Monitorar
337
+
338
+ | Métrica | Alerta se... |
339
+ |---------|--------------|
340
+ | Hit Rate | < 80% (depende do caso) |
341
+ | Latência p99 | > 10ms |
342
+ | Memória usada | > 80% do disponível |
343
+ | Evictions | Taxa alta inesperada |
344
+ | Conexões | Próximo do max |
345
+
346
+ ---
347
+
348
+ ## Referências
349
+
350
+ - [Redis Best Practices](https://redis.io/docs/manual/patterns/)
351
+ - [Caching Strategies](https://codeahoy.com/2017/08/11/caching-strategies-and-how-to-choose-the-right-one/)
352
+ - [Facebook TAO](https://www.usenix.org/system/files/conference/atc13/atc13-bronson.pdf)