@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,355 @@
|
|
|
1
|
+
# Guia de Adição de Novas Funcionalidades
|
|
2
|
+
|
|
3
|
+
## Visão Geral
|
|
4
|
+
Este guia fornece um framework estruturado para adicionar novas funcionalidades aos projetos, seguindo as melhores práticas de desenvolvimento com IA.
|
|
5
|
+
|
|
6
|
+
A ideia é combinar **processo de engenharia de software** com **uso disciplinado de IA** (ex.: GPT 5.1) em cada etapa.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 1. Análise Inicial
|
|
11
|
+
|
|
12
|
+
### 1.1 Entendimento do Contexto
|
|
13
|
+
- [ ] Revisar o PRD (Product Requirements Document) existente
|
|
14
|
+
- [ ] Analisar o Design System e padrões de UI/UX
|
|
15
|
+
- [ ] Verificar a arquitetura atual do sistema
|
|
16
|
+
- [ ] Identificar dependências e impactos potenciais
|
|
17
|
+
|
|
18
|
+
#### Sugestão de uso de IA
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
Atue como product/tech lead.
|
|
22
|
+
Vou colar abaixo:
|
|
23
|
+
- trecho do PRD
|
|
24
|
+
- contexto do sistema
|
|
25
|
+
- anotações de stakeholders
|
|
26
|
+
|
|
27
|
+
Organize em:
|
|
28
|
+
- resumo da funcionalidade
|
|
29
|
+
- objetivos de negócio
|
|
30
|
+
- áreas do sistema impactadas
|
|
31
|
+
- riscos e dependências que devo observar.
|
|
32
|
+
|
|
33
|
+
Contexto:
|
|
34
|
+
[COLE AQUI]
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### 1.2 Definição de Escopo
|
|
38
|
+
- [ ] Descrever a funcionalidade em formato de User Story
|
|
39
|
+
- [ ] Definir critérios de aceitação
|
|
40
|
+
- [ ] Mapear endpoints e modelos de dados necessários
|
|
41
|
+
- [ ] Identificar necessidades de migração de banco de dados
|
|
42
|
+
|
|
43
|
+
#### Sugestão de uso de IA
|
|
44
|
+
|
|
45
|
+
```text
|
|
46
|
+
Quero adicionar a seguinte funcionalidade ao sistema:
|
|
47
|
+
[DESCREVA EM LINGUAGEM NATURAL]
|
|
48
|
+
|
|
49
|
+
Transforme em:
|
|
50
|
+
- 1 a 3 histórias de usuário (Como [persona], quero [ação], para [benefício])
|
|
51
|
+
- critérios de aceitação
|
|
52
|
+
- lista inicial de endpoints/serviços e entidades que podem ser impactadas.
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 2. Planejamento Técnico
|
|
58
|
+
|
|
59
|
+
### 2.1 Especificação Técnica
|
|
60
|
+
- [ ] Atualizar documentação da API (OpenAPI/Swagger)
|
|
61
|
+
- [ ] Atualizar modelo de dados (Prisma/SQL)
|
|
62
|
+
- [ ] Definir contratos de interface
|
|
63
|
+
- [ ] Planejar testes necessários
|
|
64
|
+
|
|
65
|
+
#### Sugestão de uso de IA
|
|
66
|
+
|
|
67
|
+
```text
|
|
68
|
+
Aqui está a descrição da nova funcionalidade e a API atual (OpenAPI):
|
|
69
|
+
[COLE TRECHOS RELEVANTES]
|
|
70
|
+
|
|
71
|
+
Atue como arquiteto de software.
|
|
72
|
+
Proponha:
|
|
73
|
+
- novos endpoints ou ajustes em endpoints existentes
|
|
74
|
+
- exemplos de payloads de requisição/resposta
|
|
75
|
+
- impactos esperados no modelo de dados
|
|
76
|
+
|
|
77
|
+
Gere também um esboço de alterações em OpenAPI (YAML/JSON), sem inventar campos irreais.
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### 2.2 Tarefas Técnicas
|
|
81
|
+
- [ ] Criar branch a partir da main (feature/nome-da-funcionalidade)
|
|
82
|
+
- [ ] Configurar ambiente de desenvolvimento
|
|
83
|
+
- [ ] Implementar camada de dados
|
|
84
|
+
- [ ] Desenvolver endpoints da API
|
|
85
|
+
- [ ] Implementar lógica de negócios
|
|
86
|
+
- [ ] Desenvolver componentes de UI
|
|
87
|
+
- [ ] Escrever testes automatizados
|
|
88
|
+
|
|
89
|
+
#### Sugestão de uso de IA
|
|
90
|
+
|
|
91
|
+
```text
|
|
92
|
+
História de usuário e descrição técnica da funcionalidade:
|
|
93
|
+
[COLE]
|
|
94
|
+
|
|
95
|
+
Gere um plano de implementação em tarefas técnicas, incluindo:
|
|
96
|
+
- passos para backend (dados, serviços, API)
|
|
97
|
+
- passos para frontend (componentes, estados, navegação)
|
|
98
|
+
- passos de testes (unitário, integração, E2E)
|
|
99
|
+
|
|
100
|
+
Organize em uma lista de tarefas que possa virar backlog de sprint.
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## 3. Implementação com IA
|
|
106
|
+
|
|
107
|
+
### 3.1 Geração de Código
|
|
108
|
+
- [ ] Usar prompts específicos para geração de código
|
|
109
|
+
- [ ] Implementar seguindo padrões do projeto
|
|
110
|
+
- [ ] Revisar e refatorar código gerado
|
|
111
|
+
- [ ] Garantir aderência ao style guide
|
|
112
|
+
|
|
113
|
+
#### Sugestão de uso de IA
|
|
114
|
+
|
|
115
|
+
```text
|
|
116
|
+
Contexto do projeto:
|
|
117
|
+
- stack: [ex. Node + Nest + Postgres]
|
|
118
|
+
- padrão de arquitetura: [ex. camadas controller/service/repository]
|
|
119
|
+
- entidade(s) envolvida(s): [DESCREVA]
|
|
120
|
+
|
|
121
|
+
Funcionalidade a implementar:
|
|
122
|
+
[COLE HISTÓRIA + ESPECIFICAÇÃO]
|
|
123
|
+
|
|
124
|
+
Gere apenas o código do serviço/método de caso de uso responsável pela regra de negócio,
|
|
125
|
+
seguindo o estilo do projeto. Inclua tratamento de erros e tipos adequados.
|
|
126
|
+
Não gere controller/rotas ainda.
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### 3.2 Testes Automatizados
|
|
130
|
+
- [ ] Gerar testes unitários com IA
|
|
131
|
+
- [ ] Implementar testes de integração
|
|
132
|
+
- [ ] Validar cobertura de testes (>80%)
|
|
133
|
+
- [ ] Executar testes de regressão
|
|
134
|
+
|
|
135
|
+
#### Sugestão de uso de IA
|
|
136
|
+
|
|
137
|
+
```text
|
|
138
|
+
Aqui está o serviço/método que acabei de implementar em [LINGUAGEM]:
|
|
139
|
+
[COLE CÓDIGO]
|
|
140
|
+
|
|
141
|
+
Gere testes unitários em [FRAMEWORK DE TESTES] cobrindo:
|
|
142
|
+
- caso de sucesso
|
|
143
|
+
- entradas inválidas
|
|
144
|
+
- casos de borda
|
|
145
|
+
|
|
146
|
+
Explique em 1 linha o que cada teste garante.
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
```text
|
|
150
|
+
Com base nos requisitos e fluxo da funcionalidade:
|
|
151
|
+
[COLE]
|
|
152
|
+
|
|
153
|
+
Sugira testes de integração e E2E mais importantes,
|
|
154
|
+
indicando quais ferramentas poderiam ser usadas (ex.: Postman, Playwright, Cypress).
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## 4. Revisão e Qualidade
|
|
160
|
+
|
|
161
|
+
### 4.1 Code Review
|
|
162
|
+
- [ ] Revisar mudanças em pares
|
|
163
|
+
- [ ] Validar padrões de código
|
|
164
|
+
- [ ] Verificar vulnerabilidades de segurança
|
|
165
|
+
- [ ] Validar performance
|
|
166
|
+
|
|
167
|
+
#### Sugestão de uso de IA
|
|
168
|
+
|
|
169
|
+
```text
|
|
170
|
+
Atue como revisor de código sênior.
|
|
171
|
+
|
|
172
|
+
Aqui está o diff/arquivo da funcionalidade que implementei:
|
|
173
|
+
[COLE]
|
|
174
|
+
|
|
175
|
+
Avalie:
|
|
176
|
+
- legibilidade e organização
|
|
177
|
+
- possíveis bugs ou casos de erro não tratados
|
|
178
|
+
- conformidade com padrões de código e arquitetura
|
|
179
|
+
|
|
180
|
+
Sugira melhorias e, se fizer sentido, apresente uma versão refatorada de trechos críticos.
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### 4.2 Testes Manuais
|
|
184
|
+
- [ ] Testar fluxos principais
|
|
185
|
+
- [ ] Validar responsividade
|
|
186
|
+
- [ ] Verificar acessibilidade
|
|
187
|
+
- [ ] Testar em diferentes navegadores
|
|
188
|
+
|
|
189
|
+
#### Sugestão de uso de IA
|
|
190
|
+
|
|
191
|
+
```text
|
|
192
|
+
Fluxo principal da funcionalidade:
|
|
193
|
+
[DESCREVA]
|
|
194
|
+
|
|
195
|
+
Gere um roteiro de testes manuais com passos claros,
|
|
196
|
+
considerando:
|
|
197
|
+
- caso de uso feliz
|
|
198
|
+
- erros comuns de usuário
|
|
199
|
+
- aspectos de acessibilidade e responsividade.
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## 5. Implantação
|
|
205
|
+
|
|
206
|
+
### 5.1 Preparação para Produção
|
|
207
|
+
- [ ] Atualizar documentação
|
|
208
|
+
- [ ] Preparar scripts de migração
|
|
209
|
+
- [ ] Atualizar changelog
|
|
210
|
+
- [ ] Preparar rollback se necessário
|
|
211
|
+
|
|
212
|
+
#### Sugestão de uso de IA
|
|
213
|
+
|
|
214
|
+
```text
|
|
215
|
+
Mudanças feitas nesta funcionalidade:
|
|
216
|
+
[RESUMA]
|
|
217
|
+
|
|
218
|
+
Gere:
|
|
219
|
+
- um trecho de changelog
|
|
220
|
+
- uma lista de checagens para migração (se houver mudança de schema)
|
|
221
|
+
- um plano simples de rollback.
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### 5.2 Deploy
|
|
225
|
+
- [ ] Merge para branch principal
|
|
226
|
+
- [ ] Executar pipeline de CI/CD
|
|
227
|
+
- [ ] Monitorar métricas pós-deploy
|
|
228
|
+
- [ ] Validar em ambiente de produção
|
|
229
|
+
|
|
230
|
+
#### Sugestão de uso de IA
|
|
231
|
+
|
|
232
|
+
```text
|
|
233
|
+
Descreva o ambiente de produção e as métricas críticas do sistema:
|
|
234
|
+
[COLE]
|
|
235
|
+
|
|
236
|
+
Sugira quais métricas devo monitorar especificamente
|
|
237
|
+
para esta nova funcionalidade nos primeiros dias pós-deploy.
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## 6. Pós-Implantação
|
|
243
|
+
|
|
244
|
+
### 6.1 Monitoramento
|
|
245
|
+
- [ ] Configurar alertas
|
|
246
|
+
- [ ] Monitorar erros em produção
|
|
247
|
+
- [ ] Acompanhar métricas de desempenho
|
|
248
|
+
- [ ] Coletar feedback dos usuários
|
|
249
|
+
|
|
250
|
+
#### Sugestão de uso de IA
|
|
251
|
+
|
|
252
|
+
```text
|
|
253
|
+
Vou colar alguns erros/logs e feedbacks de usuários
|
|
254
|
+
após o deploy desta funcionalidade:
|
|
255
|
+
[COLE]
|
|
256
|
+
|
|
257
|
+
Agrupe em:
|
|
258
|
+
- bugs
|
|
259
|
+
- problemas de usabilidade
|
|
260
|
+
- pedidos de melhoria
|
|
261
|
+
|
|
262
|
+
Sugira ações de curto prazo e melhorias estruturais.
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### 6.2 Melhorias Contínuas
|
|
266
|
+
- [ ] Analisar métricas de uso
|
|
267
|
+
- [ ] Identificar oportunidades de otimização
|
|
268
|
+
- [ ] Planejar próximas iterações
|
|
269
|
+
- [ ] Documentar lições aprendidas
|
|
270
|
+
|
|
271
|
+
#### Sugestão de uso de IA
|
|
272
|
+
|
|
273
|
+
```text
|
|
274
|
+
Aqui estão métricas de uso desta funcionalidade e observações da equipe:
|
|
275
|
+
[COLE]
|
|
276
|
+
|
|
277
|
+
Gere um pequeno relatório de lições aprendidas,
|
|
278
|
+
com recomendações para a próxima iteração.
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
## Ferramentas Recomendadas
|
|
284
|
+
|
|
285
|
+
### Desenvolvimento
|
|
286
|
+
- **Versionamento**: Git
|
|
287
|
+
- **CI/CD**: GitHub Actions, GitLab CI
|
|
288
|
+
- **Documentação**: Swagger/OpenAPI, Storybook ou equivalente
|
|
289
|
+
- **Testes**: Jest, Playwright, Cypress, ou ferramentas equivalentes da stack
|
|
290
|
+
|
|
291
|
+
### IA
|
|
292
|
+
- **Geração de Código**: GitHub Copilot, Codeium, modelos GPT
|
|
293
|
+
- **Revisão de Código**: CodeRabbit, SonarQube, modelos GPT
|
|
294
|
+
- **Documentação**: Mintlify, Docusaurus, modelos GPT
|
|
295
|
+
|
|
296
|
+
---
|
|
297
|
+
|
|
298
|
+
## Templates
|
|
299
|
+
|
|
300
|
+
### Pull Request
|
|
301
|
+
```markdown
|
|
302
|
+
## Descrição
|
|
303
|
+
[Breve descrição das mudanças]
|
|
304
|
+
|
|
305
|
+
## Tipo de Mudança
|
|
306
|
+
- [ ] Nova funcionalidade
|
|
307
|
+
- [ ] Correção de bug
|
|
308
|
+
- [ ] Melhoria de performance
|
|
309
|
+
- [ ] Atualização de documentação
|
|
310
|
+
|
|
311
|
+
## Checklist
|
|
312
|
+
- [ ] Meu código segue as diretrizes de estilo do projeto
|
|
313
|
+
- [ ] Adicionei testes que comprovam minha correção
|
|
314
|
+
- [ ] Testes unitários passam localmente
|
|
315
|
+
- [ ] Atualizei a documentação conforme necessário
|
|
316
|
+
|
|
317
|
+
## Screenshots/Vídeos
|
|
318
|
+
[Adicione capturas de tela ou vídeos se aplicável]
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
### User Story
|
|
322
|
+
```text
|
|
323
|
+
Como um [tipo de usuário],
|
|
324
|
+
Quero [ação],
|
|
325
|
+
Para que [benefício/valor].
|
|
326
|
+
|
|
327
|
+
Critérios de Aceitação:
|
|
328
|
+
- [ ] Critério 1
|
|
329
|
+
- [ ] Critério 2
|
|
330
|
+
- [ ] Critério 3
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
---
|
|
334
|
+
|
|
335
|
+
## Boas Práticas
|
|
336
|
+
|
|
337
|
+
### Desenvolvimento
|
|
338
|
+
- Sempre comece pelos testes (ao menos pensando nos cenários).
|
|
339
|
+
- Mantenha as mudanças pequenas e focadas.
|
|
340
|
+
- Documente decisões arquiteturais relevantes.
|
|
341
|
+
- Siga o princípio da responsabilidade única.
|
|
342
|
+
|
|
343
|
+
### IA
|
|
344
|
+
- Revise sempre o código gerado.
|
|
345
|
+
- Mantenha prompts específicos e claros.
|
|
346
|
+
- Documente os prompts utilizados que funcionaram bem.
|
|
347
|
+
- Não confie cegamente nas saídas da IA; use como assistente, não como verdade absoluta.
|
|
348
|
+
|
|
349
|
+
---
|
|
350
|
+
|
|
351
|
+
## Recursos Adicionais
|
|
352
|
+
- [Documentação do Projeto](#)
|
|
353
|
+
- [Guia de Estilo](#)
|
|
354
|
+
- [Playbook de DevOps](#)
|
|
355
|
+
- [Política de Branches](#)
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
# Guia de Chaos Engineering
|
|
2
|
+
|
|
3
|
+
> **Prioridade**: 🟢 BAIXA
|
|
4
|
+
> **Aplicável a**: Projetos Nível 3 (Complexo) com alta disponibilidade obrigatória
|
|
5
|
+
> **Pré-requisito**: SLOs definidos para medir impacto
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## O que é Chaos Engineering?
|
|
10
|
+
|
|
11
|
+
> "Chaos Engineering é a disciplina de experimentar em um sistema para construir confiança na capacidade do sistema de suportar condições turbulentas em produção."
|
|
12
|
+
> — [Principles of Chaos Engineering](https://principlesofchaos.org/)
|
|
13
|
+
|
|
14
|
+
**NÃO é**: Quebrar coisas aleatoriamente
|
|
15
|
+
**É**: Experimentos controlados para descobrir fraquezas
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Quando Usar?
|
|
20
|
+
|
|
21
|
+
| Contexto | Chaos Engineering? |
|
|
22
|
+
|----------|-------------------|
|
|
23
|
+
| MVP / Startup inicial | ❌ Não prioritário |
|
|
24
|
+
| SaaS com SLA 99.9% | ✅ Sim |
|
|
25
|
+
| Fintech / Healthcare | ✅ Obrigatório |
|
|
26
|
+
| Microserviços distribuídos | ✅ Altamente recomendado |
|
|
27
|
+
| Monolito simples | ⚠️ Pode ser overkill |
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Processo
|
|
32
|
+
|
|
33
|
+
```mermaid
|
|
34
|
+
graph LR
|
|
35
|
+
A[1. Definir Estado Estável] --> B[2. Formular Hipótese]
|
|
36
|
+
B --> C[3. Planejar Experimento]
|
|
37
|
+
C --> D[4. Executar em Ambiente Controlado]
|
|
38
|
+
D --> E[5. Analisar Resultados]
|
|
39
|
+
E --> F[6. Melhorar Sistema]
|
|
40
|
+
F --> A
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### 1. Definir Estado Estável
|
|
44
|
+
|
|
45
|
+
Use SLOs como baseline:
|
|
46
|
+
- Disponibilidade: 99.9%
|
|
47
|
+
- Latência p95: < 200ms
|
|
48
|
+
- Taxa de erros: < 0.1%
|
|
49
|
+
|
|
50
|
+
### 2. Formular Hipótese
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
"Quando [FALHA INJETADA], o sistema deve [COMPORTAMENTO ESPERADO]
|
|
54
|
+
e os SLOs devem [IMPACTO ACEITÁVEL]."
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Exemplo:
|
|
58
|
+
> "Quando o banco de dados primário falhar, o sistema deve fazer failover para réplica em < 30 segundos, com queda temporária de disponibilidade < 0.01%."
|
|
59
|
+
|
|
60
|
+
### 3. Planejar Experimento
|
|
61
|
+
|
|
62
|
+
| Aspecto | Definição |
|
|
63
|
+
|---------|-----------|
|
|
64
|
+
| **Escopo** | Quais componentes? |
|
|
65
|
+
| **Blast Radius** | % de tráfego afetado |
|
|
66
|
+
| **Duração** | Quanto tempo? |
|
|
67
|
+
| **Métricas** | O que observar? |
|
|
68
|
+
| **Kill Switch** | Como parar imediatamente? |
|
|
69
|
+
| **Rollback** | Como reverter? |
|
|
70
|
+
|
|
71
|
+
### 4. Executar
|
|
72
|
+
|
|
73
|
+
- Começar em staging
|
|
74
|
+
- Depois em produção com % pequeno
|
|
75
|
+
- Ter equipe pronta para intervir
|
|
76
|
+
- Monitorar métricas em tempo real
|
|
77
|
+
|
|
78
|
+
### 5. Analisar
|
|
79
|
+
|
|
80
|
+
- Hipótese confirmada ou refutada?
|
|
81
|
+
- Descobertas inesperadas?
|
|
82
|
+
- SLOs impactados quanto?
|
|
83
|
+
|
|
84
|
+
### 6. Melhorar
|
|
85
|
+
|
|
86
|
+
- Criar tickets para corrigir fraquezas
|
|
87
|
+
- Adicionar alarmes faltantes
|
|
88
|
+
- Melhorar runbooks
|
|
89
|
+
- Repetir experimento após fix
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Tipos de Experimentos
|
|
94
|
+
|
|
95
|
+
### Infraestrutura
|
|
96
|
+
|
|
97
|
+
| Experimento | Descrição | Ferramenta |
|
|
98
|
+
|-------------|-----------|------------|
|
|
99
|
+
| **Kill Instance** | Terminar VM/container | Chaos Monkey |
|
|
100
|
+
| **CPU Stress** | 100% CPU | stress-ng |
|
|
101
|
+
| **Memory Pressure** | Esgotar memória | stress-ng |
|
|
102
|
+
| **Disk Fill** | Encher disco | dd |
|
|
103
|
+
| **Network Latency** | Adicionar latência | tc netem |
|
|
104
|
+
| **Network Partition** | Isolar serviços | iptables |
|
|
105
|
+
| **DNS Failure** | DNS não resolve | Gremlin |
|
|
106
|
+
|
|
107
|
+
### Aplicação
|
|
108
|
+
|
|
109
|
+
| Experimento | Descrição |
|
|
110
|
+
|-------------|-----------|
|
|
111
|
+
| **Dependency Failure** | Mock falha de serviço externo |
|
|
112
|
+
| **Database Slowdown** | Queries lentas artificialmente |
|
|
113
|
+
| **Circuit Breaker Test** | Abrir circuit breaker |
|
|
114
|
+
| **Cache Invalidation** | Limpar todo o cache |
|
|
115
|
+
| **Message Queue Backup** | Enfileirar muitas mensagens |
|
|
116
|
+
|
|
117
|
+
### Processo
|
|
118
|
+
|
|
119
|
+
| Experimento | Objetivo |
|
|
120
|
+
|-------------|----------|
|
|
121
|
+
| **On-Call Response** | Tempo de resposta do time |
|
|
122
|
+
| **Runbook Validity** | Runbooks funcionam? |
|
|
123
|
+
| **Rollback Speed** | Tempo para reverter deploy |
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Ferramentas
|
|
128
|
+
|
|
129
|
+
| Ferramenta | Tipo | Melhor Para |
|
|
130
|
+
|------------|------|-------------|
|
|
131
|
+
| **Chaos Monkey** | Open Source | Kill instances (EC2) |
|
|
132
|
+
| **Gremlin** | SaaS | Experimentos variados |
|
|
133
|
+
| **Litmus** | Open Source | Kubernetes |
|
|
134
|
+
| **Chaos Mesh** | Open Source | Kubernetes |
|
|
135
|
+
| **AWS FIS** | AWS | Experimentos na AWS |
|
|
136
|
+
| **Toxiproxy** | Open Source | Network failures |
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Exemplo: Experimento Simples
|
|
141
|
+
|
|
142
|
+
### Plano
|
|
143
|
+
|
|
144
|
+
```yaml
|
|
145
|
+
Experiment:
|
|
146
|
+
Name: Database Failover Test
|
|
147
|
+
Hypothesis: >
|
|
148
|
+
Quando o RDS primário ficar indisponível por 5 minutos,
|
|
149
|
+
o sistema deve fazer failover para a réplica em < 30 segundos
|
|
150
|
+
com < 3 requests falhando.
|
|
151
|
+
|
|
152
|
+
Scope:
|
|
153
|
+
Environment: staging
|
|
154
|
+
BlastRadius: 100% (staging é isolado)
|
|
155
|
+
Duration: 5 minutes
|
|
156
|
+
|
|
157
|
+
Execution:
|
|
158
|
+
Tool: AWS FIS
|
|
159
|
+
Action: aws:rds:failover-db-cluster
|
|
160
|
+
Target: staging-db-cluster
|
|
161
|
+
|
|
162
|
+
Metrics:
|
|
163
|
+
- SLI: Availability (requests bem-sucedidos)
|
|
164
|
+
- SLI: Error count durante failover
|
|
165
|
+
- Custom: Tempo para recuperação
|
|
166
|
+
|
|
167
|
+
KillSwitch:
|
|
168
|
+
- Manual: Cancelar experimento no FIS console
|
|
169
|
+
- Auto: Se error rate > 5% por 1 min
|
|
170
|
+
|
|
171
|
+
Team:
|
|
172
|
+
- Lead: @engineer-1
|
|
173
|
+
- Observer: @engineer-2
|
|
174
|
+
- Communicator: @manager (se escalar)
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Execução
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
# AWS FIS
|
|
181
|
+
aws fis start-experiment \
|
|
182
|
+
--experiment-template-id EXT123456 \
|
|
183
|
+
--tags Environment=staging
|
|
184
|
+
|
|
185
|
+
# Monitorar
|
|
186
|
+
watch -n 5 'curl -s https://staging.app.com/health | jq .'
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### Resultado
|
|
190
|
+
|
|
191
|
+
```markdown
|
|
192
|
+
## Resultado: Database Failover Test
|
|
193
|
+
|
|
194
|
+
**Data**: 2024-01-15 14:00 UTC
|
|
195
|
+
**Hipótese**: CONFIRMADA ✅
|
|
196
|
+
|
|
197
|
+
### Métricas Observadas
|
|
198
|
+
- Tempo de failover: 22 segundos
|
|
199
|
+
- Requests falhados durante failover: 2
|
|
200
|
+
- Availability durante experimento: 99.97%
|
|
201
|
+
|
|
202
|
+
### Descobertas
|
|
203
|
+
- Circuit breaker levou 10s para abrir (configurar para 5s)
|
|
204
|
+
- Alertas dispararam corretamente
|
|
205
|
+
- Runbook estava desatualizado (atualizar)
|
|
206
|
+
|
|
207
|
+
### Ações
|
|
208
|
+
- [ ] Ajustar circuit breaker timeout
|
|
209
|
+
- [ ] Atualizar runbook de failover
|
|
210
|
+
- [ ] Adicionar métrica de tempo de failover
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## Começando
|
|
216
|
+
|
|
217
|
+
### Semana 1: Preparação
|
|
218
|
+
- [ ] Definir SLOs de baseline
|
|
219
|
+
- [ ] Mapear dependências críticas
|
|
220
|
+
- [ ] Configurar observabilidade
|
|
221
|
+
|
|
222
|
+
### Semana 2: Primeiro Experimento
|
|
223
|
+
- [ ] Escolher experimento simples (ex: kill instance)
|
|
224
|
+
- [ ] Executar em staging
|
|
225
|
+
- [ ] Documentar resultados
|
|
226
|
+
|
|
227
|
+
### Semana 3+: Evolução
|
|
228
|
+
- [ ] Experimentos mais complexos
|
|
229
|
+
- [ ] Game days (simulação de incidente)
|
|
230
|
+
- [ ] Eventualmente em produção
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## Checklist de Prontidão
|
|
235
|
+
|
|
236
|
+
Antes de chaos engineering em produção:
|
|
237
|
+
|
|
238
|
+
- [ ] SLOs definidos e monitorados
|
|
239
|
+
- [ ] Alertas funcionando
|
|
240
|
+
- [ ] Runbooks para cenários comuns
|
|
241
|
+
- [ ] Rollback testado e rápido
|
|
242
|
+
- [ ] Time treinado em resposta a incidentes
|
|
243
|
+
- [ ] Comunicação definida (quem avisar, quando)
|
|
244
|
+
- [ ] Janela de experimentos acordada
|
|
245
|
+
- [ ] Kill switch configurado e testado
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## Anti-Patterns
|
|
250
|
+
|
|
251
|
+
| ❌ Não Faça | ✅ Faça |
|
|
252
|
+
|-------------|--------|
|
|
253
|
+
| Chaos sem hipótese | Sempre defina hipótese clara |
|
|
254
|
+
| Começar em produção | Staging primeiro |
|
|
255
|
+
| Grande blast radius inicial | Comece com 1% do tráfego |
|
|
256
|
+
| Sem monitoramento | Dashboards abertos durante |
|
|
257
|
+
| Sem kill switch | Sempre tenha forma de parar |
|
|
258
|
+
| Culpar pessoas | Foque em melhorar sistemas |
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## Referências
|
|
263
|
+
|
|
264
|
+
- [Principles of Chaos Engineering](https://principlesofchaos.org/)
|
|
265
|
+
- [Chaos Engineering (O'Reilly Book)](https://www.oreilly.com/library/view/chaos-engineering/9781491988459/)
|
|
266
|
+
- [Netflix Chaos Monkey](https://github.com/Netflix/chaosmonkey)
|
|
267
|
+
- [AWS Fault Injection Simulator](https://aws.amazon.com/fis/)
|