@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.
- package/README.md +59 -0
- package/content/guides/Cat/303/241logo de Stacks para Cloud Moderna.md" +119 -0
- package/content/guides/Cat/303/241logo de Stacks para Hospedagem Compartilhada.md" +147 -0
- package/content/guides/Checklist Mestre de Entrega.md +68 -0
- package/content/guides/Gates de Qualidade.md +209 -0
- package/content/guides/Guia de Adi/303/247/303/243o de Novas Funcionalidades.md" +355 -0
- package/content/guides/Guia de Chaos Engineering.md +267 -0
- package/content/guides/Guia de Debugging com IA.md +135 -0
- package/content/guides/Guia de Estrat/303/251gias de Cache.md" +352 -0
- package/content/guides/Guia de Migrations Zero-Downtime.md +311 -0
- package/content/guides/Guia de Multi-tenancy.md +368 -0
- package/content/guides/Guia de Otimiza/303/247/303/243o de Custos Cloud.md" +195 -0
- package/content/guides/Guia de Refatora/303/247/303/243o de C/303/263digo Legado com IA.md" +162 -0
- package/content/guides/Guia de SLOs e Error Budgets.md +315 -0
- package/content/guides/M/303/251tricas de Efici/303/252ncia do Desenvolvimento com IA.md" +93 -0
- package/content/guides/Rules base.md +90 -0
- package/content/prompts/README.md +203 -0
- package/content/prompts/acessibilidade/analise-acessibilidade.md +257 -0
- package/content/prompts/apis/design-api-rest.md +303 -0
- package/content/prompts/apis/idempotencia.md +254 -0
- package/content/prompts/apis/versionamento.md +313 -0
- package/content/prompts/arquitetura/arquitetura-c4-completo.md +190 -0
- package/content/prompts/arquitetura/clean-architecture.md +151 -0
- package/content/prompts/arquitetura/ddd-bounded-contexts.md +183 -0
- package/content/prompts/arquitetura/ddd-cqrs.md +176 -0
- package/content/prompts/arquitetura/modelo-dominio.md +207 -0
- package/content/prompts/arquitetura/multi-tenancy.md +235 -0
- package/content/prompts/database/migrations-zero-downtime.md +192 -0
- package/content/prompts/database/otimizacao-queries.md +296 -0
- package/content/prompts/desenvolvimento/code-review.md +301 -0
- package/content/prompts/desenvolvimento/gerar-servico.md +271 -0
- package/content/prompts/devops/docker-compose.md +336 -0
- package/content/prompts/devops/feature-flags.md +374 -0
- package/content/prompts/devops/kubernetes-deploy.md +460 -0
- package/content/prompts/devops/pipeline-cicd.md +358 -0
- package/content/prompts/devops/terraform-iac.md +502 -0
- package/content/prompts/escalabilidade/analise-performance.md +240 -0
- package/content/prompts/escalabilidade/analise-performance.txt +94 -0
- package/content/prompts/escalabilidade/caching.md +255 -0
- package/content/prompts/observabilidade/chaos-testing.md +237 -0
- package/content/prompts/observabilidade/estrategia-observabilidade.md +263 -0
- package/content/prompts/observabilidade/estrategia-observabilidade.txt +134 -0
- package/content/prompts/observabilidade/slos.md +215 -0
- package/content/prompts/produto/discovery-inicial.md +203 -0
- package/content/prompts/produto/discovery-inicial.txt +33 -0
- package/content/prompts/requisitos/refinar-requisitos.md +232 -0
- package/content/prompts/requisitos/refinar-requisitos.txt +40 -0
- package/content/prompts/seguranca/analise-seguranca.md +243 -0
- package/content/prompts/seguranca/pentest-checklist.md +333 -0
- package/content/prompts/seguranca/rate-limiting.md +356 -0
- package/content/prompts/seguranca/revisao-lgpd.md +227 -0
- package/content/prompts/seguranca/threat-modeling.md +224 -0
- package/content/prompts/testes/contract-testing.md +340 -0
- package/content/prompts/testes/gerar-testes-unitarios.md +474 -0
- package/content/prompts/testes/testes-e2e.md +460 -0
- package/content/prompts/testes/testes-integracao.md +418 -0
- package/content/prompts/testes/testes-performance.md +458 -0
- package/content/prompts/ux/gerar-ui-stitch.md +151 -0
- package/content/skills/api-patterns/SKILL.md +81 -0
- package/content/skills/api-patterns/api-style.md +42 -0
- package/content/skills/api-patterns/auth.md +24 -0
- package/content/skills/api-patterns/documentation.md +26 -0
- package/content/skills/api-patterns/graphql.md +41 -0
- package/content/skills/api-patterns/rate-limiting.md +31 -0
- package/content/skills/api-patterns/response.md +37 -0
- package/content/skills/api-patterns/rest.md +40 -0
- package/content/skills/api-patterns/scripts/api_validator.py +211 -0
- package/content/skills/api-patterns/security-testing.md +122 -0
- package/content/skills/api-patterns/trpc.md +41 -0
- package/content/skills/api-patterns/versioning.md +22 -0
- package/content/skills/app-builder/SKILL.md +75 -0
- package/content/skills/app-builder/agent-coordination.md +71 -0
- package/content/skills/app-builder/feature-building.md +53 -0
- package/content/skills/app-builder/project-detection.md +34 -0
- package/content/skills/app-builder/scaffolding.md +118 -0
- package/content/skills/app-builder/tech-stack.md +40 -0
- package/content/skills/app-builder/templates/SKILL.md +39 -0
- package/content/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
- package/content/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
- package/content/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
- package/content/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
- package/content/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
- package/content/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
- package/content/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
- package/content/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +82 -0
- package/content/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +100 -0
- package/content/skills/app-builder/templates/nextjs-static/TEMPLATE.md +106 -0
- package/content/skills/app-builder/templates/nuxt-app/TEMPLATE.md +101 -0
- package/content/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
- package/content/skills/app-builder/templates/react-native-app/TEMPLATE.md +93 -0
- package/content/skills/architecture/SKILL.md +55 -0
- package/content/skills/architecture/context-discovery.md +43 -0
- package/content/skills/architecture/examples.md +94 -0
- package/content/skills/architecture/pattern-selection.md +68 -0
- package/content/skills/architecture/patterns-reference.md +50 -0
- package/content/skills/architecture/trade-off-analysis.md +77 -0
- package/content/skills/bash-linux/SKILL.md +199 -0
- package/content/skills/behavioral-modes/SKILL.md +242 -0
- package/content/skills/brainstorming/SKILL.md +163 -0
- package/content/skills/brainstorming/dynamic-questioning.md +350 -0
- package/content/skills/clean-code/SKILL.md +201 -0
- package/content/skills/code-review-checklist/SKILL.md +109 -0
- package/content/skills/database-design/SKILL.md +52 -0
- package/content/skills/database-design/database-selection.md +43 -0
- package/content/skills/database-design/indexing.md +39 -0
- package/content/skills/database-design/migrations.md +48 -0
- package/content/skills/database-design/optimization.md +36 -0
- package/content/skills/database-design/orm-selection.md +30 -0
- package/content/skills/database-design/schema-design.md +56 -0
- package/content/skills/database-design/scripts/schema_validator.py +172 -0
- package/content/skills/deployment-procedures/SKILL.md +241 -0
- package/content/skills/doc.md +177 -0
- package/content/skills/documentation-templates/SKILL.md +194 -0
- package/content/skills/frontend-design/SKILL.md +396 -0
- package/content/skills/frontend-design/animation-guide.md +331 -0
- package/content/skills/frontend-design/color-system.md +311 -0
- package/content/skills/frontend-design/decision-trees.md +418 -0
- package/content/skills/frontend-design/motion-graphics.md +306 -0
- package/content/skills/frontend-design/scripts/accessibility_checker.py +183 -0
- package/content/skills/frontend-design/scripts/ux_audit.py +722 -0
- package/content/skills/frontend-design/typography-system.md +345 -0
- package/content/skills/frontend-design/ux-psychology.md +541 -0
- package/content/skills/frontend-design/visual-effects.md +383 -0
- package/content/skills/game-development/2d-games/SKILL.md +119 -0
- package/content/skills/game-development/3d-games/SKILL.md +135 -0
- package/content/skills/game-development/SKILL.md +167 -0
- package/content/skills/game-development/game-art/SKILL.md +185 -0
- package/content/skills/game-development/game-audio/SKILL.md +190 -0
- package/content/skills/game-development/game-design/SKILL.md +129 -0
- package/content/skills/game-development/mobile-games/SKILL.md +108 -0
- package/content/skills/game-development/multiplayer/SKILL.md +132 -0
- package/content/skills/game-development/pc-games/SKILL.md +144 -0
- package/content/skills/game-development/vr-ar/SKILL.md +123 -0
- package/content/skills/game-development/web-games/SKILL.md +150 -0
- package/content/skills/geo-fundamentals/SKILL.md +156 -0
- package/content/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
- package/content/skills/i18n-localization/SKILL.md +154 -0
- package/content/skills/i18n-localization/scripts/i18n_checker.py +241 -0
- package/content/skills/intelligent-routing/SKILL.md +334 -0
- package/content/skills/lint-and-validate/SKILL.md +45 -0
- package/content/skills/lint-and-validate/scripts/lint_runner.py +172 -0
- package/content/skills/lint-and-validate/scripts/type_coverage.py +173 -0
- package/content/skills/mcp-builder/SKILL.md +176 -0
- package/content/skills/mobile-design/SKILL.md +394 -0
- package/content/skills/mobile-design/decision-trees.md +516 -0
- package/content/skills/mobile-design/mobile-backend.md +491 -0
- package/content/skills/mobile-design/mobile-color-system.md +420 -0
- package/content/skills/mobile-design/mobile-debugging.md +122 -0
- package/content/skills/mobile-design/mobile-design-thinking.md +357 -0
- package/content/skills/mobile-design/mobile-navigation.md +458 -0
- package/content/skills/mobile-design/mobile-performance.md +767 -0
- package/content/skills/mobile-design/mobile-testing.md +356 -0
- package/content/skills/mobile-design/mobile-typography.md +433 -0
- package/content/skills/mobile-design/platform-android.md +666 -0
- package/content/skills/mobile-design/platform-ios.md +561 -0
- package/content/skills/mobile-design/scripts/mobile_audit.py +670 -0
- package/content/skills/mobile-design/touch-psychology.md +537 -0
- package/content/skills/nextjs-best-practices/SKILL.md +203 -0
- package/content/skills/nodejs-best-practices/SKILL.md +333 -0
- package/content/skills/parallel-agents/SKILL.md +175 -0
- package/content/skills/performance-profiling/SKILL.md +143 -0
- package/content/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
- package/content/skills/plan-writing/SKILL.md +152 -0
- package/content/skills/powershell-windows/SKILL.md +167 -0
- package/content/skills/python-patterns/SKILL.md +441 -0
- package/content/skills/react-patterns/SKILL.md +198 -0
- package/content/skills/red-team-tactics/SKILL.md +199 -0
- package/content/skills/seo-fundamentals/SKILL.md +129 -0
- package/content/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
- package/content/skills/server-management/SKILL.md +161 -0
- package/content/skills/systematic-debugging/SKILL.md +109 -0
- package/content/skills/tailwind-patterns/SKILL.md +269 -0
- package/content/skills/tdd-workflow/SKILL.md +149 -0
- package/content/skills/testing-patterns/SKILL.md +178 -0
- package/content/skills/testing-patterns/scripts/test_runner.py +219 -0
- package/content/skills/vulnerability-scanner/SKILL.md +276 -0
- package/content/skills/vulnerability-scanner/checklists.md +121 -0
- package/content/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
- package/content/skills/webapp-testing/SKILL.md +187 -0
- package/content/skills/webapp-testing/scripts/playwright_runner.py +173 -0
- package/content/specialists/Especialista em Acessibilidade.md +266 -0
- package/content/specialists/Especialista em An/303/241lise de Testes.md" +434 -0
- package/content/specialists/Especialista em Arquitetura Avan/303/247ada.md" +358 -0
- package/content/specialists/Especialista em Arquitetura de Software.md +177 -0
- package/content/specialists/Especialista em Banco de Dados.md +260 -0
- package/content/specialists/Especialista em Contrato de API.md +172 -0
- package/content/specialists/Especialista em Dados e Analytics com IA.md +246 -0
- package/content/specialists/Especialista em Debugging e Troubleshooting.md +191 -0
- package/content/specialists/Especialista em Desenvolvimento Frontend.md +477 -0
- package/content/specialists/Especialista em Desenvolvimento Mobile.md +241 -0
- package/content/specialists/Especialista em Desenvolvimento e Vibe Coding Estruturado.md +417 -0
- package/content/specialists/Especialista em DevOps e Infraestrutura.md +294 -0
- package/content/specialists/Especialista em Documenta/303/247/303/243o T/303/251cnica.md" +227 -0
- package/content/specialists/Especialista em Engenharia de Requisitos com IA.md +299 -0
- package/content/specialists/Especialista em Explora/303/247/303/243o de Codebase.md" +179 -0
- package/content/specialists/Especialista em Gest/303/243o de Produto.md" +179 -0
- package/content/specialists/Especialista em Migra/303/247/303/243o e Moderniza/303/247/303/243o.md" +410 -0
- package/content/specialists/Especialista em Modelagem e Arquitetura de Dom/303/255nio com IA.md" +248 -0
- package/content/specialists/Especialista em Observabilidade.md +415 -0
- package/content/specialists/Especialista em Performance e Escalabilidade.md +373 -0
- package/content/specialists/Especialista em Plano de Execu/303/247/303/243o com IA.md" +341 -0
- package/content/specialists/Especialista em Prototipagem R/303/241pida com Google Stitch.md" +419 -0
- package/content/specialists/Especialista em Seguran/303/247a da Informa/303/247/303/243o.md" +508 -0
- package/content/specialists/Especialista em UX Design.md +453 -0
- package/content/specialists/INDEX.md +43 -0
- package/content/templates/PRD.md +165 -0
- package/content/templates/README.md +65 -0
- package/content/templates/adr.md +103 -0
- package/content/templates/arquitetura.md +279 -0
- package/content/templates/backlog.md +185 -0
- package/content/templates/checklist-seguranca.md +180 -0
- package/content/templates/contexto.md +120 -0
- package/content/templates/criterios-aceite.md +99 -0
- package/content/templates/design-banco.md +270 -0
- package/content/templates/design-doc.md +240 -0
- package/content/templates/feature.md +88 -0
- package/content/templates/historia-backend.md +84 -0
- package/content/templates/historia-frontend.md +75 -0
- package/content/templates/historia-usuario.md +125 -0
- package/content/templates/mapa-navegacao.md +133 -0
- package/content/templates/matriz-rastreabilidade.md +121 -0
- package/content/templates/modelo-dominio.md +219 -0
- package/content/templates/plano-testes.md +199 -0
- package/content/templates/prototipo-stitch.md +138 -0
- package/content/templates/requisitos.md +162 -0
- package/content/templates/slo-sli.md +197 -0
- package/content/workflows/README-MCP.md +363 -0
- package/content/workflows/brainstorm.md +113 -0
- package/content/workflows/create.md +59 -0
- package/content/workflows/debug.md +103 -0
- package/content/workflows/deploy.md +176 -0
- package/content/workflows/enhance.md +63 -0
- package/content/workflows/mcp-debug.md +506 -0
- package/content/workflows/mcp-feature.md +385 -0
- package/content/workflows/mcp-gate.md +413 -0
- package/content/workflows/mcp-next.md +388 -0
- package/content/workflows/mcp-refactor.md +600 -0
- package/content/workflows/mcp-start.md +304 -0
- package/content/workflows/mcp-status.md +400 -0
- package/content/workflows/orchestrate.md +237 -0
- package/content/workflows/plan.md +89 -0
- package/content/workflows/preview.md +81 -0
- package/content/workflows/status.md +86 -0
- package/content/workflows/test.md +144 -0
- package/content/workflows/ui-ux-pro-max.md +296 -0
- package/dist/commands/init.d.ts +6 -0
- package/dist/commands/init.js +138 -0
- package/dist/commands/update.d.ts +5 -0
- package/dist/commands/update.js +50 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +21 -0
- package/package.json +48 -0
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
# Prompt: Threat Modeling (Modelagem de Ameaças)
|
|
2
|
+
|
|
3
|
+
> **Quando usar**: No início do projeto, antes de implementar funcionalidades críticas
|
|
4
|
+
> **Especialista**: [Segurança da Informação](../../02-especialistas/Especialista%20em%20Segurança%20da%20Informação.md)
|
|
5
|
+
> **Nível**: Médio a Complexo
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Fluxo de Contexto
|
|
10
|
+
|
|
11
|
+
Antes de usar este prompt, tenha em mãos:
|
|
12
|
+
- `docs/CONTEXTO.md` - Entendimento do projeto
|
|
13
|
+
- `docs/05-arquitetura/arquitetura.md` - Arquitetura do sistema
|
|
14
|
+
- Lista de ativos valiosos do sistema
|
|
15
|
+
|
|
16
|
+
Após gerar, salve o resultado em:
|
|
17
|
+
- `docs/09-seguranca/threat-model.md`
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Prompt Completo
|
|
22
|
+
|
|
23
|
+
```text
|
|
24
|
+
Atue como especialista em segurança de aplicações focado em modelagem de ameaças (Threat Modeling).
|
|
25
|
+
|
|
26
|
+
## Contexto do Projeto
|
|
27
|
+
|
|
28
|
+
[COLE O CONTEÚDO DE docs/CONTEXTO.md]
|
|
29
|
+
|
|
30
|
+
## Arquitetura do Sistema
|
|
31
|
+
|
|
32
|
+
[DESCREVA OU COLE A ARQUITETURA - inclua diagrama se disponível]
|
|
33
|
+
|
|
34
|
+
## Ativos de Valor
|
|
35
|
+
|
|
36
|
+
Liste os ativos mais importantes do sistema:
|
|
37
|
+
- Dados: [ex: dados de clientes, transações financeiras, credenciais]
|
|
38
|
+
- Funcionalidades: [ex: autenticação, processamento de pagamentos]
|
|
39
|
+
- Infraestrutura: [ex: banco de dados, APIs externas]
|
|
40
|
+
|
|
41
|
+
## Atores e Usuários
|
|
42
|
+
|
|
43
|
+
- Usuários legítimos: [tipos de usuários do sistema]
|
|
44
|
+
- Potenciais atacantes: [internos? externos? concorrentes?]
|
|
45
|
+
- Nível de sofisticação esperado: [script kiddies, APT?]
|
|
46
|
+
|
|
47
|
+
## Compliance e Contexto de Risco
|
|
48
|
+
|
|
49
|
+
- Indústria: [fintech, saúde, e-commerce, etc]
|
|
50
|
+
- Regulamentações: [LGPD, PCI-DSS, HIPAA]
|
|
51
|
+
- Tolerância a risco: [baixa/média/alta]
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Sua Missão
|
|
56
|
+
|
|
57
|
+
Realize uma modelagem de ameaças completa usando STRIDE:
|
|
58
|
+
|
|
59
|
+
### 1. Decomposição do Sistema
|
|
60
|
+
|
|
61
|
+
Identifique e documente:
|
|
62
|
+
|
|
63
|
+
#### Pontos de Entrada
|
|
64
|
+
| ID | Ponto de Entrada | Descrição | Nível de Confiança |
|
|
65
|
+
|----|------------------|-----------|---------------------|
|
|
66
|
+
| E1 | [ex: API REST] | [descrição] | [Público/Autenticado/Admin] |
|
|
67
|
+
|
|
68
|
+
#### Ativos e Dados
|
|
69
|
+
| ID | Ativo | Sensibilidade | Localização |
|
|
70
|
+
|----|-------|---------------|-------------|
|
|
71
|
+
| A1 | [ex: Dados de usuário] | [Alta/Média/Baixa] | [onde está armazenado] |
|
|
72
|
+
|
|
73
|
+
#### Superfície de Ataque
|
|
74
|
+
| Componente | Exposição | Criticidade |
|
|
75
|
+
|------------|-----------|-------------|
|
|
76
|
+
| [ex: API pública] | [Internet/Interna] | [Alta/Média/Baixa] |
|
|
77
|
+
|
|
78
|
+
### 2. Análise STRIDE
|
|
79
|
+
|
|
80
|
+
Para cada componente crítico, analise:
|
|
81
|
+
|
|
82
|
+
#### Spoofing (Falsificação de identidade)
|
|
83
|
+
- [ ] Como um atacante pode fingir ser outro usuário?
|
|
84
|
+
- Vetores identificados:
|
|
85
|
+
- Controles existentes:
|
|
86
|
+
- Recomendações:
|
|
87
|
+
|
|
88
|
+
#### Tampering (Adulteração)
|
|
89
|
+
- [ ] Como dados podem ser modificados indevidamente?
|
|
90
|
+
- Vetores identificados:
|
|
91
|
+
- Controles existentes:
|
|
92
|
+
- Recomendações:
|
|
93
|
+
|
|
94
|
+
#### Repudiation (Repúdio)
|
|
95
|
+
- [ ] Ações podem ser negadas por ausência de logs?
|
|
96
|
+
- Vetores identificados:
|
|
97
|
+
- Controles existentes:
|
|
98
|
+
- Recomendações:
|
|
99
|
+
|
|
100
|
+
#### Information Disclosure (Vazamento)
|
|
101
|
+
- [ ] Como dados sensíveis podem vazar?
|
|
102
|
+
- Vetores identificados:
|
|
103
|
+
- Controles existentes:
|
|
104
|
+
- Recomendações:
|
|
105
|
+
|
|
106
|
+
#### Denial of Service (Negação de serviço)
|
|
107
|
+
- [ ] Como o sistema pode ser derrubado?
|
|
108
|
+
- Vetores identificados:
|
|
109
|
+
- Controles existentes:
|
|
110
|
+
- Recomendações:
|
|
111
|
+
|
|
112
|
+
#### Elevation of Privilege (Escalação)
|
|
113
|
+
- [ ] Como um usuário pode obter mais permissões?
|
|
114
|
+
- Vetores identificados:
|
|
115
|
+
- Controles existentes:
|
|
116
|
+
- Recomendações:
|
|
117
|
+
|
|
118
|
+
### 3. Diagrama de Fluxo de Dados (DFD)
|
|
119
|
+
|
|
120
|
+
Crie um DFD mostrando:
|
|
121
|
+
- Processos (círculos)
|
|
122
|
+
- Data stores (cilindros)
|
|
123
|
+
- Entidades externas (retângulos)
|
|
124
|
+
- Fluxos de dados (setas com labels)
|
|
125
|
+
- Trust boundaries (linhas tracejadas)
|
|
126
|
+
|
|
127
|
+
### 4. Matriz de Riscos
|
|
128
|
+
|
|
129
|
+
| ID | Ameaça | STRIDE | Probabilidade | Impacto | Risco | Mitigação |
|
|
130
|
+
|----|--------|--------|---------------|---------|-------|-----------|
|
|
131
|
+
| T1 | [descrição] | [S/T/R/I/D/E] | [1-5] | [1-5] | [P*I] | [ação] |
|
|
132
|
+
|
|
133
|
+
### 5. Árvore de Ataque (para ameaças críticas)
|
|
134
|
+
|
|
135
|
+
Para as top 3 ameaças, detalhe:
|
|
136
|
+
```
|
|
137
|
+
[Objetivo do atacante]
|
|
138
|
+
├── Método 1
|
|
139
|
+
│ ├── Pré-condição
|
|
140
|
+
│ └── Passos
|
|
141
|
+
├── Método 2
|
|
142
|
+
│ ├── Pré-condição
|
|
143
|
+
│ └── Passos
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### 6. Plano de Mitigação Priorizado
|
|
147
|
+
|
|
148
|
+
| Prioridade | Ameaça | Mitigação | Esforço | Owner |
|
|
149
|
+
|------------|--------|-----------|---------|-------|
|
|
150
|
+
| ⭐⭐⭐ | [T1] | [ação] | [dias] | [time] |
|
|
151
|
+
| ⭐⭐ | [T2] | [ação] | [dias] | [time] |
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## Exemplo de Uso
|
|
157
|
+
|
|
158
|
+
```text
|
|
159
|
+
Atue como especialista em segurança de aplicações focado em modelagem de ameaças.
|
|
160
|
+
|
|
161
|
+
## Contexto do Projeto
|
|
162
|
+
|
|
163
|
+
Marketplace de produtos artesanais. Vendedores cadastram produtos, compradores compram via cartão ou PIX.
|
|
164
|
+
|
|
165
|
+
## Arquitetura do Sistema
|
|
166
|
+
|
|
167
|
+
- Frontend: React SPA
|
|
168
|
+
- Backend: Node.js + Express
|
|
169
|
+
- Banco: PostgreSQL
|
|
170
|
+
- Pagamentos: API do Stripe
|
|
171
|
+
- Storage: S3 para imagens
|
|
172
|
+
|
|
173
|
+
## Ativos de Valor
|
|
174
|
+
|
|
175
|
+
- Dados: credenciais de usuário, dados de cartão (tokenizados), endereços de entrega
|
|
176
|
+
- Funcionalidades: checkout, gestão de pedidos
|
|
177
|
+
- Infraestrutura: banco de dados, integração Stripe
|
|
178
|
+
|
|
179
|
+
## Atores
|
|
180
|
+
|
|
181
|
+
- Usuários legítimos: compradores, vendedores, admins
|
|
182
|
+
- Potenciais atacantes: externos (fraude), vendedores mal-intencionados
|
|
183
|
+
- Sofisticação: média (script kiddies a semi-profissionais)
|
|
184
|
+
|
|
185
|
+
## Compliance
|
|
186
|
+
|
|
187
|
+
- LGPD (dados pessoais brasileiros)
|
|
188
|
+
- PCI-DSS compliance via Stripe
|
|
189
|
+
- Tolerância a risco: baixa (envolve dinheiro)
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## Resposta Esperada (Resumo)
|
|
195
|
+
|
|
196
|
+
### Top 5 Ameaças Identificadas
|
|
197
|
+
|
|
198
|
+
| ID | Ameaça | Categoria | Risco |
|
|
199
|
+
|----|--------|-----------|-------|
|
|
200
|
+
| T1 | Vendedor fraudulento cria produtos falsos | Spoofing | 20 (Alto) |
|
|
201
|
+
| T2 | Vazamento de dados de clientes via API | Info Disclosure | 16 (Alto) |
|
|
202
|
+
| T3 | Manipulação de preço no checkout | Tampering | 12 (Médio) |
|
|
203
|
+
| T4 | DDoS na API de checkout | DoS | 10 (Médio) |
|
|
204
|
+
| T5 | Admin comprometido escala privilégios | Elevation | 8 (Médio) |
|
|
205
|
+
|
|
206
|
+
### Mitigações Prioritárias
|
|
207
|
+
|
|
208
|
+
1. **Validação de vendedor** - KYC básico antes de permitir vendas
|
|
209
|
+
2. **Rate limiting + WAF** - Proteção contra DDoS
|
|
210
|
+
3. **Validação server-side de preços** - Nunca confiar no frontend
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## Checklist Pós-Geração
|
|
215
|
+
|
|
216
|
+
- [ ] Ativos de valor identificados
|
|
217
|
+
- [ ] Pontos de entrada mapeados
|
|
218
|
+
- [ ] Superfície de ataque documentada
|
|
219
|
+
- [ ] Análise STRIDE completa para componentes críticos
|
|
220
|
+
- [ ] DFD com trust boundaries
|
|
221
|
+
- [ ] Matriz de riscos calculada
|
|
222
|
+
- [ ] Top 3-5 ameaças com árvores de ataque
|
|
223
|
+
- [ ] Plano de mitigação priorizado
|
|
224
|
+
- [ ] Salvar em `docs/09-seguranca/threat-model.md`
|
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
# Prompt: Contract Testing
|
|
2
|
+
|
|
3
|
+
> **Prioridade**: 🟠 ALTA
|
|
4
|
+
> **Aplicável a**: Microserviços, APIs com múltiplos consumidores, integrações com terceiros
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## O que é Contract Testing?
|
|
9
|
+
|
|
10
|
+
Contract testing verifica que **produtor** (API) e **consumidor** (cliente) concordam sobre o contrato de comunicação, sem precisar testar integração completa.
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
Consumer-Driven Contract Testing:
|
|
14
|
+
┌──────────────┐ ┌──────────────┐
|
|
15
|
+
│ Consumer │ ──────► │ Producer │
|
|
16
|
+
│ (Frontend) │ Contract│ (Backend) │
|
|
17
|
+
└──────────────┘ └──────────────┘
|
|
18
|
+
│ │
|
|
19
|
+
▼ ▼
|
|
20
|
+
Gera contrato Valida contrato
|
|
21
|
+
(expectations) (implementação)
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Quando Usar?
|
|
27
|
+
|
|
28
|
+
| Cenário | Contract Testing? | Justificativa |
|
|
29
|
+
|---------|-------------------|---------------|
|
|
30
|
+
| Microserviços | ✅ Sim | Evita quebrar consumidores |
|
|
31
|
+
| API pública | ✅ Sim | Múltiplos consumidores |
|
|
32
|
+
| Frontend + Backend | ✅ Sim | Times diferentes |
|
|
33
|
+
| Monolito | ❌ Geralmente não | Testes de integração são suficientes |
|
|
34
|
+
| Integração com terceiros | ⚠️ Às vezes | Se terceiro fornece contract |
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Prompt Base: Implementar Contract Testing
|
|
39
|
+
|
|
40
|
+
```text
|
|
41
|
+
Atue como engenheiro de QA especialista em contract testing.
|
|
42
|
+
|
|
43
|
+
Tenho a seguinte arquitetura:
|
|
44
|
+
- Produtor: [ex. API de Usuários - Node.js + Express]
|
|
45
|
+
- Consumidores: [ex. Frontend React, Mobile App, Serviço B]
|
|
46
|
+
- Comunicação: [REST/GraphQL/gRPC/Mensageria]
|
|
47
|
+
|
|
48
|
+
Ferramenta escolhida: [Pact/Spring Cloud Contract/Specmatic]
|
|
49
|
+
|
|
50
|
+
Gere uma implementação completa de contract testing:
|
|
51
|
+
|
|
52
|
+
1. **Setup do Consumer**
|
|
53
|
+
- Como definir expectations
|
|
54
|
+
- Exemplo de teste de contrato
|
|
55
|
+
- Geração do arquivo de contrato
|
|
56
|
+
|
|
57
|
+
2. **Setup do Producer**
|
|
58
|
+
- Como carregar e validar contratos
|
|
59
|
+
- Exemplo de verificação
|
|
60
|
+
- Integração com CI/CD
|
|
61
|
+
|
|
62
|
+
3. **Broker/Compartilhamento**
|
|
63
|
+
- Como compartilhar contratos entre times
|
|
64
|
+
- Pact Broker ou alternativa
|
|
65
|
+
- Versionamento de contratos
|
|
66
|
+
|
|
67
|
+
4. **Workflow de CI/CD**
|
|
68
|
+
- Quando rodar testes de contrato
|
|
69
|
+
- Como bloquear deploy se contrato quebrar
|
|
70
|
+
- Webhooks para notificação
|
|
71
|
+
|
|
72
|
+
5. **Can-I-Deploy**
|
|
73
|
+
- Verificar compatibilidade antes de deploy
|
|
74
|
+
- Matriz de compatibilidade
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Prompt: Consumer Test (Pact)
|
|
80
|
+
|
|
81
|
+
```text
|
|
82
|
+
Tenho um serviço consumidor que chama esta API:
|
|
83
|
+
[COLE EXEMPLO DE REQUEST/RESPONSE ESPERADO]
|
|
84
|
+
|
|
85
|
+
Stack do consumidor: [ex. TypeScript + Jest]
|
|
86
|
+
|
|
87
|
+
Gere um teste Pact que:
|
|
88
|
+
1. Define a expectativa do consumidor
|
|
89
|
+
2. Gera o arquivo de contrato (pact file)
|
|
90
|
+
3. Testa a integração com mock server
|
|
91
|
+
4. Publica o contrato no broker
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Prompt: Provider Verification (Pact)
|
|
97
|
+
|
|
98
|
+
```text
|
|
99
|
+
Tenho uma API que precisa validar contratos de consumidores:
|
|
100
|
+
[COLE ESTRUTURA DA API]
|
|
101
|
+
|
|
102
|
+
Contratos estão em: [broker URL / pasta local]
|
|
103
|
+
|
|
104
|
+
Stack: [ex. Java + Spring Boot]
|
|
105
|
+
|
|
106
|
+
Gere:
|
|
107
|
+
1. Configuração de verificação de contratos
|
|
108
|
+
2. Provider states (setup de dados para cada teste)
|
|
109
|
+
3. Integração com CI para rodar em cada PR
|
|
110
|
+
4. Relatório de compatibilidade
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Exemplo Completo: Pact (JavaScript)
|
|
116
|
+
|
|
117
|
+
### Consumer Test
|
|
118
|
+
|
|
119
|
+
```typescript
|
|
120
|
+
// consumer/tests/userService.pact.test.ts
|
|
121
|
+
import { PactV3, MatchersV3 } from '@pact-foundation/pact';
|
|
122
|
+
import { UserService } from '../src/services/userService';
|
|
123
|
+
|
|
124
|
+
const { like, eachLike } = MatchersV3;
|
|
125
|
+
|
|
126
|
+
const provider = new PactV3({
|
|
127
|
+
consumer: 'FrontendApp',
|
|
128
|
+
provider: 'UserAPI',
|
|
129
|
+
dir: './pacts',
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
describe('User API Contract', () => {
|
|
133
|
+
it('should get user by ID', async () => {
|
|
134
|
+
// Arrange: definir expectativa
|
|
135
|
+
await provider
|
|
136
|
+
.given('user 123 exists')
|
|
137
|
+
.uponReceiving('a request for user 123')
|
|
138
|
+
.withRequest({
|
|
139
|
+
method: 'GET',
|
|
140
|
+
path: '/api/users/123',
|
|
141
|
+
headers: {
|
|
142
|
+
Accept: 'application/json',
|
|
143
|
+
},
|
|
144
|
+
})
|
|
145
|
+
.willRespondWith({
|
|
146
|
+
status: 200,
|
|
147
|
+
headers: {
|
|
148
|
+
'Content-Type': 'application/json',
|
|
149
|
+
},
|
|
150
|
+
body: like({
|
|
151
|
+
id: '123',
|
|
152
|
+
name: 'John Doe',
|
|
153
|
+
email: 'john@example.com',
|
|
154
|
+
}),
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
// Act & Assert: rodar contra mock server
|
|
158
|
+
await provider.executeTest(async (mockServer) => {
|
|
159
|
+
const client = new UserService(mockServer.url);
|
|
160
|
+
const user = await client.getUser('123');
|
|
161
|
+
|
|
162
|
+
expect(user.id).toBe('123');
|
|
163
|
+
expect(user.name).toBe('John Doe');
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
it('should list users', async () => {
|
|
168
|
+
await provider
|
|
169
|
+
.given('users exist')
|
|
170
|
+
.uponReceiving('a request to list users')
|
|
171
|
+
.withRequest({
|
|
172
|
+
method: 'GET',
|
|
173
|
+
path: '/api/users',
|
|
174
|
+
})
|
|
175
|
+
.willRespondWith({
|
|
176
|
+
status: 200,
|
|
177
|
+
body: {
|
|
178
|
+
data: eachLike({
|
|
179
|
+
id: like('1'),
|
|
180
|
+
name: like('User Name'),
|
|
181
|
+
email: like('user@example.com'),
|
|
182
|
+
}),
|
|
183
|
+
total: like(10),
|
|
184
|
+
},
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
await provider.executeTest(async (mockServer) => {
|
|
188
|
+
const client = new UserService(mockServer.url);
|
|
189
|
+
const result = await client.listUsers();
|
|
190
|
+
|
|
191
|
+
expect(result.data.length).toBeGreaterThan(0);
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
});
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### Provider Verification
|
|
198
|
+
|
|
199
|
+
```typescript
|
|
200
|
+
// provider/tests/pactVerification.test.ts
|
|
201
|
+
import { Verifier } from '@pact-foundation/pact';
|
|
202
|
+
import { app } from '../src/app';
|
|
203
|
+
|
|
204
|
+
describe('Pact Verification', () => {
|
|
205
|
+
let server: any;
|
|
206
|
+
|
|
207
|
+
beforeAll((done) => {
|
|
208
|
+
server = app.listen(3001, done);
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
afterAll((done) => {
|
|
212
|
+
server.close(done);
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
it('validates the expectations of FrontendApp', async () => {
|
|
216
|
+
const verifier = new Verifier({
|
|
217
|
+
providerBaseUrl: 'http://localhost:3001',
|
|
218
|
+
provider: 'UserAPI',
|
|
219
|
+
pactBrokerUrl: process.env.PACT_BROKER_URL,
|
|
220
|
+
pactBrokerToken: process.env.PACT_BROKER_TOKEN,
|
|
221
|
+
publishVerificationResult: process.env.CI === 'true',
|
|
222
|
+
providerVersion: process.env.GIT_SHA,
|
|
223
|
+
|
|
224
|
+
// Provider states setup
|
|
225
|
+
stateHandlers: {
|
|
226
|
+
'user 123 exists': async () => {
|
|
227
|
+
await seedDatabase({ users: [{ id: '123', name: 'John Doe' }] });
|
|
228
|
+
},
|
|
229
|
+
'users exist': async () => {
|
|
230
|
+
await seedDatabase({ users: generateUsers(5) });
|
|
231
|
+
},
|
|
232
|
+
},
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
await verifier.verifyProvider();
|
|
236
|
+
});
|
|
237
|
+
});
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### CI/CD Integration
|
|
241
|
+
|
|
242
|
+
```yaml
|
|
243
|
+
# .github/workflows/contract-test.yml
|
|
244
|
+
name: Contract Tests
|
|
245
|
+
|
|
246
|
+
on:
|
|
247
|
+
push:
|
|
248
|
+
branches: [main, develop]
|
|
249
|
+
pull_request:
|
|
250
|
+
|
|
251
|
+
jobs:
|
|
252
|
+
consumer-test:
|
|
253
|
+
runs-on: ubuntu-latest
|
|
254
|
+
steps:
|
|
255
|
+
- uses: actions/checkout@v4
|
|
256
|
+
|
|
257
|
+
- name: Run consumer tests
|
|
258
|
+
run: npm run test:pact
|
|
259
|
+
|
|
260
|
+
- name: Publish pacts to broker
|
|
261
|
+
run: npx pact-broker publish ./pacts \
|
|
262
|
+
--consumer-app-version=${{ github.sha }} \
|
|
263
|
+
--broker-base-url=${{ secrets.PACT_BROKER_URL }} \
|
|
264
|
+
--broker-token=${{ secrets.PACT_BROKER_TOKEN }}
|
|
265
|
+
|
|
266
|
+
provider-verify:
|
|
267
|
+
runs-on: ubuntu-latest
|
|
268
|
+
needs: consumer-test
|
|
269
|
+
steps:
|
|
270
|
+
- uses: actions/checkout@v4
|
|
271
|
+
|
|
272
|
+
- name: Verify provider
|
|
273
|
+
run: npm run test:pact:verify
|
|
274
|
+
env:
|
|
275
|
+
PACT_BROKER_URL: ${{ secrets.PACT_BROKER_URL }}
|
|
276
|
+
PACT_BROKER_TOKEN: ${{ secrets.PACT_BROKER_TOKEN }}
|
|
277
|
+
GIT_SHA: ${{ github.sha }}
|
|
278
|
+
CI: true
|
|
279
|
+
|
|
280
|
+
can-i-deploy:
|
|
281
|
+
runs-on: ubuntu-latest
|
|
282
|
+
needs: provider-verify
|
|
283
|
+
steps:
|
|
284
|
+
- name: Can I Deploy?
|
|
285
|
+
run: npx pact-broker can-i-deploy \
|
|
286
|
+
--pacticipant UserAPI \
|
|
287
|
+
--version ${{ github.sha }} \
|
|
288
|
+
--to-environment production \
|
|
289
|
+
--broker-base-url=${{ secrets.PACT_BROKER_URL }} \
|
|
290
|
+
--broker-token=${{ secrets.PACT_BROKER_TOKEN }}
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
---
|
|
294
|
+
|
|
295
|
+
## Ferramentas por Stack
|
|
296
|
+
|
|
297
|
+
| Stack | Ferramenta | Tipo |
|
|
298
|
+
|-------|-----------|------|
|
|
299
|
+
| **JavaScript/TypeScript** | Pact-JS | Consumer-driven |
|
|
300
|
+
| **Java/Kotlin** | Pact-JVM, Spring Cloud Contract | Ambos |
|
|
301
|
+
| **Python** | Pact-Python | Consumer-driven |
|
|
302
|
+
| **Go** | Pact-Go | Consumer-driven |
|
|
303
|
+
| **OpenAPI** | Specmatic, Prism | Schema-based |
|
|
304
|
+
| **gRPC** | buf, protovalidate | Schema-based |
|
|
305
|
+
|
|
306
|
+
---
|
|
307
|
+
|
|
308
|
+
## Pact Broker
|
|
309
|
+
|
|
310
|
+
Central para compartilhar contratos:
|
|
311
|
+
|
|
312
|
+
```bash
|
|
313
|
+
# Docker
|
|
314
|
+
docker run -d \
|
|
315
|
+
-p 9292:9292 \
|
|
316
|
+
-e PACT_BROKER_DATABASE_URL="sqlite:///pact_broker.sqlite3" \
|
|
317
|
+
pactfoundation/pact-broker
|
|
318
|
+
|
|
319
|
+
# Ou use Pactflow (SaaS)
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
## Checklist
|
|
325
|
+
|
|
326
|
+
- [ ] Consumer tests gerando contratos
|
|
327
|
+
- [ ] Provider verificando contratos
|
|
328
|
+
- [ ] Broker configurado para compartilhamento
|
|
329
|
+
- [ ] CI/CD rodando testes de contrato
|
|
330
|
+
- [ ] can-i-deploy bloqueando deploys incompatíveis
|
|
331
|
+
- [ ] Provider states cobrindo cenários
|
|
332
|
+
- [ ] Versionamento semântico de contratos
|
|
333
|
+
|
|
334
|
+
---
|
|
335
|
+
|
|
336
|
+
## Referências
|
|
337
|
+
|
|
338
|
+
- [Pact Documentation](https://docs.pact.io/)
|
|
339
|
+
- [Contract Testing na Prática](https://martinfowler.com/articles/consumerDrivenContracts.html)
|
|
340
|
+
- [Spring Cloud Contract](https://spring.io/projects/spring-cloud-contract)
|