@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,356 @@
1
+ # Prompt: Rate Limiting e Throttling
2
+
3
+ > **Prioridade**: 🔴 CRÍTICA
4
+ > **Aplicável a**: Todos os projetos com APIs expostas
5
+
6
+ ---
7
+
8
+ ## Por que é Crítico?
9
+
10
+ Rate limiting protege seu sistema contra:
11
+ - **DDoS e ataques de força bruta**
12
+ - **Abuso de API** (scraping, spam)
13
+ - **Esgotamento de recursos** (CPU, memória, banco)
14
+ - **Custos inesperados** (APIs pagas, cloud billing)
15
+ - **Degradação de serviço** para usuários legítimos
16
+
17
+ ---
18
+
19
+ ## Algoritmos de Rate Limiting
20
+
21
+ | Algoritmo | Comportamento | Melhor Para |
22
+ |-----------|---------------|-------------|
23
+ | **Fixed Window** | Conta requests em janelas fixas (ex: por minuto) | APIs simples, fácil de implementar |
24
+ | **Sliding Window Log** | Janela deslizante precisa | Precisão, mas alto uso de memória |
25
+ | **Sliding Window Counter** | Híbrido: precisão + eficiência | Maioria dos casos |
26
+ | **Token Bucket** | Tokens recarregam gradualmente, permite bursts | APIs que toleram picos curtos |
27
+ | **Leaky Bucket** | Processa em taxa constante, descarta excesso | Suavizar tráfego, filas |
28
+
29
+ ---
30
+
31
+ ## Prompt Base
32
+
33
+ ```text
34
+ Atue como engenheiro de segurança e performance.
35
+
36
+ Preciso implementar rate limiting para:
37
+ - API: [DESCREVA: ex. REST API pública de e-commerce]
38
+ - Endpoints críticos: [LISTE: ex. /login, /checkout, /api/*]
39
+ - Tráfego esperado: [ex. 1000 req/min normal, picos de 5000]
40
+ - Tipos de cliente: [AUTENTICADO/ANÔNIMO/API_KEY/OAUTH]
41
+
42
+ Stack: [ex. Node.js + Express + Redis / Python + FastAPI]
43
+
44
+ Gere implementação completa com:
45
+
46
+ 1. **Algoritmo recomendado** e justificativa
47
+
48
+ 2. **Limites por tier**
49
+ - Anônimo: X req/min
50
+ - Autenticado free: Y req/min
51
+ - Autenticado premium: Z req/min
52
+ - API Key: W req/min
53
+
54
+ 3. **Limites específicos por endpoint**
55
+ - /login: mais restrito (proteção brute force)
56
+ - /search: menos restrito
57
+ - /checkout: moderado
58
+
59
+ 4. **Headers de resposta** (RFC 6585)
60
+ - X-RateLimit-Limit
61
+ - X-RateLimit-Remaining
62
+ - X-RateLimit-Reset
63
+ - Retry-After (quando 429)
64
+
65
+ 5. **Armazenamento** (Redis patterns)
66
+ - Schema de keys
67
+ - TTL
68
+
69
+ 6. **Bypasses seguros**
70
+ - Health checks
71
+ - Requests internos
72
+ - IPs whitelisted
73
+
74
+ 7. **Resposta 429** com:
75
+ - Mensagem clara
76
+ - Retry-After header
77
+ - Link para documentação de limites
78
+
79
+ 8. **Testes automatizados**
80
+ ```
81
+
82
+ ---
83
+
84
+ ## Padrões Obrigatórios
85
+
86
+ ### Headers de Resposta
87
+
88
+ ```http
89
+ HTTP/1.1 200 OK
90
+ X-RateLimit-Limit: 100
91
+ X-RateLimit-Remaining: 95
92
+ X-RateLimit-Reset: 1640000000
93
+ ```
94
+
95
+ ```http
96
+ HTTP/1.1 429 Too Many Requests
97
+ X-RateLimit-Limit: 100
98
+ X-RateLimit-Remaining: 0
99
+ X-RateLimit-Reset: 1640000000
100
+ Retry-After: 60
101
+ Content-Type: application/json
102
+
103
+ {
104
+ "error": "rate_limit_exceeded",
105
+ "message": "Too many requests. Please retry after 60 seconds.",
106
+ "documentation_url": "https://api.example.com/docs/rate-limits",
107
+ "limit": 100,
108
+ "remaining": 0,
109
+ "reset_at": "2024-01-01T12:01:00Z"
110
+ }
111
+ ```
112
+
113
+ ---
114
+
115
+ ## Limites Recomendados por Contexto
116
+
117
+ ### APIs Públicas
118
+
119
+ | Tier | Limite | Janela |
120
+ |------|--------|--------|
121
+ | Anônimo | 60 req | 1 min |
122
+ | Free | 100 req | 1 min |
123
+ | Pro | 1000 req | 1 min |
124
+ | Enterprise | 10000 req | 1 min |
125
+
126
+ ### Endpoints Sensíveis
127
+
128
+ | Endpoint | Limite | Janela | Justificativa |
129
+ |----------|--------|--------|---------------|
130
+ | `/login` | 5 | 1 min | Brute force protection |
131
+ | `/password-reset` | 3 | 15 min | Anti-abuse |
132
+ | `/register` | 10 | 1 hora | Spam accounts |
133
+ | `/search` | 30 | 1 min | Resource intensive |
134
+ | `/export` | 5 | 1 hora | Heavy operation |
135
+
136
+ ---
137
+
138
+ ## Exemplo: Sliding Window Counter (Node.js + Redis)
139
+
140
+ ```typescript
141
+ import { Redis } from 'ioredis';
142
+ import { Request, Response, NextFunction } from 'express';
143
+
144
+ const redis = new Redis();
145
+
146
+ interface RateLimitConfig {
147
+ windowMs: number; // Janela em ms
148
+ maxRequests: number; // Máximo de requests na janela
149
+ keyPrefix?: string; // Prefixo para a key
150
+ }
151
+
152
+ interface RateLimitInfo {
153
+ limit: number;
154
+ remaining: number;
155
+ reset: number;
156
+ }
157
+
158
+ function getClientIdentifier(req: Request): string {
159
+ // Prioridade: API Key > User ID > IP
160
+ const apiKey = req.headers['x-api-key'] as string;
161
+ if (apiKey) return `apikey:${apiKey}`;
162
+
163
+ const userId = (req as any).user?.id;
164
+ if (userId) return `user:${userId}`;
165
+
166
+ const ip = req.ip || req.headers['x-forwarded-for'] || 'unknown';
167
+ return `ip:${ip}`;
168
+ }
169
+
170
+ export function rateLimit(config: RateLimitConfig) {
171
+ const { windowMs, maxRequests, keyPrefix = 'ratelimit' } = config;
172
+ const windowSec = Math.ceil(windowMs / 1000);
173
+
174
+ return async (req: Request, res: Response, next: NextFunction) => {
175
+ const clientId = getClientIdentifier(req);
176
+ const now = Date.now();
177
+ const windowStart = Math.floor(now / windowMs) * windowMs;
178
+ const key = `${keyPrefix}:${clientId}:${windowStart}`;
179
+
180
+ try {
181
+ // Incrementar contador atomicamente
182
+ const current = await redis.incr(key);
183
+
184
+ // Definir TTL apenas na primeira request da janela
185
+ if (current === 1) {
186
+ await redis.expire(key, windowSec + 1);
187
+ }
188
+
189
+ const remaining = Math.max(0, maxRequests - current);
190
+ const resetTime = Math.ceil((windowStart + windowMs) / 1000);
191
+
192
+ // Adicionar headers
193
+ res.setHeader('X-RateLimit-Limit', maxRequests);
194
+ res.setHeader('X-RateLimit-Remaining', remaining);
195
+ res.setHeader('X-RateLimit-Reset', resetTime);
196
+
197
+ if (current > maxRequests) {
198
+ const retryAfter = Math.ceil((windowStart + windowMs - now) / 1000);
199
+ res.setHeader('Retry-After', retryAfter);
200
+
201
+ return res.status(429).json({
202
+ error: 'rate_limit_exceeded',
203
+ message: `Too many requests. Please retry after ${retryAfter} seconds.`,
204
+ limit: maxRequests,
205
+ remaining: 0,
206
+ reset_at: new Date(resetTime * 1000).toISOString()
207
+ });
208
+ }
209
+
210
+ next();
211
+ } catch (error) {
212
+ // Em caso de falha do Redis, permitir request (fail-open)
213
+ console.error('Rate limit error:', error);
214
+ next();
215
+ }
216
+ };
217
+ }
218
+
219
+ // Uso com diferentes limites
220
+ const apiLimiter = rateLimit({ windowMs: 60000, maxRequests: 100 });
221
+ const loginLimiter = rateLimit({ windowMs: 60000, maxRequests: 5, keyPrefix: 'login' });
222
+ const searchLimiter = rateLimit({ windowMs: 60000, maxRequests: 30, keyPrefix: 'search' });
223
+
224
+ app.use('/api/', apiLimiter);
225
+ app.post('/login', loginLimiter, loginHandler);
226
+ app.get('/search', searchLimiter, searchHandler);
227
+ ```
228
+
229
+ ---
230
+
231
+ ## Exemplo: Token Bucket para Bursts
232
+
233
+ ```typescript
234
+ interface TokenBucketConfig {
235
+ bucketSize: number; // Capacidade máxima
236
+ refillRate: number; // Tokens adicionados por segundo
237
+ keyPrefix?: string;
238
+ }
239
+
240
+ export function tokenBucket(config: TokenBucketConfig) {
241
+ const { bucketSize, refillRate, keyPrefix = 'tokenbucket' } = config;
242
+
243
+ return async (req: Request, res: Response, next: NextFunction) => {
244
+ const clientId = getClientIdentifier(req);
245
+ const key = `${keyPrefix}:${clientId}`;
246
+ const now = Date.now();
247
+
248
+ // Lua script para operação atômica
249
+ const luaScript = `
250
+ local key = KEYS[1]
251
+ local now = tonumber(ARGV[1])
252
+ local bucketSize = tonumber(ARGV[2])
253
+ local refillRate = tonumber(ARGV[3])
254
+
255
+ local bucket = redis.call('HMGET', key, 'tokens', 'last_refill')
256
+ local tokens = tonumber(bucket[1]) or bucketSize
257
+ local lastRefill = tonumber(bucket[2]) or now
258
+
259
+ -- Calcular tokens recarregados
260
+ local elapsed = (now - lastRefill) / 1000
261
+ local refilled = math.min(bucketSize, tokens + (elapsed * refillRate))
262
+
263
+ if refilled >= 1 then
264
+ -- Consumir 1 token
265
+ redis.call('HMSET', key, 'tokens', refilled - 1, 'last_refill', now)
266
+ redis.call('EXPIRE', key, 3600)
267
+ return {1, math.floor(refilled - 1), bucketSize}
268
+ else
269
+ return {0, 0, bucketSize}
270
+ end
271
+ `;
272
+
273
+ const result = await redis.eval(luaScript, 1, key, now, bucketSize, refillRate) as number[];
274
+ const [allowed, remaining, limit] = result;
275
+
276
+ res.setHeader('X-RateLimit-Limit', limit);
277
+ res.setHeader('X-RateLimit-Remaining', remaining);
278
+
279
+ if (!allowed) {
280
+ const retryAfter = Math.ceil((1 - remaining) / refillRate);
281
+ res.setHeader('Retry-After', retryAfter);
282
+
283
+ return res.status(429).json({
284
+ error: 'rate_limit_exceeded',
285
+ message: `Too many requests. Retry after ${retryAfter} seconds.`
286
+ });
287
+ }
288
+
289
+ next();
290
+ };
291
+ }
292
+
293
+ // Permite burst de 10, recarrega 2 tokens/segundo
294
+ app.use('/api/', tokenBucket({ bucketSize: 10, refillRate: 2 }));
295
+ ```
296
+
297
+ ---
298
+
299
+ ## Prompt: Revisar Rate Limiting Existente
300
+
301
+ ```text
302
+ Tenho este código de rate limiting implementado:
303
+ [COLE O CÓDIGO]
304
+
305
+ Analise:
306
+ 1. O algoritmo está correto?
307
+ 2. Há condições de corrida (race conditions)?
308
+ 3. Os limites são apropriados para [CONTEXTO]?
309
+ 4. O que acontece se o Redis falhar?
310
+ 5. Sugira melhorias de segurança e performance.
311
+ ```
312
+
313
+ ---
314
+
315
+ ## Prompt: Rate Limiting para Microserviços
316
+
317
+ ```text
318
+ Tenho uma arquitetura de microserviços com:
319
+ - API Gateway (entrada única)
320
+ - Serviços: [auth, orders, payments, notifications]
321
+ - Comunicação interna via [gRPC/HTTP/mensageria]
322
+
323
+ Stack: [DESCREVA]
324
+
325
+ Projete uma estratégia de rate limiting que:
326
+ 1. Limite no gateway (proteção global)
327
+ 2. Limite por serviço (proteção granular)
328
+ 3. Propague limites entre serviços
329
+ 4. Trate rate limiting distribuído (múltiplas instâncias)
330
+ 5. Inclua circuit breaker para dependências lentas
331
+ ```
332
+
333
+ ---
334
+
335
+ ## Checklist de Implementação
336
+
337
+ - [ ] Algoritmo escolhido e justificado
338
+ - [ ] Limites definidos por tier de usuário
339
+ - [ ] Limites específicos para endpoints sensíveis
340
+ - [ ] Headers X-RateLimit-* em todas as respostas
341
+ - [ ] Resposta 429 com Retry-After
342
+ - [ ] Armazenamento distribuído (Redis)
343
+ - [ ] Bypass para health checks e IPs internos
344
+ - [ ] Fail-open em caso de falha do Redis
345
+ - [ ] Logs de rate limiting para análise
346
+ - [ ] Alertas quando limites são atingidos frequentemente
347
+ - [ ] Documentação de limites para desenvolvedores
348
+ - [ ] Testes automatizados
349
+
350
+ ---
351
+
352
+ ## Referências
353
+
354
+ - [RFC 6585 - 429 Too Many Requests](https://tools.ietf.org/html/rfc6585)
355
+ - [Stripe Rate Limiting](https://stripe.com/docs/rate-limits)
356
+ - [Redis Rate Limiting Patterns](https://redis.io/commands/incr#pattern-rate-limiter)
@@ -0,0 +1,227 @@
1
+ # Prompt: Revisão de Conformidade LGPD/GDPR
2
+
3
+ > **Quando usar**: Projetos com dados pessoais de brasileiros ou europeus
4
+ > **Especialista**: [Segurança da Informação](../../02-especialistas/Especialista%20em%20Segurança%20da%20Informação.md)
5
+ > **Nível**: Médio
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/04-modelo/modelo-dominio.md` - Entidades com dados pessoais
14
+ - Lista de tipos de dados coletados
15
+
16
+ Após gerar, salve o resultado em:
17
+ - `docs/09-seguranca/lgpd-compliance.md`
18
+
19
+ ---
20
+
21
+ ## Prompt Completo
22
+
23
+ ```text
24
+ Atue como especialista em privacidade e proteção de dados (DPO).
25
+
26
+ ## Contexto do Projeto
27
+
28
+ [COLE O CONTEÚDO DE docs/CONTEXTO.md]
29
+
30
+ ## Tipos de Dados Coletados
31
+
32
+ Liste todos os dados pessoais:
33
+ - [ ] Nome, CPF, RG
34
+ - [ ] Email, telefone
35
+ - [ ] Endereço
36
+ - [ ] Dados de pagamento
37
+ - [ ] Geolocalização
38
+ - [ ] Cookies e tracking
39
+ - [ ] Dados de saúde
40
+ - [ ] Dados biométricos
41
+ - [ ] Outros: [especificar]
42
+
43
+ ## Titulares dos Dados
44
+
45
+ - Quem são: [clientes, funcionários, fornecedores]
46
+ - Quantidade estimada: [volume de registros]
47
+ - Localização: [Brasil, UE, outros]
48
+
49
+ ## Finalidades do Tratamento
50
+
51
+ Para que os dados são usados:
52
+ - [ ] Cadastro e login
53
+ - [ ] Processamento de pedidos
54
+ - [ ] Marketing direto
55
+ - [ ] Analytics e melhoria do produto
56
+ - [ ] Obrigações legais
57
+ - [ ] Outros: [especificar]
58
+
59
+ ## Compartilhamento de Dados
60
+
61
+ - Terceiros: [processadores de pagamento, analytics, email marketing]
62
+ - Transferência internacional: [sim/não, para onde]
63
+
64
+ ---
65
+
66
+ ## Sua Missão
67
+
68
+ Realize uma análise completa de conformidade LGPD:
69
+
70
+ ### 1. Inventário de Dados Pessoais
71
+
72
+ | Dado | Categoria | Base Legal | Finalidade | Retenção | Armazenamento |
73
+ |------|-----------|------------|------------|----------|---------------|
74
+ | [Nome] | Identificação | Contrato | Cadastro | [período] | [local] |
75
+
76
+ ### 2. Análise de Bases Legais (Art. 7º LGPD)
77
+
78
+ Para cada tratamento, justifique a base legal:
79
+
80
+ | Tratamento | Base Legal | Justificativa |
81
+ |------------|------------|---------------|
82
+ | [ex: Cadastro] | Execução de contrato | Necessário para prestar o serviço |
83
+ | [ex: Newsletter] | Consentimento | Opt-in explícito no cadastro |
84
+ | [ex: Retenção fiscal] | Obrigação legal | Lei 9.613 (5 anos) |
85
+
86
+ ### 3. Direitos dos Titulares (Art. 18º)
87
+
88
+ Como o sistema atende cada direito:
89
+
90
+ | Direito | Implementado | Como Exercer |
91
+ |---------|--------------|--------------|
92
+ | Confirmação de tratamento | [Sim/Não/Parcial] | [descrição] |
93
+ | Acesso aos dados | [Sim/Não/Parcial] | [descrição] |
94
+ | Correção | [Sim/Não/Parcial] | [descrição] |
95
+ | Anonimização/bloqueio | [Sim/Não/Parcial] | [descrição] |
96
+ | Portabilidade | [Sim/Não/Parcial] | [descrição] |
97
+ | Eliminação | [Sim/Não/Parcial] | [descrição] |
98
+ | Revogação de consentimento | [Sim/Não/Parcial] | [descrição] |
99
+
100
+ ### 4. Avaliação de Risco de Privacidade
101
+
102
+ | Risco | Probabilidade | Impacto | Nível | Mitigação |
103
+ |-------|---------------|---------|-------|-----------|
104
+ | Vazamento de dados | [1-5] | [1-5] | [P*I] | [ação] |
105
+ | Uso indevido | [1-5] | [1-5] | [P*I] | [ação] |
106
+ | Retenção excessiva | [1-5] | [1-5] | [P*I] | [ação] |
107
+
108
+ ### 5. Checklist de Conformidade Técnica
109
+
110
+ #### Coleta de Dados
111
+ - [ ] Política de privacidade clara e acessível
112
+ - [ ] Consentimento com opt-in (não opt-out)
113
+ - [ ] Coleta apenas de dados necessários (minimização)
114
+ - [ ] Checkbox de aceite desvinculado de outros termos
115
+
116
+ #### Armazenamento
117
+ - [ ] Dados criptografados em repouso
118
+ - [ ] Acesso restrito por necessidade
119
+ - [ ] Logs de acesso a dados sensíveis
120
+ - [ ] Backup criptografado
121
+
122
+ #### Compartilhamento
123
+ - [ ] Contratos com operadores (Art. 39)
124
+ - [ ] Cláusulas de proteção de dados
125
+ - [ ] Transferência internacional com salvaguardas
126
+
127
+ #### Retenção e Eliminação
128
+ - [ ] Política de retenção documentada
129
+ - [ ] Processo de eliminação automática
130
+ - [ ] Anonimização quando possível
131
+
132
+ ### 6. Relatório de Impacto (RIPD)
133
+
134
+ Se aplicável (tratamento de alto risco):
135
+ - Necessidade e proporcionalidade
136
+ - Riscos aos titulares
137
+ - Medidas de mitigação
138
+ - Parecer do encarregado
139
+
140
+ ### 7. Plano de Ação
141
+
142
+ | Ação | Prioridade | Responsável | Prazo |
143
+ |------|------------|-------------|-------|
144
+ | [ação] | [Alta/Média/Baixa] | [quem] | [quando] |
145
+
146
+ ### 8. Templates de Documentos
147
+
148
+ Gere drafts de:
149
+ - Política de Privacidade
150
+ - Termo de Consentimento
151
+ - Processo de atendimento a titulares
152
+ ```
153
+
154
+ ---
155
+
156
+ ## Exemplo de Uso
157
+
158
+ ```text
159
+ Atue como especialista em privacidade e proteção de dados (DPO).
160
+
161
+ ## Contexto do Projeto
162
+
163
+ App de delivery de comida. Clientes fazem pedidos, restaurantes recebem e entregadores fazem a entrega.
164
+
165
+ ## Tipos de Dados Coletados
166
+
167
+ - [x] Nome, CPF
168
+ - [x] Email, telefone
169
+ - [x] Endereço
170
+ - [x] Dados de pagamento (tokenizado via Stripe)
171
+ - [x] Geolocalização (para entregas)
172
+ - [x] Cookies e tracking
173
+
174
+ ## Titulares dos Dados
175
+
176
+ - Clientes (consumidores finais)
177
+ - Entregadores (parceiros)
178
+ - Restaurantes (PJ, mas com dados de representantes)
179
+ - Volume: ~10.000 clientes, ~500 entregadores
180
+
181
+ ## Finalidades
182
+
183
+ - [x] Cadastro e login
184
+ - [x] Processamento de pedidos
185
+ - [x] Marketing direto (promoções)
186
+ - [x] Analytics
187
+
188
+ ## Compartilhamento
189
+
190
+ - Stripe (pagamentos)
191
+ - Google Analytics
192
+ - Firebase (push notifications)
193
+ ```
194
+
195
+ ---
196
+
197
+ ## Resposta Esperada (Resumo)
198
+
199
+ ### Gaps Críticos Identificados
200
+
201
+ | # | Gap | Risco | Ação |
202
+ |---|-----|-------|------|
203
+ | 1 | Sem política de privacidade | Alto | Criar e publicar |
204
+ | 2 | Geolocalização sem consentimento específico | Alto | Adicionar opt-in |
205
+ | 3 | Sem processo para exclusão de conta | Médio | Implementar feature |
206
+ | 4 | Analytics sem anonimização | Médio | Configurar IP anonymization |
207
+
208
+ ### Cronograma Sugerido
209
+
210
+ - **Semana 1**: Política de privacidade + termos
211
+ - **Semana 2**: Consentimento granular (geolocalização, marketing)
212
+ - **Semana 3**: Feature de exclusão de conta
213
+ - **Semana 4**: Revisão de terceiros e contratos
214
+
215
+ ---
216
+
217
+ ## Checklist Pós-Geração
218
+
219
+ - [ ] Inventário de dados pessoais completo
220
+ - [ ] Base legal identificada para cada tratamento
221
+ - [ ] Direitos dos titulares mapeados
222
+ - [ ] Gaps de conformidade identificados
223
+ - [ ] Avaliação de risco realizada
224
+ - [ ] Checklist técnico verificado
225
+ - [ ] RIPD elaborado (se alto risco)
226
+ - [ ] Plano de ação priorizado
227
+ - [ ] Salvar em `docs/09-seguranca/lgpd-compliance.md`