@maestro-ai/mcp-server 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +266 -227
- package/dist/content/design-system/README.md +231 -231
- package/dist/content/design-system/indexes/README.md +211 -211
- package/dist/content/design-system/indexes/colors-index.md +156 -156
- package/dist/content/design-system/indexes/quick-search.md +111 -111
- package/dist/content/design-system/indexes/stacks-index.md +341 -341
- package/dist/content/examples/Exemplo de Fluxo Completo com Java e Spring Boot.md +249 -249
- package/dist/content/examples/Exemplo de Fluxo Completo com Laravel e Filament.md +277 -277
- package/dist/content/examples/Exemplo de Fluxo Completo com Laravel e Livewire.md +260 -260
- package/dist/content/examples/Exemplo de Fluxo Completo com Node e NestJS.md +257 -257
- package/dist/content/guides/Cat/303/241logo de Stacks para Cloud Moderna.md" +119 -119
- package/dist/content/guides/Cat/303/241logo de Stacks para Hospedagem Compartilhada.md" +147 -147
- package/dist/content/guides/Checklist Mestre de Entrega.md +68 -68
- package/dist/content/guides/Gates de Qualidade.md +209 -209
- package/dist/content/guides/Guia de Adi/303/247/303/243o de Novas Funcionalidades.md" +355 -355
- package/dist/content/guides/Guia de Chaos Engineering.md +267 -267
- package/dist/content/guides/Guia de Debugging com IA.md +135 -135
- package/dist/content/guides/Guia de Estrat/303/251gias de Cache.md" +352 -352
- package/dist/content/guides/Guia de Migrations Zero-Downtime.md +311 -311
- package/dist/content/guides/Guia de Multi-tenancy.md +368 -368
- package/dist/content/guides/Guia de Otimiza/303/247/303/243o de Custos Cloud.md" +195 -195
- package/dist/content/guides/Guia de Refatora/303/247/303/243o de C/303/263digo Legado com IA.md" +162 -162
- package/dist/content/guides/Guia de SLOs e Error Budgets.md +315 -315
- package/dist/content/guides/M/303/251tricas de Efici/303/252ncia do Desenvolvimento com IA.md" +93 -93
- package/dist/content/guides/Rules base.md +90 -90
- package/dist/content/playbook/Playbook de Desenvolvimento com IA.md +364 -364
- package/dist/content/prompts/README.md +203 -203
- package/dist/content/prompts/acessibilidade/analise-acessibilidade.md +257 -257
- package/dist/content/prompts/apis/design-api-rest.md +303 -303
- package/dist/content/prompts/apis/idempotencia.md +254 -254
- package/dist/content/prompts/apis/versionamento.md +313 -313
- package/dist/content/prompts/arquitetura/arquitetura-c4-completo.md +190 -190
- package/dist/content/prompts/arquitetura/clean-architecture.md +151 -151
- package/dist/content/prompts/arquitetura/ddd-bounded-contexts.md +183 -183
- package/dist/content/prompts/arquitetura/ddd-cqrs.md +176 -176
- package/dist/content/prompts/arquitetura/modelo-dominio.md +207 -207
- package/dist/content/prompts/arquitetura/multi-tenancy.md +235 -235
- package/dist/content/prompts/database/migrations-zero-downtime.md +192 -192
- package/dist/content/prompts/database/otimizacao-queries.md +296 -296
- package/dist/content/prompts/desenvolvimento/code-review.md +301 -301
- package/dist/content/prompts/desenvolvimento/gerar-servico.md +271 -271
- package/dist/content/prompts/devops/docker-compose.md +336 -336
- package/dist/content/prompts/devops/feature-flags.md +374 -374
- package/dist/content/prompts/devops/kubernetes-deploy.md +460 -460
- package/dist/content/prompts/devops/pipeline-cicd.md +358 -358
- package/dist/content/prompts/devops/terraform-iac.md +502 -502
- package/dist/content/prompts/escalabilidade/analise-performance.md +240 -240
- package/dist/content/prompts/escalabilidade/analise-performance.txt +94 -94
- package/dist/content/prompts/escalabilidade/caching.md +255 -255
- package/dist/content/prompts/observabilidade/chaos-testing.md +237 -237
- package/dist/content/prompts/observabilidade/estrategia-observabilidade.md +263 -263
- package/dist/content/prompts/observabilidade/estrategia-observabilidade.txt +134 -134
- package/dist/content/prompts/observabilidade/slos.md +215 -215
- package/dist/content/prompts/produto/discovery-inicial.md +203 -203
- package/dist/content/prompts/produto/discovery-inicial.txt +33 -33
- package/dist/content/prompts/requisitos/refinar-requisitos.md +232 -232
- package/dist/content/prompts/requisitos/refinar-requisitos.txt +40 -40
- package/dist/content/prompts/seguranca/analise-seguranca.md +243 -243
- package/dist/content/prompts/seguranca/pentest-checklist.md +333 -333
- package/dist/content/prompts/seguranca/rate-limiting.md +356 -356
- package/dist/content/prompts/seguranca/revisao-lgpd.md +227 -227
- package/dist/content/prompts/seguranca/threat-modeling.md +224 -224
- package/dist/content/prompts/testes/contract-testing.md +340 -340
- package/dist/content/prompts/testes/gerar-testes-unitarios.md +474 -474
- package/dist/content/prompts/testes/testes-e2e.md +460 -460
- package/dist/content/prompts/testes/testes-integracao.md +418 -418
- package/dist/content/prompts/testes/testes-performance.md +458 -458
- package/dist/content/prompts/ux/gerar-ui-stitch.md +151 -151
- package/dist/content/rules/RULES.md +835 -835
- package/dist/content/rules/adapters/copilot.md +10 -10
- package/dist/content/rules/adapters/cursor.md +10 -10
- package/dist/content/rules/adapters/gemini.md +13 -13
- package/dist/content/rules/adapters/windsurf.md +10 -10
- package/dist/content/specialists/Especialista em Acessibilidade.md +266 -266
- package/dist/content/specialists/Especialista em An/303/241lise de Testes.md" +434 -434
- package/dist/content/specialists/Especialista em Arquitetura Avan/303/247ada.md" +358 -358
- package/dist/content/specialists/Especialista em Arquitetura de Software.md +177 -177
- package/dist/content/specialists/Especialista em Banco de Dados.md +260 -260
- package/dist/content/specialists/Especialista em Contrato de API.md +172 -172
- package/dist/content/specialists/Especialista em Dados e Analytics com IA.md +246 -246
- package/dist/content/specialists/Especialista em Debugging e Troubleshooting.md +191 -191
- package/dist/content/specialists/Especialista em Desenvolvimento Frontend.md +477 -477
- package/dist/content/specialists/Especialista em Desenvolvimento Mobile.md +241 -241
- package/dist/content/specialists/Especialista em Desenvolvimento e Vibe Coding Estruturado.md +417 -417
- package/dist/content/specialists/Especialista em DevOps e Infraestrutura.md +294 -294
- package/dist/content/specialists/Especialista em Documenta/303/247/303/243o T/303/251cnica.md" +227 -227
- package/dist/content/specialists/Especialista em Engenharia de Requisitos com IA.md +299 -299
- package/dist/content/specialists/Especialista em Explora/303/247/303/243o de Codebase.md" +179 -179
- package/dist/content/specialists/Especialista em Gest/303/243o de Produto.md" +179 -179
- package/dist/content/specialists/Especialista em Migra/303/247/303/243o e Moderniza/303/247/303/243o.md" +410 -410
- package/dist/content/specialists/Especialista em Modelagem e Arquitetura de Dom/303/255nio com IA.md" +248 -248
- package/dist/content/specialists/Especialista em Observabilidade.md +415 -415
- package/dist/content/specialists/Especialista em Performance e Escalabilidade.md +373 -373
- package/dist/content/specialists/Especialista em Plano de Execu/303/247/303/243o com IA.md" +341 -341
- package/dist/content/specialists/Especialista em Prototipagem R/303/241pida com Google Stitch.md" +419 -419
- package/dist/content/specialists/Especialista em Seguran/303/247a da Informa/303/247/303/243o.md" +508 -508
- package/dist/content/specialists/Especialista em UX Design.md +453 -453
- package/dist/content/specialists/INDEX.md +43 -43
- package/dist/content/templates/PRD.md +165 -165
- package/dist/content/templates/README.md +65 -65
- package/dist/content/templates/adr.md +103 -103
- package/dist/content/templates/arquitetura.md +279 -279
- package/dist/content/templates/backlog.md +185 -185
- package/dist/content/templates/checklist-seguranca.md +180 -180
- package/dist/content/templates/contexto.md +120 -120
- package/dist/content/templates/criterios-aceite.md +99 -99
- package/dist/content/templates/design-banco.md +270 -270
- package/dist/content/templates/design-doc.md +240 -240
- package/dist/content/templates/feature.md +88 -88
- package/dist/content/templates/historia-backend.md +84 -84
- package/dist/content/templates/historia-frontend.md +75 -75
- package/dist/content/templates/historia-usuario.md +125 -125
- package/dist/content/templates/mapa-navegacao.md +133 -133
- package/dist/content/templates/matriz-rastreabilidade.md +121 -121
- package/dist/content/templates/modelo-dominio.md +219 -219
- package/dist/content/templates/plano-testes.md +199 -199
- package/dist/content/templates/prototipo-stitch.md +138 -138
- package/dist/content/templates/requisitos.md +162 -162
- package/dist/content/templates/slo-sli.md +197 -197
- package/dist/content/workflows/README-MCP.md +363 -363
- package/dist/content/workflows/mcp-debug.md +506 -506
- package/dist/content/workflows/mcp-feature.md +385 -385
- package/dist/content/workflows/mcp-gate.md +413 -413
- package/dist/content/workflows/mcp-next.md +388 -388
- package/dist/content/workflows/mcp-refactor.md +600 -600
- package/dist/content/workflows/mcp-start.md +304 -304
- package/dist/content/workflows/mcp-status.md +400 -400
- package/dist/gates/tiers.test.js +14 -14
- package/dist/index.js +133 -133
- package/dist/resources/index.js +61 -61
- package/dist/stdio.js +39 -32
- package/dist/stdio.js.map +1 -1
- package/dist/tools/analise/performance.js +23 -23
- package/dist/tools/analise/qualidade.js +23 -23
- package/dist/tools/analise/relatorio.js +24 -24
- package/dist/tools/analise/seguranca.js +28 -28
- package/dist/tools/aprovar-gate.js +81 -81
- package/dist/tools/atualizar-codebase.js +18 -18
- package/dist/tools/avaliar-entregavel.js +18 -18
- package/dist/tools/carregar-projeto.d.ts.map +1 -1
- package/dist/tools/carregar-projeto.js +91 -116
- package/dist/tools/carregar-projeto.js.map +1 -1
- package/dist/tools/classificar.js +36 -36
- package/dist/tools/confirmar-classificacao.js +36 -36
- package/dist/tools/confirmar-stitch.js +75 -75
- package/dist/tools/contexto.js +56 -56
- package/dist/tools/fluxos-alternativos.js +98 -98
- package/dist/tools/implementar-historia.js +63 -63
- package/dist/tools/iniciar-projeto.d.ts.map +1 -1
- package/dist/tools/iniciar-projeto.js +139 -224
- package/dist/tools/iniciar-projeto.js.map +1 -1
- package/dist/tools/proximo.d.ts.map +1 -1
- package/dist/tools/proximo.js +224 -252
- package/dist/tools/proximo.js.map +1 -1
- package/dist/tools/salvar.js +59 -59
- package/dist/tools/status.d.ts.map +1 -1
- package/dist/tools/status.js +64 -93
- package/dist/tools/status.js.map +1 -1
- package/dist/tools/validar-gate.js +35 -35
- package/dist/types/response.js +11 -11
- package/dist/utils/instructions.js +48 -48
- package/dist/utils/prompt-mapper.js +16 -16
- package/dist/utils/system-md.js +33 -33
- package/package.json +67 -67
- package/dist/content/content/design-system/README.md +0 -231
- package/dist/content/content/design-system/data/charts.csv +0 -26
- package/dist/content/content/design-system/data/colors.csv +0 -97
- package/dist/content/content/design-system/data/icons.csv +0 -101
- package/dist/content/content/design-system/data/landing.csv +0 -31
- package/dist/content/content/design-system/data/products.csv +0 -97
- package/dist/content/content/design-system/data/prompts.csv +0 -24
- package/dist/content/content/design-system/data/react-performance.csv +0 -45
- package/dist/content/content/design-system/data/styles.csv +0 -59
- package/dist/content/content/design-system/data/typography.csv +0 -58
- package/dist/content/content/design-system/data/ui-reasoning.csv +0 -101
- package/dist/content/content/design-system/data/ux-guidelines.csv +0 -100
- package/dist/content/content/design-system/data/web-interface.csv +0 -31
- package/dist/content/content/design-system/indexes/README.md +0 -211
- package/dist/content/content/design-system/indexes/colors-index.md +0 -156
- package/dist/content/content/design-system/indexes/quick-search.md +0 -111
- package/dist/content/content/design-system/indexes/stacks-index.md +0 -341
- package/dist/content/content/design-system/stacks/flutter.csv +0 -53
- package/dist/content/content/design-system/stacks/html-tailwind.csv +0 -56
- package/dist/content/content/design-system/stacks/jetpack-compose.csv +0 -53
- package/dist/content/content/design-system/stacks/nextjs.csv +0 -53
- package/dist/content/content/design-system/stacks/nuxt-ui.csv +0 -51
- package/dist/content/content/design-system/stacks/nuxtjs.csv +0 -59
- package/dist/content/content/design-system/stacks/react-native.csv +0 -52
- package/dist/content/content/design-system/stacks/react.csv +0 -54
- package/dist/content/content/design-system/stacks/shadcn.csv +0 -61
- package/dist/content/content/design-system/stacks/svelte.csv +0 -54
- package/dist/content/content/design-system/stacks/swiftui.csv +0 -51
- package/dist/content/content/design-system/stacks/vue.csv +0 -50
- package/dist/content/content/examples/Exemplo de Fluxo Completo com Java e Spring Boot.md +0 -250
- package/dist/content/content/examples/Exemplo de Fluxo Completo com Laravel e Filament.md +0 -278
- package/dist/content/content/examples/Exemplo de Fluxo Completo com Laravel e Livewire.md +0 -261
- package/dist/content/content/examples/Exemplo de Fluxo Completo com Node e NestJS.md +0 -258
- package/dist/content/content/guides/Cat/303/241logo de Stacks para Cloud Moderna.md" +0 -119
- package/dist/content/content/guides/Cat/303/241logo de Stacks para Hospedagem Compartilhada.md" +0 -147
- package/dist/content/content/guides/Checklist Mestre de Entrega.md +0 -68
- package/dist/content/content/guides/Gates de Qualidade.md +0 -209
- package/dist/content/content/guides/Guia de Adi/303/247/303/243o de Novas Funcionalidades.md" +0 -355
- package/dist/content/content/guides/Guia de Chaos Engineering.md +0 -267
- package/dist/content/content/guides/Guia de Debugging com IA.md +0 -135
- package/dist/content/content/guides/Guia de Estrat/303/251gias de Cache.md" +0 -352
- package/dist/content/content/guides/Guia de Migrations Zero-Downtime.md +0 -311
- package/dist/content/content/guides/Guia de Multi-tenancy.md +0 -368
- package/dist/content/content/guides/Guia de Otimiza/303/247/303/243o de Custos Cloud.md" +0 -195
- package/dist/content/content/guides/Guia de Refatora/303/247/303/243o de C/303/263digo Legado com IA.md" +0 -162
- package/dist/content/content/guides/Guia de SLOs e Error Budgets.md +0 -315
- package/dist/content/content/guides/M/303/251tricas de Efici/303/252ncia do Desenvolvimento com IA.md" +0 -93
- package/dist/content/content/guides/Rules base.md +0 -90
- package/dist/content/content/playbook/Playbook de Desenvolvimento com IA.md +0 -364
- package/dist/content/content/prompts/README.md +0 -203
- package/dist/content/content/prompts/acessibilidade/analise-acessibilidade.md +0 -257
- package/dist/content/content/prompts/apis/design-api-rest.md +0 -303
- package/dist/content/content/prompts/apis/idempotencia.md +0 -254
- package/dist/content/content/prompts/apis/versionamento.md +0 -313
- package/dist/content/content/prompts/arquitetura/arquitetura-c4-completo.md +0 -190
- package/dist/content/content/prompts/arquitetura/clean-architecture.md +0 -151
- package/dist/content/content/prompts/arquitetura/ddd-bounded-contexts.md +0 -183
- package/dist/content/content/prompts/arquitetura/ddd-cqrs.md +0 -176
- package/dist/content/content/prompts/arquitetura/modelo-dominio.md +0 -207
- package/dist/content/content/prompts/arquitetura/multi-tenancy.md +0 -235
- package/dist/content/content/prompts/database/migrations-zero-downtime.md +0 -192
- package/dist/content/content/prompts/database/otimizacao-queries.md +0 -296
- package/dist/content/content/prompts/desenvolvimento/code-review.md +0 -301
- package/dist/content/content/prompts/desenvolvimento/gerar-servico.md +0 -271
- package/dist/content/content/prompts/devops/docker-compose.md +0 -336
- package/dist/content/content/prompts/devops/feature-flags.md +0 -374
- package/dist/content/content/prompts/devops/kubernetes-deploy.md +0 -460
- package/dist/content/content/prompts/devops/pipeline-cicd.md +0 -358
- package/dist/content/content/prompts/devops/terraform-iac.md +0 -502
- package/dist/content/content/prompts/escalabilidade/analise-performance.md +0 -240
- package/dist/content/content/prompts/escalabilidade/analise-performance.txt +0 -94
- package/dist/content/content/prompts/escalabilidade/caching.md +0 -255
- package/dist/content/content/prompts/observabilidade/chaos-testing.md +0 -237
- package/dist/content/content/prompts/observabilidade/estrategia-observabilidade.md +0 -263
- package/dist/content/content/prompts/observabilidade/estrategia-observabilidade.txt +0 -134
- package/dist/content/content/prompts/observabilidade/slos.md +0 -215
- package/dist/content/content/prompts/produto/discovery-inicial.md +0 -203
- package/dist/content/content/prompts/produto/discovery-inicial.txt +0 -33
- package/dist/content/content/prompts/requisitos/refinar-requisitos.md +0 -232
- package/dist/content/content/prompts/requisitos/refinar-requisitos.txt +0 -40
- package/dist/content/content/prompts/seguranca/analise-seguranca.md +0 -243
- package/dist/content/content/prompts/seguranca/pentest-checklist.md +0 -333
- package/dist/content/content/prompts/seguranca/rate-limiting.md +0 -356
- package/dist/content/content/prompts/seguranca/revisao-lgpd.md +0 -227
- package/dist/content/content/prompts/seguranca/threat-modeling.md +0 -224
- package/dist/content/content/prompts/testes/contract-testing.md +0 -340
- package/dist/content/content/prompts/testes/gerar-testes-unitarios.md +0 -474
- package/dist/content/content/prompts/testes/testes-e2e.md +0 -460
- package/dist/content/content/prompts/testes/testes-integracao.md +0 -418
- package/dist/content/content/prompts/testes/testes-performance.md +0 -458
- package/dist/content/content/prompts/ux/gerar-ui-stitch.md +0 -151
- package/dist/content/content/rules/GEMINI.md +0 -841
- package/dist/content/content/rules/RULES.md +0 -835
- package/dist/content/content/rules/adapters/copilot.md +0 -10
- package/dist/content/content/rules/adapters/cursor.md +0 -10
- package/dist/content/content/rules/adapters/gemini.md +0 -13
- package/dist/content/content/rules/adapters/windsurf.md +0 -10
- package/dist/content/content/skills/api-patterns/SKILL.md +0 -81
- package/dist/content/content/skills/api-patterns/api-style.md +0 -42
- package/dist/content/content/skills/api-patterns/auth.md +0 -24
- package/dist/content/content/skills/api-patterns/documentation.md +0 -26
- package/dist/content/content/skills/api-patterns/graphql.md +0 -41
- package/dist/content/content/skills/api-patterns/rate-limiting.md +0 -31
- package/dist/content/content/skills/api-patterns/response.md +0 -37
- package/dist/content/content/skills/api-patterns/rest.md +0 -40
- package/dist/content/content/skills/api-patterns/scripts/api_validator.py +0 -211
- package/dist/content/content/skills/api-patterns/security-testing.md +0 -122
- package/dist/content/content/skills/api-patterns/trpc.md +0 -41
- package/dist/content/content/skills/api-patterns/versioning.md +0 -22
- package/dist/content/content/skills/app-builder/SKILL.md +0 -75
- package/dist/content/content/skills/app-builder/agent-coordination.md +0 -71
- package/dist/content/content/skills/app-builder/feature-building.md +0 -53
- package/dist/content/content/skills/app-builder/project-detection.md +0 -34
- package/dist/content/content/skills/app-builder/scaffolding.md +0 -118
- package/dist/content/content/skills/app-builder/tech-stack.md +0 -40
- package/dist/content/content/skills/app-builder/templates/SKILL.md +0 -39
- package/dist/content/content/skills/app-builder/templates/astro-static/TEMPLATE.md +0 -76
- package/dist/content/content/skills/app-builder/templates/chrome-extension/TEMPLATE.md +0 -92
- package/dist/content/content/skills/app-builder/templates/cli-tool/TEMPLATE.md +0 -88
- package/dist/content/content/skills/app-builder/templates/electron-desktop/TEMPLATE.md +0 -88
- package/dist/content/content/skills/app-builder/templates/express-api/TEMPLATE.md +0 -83
- package/dist/content/content/skills/app-builder/templates/flutter-app/TEMPLATE.md +0 -90
- package/dist/content/content/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +0 -90
- package/dist/content/content/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +0 -82
- package/dist/content/content/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +0 -100
- package/dist/content/content/skills/app-builder/templates/nextjs-static/TEMPLATE.md +0 -106
- package/dist/content/content/skills/app-builder/templates/nuxt-app/TEMPLATE.md +0 -101
- package/dist/content/content/skills/app-builder/templates/python-fastapi/TEMPLATE.md +0 -83
- package/dist/content/content/skills/app-builder/templates/react-native-app/TEMPLATE.md +0 -93
- package/dist/content/content/skills/architecture/SKILL.md +0 -55
- package/dist/content/content/skills/architecture/context-discovery.md +0 -43
- package/dist/content/content/skills/architecture/examples.md +0 -94
- package/dist/content/content/skills/architecture/pattern-selection.md +0 -68
- package/dist/content/content/skills/architecture/patterns-reference.md +0 -50
- package/dist/content/content/skills/architecture/trade-off-analysis.md +0 -77
- package/dist/content/content/skills/bash-linux/SKILL.md +0 -199
- package/dist/content/content/skills/behavioral-modes/SKILL.md +0 -242
- package/dist/content/content/skills/brainstorming/SKILL.md +0 -163
- package/dist/content/content/skills/brainstorming/dynamic-questioning.md +0 -350
- package/dist/content/content/skills/clean-code/SKILL.md +0 -201
- package/dist/content/content/skills/code-review-checklist/SKILL.md +0 -109
- package/dist/content/content/skills/database-design/SKILL.md +0 -52
- package/dist/content/content/skills/database-design/database-selection.md +0 -43
- package/dist/content/content/skills/database-design/indexing.md +0 -39
- package/dist/content/content/skills/database-design/migrations.md +0 -48
- package/dist/content/content/skills/database-design/optimization.md +0 -36
- package/dist/content/content/skills/database-design/orm-selection.md +0 -30
- package/dist/content/content/skills/database-design/schema-design.md +0 -56
- package/dist/content/content/skills/database-design/scripts/schema_validator.py +0 -172
- package/dist/content/content/skills/deployment-procedures/SKILL.md +0 -241
- package/dist/content/content/skills/doc.md +0 -177
- package/dist/content/content/skills/documentation-templates/SKILL.md +0 -194
- package/dist/content/content/skills/frontend-design/SKILL.md +0 -396
- package/dist/content/content/skills/frontend-design/animation-guide.md +0 -331
- package/dist/content/content/skills/frontend-design/color-system.md +0 -311
- package/dist/content/content/skills/frontend-design/decision-trees.md +0 -418
- package/dist/content/content/skills/frontend-design/motion-graphics.md +0 -306
- package/dist/content/content/skills/frontend-design/scripts/accessibility_checker.py +0 -183
- package/dist/content/content/skills/frontend-design/scripts/ux_audit.py +0 -722
- package/dist/content/content/skills/frontend-design/typography-system.md +0 -345
- package/dist/content/content/skills/frontend-design/ux-psychology.md +0 -541
- package/dist/content/content/skills/frontend-design/visual-effects.md +0 -383
- package/dist/content/content/skills/game-development/2d-games/SKILL.md +0 -119
- package/dist/content/content/skills/game-development/3d-games/SKILL.md +0 -135
- package/dist/content/content/skills/game-development/SKILL.md +0 -167
- package/dist/content/content/skills/game-development/game-art/SKILL.md +0 -185
- package/dist/content/content/skills/game-development/game-audio/SKILL.md +0 -190
- package/dist/content/content/skills/game-development/game-design/SKILL.md +0 -129
- package/dist/content/content/skills/game-development/mobile-games/SKILL.md +0 -108
- package/dist/content/content/skills/game-development/multiplayer/SKILL.md +0 -132
- package/dist/content/content/skills/game-development/pc-games/SKILL.md +0 -144
- package/dist/content/content/skills/game-development/vr-ar/SKILL.md +0 -123
- package/dist/content/content/skills/game-development/web-games/SKILL.md +0 -150
- package/dist/content/content/skills/geo-fundamentals/SKILL.md +0 -156
- package/dist/content/content/skills/geo-fundamentals/scripts/geo_checker.py +0 -289
- package/dist/content/content/skills/i18n-localization/SKILL.md +0 -154
- package/dist/content/content/skills/i18n-localization/scripts/i18n_checker.py +0 -241
- package/dist/content/content/skills/intelligent-routing/SKILL.md +0 -334
- package/dist/content/content/skills/lint-and-validate/SKILL.md +0 -45
- package/dist/content/content/skills/lint-and-validate/scripts/lint_runner.py +0 -172
- package/dist/content/content/skills/lint-and-validate/scripts/type_coverage.py +0 -173
- package/dist/content/content/skills/mcp-builder/SKILL.md +0 -176
- package/dist/content/content/skills/mobile-design/SKILL.md +0 -394
- package/dist/content/content/skills/mobile-design/decision-trees.md +0 -516
- package/dist/content/content/skills/mobile-design/mobile-backend.md +0 -491
- package/dist/content/content/skills/mobile-design/mobile-color-system.md +0 -420
- package/dist/content/content/skills/mobile-design/mobile-debugging.md +0 -122
- package/dist/content/content/skills/mobile-design/mobile-design-thinking.md +0 -357
- package/dist/content/content/skills/mobile-design/mobile-navigation.md +0 -458
- package/dist/content/content/skills/mobile-design/mobile-performance.md +0 -767
- package/dist/content/content/skills/mobile-design/mobile-testing.md +0 -356
- package/dist/content/content/skills/mobile-design/mobile-typography.md +0 -433
- package/dist/content/content/skills/mobile-design/platform-android.md +0 -666
- package/dist/content/content/skills/mobile-design/platform-ios.md +0 -561
- package/dist/content/content/skills/mobile-design/scripts/mobile_audit.py +0 -670
- package/dist/content/content/skills/mobile-design/touch-psychology.md +0 -537
- package/dist/content/content/skills/nextjs-best-practices/SKILL.md +0 -203
- package/dist/content/content/skills/nodejs-best-practices/SKILL.md +0 -333
- package/dist/content/content/skills/parallel-agents/SKILL.md +0 -175
- package/dist/content/content/skills/performance-profiling/SKILL.md +0 -143
- package/dist/content/content/skills/performance-profiling/scripts/lighthouse_audit.py +0 -76
- package/dist/content/content/skills/plan-writing/SKILL.md +0 -152
- package/dist/content/content/skills/powershell-windows/SKILL.md +0 -167
- package/dist/content/content/skills/python-patterns/SKILL.md +0 -441
- package/dist/content/content/skills/react-patterns/SKILL.md +0 -198
- package/dist/content/content/skills/red-team-tactics/SKILL.md +0 -199
- package/dist/content/content/skills/seo-fundamentals/SKILL.md +0 -129
- package/dist/content/content/skills/seo-fundamentals/scripts/seo_checker.py +0 -219
- package/dist/content/content/skills/server-management/SKILL.md +0 -161
- package/dist/content/content/skills/systematic-debugging/SKILL.md +0 -109
- package/dist/content/content/skills/tailwind-patterns/SKILL.md +0 -269
- package/dist/content/content/skills/tdd-workflow/SKILL.md +0 -149
- package/dist/content/content/skills/testing-patterns/SKILL.md +0 -178
- package/dist/content/content/skills/testing-patterns/scripts/test_runner.py +0 -219
- package/dist/content/content/skills/vulnerability-scanner/SKILL.md +0 -276
- package/dist/content/content/skills/vulnerability-scanner/checklists.md +0 -121
- package/dist/content/content/skills/vulnerability-scanner/scripts/security_scan.py +0 -458
- package/dist/content/content/skills/webapp-testing/SKILL.md +0 -187
- package/dist/content/content/skills/webapp-testing/scripts/playwright_runner.py +0 -173
- package/dist/content/content/specialists/Especialista em Acessibilidade.md +0 -266
- package/dist/content/content/specialists/Especialista em An/303/241lise de Testes.md" +0 -434
- package/dist/content/content/specialists/Especialista em Arquitetura Avan/303/247ada.md" +0 -358
- package/dist/content/content/specialists/Especialista em Arquitetura de Software.md +0 -177
- package/dist/content/content/specialists/Especialista em Banco de Dados.md +0 -260
- package/dist/content/content/specialists/Especialista em Contrato de API.md +0 -172
- package/dist/content/content/specialists/Especialista em Dados e Analytics com IA.md +0 -246
- package/dist/content/content/specialists/Especialista em Debugging e Troubleshooting.md +0 -191
- package/dist/content/content/specialists/Especialista em Desenvolvimento Frontend.md +0 -477
- package/dist/content/content/specialists/Especialista em Desenvolvimento Mobile.md +0 -241
- package/dist/content/content/specialists/Especialista em Desenvolvimento e Vibe Coding Estruturado.md +0 -417
- package/dist/content/content/specialists/Especialista em DevOps e Infraestrutura.md +0 -294
- package/dist/content/content/specialists/Especialista em Documenta/303/247/303/243o T/303/251cnica.md" +0 -227
- package/dist/content/content/specialists/Especialista em Engenharia de Requisitos com IA.md +0 -299
- package/dist/content/content/specialists/Especialista em Explora/303/247/303/243o de Codebase.md" +0 -179
- package/dist/content/content/specialists/Especialista em Gest/303/243o de Produto.md" +0 -179
- package/dist/content/content/specialists/Especialista em Migra/303/247/303/243o e Moderniza/303/247/303/243o.md" +0 -410
- package/dist/content/content/specialists/Especialista em Modelagem e Arquitetura de Dom/303/255nio com IA.md" +0 -248
- package/dist/content/content/specialists/Especialista em Observabilidade.md +0 -415
- package/dist/content/content/specialists/Especialista em Performance e Escalabilidade.md +0 -373
- package/dist/content/content/specialists/Especialista em Plano de Execu/303/247/303/243o com IA.md" +0 -341
- package/dist/content/content/specialists/Especialista em Prototipagem R/303/241pida com Google Stitch.md" +0 -419
- package/dist/content/content/specialists/Especialista em Seguran/303/247a da Informa/303/247/303/243o.md" +0 -508
- package/dist/content/content/specialists/Especialista em UX Design.md +0 -453
- package/dist/content/content/specialists/INDEX.md +0 -43
- package/dist/content/content/templates/PRD.md +0 -165
- package/dist/content/content/templates/README.md +0 -65
- package/dist/content/content/templates/adr.md +0 -103
- package/dist/content/content/templates/arquitetura.md +0 -279
- package/dist/content/content/templates/backlog.md +0 -185
- package/dist/content/content/templates/checklist-seguranca.md +0 -180
- package/dist/content/content/templates/contexto.md +0 -120
- package/dist/content/content/templates/criterios-aceite.md +0 -99
- package/dist/content/content/templates/design-banco.md +0 -270
- package/dist/content/content/templates/design-doc.md +0 -240
- package/dist/content/content/templates/feature.md +0 -88
- package/dist/content/content/templates/historia-backend.md +0 -84
- package/dist/content/content/templates/historia-frontend.md +0 -75
- package/dist/content/content/templates/historia-usuario.md +0 -125
- package/dist/content/content/templates/mapa-navegacao.md +0 -133
- package/dist/content/content/templates/matriz-rastreabilidade.md +0 -121
- package/dist/content/content/templates/modelo-dominio.md +0 -219
- package/dist/content/content/templates/plano-testes.md +0 -199
- package/dist/content/content/templates/prototipo-stitch.md +0 -138
- package/dist/content/content/templates/requisitos.md +0 -162
- package/dist/content/content/templates/slo-sli.md +0 -197
- package/dist/content/content/workflows/README-MCP.md +0 -363
- package/dist/content/content/workflows/brainstorm.md +0 -113
- package/dist/content/content/workflows/create.md +0 -59
- package/dist/content/content/workflows/debug.md +0 -103
- package/dist/content/content/workflows/deploy.md +0 -176
- package/dist/content/content/workflows/enhance.md +0 -63
- package/dist/content/content/workflows/mcp-debug.md +0 -506
- package/dist/content/content/workflows/mcp-feature.md +0 -385
- package/dist/content/content/workflows/mcp-gate.md +0 -413
- package/dist/content/content/workflows/mcp-next.md +0 -388
- package/dist/content/content/workflows/mcp-refactor.md +0 -600
- package/dist/content/content/workflows/mcp-start.md +0 -304
- package/dist/content/content/workflows/mcp-status.md +0 -400
- package/dist/content/content/workflows/orchestrate.md +0 -237
- package/dist/content/content/workflows/plan.md +0 -89
- package/dist/content/content/workflows/preview.md +0 -81
- package/dist/content/content/workflows/status.md +0 -86
- package/dist/content/content/workflows/test.md +0 -144
- package/dist/content/content/workflows/ui-ux-pro-max.md +0 -296
|
@@ -1,255 +1,255 @@
|
|
|
1
|
-
# Prompt: Estratégias de Cache
|
|
2
|
-
|
|
3
|
-
> **Prioridade**: 🟡 MÉDIA
|
|
4
|
-
> **Aplicável a**: APIs com alta carga, dados lidos frequentemente
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## Prompt Base: Projetar Cache
|
|
9
|
-
|
|
10
|
-
```text
|
|
11
|
-
Atue como engenheiro de performance.
|
|
12
|
-
|
|
13
|
-
Tenho um sistema com:
|
|
14
|
-
- Stack: [ex. Node.js + PostgreSQL + Redis]
|
|
15
|
-
- Tráfego: [ex. 1000 req/s, 80% leitura, 20% escrita]
|
|
16
|
-
- Dados: [ex. catálogo de 50k produtos, users sessions, configurações]
|
|
17
|
-
- Latência atual: [ex. p95 = 500ms]
|
|
18
|
-
- Meta: [ex. p95 < 100ms]
|
|
19
|
-
|
|
20
|
-
Para cada tipo de dado, recomende:
|
|
21
|
-
|
|
22
|
-
1. **Padrão de Cache**
|
|
23
|
-
- Cache-aside, write-through, read-through, ou combinação
|
|
24
|
-
- Justificativa
|
|
25
|
-
|
|
26
|
-
2. **TTL e Invalidação**
|
|
27
|
-
- Tempo de vida sugerido
|
|
28
|
-
- Estratégia de invalidação (explícita, event-driven, TTL puro)
|
|
29
|
-
|
|
30
|
-
3. **Estrutura no Redis**
|
|
31
|
-
- Tipo de dado Redis (string, hash, set, sorted set)
|
|
32
|
-
- Naming convention para keys
|
|
33
|
-
- Exemplos de comandos
|
|
34
|
-
|
|
35
|
-
4. **Código de Implementação**
|
|
36
|
-
- Cache layer reutilizável
|
|
37
|
-
- Decorators ou helpers
|
|
38
|
-
- Tratamento de cache miss e falha do Redis
|
|
39
|
-
|
|
40
|
-
5. **Métricas**
|
|
41
|
-
- O que monitorar
|
|
42
|
-
- Alertas recomendados
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
## Prompt: Cache para Endpoint Específico
|
|
48
|
-
|
|
49
|
-
```text
|
|
50
|
-
Tenho este endpoint que é lento:
|
|
51
|
-
[COLE CÓDIGO DO ENDPOINT]
|
|
52
|
-
|
|
53
|
-
Métricas atuais:
|
|
54
|
-
- Latência: [ex. p95 = 800ms]
|
|
55
|
-
- Chamadas/dia: [ex. 100k]
|
|
56
|
-
- Taxa de mudança dos dados: [ex. atualizam 1x por hora]
|
|
57
|
-
|
|
58
|
-
Gere:
|
|
59
|
-
1. Análise do que pode ser cacheado
|
|
60
|
-
2. Implementação com cache-aside
|
|
61
|
-
3. Estratégia de invalidação
|
|
62
|
-
4. Código refatorado
|
|
63
|
-
5. Testes para validar cache hit/miss
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
---
|
|
67
|
-
|
|
68
|
-
## Prompt: Invalidação de Cache
|
|
69
|
-
|
|
70
|
-
```text
|
|
71
|
-
Tenho o seguinte cenário de cache:
|
|
72
|
-
- Entidades: [ex. User, Order, Product]
|
|
73
|
-
- Relacionamentos: [ex. User tem Orders, Order tem Products]
|
|
74
|
-
- Caches atuais: [ex. user:123, user:123:orders, product:456]
|
|
75
|
-
|
|
76
|
-
Quando um User é atualizado, preciso invalidar: [DESCREVA]
|
|
77
|
-
|
|
78
|
-
Projete uma estratégia de invalidação que:
|
|
79
|
-
1. Garanta consistência
|
|
80
|
-
2. Minimize invalidações desnecessárias
|
|
81
|
-
3. Use eventos/pub-sub se benéfico
|
|
82
|
-
4. Documente quais eventos afetam quais caches
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
---
|
|
86
|
-
|
|
87
|
-
## Prompt: Cache Multi-Layer
|
|
88
|
-
|
|
89
|
-
```text
|
|
90
|
-
Quero implementar cache em múltiplas camadas:
|
|
91
|
-
1. Browser/CDN (edge)
|
|
92
|
-
2. Application (in-memory)
|
|
93
|
-
3. Distributed (Redis)
|
|
94
|
-
4. Database (query cache)
|
|
95
|
-
|
|
96
|
-
Para estes endpoints:
|
|
97
|
-
[LISTE ENDPOINTS E CARACTERÍSTICAS]
|
|
98
|
-
|
|
99
|
-
Gere:
|
|
100
|
-
1. Estratégia por camada
|
|
101
|
-
2. Headers HTTP para cache de browser/CDN
|
|
102
|
-
3. Código para cache in-memory + Redis
|
|
103
|
-
4. Quando usar cada camada
|
|
104
|
-
5. Como invalidar coordenadamente
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
---
|
|
108
|
-
|
|
109
|
-
## Prompt: Resolver Cache Stampede
|
|
110
|
-
|
|
111
|
-
```text
|
|
112
|
-
Estou tendo problemas de cache stampede:
|
|
113
|
-
- Cenário: [ex. muitos requests simultâneos no cache miss]
|
|
114
|
-
- Impacto: [ex. banco sobrecarrega, timeout em cascata]
|
|
115
|
-
|
|
116
|
-
Stack: [DESCREVA]
|
|
117
|
-
|
|
118
|
-
Implemente:
|
|
119
|
-
1. Lock de requisição única (singleflight)
|
|
120
|
-
2. Probabilistic early expiration
|
|
121
|
-
3. Fallback para stale data durante refresh
|
|
122
|
-
4. Código completo com testes
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
---
|
|
126
|
-
|
|
127
|
-
## Exemplo: Cache Layer Genérico
|
|
128
|
-
|
|
129
|
-
```typescript
|
|
130
|
-
// src/cache/cacheLayer.ts
|
|
131
|
-
import Redis from 'ioredis';
|
|
132
|
-
|
|
133
|
-
interface CacheOptions {
|
|
134
|
-
ttl?: number; // segundos
|
|
135
|
-
staleWhileRevalidate?: boolean;
|
|
136
|
-
lockTimeout?: number; // ms
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
class CacheLayer {
|
|
140
|
-
private redis: Redis;
|
|
141
|
-
private locks = new Map<string, Promise<any>>();
|
|
142
|
-
|
|
143
|
-
constructor(redis: Redis) {
|
|
144
|
-
this.redis = redis;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
async get<T>(
|
|
148
|
-
key: string,
|
|
149
|
-
fetcher: () => Promise<T>,
|
|
150
|
-
options: CacheOptions = {}
|
|
151
|
-
): Promise<T> {
|
|
152
|
-
const { ttl = 3600, staleWhileRevalidate = false, lockTimeout = 5000 } = options;
|
|
153
|
-
|
|
154
|
-
// 1. Tentar cache
|
|
155
|
-
const cached = await this.redis.get(key);
|
|
156
|
-
if (cached) {
|
|
157
|
-
const data = JSON.parse(cached);
|
|
158
|
-
|
|
159
|
-
// SWR: retornar stale e atualizar em background
|
|
160
|
-
if (staleWhileRevalidate && this.isNearExpiry(key)) {
|
|
161
|
-
this.refreshInBackground(key, fetcher, ttl);
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
return data;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
// 2. Prevenir stampede com lock
|
|
168
|
-
if (this.locks.has(key)) {
|
|
169
|
-
return this.locks.get(key);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
// 3. Buscar com timeout
|
|
173
|
-
const promise = this.fetchWithLock(key, fetcher, ttl, lockTimeout);
|
|
174
|
-
this.locks.set(key, promise);
|
|
175
|
-
|
|
176
|
-
try {
|
|
177
|
-
return await promise;
|
|
178
|
-
} finally {
|
|
179
|
-
this.locks.delete(key);
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
async invalidate(key: string): Promise<void> {
|
|
184
|
-
await this.redis.del(key);
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
async invalidatePattern(pattern: string): Promise<void> {
|
|
188
|
-
const keys = await this.redis.keys(pattern);
|
|
189
|
-
if (keys.length > 0) {
|
|
190
|
-
await this.redis.del(...keys);
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
private async fetchWithLock<T>(
|
|
195
|
-
key: string,
|
|
196
|
-
fetcher: () => Promise<T>,
|
|
197
|
-
ttl: number,
|
|
198
|
-
timeout: number
|
|
199
|
-
): Promise<T> {
|
|
200
|
-
const lockKey = `lock:${key}`;
|
|
201
|
-
const lockAcquired = await this.redis.set(lockKey, '1', 'PX', timeout, 'NX');
|
|
202
|
-
|
|
203
|
-
try {
|
|
204
|
-
const data = await fetcher();
|
|
205
|
-
await this.redis.setex(key, ttl, JSON.stringify(data));
|
|
206
|
-
return data;
|
|
207
|
-
} finally {
|
|
208
|
-
await this.redis.del(lockKey);
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
private async isNearExpiry(key: string): Promise<boolean> {
|
|
213
|
-
const ttl = await this.redis.ttl(key);
|
|
214
|
-
return ttl < 60; // último minuto
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
private async refreshInBackground<T>(
|
|
218
|
-
key: string,
|
|
219
|
-
fetcher: () => Promise<T>,
|
|
220
|
-
ttl: number
|
|
221
|
-
): Promise<void> {
|
|
222
|
-
// Fire and forget
|
|
223
|
-
fetcher()
|
|
224
|
-
.then(data => this.redis.setex(key, ttl, JSON.stringify(data)))
|
|
225
|
-
.catch(err => console.error(`Background refresh failed for ${key}:`, err));
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
// Uso
|
|
230
|
-
const cache = new CacheLayer(redis);
|
|
231
|
-
|
|
232
|
-
const user = await cache.get(
|
|
233
|
-
`user:${userId}`,
|
|
234
|
-
() => db.users.findById(userId),
|
|
235
|
-
{ ttl: 300, staleWhileRevalidate: true }
|
|
236
|
-
);
|
|
237
|
-
```
|
|
238
|
-
|
|
239
|
-
---
|
|
240
|
-
|
|
241
|
-
## Checklist
|
|
242
|
-
|
|
243
|
-
- [ ] Padrão de cache escolhido para cada tipo de dado
|
|
244
|
-
- [ ] TTLs definidos e documentados
|
|
245
|
-
- [ ] Invalidação implementada para operações de escrita
|
|
246
|
-
- [ ] Proteção contra stampede
|
|
247
|
-
- [ ] Monitoramento de hit rate
|
|
248
|
-
- [ ] Fallback se Redis indisponível
|
|
249
|
-
- [ ] Testes de cache hit, miss, e invalidação
|
|
250
|
-
|
|
251
|
-
---
|
|
252
|
-
|
|
253
|
-
## Referências
|
|
254
|
-
|
|
255
|
-
Consulte: [Guia de Estratégias de Cache](../03-guias/Guia%20de%20Estratégias%20de%20Cache.md)
|
|
1
|
+
# Prompt: Estratégias de Cache
|
|
2
|
+
|
|
3
|
+
> **Prioridade**: 🟡 MÉDIA
|
|
4
|
+
> **Aplicável a**: APIs com alta carga, dados lidos frequentemente
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Prompt Base: Projetar Cache
|
|
9
|
+
|
|
10
|
+
```text
|
|
11
|
+
Atue como engenheiro de performance.
|
|
12
|
+
|
|
13
|
+
Tenho um sistema com:
|
|
14
|
+
- Stack: [ex. Node.js + PostgreSQL + Redis]
|
|
15
|
+
- Tráfego: [ex. 1000 req/s, 80% leitura, 20% escrita]
|
|
16
|
+
- Dados: [ex. catálogo de 50k produtos, users sessions, configurações]
|
|
17
|
+
- Latência atual: [ex. p95 = 500ms]
|
|
18
|
+
- Meta: [ex. p95 < 100ms]
|
|
19
|
+
|
|
20
|
+
Para cada tipo de dado, recomende:
|
|
21
|
+
|
|
22
|
+
1. **Padrão de Cache**
|
|
23
|
+
- Cache-aside, write-through, read-through, ou combinação
|
|
24
|
+
- Justificativa
|
|
25
|
+
|
|
26
|
+
2. **TTL e Invalidação**
|
|
27
|
+
- Tempo de vida sugerido
|
|
28
|
+
- Estratégia de invalidação (explícita, event-driven, TTL puro)
|
|
29
|
+
|
|
30
|
+
3. **Estrutura no Redis**
|
|
31
|
+
- Tipo de dado Redis (string, hash, set, sorted set)
|
|
32
|
+
- Naming convention para keys
|
|
33
|
+
- Exemplos de comandos
|
|
34
|
+
|
|
35
|
+
4. **Código de Implementação**
|
|
36
|
+
- Cache layer reutilizável
|
|
37
|
+
- Decorators ou helpers
|
|
38
|
+
- Tratamento de cache miss e falha do Redis
|
|
39
|
+
|
|
40
|
+
5. **Métricas**
|
|
41
|
+
- O que monitorar
|
|
42
|
+
- Alertas recomendados
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Prompt: Cache para Endpoint Específico
|
|
48
|
+
|
|
49
|
+
```text
|
|
50
|
+
Tenho este endpoint que é lento:
|
|
51
|
+
[COLE CÓDIGO DO ENDPOINT]
|
|
52
|
+
|
|
53
|
+
Métricas atuais:
|
|
54
|
+
- Latência: [ex. p95 = 800ms]
|
|
55
|
+
- Chamadas/dia: [ex. 100k]
|
|
56
|
+
- Taxa de mudança dos dados: [ex. atualizam 1x por hora]
|
|
57
|
+
|
|
58
|
+
Gere:
|
|
59
|
+
1. Análise do que pode ser cacheado
|
|
60
|
+
2. Implementação com cache-aside
|
|
61
|
+
3. Estratégia de invalidação
|
|
62
|
+
4. Código refatorado
|
|
63
|
+
5. Testes para validar cache hit/miss
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Prompt: Invalidação de Cache
|
|
69
|
+
|
|
70
|
+
```text
|
|
71
|
+
Tenho o seguinte cenário de cache:
|
|
72
|
+
- Entidades: [ex. User, Order, Product]
|
|
73
|
+
- Relacionamentos: [ex. User tem Orders, Order tem Products]
|
|
74
|
+
- Caches atuais: [ex. user:123, user:123:orders, product:456]
|
|
75
|
+
|
|
76
|
+
Quando um User é atualizado, preciso invalidar: [DESCREVA]
|
|
77
|
+
|
|
78
|
+
Projete uma estratégia de invalidação que:
|
|
79
|
+
1. Garanta consistência
|
|
80
|
+
2. Minimize invalidações desnecessárias
|
|
81
|
+
3. Use eventos/pub-sub se benéfico
|
|
82
|
+
4. Documente quais eventos afetam quais caches
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Prompt: Cache Multi-Layer
|
|
88
|
+
|
|
89
|
+
```text
|
|
90
|
+
Quero implementar cache em múltiplas camadas:
|
|
91
|
+
1. Browser/CDN (edge)
|
|
92
|
+
2. Application (in-memory)
|
|
93
|
+
3. Distributed (Redis)
|
|
94
|
+
4. Database (query cache)
|
|
95
|
+
|
|
96
|
+
Para estes endpoints:
|
|
97
|
+
[LISTE ENDPOINTS E CARACTERÍSTICAS]
|
|
98
|
+
|
|
99
|
+
Gere:
|
|
100
|
+
1. Estratégia por camada
|
|
101
|
+
2. Headers HTTP para cache de browser/CDN
|
|
102
|
+
3. Código para cache in-memory + Redis
|
|
103
|
+
4. Quando usar cada camada
|
|
104
|
+
5. Como invalidar coordenadamente
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Prompt: Resolver Cache Stampede
|
|
110
|
+
|
|
111
|
+
```text
|
|
112
|
+
Estou tendo problemas de cache stampede:
|
|
113
|
+
- Cenário: [ex. muitos requests simultâneos no cache miss]
|
|
114
|
+
- Impacto: [ex. banco sobrecarrega, timeout em cascata]
|
|
115
|
+
|
|
116
|
+
Stack: [DESCREVA]
|
|
117
|
+
|
|
118
|
+
Implemente:
|
|
119
|
+
1. Lock de requisição única (singleflight)
|
|
120
|
+
2. Probabilistic early expiration
|
|
121
|
+
3. Fallback para stale data durante refresh
|
|
122
|
+
4. Código completo com testes
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Exemplo: Cache Layer Genérico
|
|
128
|
+
|
|
129
|
+
```typescript
|
|
130
|
+
// src/cache/cacheLayer.ts
|
|
131
|
+
import Redis from 'ioredis';
|
|
132
|
+
|
|
133
|
+
interface CacheOptions {
|
|
134
|
+
ttl?: number; // segundos
|
|
135
|
+
staleWhileRevalidate?: boolean;
|
|
136
|
+
lockTimeout?: number; // ms
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
class CacheLayer {
|
|
140
|
+
private redis: Redis;
|
|
141
|
+
private locks = new Map<string, Promise<any>>();
|
|
142
|
+
|
|
143
|
+
constructor(redis: Redis) {
|
|
144
|
+
this.redis = redis;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
async get<T>(
|
|
148
|
+
key: string,
|
|
149
|
+
fetcher: () => Promise<T>,
|
|
150
|
+
options: CacheOptions = {}
|
|
151
|
+
): Promise<T> {
|
|
152
|
+
const { ttl = 3600, staleWhileRevalidate = false, lockTimeout = 5000 } = options;
|
|
153
|
+
|
|
154
|
+
// 1. Tentar cache
|
|
155
|
+
const cached = await this.redis.get(key);
|
|
156
|
+
if (cached) {
|
|
157
|
+
const data = JSON.parse(cached);
|
|
158
|
+
|
|
159
|
+
// SWR: retornar stale e atualizar em background
|
|
160
|
+
if (staleWhileRevalidate && this.isNearExpiry(key)) {
|
|
161
|
+
this.refreshInBackground(key, fetcher, ttl);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
return data;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// 2. Prevenir stampede com lock
|
|
168
|
+
if (this.locks.has(key)) {
|
|
169
|
+
return this.locks.get(key);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// 3. Buscar com timeout
|
|
173
|
+
const promise = this.fetchWithLock(key, fetcher, ttl, lockTimeout);
|
|
174
|
+
this.locks.set(key, promise);
|
|
175
|
+
|
|
176
|
+
try {
|
|
177
|
+
return await promise;
|
|
178
|
+
} finally {
|
|
179
|
+
this.locks.delete(key);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
async invalidate(key: string): Promise<void> {
|
|
184
|
+
await this.redis.del(key);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
async invalidatePattern(pattern: string): Promise<void> {
|
|
188
|
+
const keys = await this.redis.keys(pattern);
|
|
189
|
+
if (keys.length > 0) {
|
|
190
|
+
await this.redis.del(...keys);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
private async fetchWithLock<T>(
|
|
195
|
+
key: string,
|
|
196
|
+
fetcher: () => Promise<T>,
|
|
197
|
+
ttl: number,
|
|
198
|
+
timeout: number
|
|
199
|
+
): Promise<T> {
|
|
200
|
+
const lockKey = `lock:${key}`;
|
|
201
|
+
const lockAcquired = await this.redis.set(lockKey, '1', 'PX', timeout, 'NX');
|
|
202
|
+
|
|
203
|
+
try {
|
|
204
|
+
const data = await fetcher();
|
|
205
|
+
await this.redis.setex(key, ttl, JSON.stringify(data));
|
|
206
|
+
return data;
|
|
207
|
+
} finally {
|
|
208
|
+
await this.redis.del(lockKey);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
private async isNearExpiry(key: string): Promise<boolean> {
|
|
213
|
+
const ttl = await this.redis.ttl(key);
|
|
214
|
+
return ttl < 60; // último minuto
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
private async refreshInBackground<T>(
|
|
218
|
+
key: string,
|
|
219
|
+
fetcher: () => Promise<T>,
|
|
220
|
+
ttl: number
|
|
221
|
+
): Promise<void> {
|
|
222
|
+
// Fire and forget
|
|
223
|
+
fetcher()
|
|
224
|
+
.then(data => this.redis.setex(key, ttl, JSON.stringify(data)))
|
|
225
|
+
.catch(err => console.error(`Background refresh failed for ${key}:`, err));
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// Uso
|
|
230
|
+
const cache = new CacheLayer(redis);
|
|
231
|
+
|
|
232
|
+
const user = await cache.get(
|
|
233
|
+
`user:${userId}`,
|
|
234
|
+
() => db.users.findById(userId),
|
|
235
|
+
{ ttl: 300, staleWhileRevalidate: true }
|
|
236
|
+
);
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## Checklist
|
|
242
|
+
|
|
243
|
+
- [ ] Padrão de cache escolhido para cada tipo de dado
|
|
244
|
+
- [ ] TTLs definidos e documentados
|
|
245
|
+
- [ ] Invalidação implementada para operações de escrita
|
|
246
|
+
- [ ] Proteção contra stampede
|
|
247
|
+
- [ ] Monitoramento de hit rate
|
|
248
|
+
- [ ] Fallback se Redis indisponível
|
|
249
|
+
- [ ] Testes de cache hit, miss, e invalidação
|
|
250
|
+
|
|
251
|
+
---
|
|
252
|
+
|
|
253
|
+
## Referências
|
|
254
|
+
|
|
255
|
+
Consulte: [Guia de Estratégias de Cache](../03-guias/Guia%20de%20Estratégias%20de%20Cache.md)
|