@maestro-ai/cli 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (252) hide show
  1. package/README.md +59 -0
  2. package/content/guides/Cat/303/241logo de Stacks para Cloud Moderna.md" +119 -0
  3. package/content/guides/Cat/303/241logo de Stacks para Hospedagem Compartilhada.md" +147 -0
  4. package/content/guides/Checklist Mestre de Entrega.md +68 -0
  5. package/content/guides/Gates de Qualidade.md +209 -0
  6. package/content/guides/Guia de Adi/303/247/303/243o de Novas Funcionalidades.md" +355 -0
  7. package/content/guides/Guia de Chaos Engineering.md +267 -0
  8. package/content/guides/Guia de Debugging com IA.md +135 -0
  9. package/content/guides/Guia de Estrat/303/251gias de Cache.md" +352 -0
  10. package/content/guides/Guia de Migrations Zero-Downtime.md +311 -0
  11. package/content/guides/Guia de Multi-tenancy.md +368 -0
  12. package/content/guides/Guia de Otimiza/303/247/303/243o de Custos Cloud.md" +195 -0
  13. package/content/guides/Guia de Refatora/303/247/303/243o de C/303/263digo Legado com IA.md" +162 -0
  14. package/content/guides/Guia de SLOs e Error Budgets.md +315 -0
  15. package/content/guides/M/303/251tricas de Efici/303/252ncia do Desenvolvimento com IA.md" +93 -0
  16. package/content/guides/Rules base.md +90 -0
  17. package/content/prompts/README.md +203 -0
  18. package/content/prompts/acessibilidade/analise-acessibilidade.md +257 -0
  19. package/content/prompts/apis/design-api-rest.md +303 -0
  20. package/content/prompts/apis/idempotencia.md +254 -0
  21. package/content/prompts/apis/versionamento.md +313 -0
  22. package/content/prompts/arquitetura/arquitetura-c4-completo.md +190 -0
  23. package/content/prompts/arquitetura/clean-architecture.md +151 -0
  24. package/content/prompts/arquitetura/ddd-bounded-contexts.md +183 -0
  25. package/content/prompts/arquitetura/ddd-cqrs.md +176 -0
  26. package/content/prompts/arquitetura/modelo-dominio.md +207 -0
  27. package/content/prompts/arquitetura/multi-tenancy.md +235 -0
  28. package/content/prompts/database/migrations-zero-downtime.md +192 -0
  29. package/content/prompts/database/otimizacao-queries.md +296 -0
  30. package/content/prompts/desenvolvimento/code-review.md +301 -0
  31. package/content/prompts/desenvolvimento/gerar-servico.md +271 -0
  32. package/content/prompts/devops/docker-compose.md +336 -0
  33. package/content/prompts/devops/feature-flags.md +374 -0
  34. package/content/prompts/devops/kubernetes-deploy.md +460 -0
  35. package/content/prompts/devops/pipeline-cicd.md +358 -0
  36. package/content/prompts/devops/terraform-iac.md +502 -0
  37. package/content/prompts/escalabilidade/analise-performance.md +240 -0
  38. package/content/prompts/escalabilidade/analise-performance.txt +94 -0
  39. package/content/prompts/escalabilidade/caching.md +255 -0
  40. package/content/prompts/observabilidade/chaos-testing.md +237 -0
  41. package/content/prompts/observabilidade/estrategia-observabilidade.md +263 -0
  42. package/content/prompts/observabilidade/estrategia-observabilidade.txt +134 -0
  43. package/content/prompts/observabilidade/slos.md +215 -0
  44. package/content/prompts/produto/discovery-inicial.md +203 -0
  45. package/content/prompts/produto/discovery-inicial.txt +33 -0
  46. package/content/prompts/requisitos/refinar-requisitos.md +232 -0
  47. package/content/prompts/requisitos/refinar-requisitos.txt +40 -0
  48. package/content/prompts/seguranca/analise-seguranca.md +243 -0
  49. package/content/prompts/seguranca/pentest-checklist.md +333 -0
  50. package/content/prompts/seguranca/rate-limiting.md +356 -0
  51. package/content/prompts/seguranca/revisao-lgpd.md +227 -0
  52. package/content/prompts/seguranca/threat-modeling.md +224 -0
  53. package/content/prompts/testes/contract-testing.md +340 -0
  54. package/content/prompts/testes/gerar-testes-unitarios.md +474 -0
  55. package/content/prompts/testes/testes-e2e.md +460 -0
  56. package/content/prompts/testes/testes-integracao.md +418 -0
  57. package/content/prompts/testes/testes-performance.md +458 -0
  58. package/content/prompts/ux/gerar-ui-stitch.md +151 -0
  59. package/content/skills/api-patterns/SKILL.md +81 -0
  60. package/content/skills/api-patterns/api-style.md +42 -0
  61. package/content/skills/api-patterns/auth.md +24 -0
  62. package/content/skills/api-patterns/documentation.md +26 -0
  63. package/content/skills/api-patterns/graphql.md +41 -0
  64. package/content/skills/api-patterns/rate-limiting.md +31 -0
  65. package/content/skills/api-patterns/response.md +37 -0
  66. package/content/skills/api-patterns/rest.md +40 -0
  67. package/content/skills/api-patterns/scripts/api_validator.py +211 -0
  68. package/content/skills/api-patterns/security-testing.md +122 -0
  69. package/content/skills/api-patterns/trpc.md +41 -0
  70. package/content/skills/api-patterns/versioning.md +22 -0
  71. package/content/skills/app-builder/SKILL.md +75 -0
  72. package/content/skills/app-builder/agent-coordination.md +71 -0
  73. package/content/skills/app-builder/feature-building.md +53 -0
  74. package/content/skills/app-builder/project-detection.md +34 -0
  75. package/content/skills/app-builder/scaffolding.md +118 -0
  76. package/content/skills/app-builder/tech-stack.md +40 -0
  77. package/content/skills/app-builder/templates/SKILL.md +39 -0
  78. package/content/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
  79. package/content/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
  80. package/content/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
  81. package/content/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
  82. package/content/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
  83. package/content/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
  84. package/content/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
  85. package/content/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +82 -0
  86. package/content/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +100 -0
  87. package/content/skills/app-builder/templates/nextjs-static/TEMPLATE.md +106 -0
  88. package/content/skills/app-builder/templates/nuxt-app/TEMPLATE.md +101 -0
  89. package/content/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
  90. package/content/skills/app-builder/templates/react-native-app/TEMPLATE.md +93 -0
  91. package/content/skills/architecture/SKILL.md +55 -0
  92. package/content/skills/architecture/context-discovery.md +43 -0
  93. package/content/skills/architecture/examples.md +94 -0
  94. package/content/skills/architecture/pattern-selection.md +68 -0
  95. package/content/skills/architecture/patterns-reference.md +50 -0
  96. package/content/skills/architecture/trade-off-analysis.md +77 -0
  97. package/content/skills/bash-linux/SKILL.md +199 -0
  98. package/content/skills/behavioral-modes/SKILL.md +242 -0
  99. package/content/skills/brainstorming/SKILL.md +163 -0
  100. package/content/skills/brainstorming/dynamic-questioning.md +350 -0
  101. package/content/skills/clean-code/SKILL.md +201 -0
  102. package/content/skills/code-review-checklist/SKILL.md +109 -0
  103. package/content/skills/database-design/SKILL.md +52 -0
  104. package/content/skills/database-design/database-selection.md +43 -0
  105. package/content/skills/database-design/indexing.md +39 -0
  106. package/content/skills/database-design/migrations.md +48 -0
  107. package/content/skills/database-design/optimization.md +36 -0
  108. package/content/skills/database-design/orm-selection.md +30 -0
  109. package/content/skills/database-design/schema-design.md +56 -0
  110. package/content/skills/database-design/scripts/schema_validator.py +172 -0
  111. package/content/skills/deployment-procedures/SKILL.md +241 -0
  112. package/content/skills/doc.md +177 -0
  113. package/content/skills/documentation-templates/SKILL.md +194 -0
  114. package/content/skills/frontend-design/SKILL.md +396 -0
  115. package/content/skills/frontend-design/animation-guide.md +331 -0
  116. package/content/skills/frontend-design/color-system.md +311 -0
  117. package/content/skills/frontend-design/decision-trees.md +418 -0
  118. package/content/skills/frontend-design/motion-graphics.md +306 -0
  119. package/content/skills/frontend-design/scripts/accessibility_checker.py +183 -0
  120. package/content/skills/frontend-design/scripts/ux_audit.py +722 -0
  121. package/content/skills/frontend-design/typography-system.md +345 -0
  122. package/content/skills/frontend-design/ux-psychology.md +541 -0
  123. package/content/skills/frontend-design/visual-effects.md +383 -0
  124. package/content/skills/game-development/2d-games/SKILL.md +119 -0
  125. package/content/skills/game-development/3d-games/SKILL.md +135 -0
  126. package/content/skills/game-development/SKILL.md +167 -0
  127. package/content/skills/game-development/game-art/SKILL.md +185 -0
  128. package/content/skills/game-development/game-audio/SKILL.md +190 -0
  129. package/content/skills/game-development/game-design/SKILL.md +129 -0
  130. package/content/skills/game-development/mobile-games/SKILL.md +108 -0
  131. package/content/skills/game-development/multiplayer/SKILL.md +132 -0
  132. package/content/skills/game-development/pc-games/SKILL.md +144 -0
  133. package/content/skills/game-development/vr-ar/SKILL.md +123 -0
  134. package/content/skills/game-development/web-games/SKILL.md +150 -0
  135. package/content/skills/geo-fundamentals/SKILL.md +156 -0
  136. package/content/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
  137. package/content/skills/i18n-localization/SKILL.md +154 -0
  138. package/content/skills/i18n-localization/scripts/i18n_checker.py +241 -0
  139. package/content/skills/intelligent-routing/SKILL.md +334 -0
  140. package/content/skills/lint-and-validate/SKILL.md +45 -0
  141. package/content/skills/lint-and-validate/scripts/lint_runner.py +172 -0
  142. package/content/skills/lint-and-validate/scripts/type_coverage.py +173 -0
  143. package/content/skills/mcp-builder/SKILL.md +176 -0
  144. package/content/skills/mobile-design/SKILL.md +394 -0
  145. package/content/skills/mobile-design/decision-trees.md +516 -0
  146. package/content/skills/mobile-design/mobile-backend.md +491 -0
  147. package/content/skills/mobile-design/mobile-color-system.md +420 -0
  148. package/content/skills/mobile-design/mobile-debugging.md +122 -0
  149. package/content/skills/mobile-design/mobile-design-thinking.md +357 -0
  150. package/content/skills/mobile-design/mobile-navigation.md +458 -0
  151. package/content/skills/mobile-design/mobile-performance.md +767 -0
  152. package/content/skills/mobile-design/mobile-testing.md +356 -0
  153. package/content/skills/mobile-design/mobile-typography.md +433 -0
  154. package/content/skills/mobile-design/platform-android.md +666 -0
  155. package/content/skills/mobile-design/platform-ios.md +561 -0
  156. package/content/skills/mobile-design/scripts/mobile_audit.py +670 -0
  157. package/content/skills/mobile-design/touch-psychology.md +537 -0
  158. package/content/skills/nextjs-best-practices/SKILL.md +203 -0
  159. package/content/skills/nodejs-best-practices/SKILL.md +333 -0
  160. package/content/skills/parallel-agents/SKILL.md +175 -0
  161. package/content/skills/performance-profiling/SKILL.md +143 -0
  162. package/content/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
  163. package/content/skills/plan-writing/SKILL.md +152 -0
  164. package/content/skills/powershell-windows/SKILL.md +167 -0
  165. package/content/skills/python-patterns/SKILL.md +441 -0
  166. package/content/skills/react-patterns/SKILL.md +198 -0
  167. package/content/skills/red-team-tactics/SKILL.md +199 -0
  168. package/content/skills/seo-fundamentals/SKILL.md +129 -0
  169. package/content/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
  170. package/content/skills/server-management/SKILL.md +161 -0
  171. package/content/skills/systematic-debugging/SKILL.md +109 -0
  172. package/content/skills/tailwind-patterns/SKILL.md +269 -0
  173. package/content/skills/tdd-workflow/SKILL.md +149 -0
  174. package/content/skills/testing-patterns/SKILL.md +178 -0
  175. package/content/skills/testing-patterns/scripts/test_runner.py +219 -0
  176. package/content/skills/vulnerability-scanner/SKILL.md +276 -0
  177. package/content/skills/vulnerability-scanner/checklists.md +121 -0
  178. package/content/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
  179. package/content/skills/webapp-testing/SKILL.md +187 -0
  180. package/content/skills/webapp-testing/scripts/playwright_runner.py +173 -0
  181. package/content/specialists/Especialista em Acessibilidade.md +266 -0
  182. package/content/specialists/Especialista em An/303/241lise de Testes.md" +434 -0
  183. package/content/specialists/Especialista em Arquitetura Avan/303/247ada.md" +358 -0
  184. package/content/specialists/Especialista em Arquitetura de Software.md +177 -0
  185. package/content/specialists/Especialista em Banco de Dados.md +260 -0
  186. package/content/specialists/Especialista em Contrato de API.md +172 -0
  187. package/content/specialists/Especialista em Dados e Analytics com IA.md +246 -0
  188. package/content/specialists/Especialista em Debugging e Troubleshooting.md +191 -0
  189. package/content/specialists/Especialista em Desenvolvimento Frontend.md +477 -0
  190. package/content/specialists/Especialista em Desenvolvimento Mobile.md +241 -0
  191. package/content/specialists/Especialista em Desenvolvimento e Vibe Coding Estruturado.md +417 -0
  192. package/content/specialists/Especialista em DevOps e Infraestrutura.md +294 -0
  193. package/content/specialists/Especialista em Documenta/303/247/303/243o T/303/251cnica.md" +227 -0
  194. package/content/specialists/Especialista em Engenharia de Requisitos com IA.md +299 -0
  195. package/content/specialists/Especialista em Explora/303/247/303/243o de Codebase.md" +179 -0
  196. package/content/specialists/Especialista em Gest/303/243o de Produto.md" +179 -0
  197. package/content/specialists/Especialista em Migra/303/247/303/243o e Moderniza/303/247/303/243o.md" +410 -0
  198. package/content/specialists/Especialista em Modelagem e Arquitetura de Dom/303/255nio com IA.md" +248 -0
  199. package/content/specialists/Especialista em Observabilidade.md +415 -0
  200. package/content/specialists/Especialista em Performance e Escalabilidade.md +373 -0
  201. package/content/specialists/Especialista em Plano de Execu/303/247/303/243o com IA.md" +341 -0
  202. package/content/specialists/Especialista em Prototipagem R/303/241pida com Google Stitch.md" +419 -0
  203. package/content/specialists/Especialista em Seguran/303/247a da Informa/303/247/303/243o.md" +508 -0
  204. package/content/specialists/Especialista em UX Design.md +453 -0
  205. package/content/specialists/INDEX.md +43 -0
  206. package/content/templates/PRD.md +165 -0
  207. package/content/templates/README.md +65 -0
  208. package/content/templates/adr.md +103 -0
  209. package/content/templates/arquitetura.md +279 -0
  210. package/content/templates/backlog.md +185 -0
  211. package/content/templates/checklist-seguranca.md +180 -0
  212. package/content/templates/contexto.md +120 -0
  213. package/content/templates/criterios-aceite.md +99 -0
  214. package/content/templates/design-banco.md +270 -0
  215. package/content/templates/design-doc.md +240 -0
  216. package/content/templates/feature.md +88 -0
  217. package/content/templates/historia-backend.md +84 -0
  218. package/content/templates/historia-frontend.md +75 -0
  219. package/content/templates/historia-usuario.md +125 -0
  220. package/content/templates/mapa-navegacao.md +133 -0
  221. package/content/templates/matriz-rastreabilidade.md +121 -0
  222. package/content/templates/modelo-dominio.md +219 -0
  223. package/content/templates/plano-testes.md +199 -0
  224. package/content/templates/prototipo-stitch.md +138 -0
  225. package/content/templates/requisitos.md +162 -0
  226. package/content/templates/slo-sli.md +197 -0
  227. package/content/workflows/README-MCP.md +363 -0
  228. package/content/workflows/brainstorm.md +113 -0
  229. package/content/workflows/create.md +59 -0
  230. package/content/workflows/debug.md +103 -0
  231. package/content/workflows/deploy.md +176 -0
  232. package/content/workflows/enhance.md +63 -0
  233. package/content/workflows/mcp-debug.md +506 -0
  234. package/content/workflows/mcp-feature.md +385 -0
  235. package/content/workflows/mcp-gate.md +413 -0
  236. package/content/workflows/mcp-next.md +388 -0
  237. package/content/workflows/mcp-refactor.md +600 -0
  238. package/content/workflows/mcp-start.md +304 -0
  239. package/content/workflows/mcp-status.md +400 -0
  240. package/content/workflows/orchestrate.md +237 -0
  241. package/content/workflows/plan.md +89 -0
  242. package/content/workflows/preview.md +81 -0
  243. package/content/workflows/status.md +86 -0
  244. package/content/workflows/test.md +144 -0
  245. package/content/workflows/ui-ux-pro-max.md +296 -0
  246. package/dist/commands/init.d.ts +6 -0
  247. package/dist/commands/init.js +138 -0
  248. package/dist/commands/update.d.ts +5 -0
  249. package/dist/commands/update.js +50 -0
  250. package/dist/index.d.ts +2 -0
  251. package/dist/index.js +21 -0
  252. package/package.json +48 -0
@@ -0,0 +1,301 @@
1
+ # Prompt: Code Review Automatizado
2
+
3
+ > **Quando usar**: Durante Pull Requests ou revisão de código
4
+ > **Especialista**: [Desenvolvimento Backend](../../02-especialistas/Especialista%20em%20Desenvolvimento%20e%20Vibe%20Coding%20Estruturado.md) ou Tech Lead
5
+ > **Nível**: Médio
6
+
7
+ ---
8
+
9
+ ## Fluxo de Contexto
10
+
11
+ Antes de usar este prompt, tenha em mãos:
12
+ - Código a ser revisado (diff ou arquivo completo)
13
+ - Contexto do projeto e padrões existentes
14
+
15
+ Após revisão, crie comentários inline no PR ou salve em:
16
+ - Comentários no sistema de versionamento (GitHub, GitLab)
17
+
18
+ ---
19
+
20
+ ## Prompt Completo
21
+
22
+ ```text
23
+ Atue como desenvolvedor sênior realizando code review.
24
+
25
+ ## Contexto do Projeto
26
+
27
+ [BREVE DESCRIÇÃO DO PROJETO E STACK]
28
+
29
+ ## Padrões do Projeto
30
+
31
+ - Linguagem: [TypeScript/Python/Java/etc]
32
+ - Framework: [NestJS/FastAPI/Spring/etc]
33
+ - Style Guide: [Airbnb/Google/PEP8/etc]
34
+ - Arquitetura: [Clean/Hexagonal/MVC/etc]
35
+ - Padrões específicos: [Liste convenções do projeto]
36
+
37
+ ## Código para Revisar
38
+
39
+ ```[LINGUAGEM]
40
+ [COLE O CÓDIGO - Pode ser diff ou arquivo completo]
41
+ ```
42
+
43
+ ## Tipo de Mudança
44
+
45
+ - [ ] Nova feature
46
+ - [ ] Bug fix
47
+ - [ ] Refactoring
48
+ - [ ] Performance
49
+ - [ ] Documentação
50
+
51
+ ---
52
+
53
+ ## Sua Missão
54
+
55
+ Realize um code review completo analisando:
56
+
57
+ ### 1. Categorize os Comentários
58
+
59
+ Use prefixos para categorizar:
60
+ - 🔴 **BLOCKER**: Erro crítico, impede aprovação
61
+ - 🟡 **WARN**: Problema que deveria ser corrigido
62
+ - 🟢 **SUGGESTION**: Melhoria opcional
63
+ - 💬 **QUESTION**: Dúvida que precisa esclarecimento
64
+ - 👍 **PRAISE**: Destaque positivo
65
+
66
+ ### 2. Checklist de Revisão
67
+
68
+ #### Correção
69
+ - [ ] Código faz o que deveria fazer?
70
+ - [ ] Edge cases tratados?
71
+ - [ ] Erros tratados adequadamente?
72
+ - [ ] Null/undefined handling?
73
+
74
+ #### Legibilidade
75
+ - [ ] Nomes de variáveis/funções claros?
76
+ - [ ] Código autoexplicativo ou comentado?
77
+ - [ ] Magic numbers/strings evitados?
78
+ - [ ] Complexidade ciclomática aceitável?
79
+
80
+ #### Manutenibilidade
81
+ - [ ] DRY (Don't Repeat Yourself)?
82
+ - [ ] Single Responsibility?
83
+ - [ ] Baixo acoplamento?
84
+ - [ ] Testável?
85
+
86
+ #### Performance
87
+ - [ ] N+1 queries evitados?
88
+ - [ ] Loops desnecessários?
89
+ - [ ] Memória bem gerenciada?
90
+ - [ ] Operações bloqueantes?
91
+
92
+ #### Segurança
93
+ - [ ] Input sanitizado?
94
+ - [ ] Dados sensíveis protegidos?
95
+ - [ ] Authorization verificada?
96
+ - [ ] Logs sem dados sensíveis?
97
+
98
+ #### Testes
99
+ - [ ] Testes unitários incluídos?
100
+ - [ ] Casos de erro testados?
101
+ - [ ] Coverage adequado?
102
+
103
+ ### 3. Formato dos Comentários
104
+
105
+ Para cada comentário, inclua:
106
+ - Linha(s) afetada(s)
107
+ - Categoria (BLOCKER/WARN/SUGGESTION)
108
+ - Problema identificado
109
+ - Sugestão de correção com código
110
+
111
+ ### 4. Resumo
112
+
113
+ No final, forneça:
114
+ - Aprovado / Aprovar com mudanças / Solicitar mudanças
115
+ - Lista priorizada das mudanças necessárias
116
+ - Pontos positivos do código
117
+ ```
118
+
119
+ ---
120
+
121
+ ## Exemplo de Uso
122
+
123
+ ```text
124
+ Atue como desenvolvedor sênior realizando code review.
125
+
126
+ ## Contexto do Projeto
127
+
128
+ API de agendamento para salões de beleza, NestJS.
129
+
130
+ ## Padrões do Projeto
131
+
132
+ - Linguagem: TypeScript
133
+ - Framework: NestJS
134
+ - Style Guide: ESLint + Prettier
135
+ - Arquitetura: Clean Architecture
136
+ - Padrões: Injeção de dependência, DTOs, Repository pattern
137
+
138
+ ## Código para Revisar
139
+
140
+ ```typescript
141
+ @Controller('agendamentos')
142
+ export class AgendamentoController {
143
+ constructor(private agendamentoService: any) {}
144
+
145
+ @Post()
146
+ async criar(@Body() body) {
147
+ if (!body.clienteId) {
148
+ throw new Error('Cliente obrigatorio');
149
+ }
150
+
151
+ const result = await this.agendamentoService.criar(body);
152
+ console.log('Agendamento criado:', result.id);
153
+ return result;
154
+ }
155
+
156
+ @Get()
157
+ async listar() {
158
+ const agendamentos = await this.agendamentoService.repository.findAll();
159
+ return agendamentos;
160
+ }
161
+ }
162
+ ```
163
+
164
+ ## Tipo de Mudança
165
+
166
+ - [x] Nova feature
167
+ ```
168
+
169
+ ---
170
+
171
+ ## Resposta Esperada
172
+
173
+ ### Comentários de Código
174
+
175
+ **Linha 3**
176
+ 🔴 **BLOCKER**: Tipo `any` para o serviço
177
+
178
+ O uso de `any` quebra a tipagem e pode causar bugs em runtime.
179
+
180
+ ```typescript
181
+ // ❌ Antes
182
+ constructor(private agendamentoService: any) {}
183
+
184
+ // ✅ Depois
185
+ constructor(private readonly agendamentoService: AgendamentoService) {}
186
+ ```
187
+
188
+ ---
189
+
190
+ **Linha 6**
191
+ 🔴 **BLOCKER**: Body sem tipagem e validação
192
+
193
+ Sem DTO, não há validação de input, vulnerável a payloads maliciosos.
194
+
195
+ ```typescript
196
+ // ❌ Antes
197
+ async criar(@Body() body) {
198
+
199
+ // ✅ Depois
200
+ async criar(@Body() dto: CriarAgendamentoDto) {
201
+ ```
202
+
203
+ E criar o DTO:
204
+ ```typescript
205
+ export class CriarAgendamentoDto {
206
+ @IsUUID()
207
+ clienteId: string;
208
+
209
+ @IsDate()
210
+ dataHora: Date;
211
+ }
212
+ ```
213
+
214
+ ---
215
+
216
+ **Linha 7-9**
217
+ 🟡 **WARN**: Validação manual no controller
218
+
219
+ Validação deveria estar no DTO com class-validator, não manual.
220
+
221
+ ```typescript
222
+ // ❌ Antes (validação manual)
223
+ if (!body.clienteId) {
224
+ throw new Error('Cliente obrigatorio');
225
+ }
226
+
227
+ // ✅ Depois (remover, DTO com @IsNotEmpty() cuida disso)
228
+ ```
229
+
230
+ ---
231
+
232
+ **Linha 12**
233
+ 🔴 **BLOCKER**: Console.log em código de produção
234
+
235
+ Logs devem usar o sistema de logging do NestJS.
236
+
237
+ ```typescript
238
+ // ❌ Antes
239
+ console.log('Agendamento criado:', result.id);
240
+
241
+ // ✅ Depois
242
+ this.logger.log(`Agendamento criado: ${result.id}`);
243
+ ```
244
+
245
+ ---
246
+
247
+ **Linha 17**
248
+ 🔴 **BLOCKER**: Acesso direto ao repository do service
249
+
250
+ Controller acessando `service.repository` viola encapsulamento.
251
+
252
+ ```typescript
253
+ // ❌ Antes
254
+ const agendamentos = await this.agendamentoService.repository.findAll();
255
+
256
+ // ✅ Depois
257
+ const agendamentos = await this.agendamentoService.listar();
258
+ ```
259
+
260
+ ---
261
+
262
+ **Linha 16**
263
+ 🟡 **WARN**: Endpoint sem paginação
264
+
265
+ Listar todos os registros pode ser problemático com muitos dados.
266
+
267
+ ```typescript
268
+ // ✅ Sugerir
269
+ @Get()
270
+ async listar(@Query() query: PaginacaoDto) {
271
+ return this.agendamentoService.listar(query.page, query.limit);
272
+ }
273
+ ```
274
+
275
+ ---
276
+
277
+ ### Resumo
278
+
279
+ **Decisão**: 🔴 **Solicitar mudanças**
280
+
281
+ **Prioridade de Correções:**
282
+ 1. Tipar service e remover `any`
283
+ 2. Criar DTO com class-validator
284
+ 3. Remover console.log
285
+ 4. Não acessar repository diretamente
286
+ 5. Adicionar paginação
287
+
288
+ **Pontos Positivos:**
289
+ - Estrutura básica de controller correta
290
+ - Uso de async/await adequado
291
+
292
+ ---
293
+
294
+ ## Checklist Pós-Geração
295
+
296
+ - [ ] Todos os BLOCKERs corrigidos
297
+ - [ ] WARNs revisados e priorizados
298
+ - [ ] Sugestões consideradas
299
+ - [ ] Testes adicionados se necessário
300
+ - [ ] Código refatorado aprovado
301
+ - [ ] PR atualizado com correções
@@ -0,0 +1,271 @@
1
+ # Prompt: Gerar Serviço de Aplicação
2
+
3
+ > **Quando usar**: Durante implementação, para gerar services/use cases
4
+ > **Especialista**: [Desenvolvimento Backend](../../02-especialistas/Especialista%20em%20Desenvolvimento%20e%20Vibe%20Coding%20Estruturado.md)
5
+ > **Nível**: Médio
6
+
7
+ ---
8
+
9
+ ## Fluxo de Contexto
10
+
11
+ Antes de usar este prompt, tenha em mãos:
12
+ - `docs/CONTEXTO.md` - Entendimento atual do projeto
13
+ - `docs/05-arquitetura/arquitetura.md` - Arquitetura definida
14
+ - `docs/04-modelo/modelo-dominio.md` - Entidades e regras
15
+
16
+ Após gerar, salve o código em:
17
+ - `src/application/services/` ou equivalente na sua estrutura
18
+
19
+ ---
20
+
21
+ ## Prompt Completo
22
+
23
+ ```text
24
+ Atue como desenvolvedor sênior especializado em Clean Architecture.
25
+
26
+ ## Contexto do Projeto
27
+
28
+ [COLE O CONTEÚDO DE docs/CONTEXTO.md]
29
+
30
+ ## Arquitetura
31
+
32
+ [COLE RESUMO DA ARQUITETURA - Padrão usado, camadas]
33
+
34
+ ## Entidade Alvo
35
+
36
+ Nome: [NOME DA ENTIDADE]
37
+ Campos: [LISTE OS CAMPOS]
38
+
39
+ ## Regras de Negócio
40
+
41
+ [DESCREVA AS VALIDAÇÕES E REGRAS]
42
+
43
+ ## Stack
44
+
45
+ Linguagem: [TypeScript/Python/Java/Go/etc]
46
+ Framework: [NestJS/FastAPI/Spring/etc]
47
+ ORM/Database: [Prisma/TypeORM/SQLAlchemy/etc]
48
+
49
+ ---
50
+
51
+ ## Sua Missão
52
+
53
+ Gere o código do serviço/classe de aplicação com:
54
+
55
+ ### 1. Estrutura do Serviço
56
+ - Injeção de dependências (Repository, outros Services)
57
+ - Tipagem correta de DTOs de entrada e saída
58
+
59
+ ### 2. Métodos Principais
60
+ Para cada operação CRUD + regras específicas:
61
+ - Assinatura com tipos
62
+ - Documentação JSDoc/Docstring
63
+ - Lógica do happy path
64
+ - Tratamento de erros com exceções específicas
65
+ - Validações de negócio
66
+
67
+ ### 3. Padrões a Seguir
68
+ - Separação entre Application Service e Domain Service (se aplicável)
69
+ - DTOs para entrada/saída (nunca expor entidade diretamente)
70
+ - Repository interface (não implementação)
71
+ - Unit of Work pattern para transações (se aplicável)
72
+
73
+ ### 4. Não Gere
74
+ - Controllers/Rotas
75
+ - Implementação de Repository
76
+ - Migrations
77
+ - Configurações de framework
78
+
79
+ ### 5. Formato
80
+ Retorne código pronto para uso com:
81
+ - Imports necessários
82
+ - Types/Interfaces auxiliares
83
+ - Comentários explicando decisões
84
+ ```
85
+
86
+ ---
87
+
88
+ ## Exemplo de Uso
89
+
90
+ ```text
91
+ Atue como desenvolvedor sênior especializado em Clean Architecture.
92
+
93
+ ## Contexto do Projeto
94
+
95
+ Sistema de agendamento para salões de beleza.
96
+
97
+ ## Arquitetura
98
+
99
+ Clean Architecture com camadas: Domain, Application, Infrastructure, Interface.
100
+ Services na camada Application orquestram casos de uso.
101
+
102
+ ## Entidade Alvo
103
+
104
+ Nome: Agendamento
105
+ Campos:
106
+ - id: UUID
107
+ - clienteId: UUID
108
+ - servicoId: UUID
109
+ - dataHora: DateTime
110
+ - status: enum (PENDENTE, CONFIRMADO, CANCELADO, CONCLUIDO)
111
+
112
+ ## Regras de Negócio
113
+
114
+ 1. Não pode agendar no passado
115
+ 2. Não pode haver conflito de horário para o mesmo prestador
116
+ 3. Cancelamento só até 2h antes
117
+ 4. Após criar, enviar notificação ao cliente
118
+
119
+ ## Stack
120
+
121
+ Linguagem: TypeScript
122
+ Framework: NestJS
123
+ ORM: Prisma
124
+ ```
125
+
126
+ ---
127
+
128
+ ## Resposta Esperada
129
+
130
+ ```typescript
131
+ import { Injectable, ConflictException, BadRequestException } from '@nestjs/common';
132
+ import { AgendamentoRepository } from '../ports/agendamento.repository';
133
+ import { NotificacaoService } from './notificacao.service';
134
+ import { CriarAgendamentoDto, AgendamentoResponseDto } from '../dtos/agendamento.dto';
135
+ import { StatusAgendamento } from '../../domain/enums/status-agendamento.enum';
136
+
137
+ /**
138
+ * Service responsável por orquestrar casos de uso de Agendamento.
139
+ * Não contém regras de domínio, apenas coordena operações.
140
+ */
141
+ @Injectable()
142
+ export class AgendamentoService {
143
+ constructor(
144
+ private readonly agendamentoRepository: AgendamentoRepository,
145
+ private readonly notificacaoService: NotificacaoService,
146
+ ) {}
147
+
148
+ /**
149
+ * Cria um novo agendamento validando regras de negócio.
150
+ * @throws BadRequestException - Data no passado
151
+ * @throws ConflictException - Horário já ocupado
152
+ */
153
+ async criar(dto: CriarAgendamentoDto): Promise<AgendamentoResponseDto> {
154
+ // Validar: não pode ser no passado
155
+ if (dto.dataHora < new Date()) {
156
+ throw new BadRequestException('Não é possível agendar no passado');
157
+ }
158
+
159
+ // Validar: horário disponível
160
+ const conflito = await this.agendamentoRepository.findByHorarioEPrestador(
161
+ dto.dataHora,
162
+ dto.prestadorId,
163
+ );
164
+ if (conflito) {
165
+ throw new ConflictException('Horário já ocupado para este prestador');
166
+ }
167
+
168
+ // Criar agendamento
169
+ const agendamento = await this.agendamentoRepository.create({
170
+ ...dto,
171
+ status: StatusAgendamento.PENDENTE,
172
+ });
173
+
174
+ // Side effect: notificar cliente
175
+ await this.notificacaoService.enviarConfirmacaoAgendamento(agendamento);
176
+
177
+ return AgendamentoResponseDto.fromEntity(agendamento);
178
+ }
179
+
180
+ /**
181
+ * Cancela um agendamento respeitando a regra de 2h.
182
+ * @throws BadRequestException - Menos de 2h para o horário
183
+ */
184
+ async cancelar(id: string, motivo: string): Promise<void> {
185
+ const agendamento = await this.agendamentoRepository.findById(id);
186
+
187
+ // Validar: limite de 2h
188
+ const duasHorasAntes = new Date(agendamento.dataHora);
189
+ duasHorasAntes.setHours(duasHorasAntes.getHours() - 2);
190
+
191
+ if (new Date() > duasHorasAntes) {
192
+ throw new BadRequestException(
193
+ 'Cancelamento só é permitido até 2 horas antes do horário',
194
+ );
195
+ }
196
+
197
+ await this.agendamentoRepository.updateStatus(id, StatusAgendamento.CANCELADO);
198
+ await this.notificacaoService.enviarCancelamento(agendamento, motivo);
199
+ }
200
+ }
201
+ ```
202
+
203
+ ---
204
+
205
+ ## Variações por Stack
206
+
207
+ ### Python + FastAPI
208
+
209
+ ```python
210
+ from fastapi import HTTPException, status
211
+ from app.repositories.agendamento_repository import AgendamentoRepository
212
+ from app.services.notificacao_service import NotificacaoService
213
+ from app.schemas.agendamento import CriarAgendamentoDto, AgendamentoResponse
214
+
215
+ class AgendamentoService:
216
+ def __init__(
217
+ self,
218
+ repository: AgendamentoRepository,
219
+ notificacao: NotificacaoService,
220
+ ):
221
+ self._repository = repository
222
+ self._notificacao = notificacao
223
+
224
+ async def criar(self, dto: CriarAgendamentoDto) -> AgendamentoResponse:
225
+ if dto.data_hora < datetime.now():
226
+ raise HTTPException(
227
+ status_code=status.HTTP_400_BAD_REQUEST,
228
+ detail="Não é possível agendar no passado"
229
+ )
230
+ # ... resto da lógica
231
+ ```
232
+
233
+ ### Java + Spring
234
+
235
+ ```java
236
+ @Service
237
+ @Transactional
238
+ public class AgendamentoService {
239
+
240
+ private final AgendamentoRepository repository;
241
+ private final NotificacaoService notificacao;
242
+
243
+ public AgendamentoService(
244
+ AgendamentoRepository repository,
245
+ NotificacaoService notificacao
246
+ ) {
247
+ this.repository = repository;
248
+ this.notificacao = notificacao;
249
+ }
250
+
251
+ public AgendamentoResponse criar(CriarAgendamentoDto dto) {
252
+ if (dto.getDataHora().isBefore(LocalDateTime.now())) {
253
+ throw new BadRequestException("Não é possível agendar no passado");
254
+ }
255
+ // ... resto da lógica
256
+ }
257
+ }
258
+ ```
259
+
260
+ ---
261
+
262
+ ## Checklist Pós-Geração
263
+
264
+ - [ ] Service não contém lógica de domínio complexa (mover para Domain Service se necessário)
265
+ - [ ] Todas as dependências são injetadas (não há `new` de repositórios)
266
+ - [ ] DTOs separados para entrada e saída
267
+ - [ ] Exceções são específicas (não genéricas)
268
+ - [ ] Validações de negócio estão presentes
269
+ - [ ] Side effects (notificações, eventos) estão isolados
270
+ - [ ] Código está tipado corretamente
271
+ - [ ] Comentários explicam o "porquê", não o "como"