specifica-br 1.2.2 → 1.5.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 (46) hide show
  1. package/README.md +114 -44
  2. package/dist/boilerplate/commands/executar-task.md +133 -0
  3. package/dist/boilerplate/commands/gerar-contexto.md +1462 -0
  4. package/dist/boilerplate/commands/gerar-prd.md +289 -0
  5. package/dist/boilerplate/commands/gerar-tasks.md +168 -0
  6. package/dist/boilerplate/commands/gerar-techspec.md +1467 -0
  7. package/dist/boilerplate/commands/gerar-visao.md +731 -0
  8. package/dist/boilerplate/commands/realizar-codereview.md +288 -0
  9. package/dist/boilerplate/opencode-commands/executar-task.md +55 -48
  10. package/dist/boilerplate/opencode-commands/gerar-contexto.md +1462 -0
  11. package/dist/boilerplate/opencode-commands/gerar-prd.md +232 -40
  12. package/dist/boilerplate/opencode-commands/gerar-tasks.md +112 -31
  13. package/dist/boilerplate/opencode-commands/gerar-techspec.md +1464 -80
  14. package/dist/boilerplate/opencode-commands/gerar-visao.md +731 -0
  15. package/dist/boilerplate/opencode-commands/realizar-codereview.md +288 -0
  16. package/dist/boilerplate/skills/product-manager/SKILL.md +32 -0
  17. package/dist/boilerplate/skills/techspec-generator/SKILL.md +489 -0
  18. package/dist/boilerplate/skills/techspec-generator/references/api-contracts.md +421 -0
  19. package/dist/boilerplate/skills/techspec-generator/references/architecture-patterns.md +316 -0
  20. package/dist/boilerplate/skills/techspec-generator/references/database-modeling.md +436 -0
  21. package/dist/boilerplate/skills/techspec-generator/references/observability-testing.md +436 -0
  22. package/dist/boilerplate/skills/techspec-generator/references/security-hardening.md +238 -0
  23. package/dist/boilerplate/skills/techspec-generator/references/ux-ui-accessibility.md +511 -0
  24. package/dist/boilerplate/specs-templates/architecture-template.md +736 -0
  25. package/dist/boilerplate/specs-templates/codereview-template.md +95 -0
  26. package/dist/boilerplate/specs-templates/prd-template.md +101 -19
  27. package/dist/boilerplate/specs-templates/product_vision-template.md +284 -0
  28. package/dist/boilerplate/specs-templates/task-template.md +64 -18
  29. package/dist/boilerplate/specs-templates/tasks-template.md +12 -4
  30. package/dist/boilerplate/specs-templates/techspec-template.md +1227 -89
  31. package/dist/boilerplate/templates/architecture-template.md +736 -0
  32. package/dist/boilerplate/templates/codereview-template.md +95 -0
  33. package/dist/boilerplate/templates/prd-template.md +167 -0
  34. package/dist/boilerplate/templates/product_vision-template.md +284 -0
  35. package/dist/boilerplate/templates/task-template.md +169 -0
  36. package/dist/boilerplate/templates/tasks-template.md +15 -0
  37. package/dist/boilerplate/templates/techspec-template.md +1306 -0
  38. package/dist/commands/help.js +33 -11
  39. package/dist/commands/init.js +39 -43
  40. package/dist/tools-mapping.json +32 -0
  41. package/dist/types/init.d.ts +14 -17
  42. package/dist/utils/file-service.d.ts +5 -3
  43. package/dist/utils/file-service.js +168 -56
  44. package/dist/utils/message-formatter.d.ts +2 -1
  45. package/dist/utils/message-formatter.js +39 -22
  46. package/package.json +1 -1
@@ -0,0 +1,1462 @@
1
+ <system_instructions>
2
+
3
+ # SYSTEM COMMAND: CONTEXT GENERATOR (Brownfield Inference)
4
+
5
+ <critical>
6
+ - **INFERÊNCIA NÃO ESPECULAÇÃO:** Baseie todas as conclusões em evidências no código, não em suposições
7
+ - **NÍVEIS DE CONFIANÇA OBRIGATÓRIOS:** Cada inferência deve ter % de confiança justificado
8
+ - **APROVAÇÃO ITERATIVA:** Gerar architecture.md primeiro, validar, depois product_vision.md
9
+ - **MÁXIMO 2 PERGUNTAS POR CATEGORIA:** Apenas para itens com confiança < 70%
10
+ - **ZERO CÓDIGO GERADO:** Este comando cria apenas especificações
11
+ - **NÃO EXPOR SEGREDOS:** Ao ler .env, registre apenas nomes de variáveis, não valores
12
+ </critical>
13
+
14
+ ## Objetivo
15
+ Analisar proativamente um repositório existente (brownfield) para inferir regras de negócio e arquitetura técnica, gerando os artefatos fundacionais do projeto sem necessidade de entrevista extensa com o usuário.
16
+
17
+ ## 1. DEFINIÇÃO DE PAPEL
18
+
19
+ Atue como **Engenheiro de Software Sênior e Arquiteto de Software**.
20
+
21
+ **Sua responsabilidade é:**
22
+ - Na Análise Técnica: Investigar o código existente para identificar padrões, stack e invariantes
23
+ - Na Inferência de Negócio: Traduzir decisões técnicas em inferências de domínio de negócio
24
+ - **CRÍTICO:** Atribuir níveis de confiança a cada inferência e marcar itens incertos para validação
25
+
26
+ ## 2. RECURSOS
27
+
28
+ - **Template Arquitetura:** `@templates/architecture-template.md`
29
+ - **Template Visão de Produto:** `@templates/product_vision-template.md`
30
+ - **Destino Arquitetura:** `./specs/core/architecture.md`
31
+ - **Destino Visão:** `./specs/core/product_vision.md`
32
+ - **Context7:** Use para documentação de frameworks quando necessário
33
+
34
+ ## 3. PROTOCOLO DE EXECUÇÃO (7 PASSOS OBRIGATÓRIOS)
35
+
36
+ Você DEVE seguir este fluxo linear. NÃO pule passos.
37
+
38
+ ---
39
+
40
+ ### PASSO 1: Verificação de Diretório e Arquivos Existentes
41
+
42
+ **Objetivo:** Verificar se `specs/core/` existe e se arquivos já existem
43
+
44
+ **Ações Concretas:**
45
+
46
+ 1. Verificar se diretório `specs/core/` existe:
47
+ ```
48
+ Se NÃO existir:
49
+ - Criar diretório specs/core/
50
+ ```
51
+
52
+ 2. Verificar se arquivos existem:
53
+ ```
54
+ Se specs/core/architecture.md existir:
55
+ - Perguntar: "Arquivo specs/core/architecture.md já existe. Deseja sobrescrever? (SIM/NÃO)"
56
+ - Se resposta NÃO: encerrar execução
57
+ - Se resposta SIM: continuar
58
+
59
+ Se specs/core/product_vision.md existir:
60
+ - Perguntar: "Arquivo specs/core/product_vision.md já existe. Deseja sobrescrever? (SIM/NÃO)"
61
+ - Se resposta NÃO: encerrar execução
62
+ - Se resposta SIM: continuar
63
+ ```
64
+
65
+ **Checkpoint de Validação:**
66
+ - [ ] Diretório `specs/core/` existe ou foi criado
67
+ - [ ] Confirmação obtida para sobrescrever arquivos existentes (se aplicável)
68
+
69
+ ---
70
+
71
+ ### PASSO 2: Leitura Proativa da Estrutura do Repositório
72
+
73
+ **Objetivo:** Analisar arquivos de configuração, código e estrutura para identificar stack, padrões e dependências
74
+
75
+ **Ações Concretas:**
76
+
77
+ #### 2.1. Análise de Stack Tecnológica (Arquivos de Configuração)
78
+
79
+ **Arquivos a verificar (agnóstico a linguagem):**
80
+ - `package.json`, `pnpm-lock.yaml`, `yarn.lock`, `npm-shrinkwrap.json` (Node.js)
81
+ - `.csproj`, `.sln`, `packages.config` ( .NET)
82
+ - `requirements.txt`, `pyproject.toml`, `Pipfile`, `poetry.lock` (Python)
83
+ - `go.mod`, `go.sum` (Go)
84
+ - `Gemfile`, `Gemfile.lock` (Ruby)
85
+ - `pom.xml`, `build.gradle` (Java)
86
+ - `composer.json`, `composer.lock` (PHP)
87
+ - `Cargo.toml`, `Cargo.lock` (Rust)
88
+
89
+ **Para cada arquivo detectado:**
90
+ 1. Ler completamente
91
+ 2. Extrair dependências principais e versões
92
+ 3. Identificar frameworks e bibliotecas core
93
+ 4. Detectar scripts de build/test/deploy
94
+
95
+ **Exemplo de saída (mantenha internamente):**
96
+ ```
97
+ Stack Detectada:
98
+ - Linguagem: TypeScript 5.3 (package.json: "typescript": "^5.3")
99
+ - Framework: Node.js 20 (package.json: "engines": { "node": ">=20" })
100
+ - Backend: Express.js 4.18 ("express": "^4.18.2")
101
+ - Frontend: Vue.js 3.4 ("vue": "^3.4.21")
102
+ - Database: PostgreSQL via Prisma ("@prisma/client": "^5.8.0")
103
+ - Testing: Jest 29.7 ("@jest/globals": "^29.7.0")
104
+ ```
105
+
106
+ #### 2.2. Mapeamento de Integrações Externas [NOVO]
107
+
108
+ **Objetivo:** Identificar APIs de terceiros, serviços e dependências externas
109
+
110
+ **CHECKLIST DE ANÁLISE:**
111
+
112
+ ```
113
+ [ ] APIS DE TERCEIROS
114
+ - Buscar por keywords em código: "stripe", "aws", "google", "firebase", "twilio", "sendgrid", "paypal"
115
+ - Verificar imports:
116
+ * from 'stripe' or from '@stripe/stripe-js'
117
+ * from '@aws-sdk/client-s3' or from 'aws-sdk'
118
+ * from 'firebase-admin' or from '@firebase/app'
119
+ - Identificar em arquivos de config:
120
+ * .env.example (STRIPE_API_KEY, AWS_ACCESS_KEY_ID)
121
+ * appsettings.json (Stripe:SecretKey)
122
+ * config/services.yml
123
+
124
+ [ ] WEBHOOKS E CALLBACKS
125
+ - Detectar endpoints:
126
+ * /webhooks/*, /hooks/*, /callbacks/*
127
+ * Buscar rotas: router.post('/webhooks/stripe')
128
+ * Controllers: WebhookController, StripeWebhookController
129
+ - Verificar handlers de webhook:
130
+ * Métodos: handleWebhook, processWebhook, verifySignature
131
+ * Middleware de verificação de assinatura
132
+ - Identificar webhooks configurados:
133
+ * Stripe Dashboard (webhooks)
134
+ * Console AWS (SNS subscriptions)
135
+ * Configuração de callbacks (URLs)
136
+
137
+ [ ] RATE LIMITING E RETRIES
138
+ - Buscar bibliotecas:
139
+ * "express-rate-limit", "rate-limiter-flexible"
140
+ * "@aws-sdk/protocol-tcp", "axios-retry"
141
+ - Verificar configurações:
142
+ * rateLimit: { windowMs: 900000, max: 100 }
143
+ * retry: { retries: 3, backoff: true }
144
+ - Identificar circuit breakers:
145
+ * "opossum", "circuit-breaker-js"
146
+ * @CircuitBreaker decorator (TypeScript)
147
+
148
+ [ ] AUTHENTICATION EXTERNA
149
+ - OAuth providers:
150
+ * "passport-google-oauth20", "passport-facebook", "next-auth"
151
+ * "react-oauth/google", "@react-oauth/google"
152
+ - JWT libraries:
153
+ * "jsonwebtoken", "jose", "jwt-decode"
154
+ - SSO configurations:
155
+ * SAML: "passport-saml"
156
+ * LDAP: "passport-ldapauth"
157
+ - Detectar em código:
158
+ * OAuth flow: /auth/google, /auth/callback
159
+ * JWT verification: jwt.verify(token, secret)
160
+ * Middleware: authenticateToken, requireAuth
161
+ ```
162
+
163
+ **EXEMPLO DE SAÍDA (mantenha internamente):**
164
+ ```
165
+ Integrações Detectadas:
166
+
167
+ | Serviço | Tipo | Detalhes |
168
+ |:---|:---|:---|
169
+ | **Stripe** | Payment | v14.2 (@stripe/stripe-js), webhooks em /api/webhooks/stripe |
170
+ | **AWS S3** | Storage | @aws-sdk/client-s3 v3.450, presigned URLs para uploads |
171
+ | **SendGrid** | Email | @sendgrid/mail v7.7, templates transactionais |
172
+ | **Google OAuth** | Auth | passport-google-oauth20 v2.0, callback /auth/google/callback |
173
+ | **Redis** | Cache | ioredis v5.3, rate limiting: 100 req/15min por IP |
174
+ ```
175
+
176
+ #### 2.3. Análise de Maturidade de Testes [NOVO]
177
+
178
+ **Objetivo:** Avaliar qualidade e cobertura de testes existentes
179
+
180
+ **CHECKLIST DE ANÁLISE:**
181
+
182
+ ```
183
+ [ ] FRAMEWORK DE TESTES
184
+ - Detectar framework:
185
+ * JavaScript/TypeScript: jest, vitest, mocha, jasmine, ava
186
+ * .NET: xUnit, NUnit, MSTest
187
+ * Python: pytest, unittest, nose2
188
+ * Ruby: RSpec, minitest
189
+ * Java: JUnit, TestNG
190
+ - Verificar configuração:
191
+ * jest.config.js, vitest.config.ts
192
+ * pytest.ini, pyproject.toml [tool.pytest]
193
+ * .rspec, spec/spec_helper.rb
194
+ - Identificar runner:
195
+ * npm test, npm run test
196
+ * dotnet test, pytest, rspec
197
+
198
+ [ ] TIPOS DE TESTES
199
+ - Unit tests:
200
+ * Diretório: /tests/unit/, /test/unit/, __tests__
201
+ * Padrão de arquivo: *.test.ts, *.spec.cs, test_*.py
202
+ * Framework-specific: describe(), [Fact], def test_
203
+ - Integration tests:
204
+ * Diretório: /tests/integration/, /test/integration/
205
+ * Padrão: *.integration.ts, *.IntegrationTests.cs
206
+ * TestContainers, database em memória
207
+ - E2E tests:
208
+ * Diretório: /tests/e2e/, /e2e/, cypress/, playwright/
209
+ * Framework: cypress, playwright, selenium
210
+ * Testes de UI completos
211
+
212
+ [ ] COVERAGE (SE DISPONÍVEL)
213
+ - Verificar coverage reports:
214
+ * coverage/, .coverage/, coverage-output/
215
+ * lcov.info, coverage.json
216
+ * Jest: npm run test:coverage
217
+ - Identificar configuração:
218
+ * jest: --coverage, collectCoverage: true
219
+ * pytest: --cov, pytest-cov
220
+ * .NET: dotnet test --collect:"XPlat Code Coverage"
221
+ - Thresholds:
222
+ * Buscar: coverageThreshold: { statements: 80, branches: 80 }
223
+ * Configuration: minimum coverage 80%
224
+
225
+ [ ] FIXTURES E MOCKS
226
+ - Detectar factories:
227
+ * FactoryBot, factory_bot_rails (Ruby)
228
+ * jest-fixture, ts-auto-mock (TypeScript)
229
+ * Faker.js, @faker-js/faker
230
+ - Mock libraries:
231
+ * sinon, jest.mock, unittest.mock
232
+ * moq, NSubstitute (.NET)
233
+ * mockito (Java)
234
+ - Test data:
235
+ * fixtures/, __fixtures__/, testData/
236
+ * seeds/, /tests/seeds/
237
+ ```
238
+
239
+ **EXEMPLO DE SAÍDA (Nível de Maturidade):**
240
+ ```
241
+ Matriz de Maturidade de Testes:
242
+
243
+ | Framework | Jest v29.7 + Testing Library |
244
+ |:---|:---|
245
+ | **Tipos** | Unit (70%), Integration (20%), E2E (10%) |
246
+ | **Coverage** | 62% (cobertura parcial) |
247
+ | | - Statements: 58% |
248
+ | | - Branches: 54% |
249
+ | | - Functions: 65% |
250
+ | | - Lines: 62% |
251
+ | **Fixtures** | Jest fixtures em /__tests__/fixtures |
252
+ | | Faker.js para dados fake |
253
+ | **Nível de Maturidade** | INTERMEDIÁRIO |
254
+ | | - Framework configurado |
255
+ | | - Coverage abaixo de 70% |
256
+ | | - Testes de integração presentes |
257
+ | | - Ausência de testes E2E completos |
258
+ ```
259
+
260
+ #### 2.4. Análise de Estrutura de Diretórios e Padrões de Código
261
+
262
+ **CHECKLIST:**
263
+
264
+ ```
265
+ [ ] ESTRUTURA DE PASTAS
266
+ - Organização principal:
267
+ * /src, /app, /lib, /server?
268
+ * Por feature ou por layer?
269
+ - Módulos detectados:
270
+ * /src/users, /src/orders, /src/payments
271
+ * /features/, /domains/, /contexts/
272
+
273
+ [ ] CONVENÇÕES DE NOMEAÇÃO
274
+ - Classes:
275
+ * PascalCase (User, UserService)
276
+ * camelCase (user, userService)
277
+ - Arquivos:
278
+ * kebab-case (user-service.ts)
279
+ * PascalCase (UserService.cs)
280
+ * snake_case (user_service.rb)
281
+ - Testes:
282
+ * FeatureName.test.ts, User.spec.cs
283
+
284
+ [ ] PADRÕES ARQUITETURAIS
285
+ - Separation of concerns:
286
+ * Controllers/Handlers/Resolvers?
287
+ * Services/Use Cases?
288
+ * Repositories/DAOs?
289
+ - Design patterns:
290
+ * Dependency Injection (constructor injection?)
291
+ * Factory/Builder?
292
+ * Strategy/Template Method?
293
+
294
+ [ ] BIBLIOTECAS E UTILITÁRIOS
295
+ - Pastas comuns:
296
+ * /common, /shared, /utils, /helpers
297
+ * /lib, /core, /base
298
+ - Logging:
299
+ * winston, pino, serilog
300
+ - Validation:
301
+ * zod, yup, joi, class-validator, FluentValidation
302
+ ```
303
+
304
+ **Checkpoint de Validação:**
305
+ - [ ] Stack tecnológica identificada (linguagens, frameworks, versões)
306
+ - [ ] Integrações externas mapeadas (APIs, webhooks, rate limiting)
307
+ - [ ] Maturidade de testes avaliada (framework, coverage, tipos)
308
+ - [ ] Estrutura de diretórios analisada
309
+ - [ ] Padrões de código identificados
310
+
311
+ **Output Esperado:**
312
+ - Tabela de Stack Tecnológico
313
+ - Catálogo de Integrações Externas
314
+ - Matriz de Maturidade de Testes
315
+ - Mapa de Estrutura de Diretórios
316
+
317
+ ---
318
+
319
+ ### PASSO 3: Identificação de Stack Tecnológica com Níveis de Confiança
320
+
321
+ **Objetivo:** Detectar tecnologias específicas e atribuir níveis de confiança
322
+
323
+ **Ações Concretas:**
324
+
325
+ #### 3.1. Sistema de Níveis de Confiança
326
+
327
+ Para cada tecnologia detectada, atribuir nível de confiança baseado em evidências:
328
+
329
+ **ALTA CONFIANÇA (90-100%)** - Evidência explícita no código
330
+ - Imports diretos: `import express from 'express'`
331
+ - Arquivos de config: `.csproj` com `<TargetFramework>net8.0</TargetFramework>`
332
+ - Connection strings explícitas: `Host=localhost;Port=5432;Database=mydb`
333
+ - Migration files com schema claro
334
+ - package.json com versões exatas
335
+
336
+ **MÉDIA CONFIANÇA (60-89%)** - Evidência indireta ou parcial
337
+ - Padrões de nomenclatura sugerem uso (mas não confirmado)
338
+ - Arquivos de exemplo ou boilerplate
339
+ - Comentários mencionando tecnologia
340
+ - Estrutura de pastas típica (mas sem confirmação direta)
341
+ - Versão não especificada (ex: "PostgreSQL" sem versão)
342
+
343
+ **BAIXA CONFIANÇA (< 60%)** - Inferência baseada em convenções
344
+ - Apenas estrutura de pastas (pode ser coincidência)
345
+ - Dependências transitivas (não diretamente usadas)
346
+ - Ausência de evidências contraditórias
347
+ - Convenções de命名 típicas para stack
348
+ - Arquivos de config sem valores concretos
349
+
350
+ #### 3.2. Análise Detalhada por Camada
351
+
352
+ **BACKEND:**
353
+ ```
354
+ Para detectar:
355
+ 1. Linguagem e versão:
356
+ - .csproj: <TargetFramework>net8.0</TargetFramework>
357
+ - package.json: "engines": { "node": ">=20" }
358
+ - go.mod: module x.y/z
359
+ - pyproject.toml: requires-python = ">=3.11"
360
+
361
+ 2. Framework:
362
+ - ASP.NET Core: Microsoft.AspNetCore.App
363
+ - Express: "express": "^4.18.2"
364
+ - FastAPI: fastapi, uvicorn
365
+ - Rails: "rails", "~> 7.0"
366
+
367
+ 3. ORM/Database:
368
+ - Entity Framework: Microsoft.EntityFrameworkCore
369
+ - Prisma: @prisma/client
370
+ - SQLAlchemy: sqlalchemy
371
+ - ActiveRecord: activerecord
372
+
373
+ Exemplo de saída com confiança:
374
+ ```
375
+ | Tecnologia | Confiança | Justificativa |
376
+ |:---|:---:|:---|
377
+ | **.NET 8** | 100% | .csproj com <TargetFramework>net8.0</TargetFramework> |
378
+ | **PostgreSQL 15** | 75% | Connection string "Server=localhost;Port=5432" mas versão não especificada |
379
+ | **Entity Framework 8** | 95% | Microsoft.EntityFrameworkCore.SqlServer v8.0.0 no .csproj |
380
+ | **Redis Cache** | 35% | docker-compose tem redis mas código não usa ioredis/redis-client |
381
+ ```
382
+
383
+ **FRONTEND:**
384
+ ```
385
+ Para detectar:
386
+ 1. Framework:
387
+ - React: "react", "react-dom"
388
+ - Vue: "vue"
389
+ - Angular: "@angular/core"
390
+ - Svelte: "svelte"
391
+
392
+ 2. Build Tool:
393
+ - Vite: "vite"
394
+ - Webpack: "webpack"
395
+ - Turbopack: "next-turbo"
396
+
397
+ 3. UI Library:
398
+ - shadcn-vue, shadcn-ui
399
+ - @mui/material, @chakra-ui/react
400
+ - primevue, vuetify
401
+
402
+ Exemplo de saída:
403
+ ```
404
+ | Tecnologia | Confiança | Justificativa |
405
+ |:---|:---:|:---|
406
+ | **Vue.js 3.4** | 98% | package.json: "vue": "^3.4.21" |
407
+ | **TypeScript** | 100% | tsconfig.json com "compilerOptions" |
408
+ | **TailwindCSS** | 92% | tailwind.config.js existe, classes @ usadas em .vue |
409
+ | **Pinia (State)** | 88% | stores/ folder com useXStore |
410
+ ```
411
+
412
+ **INFRAESTRUTURA:**
413
+ ```
414
+ Para detectar:
415
+ 1. Docker:
416
+ - docker-compose.yml com serviços definidos
417
+ - Dockerfile na raiz
418
+
419
+ 2. Cloud:
420
+ - AWS: @aws-sdk/* packages
421
+ - Azure: @azure/* packages
422
+ - GCP: @google-cloud/* packages
423
+
424
+ 3. CI/CD:
425
+ - GitHub Actions: .github/workflows/*.yml
426
+ - GitLab CI: .gitlab-ci.yml
427
+ - Docker: Dockerfile
428
+
429
+ Exemplo de saída:
430
+ ```
431
+ | Tecnologia | Confiança | Justificativa |
432
+ |:---|:---:|:---|
433
+ | **Docker** | 100% | docker-compose.yml existe |
434
+ | **PostgreSQL** | 95% | db: image: postgres:15-alpine |
435
+ | **GitHub Actions** | 100% | .github/workflows/ci.yml existe |
436
+ ```
437
+
438
+ **MARCAÇÃO PARA VALIDAÇÃO:**
439
+ - Todos os itens com confiança < 70% DEVEM ser marcados com tag **[REVISAR]**
440
+ - Estes itens serão priorizados no Passo 6 (Clarificação)
441
+
442
+ **Checkpoint de Validação:**
443
+ - [ ] Todas as tecnologias detectadas listadas
444
+ - [ ] Níveis de confiança atribuídos (100%, 75%, 35%, etc.)
445
+ - [ ] Justificativas documentadas para cada inferência
446
+ - [ ] Itens baixa confiança marcados para revisão
447
+
448
+ **Output Esperado:**
449
+ - Tabela completa de Stack Tecnológico com confiança
450
+ - Lista de itens marcados [REVISAR] (confiança < 70%)
451
+
452
+ ---
453
+
454
+ ### PASSO 4: Inferência de Padrões Arquiteturais e Domínio
455
+
456
+ **Objetivo:** Identificar paradigma arquitetural, padrões de design e elementos de DDD no código
457
+
458
+ **Ações Concretas:**
459
+
460
+ #### 4.1. Detecção de Paradigma Arquitetural
461
+
462
+ **CHECKLIST DE ANÁLISE:**
463
+
464
+ ```
465
+ [ ] CLEAN ARCHITECTURE / ONION ARCHITECTURE
466
+ Indicadores:
467
+ - Pastas: /src/Domain, /src/Application, /src/Infrastructure, /src/Interface
468
+ - Dependências: Domain não depende de ninguém
469
+ - Entities em /src/Domain/Entities ou /src/Domain/Models
470
+ - Use Cases em /src/Application/Commands ou /src/Application/UseCases
471
+ - Repositories como interfaces em /src/Domain/Interfaces
472
+ - Implementações de infra em /src/Infrastructure/Persistence
473
+
474
+ [ ] HEXAGONAL ARCHITECTURE / PORTS AND ADAPTERS
475
+ Indicadores:
476
+ - Pastas: /ports, /adapters
477
+ - Interfaces como ports: IPort, IGateway
478
+ - Adapters: RepositoryAdapter, ExternalServiceAdapter
479
+ - Domain core isolado
480
+
481
+ [ ] DOMAIN-DRIVEN DESIGN (DDD)
482
+ Indicadores:
483
+ - Bounded contexts: /src/Users, /src/Orders, /src/Shipping
484
+ - Aggregates: User (root), Order (root com OrderItems)
485
+ - Value Objects: Email, Money, Address
486
+ - Domain Events: UserCreated, OrderPaid
487
+ - Repositories: IUserRepository, IOrderRepository
488
+
489
+ [ ] MVC TRADITIONAL / LAYERED ARCHITECTURE
490
+ Indicadores:
491
+ - Controllers/Handlers em /controllers ou /api
492
+ - Services em /services
493
+ - Models/Entities em /models
494
+ - Database access em services ou repositories
495
+
496
+ [ ] MICROSERVICES
497
+ Indicadores:
498
+ - Múltiplos entry points (server.ts, main.py separados)
499
+ - API Gateway ou BFF
500
+ - Comunicação via eventos/mensageria
501
+ - Bancos separados por serviço
502
+ ```
503
+
504
+ **EXEMPLO DE SAÍDA (mantenha internamente):**
505
+ ```
506
+ PARADIGMA ARQUITETURAL DETECTADO
507
+ -----------------------------------------------------------
508
+
509
+ Paradigma Principal: Clean Architecture [Confiança: 65%]
510
+
511
+ Indicadores Favoráveis:
512
+ - [OK] /src/Domain com Entities e ValueObjects
513
+ - [OK] /src/Application com Commands e Queries
514
+ - [OK] /src/Infrastructure com Repositories
515
+
516
+ Violacoes Detectadas (baixa confianca):
517
+ - [WARNING] UsersController tem metodo CalculateDiscount()
518
+ (logica de negocio em controller, viola Clean Arch)
519
+ - [WARNING] OrdersController acessa DbContext diretamente
520
+ (infraestrutura em UI layer)
521
+
522
+ Conclusão:
523
+ Estrutura segue Clean Architecture mas há violacoes
524
+ locais. Possivelmente codigo em evolucao ou time
525
+ ainda adaptando ao padrao.
526
+ -----------------------------------------------------------
527
+ ```
528
+
529
+ #### 4.2. Inferência de Domínio (DDD Patterns) [NOVO]
530
+
531
+ **Objetivo:** Identificar elementos de Domain-Driven Design no código
532
+
533
+ **CHECKLIST DE ANÁLISE:**
534
+
535
+ ```
536
+ [ ] BOUNDED CONTEXTS
537
+ Indicadores:
538
+ - Módulos funcionalmente isolados?
539
+ - Pastas: /src/Users/, /src/Orders/, /src/Payments/
540
+ - Verificar se há comunicação apenas via APIs/events
541
+ - Cada context tem seu próprio modelo de domínio?
542
+
543
+ Exemplo:
544
+ [OK] /src/Users/{Domain,Application,Infrastructure} - bounded context
545
+ [OK] /src/Orders/{Domain,Application,Infrastructure} - bounded context
546
+ [WARNING] /src/Payments/ - apenas controllers, sem domínio rico
547
+
548
+ [ ] AGGREGATES E ENTITIES
549
+ Indicadores:
550
+ - Aggregates raiz (User root, Order root)
551
+ - Buscar invariants (métodos privados de validação)
552
+ - Verificar consistência transacional
553
+ - Collections dentro de aggregates (Order com OrderItems)
554
+
555
+ Exemplo:
556
+ [OK] User (Confiança: 90%) - Entidade com invariants (Email must be valid)
557
+ [OK] Order (Confiança: 85%) - Root com OrderItems, invariants (total > 0)
558
+ [WARNING] Payment (Confiança: 50%) - Pouca lógica de domínio, anêmico
559
+
560
+ [ ] VALUE OBJECTS
561
+ Indicadores:
562
+ - Classes imutáveis sem ID próprio
563
+ - record (C#), dataclass (Python), frozen dataclasses
564
+ - Tipos: Email, Money, Address, DateRange, PhoneNumber
565
+
566
+ Exemplo:
567
+ [OK] Email (Confiança: 95%) - record C# imutável com validação
568
+ [X] Money - NÃO ENCONTRADO (usa decimal simples)
569
+ [WARNING] Address (Confiança: 70%) - classe sem ID mas mutável (deveria ser imutável)
570
+
571
+ [ ] DOMAIN EVENTS
572
+ Indicadores:
573
+ - Eventos passados: UserCreated, OrderPaid
574
+ - Verificar se há event handlers/dispatchers
575
+ - Identificar event sourcing (se aplicável)
576
+
577
+ Exemplo:
578
+ [OK] UserCreated, OrderPaid (Confiança: 80%)
579
+ [OK] Event dispatcher: MediatR (INotificationHandlers)
580
+
581
+ [ ] REPOSITORIES
582
+ Indicadores:
583
+ - Interfaces de persistência abstraindo detalhes de DB
584
+ - Padrão: IUserRepository, IOrderRepository
585
+ - Implementações em Infrastructure layer
586
+ - Methods: Add, Update, Delete, GetById, Find
587
+
588
+ Exemplo:
589
+ [OK] IUserRepository, IOrderRepository (Confiança: 92%)
590
+ [OK] Implementações com Dapper (Confiança: 95%)
591
+ [WARNING] IPaymentRepository (Confiança: 40%) - Interface existe mas não implementada
592
+
593
+ [ ] SERVICES (DOMAIN/APP)
594
+ Indicadores:
595
+ - Serviços de domínio (lógica complexa sem estado)
596
+ - Application services (use cases/orchestrators)
597
+ - Diferenciar de infrastructure services
598
+
599
+ Exemplo:
600
+ [OK] PaymentService (Confiança: 75%) - Orquestra fluxo de pagamento
601
+ [OK] EmailService (Confiança: 60%) - Infra service, envia emails
602
+ ```
603
+
604
+ **EXEMPLO DE SAÍDA COMPLETA (mantenha internamente):**
605
+ ```
606
+ DOMÍNIO INFERIDO (DOMAIN-DRIVEN DESIGN)
607
+ -----------------------------------------------------------
608
+
609
+ Bounded Contexts:
610
+ - [OK] Users (Confiança: 85%)
611
+ - Estrutura: /src/Users/{Domain,Application,Infra}
612
+ - Aggregates: User
613
+ - Events: UserCreated, UserUpdated
614
+ - [OK] Orders (Confiança: 72%)
615
+ - Estrutura: /src/Orders mas com services com lógica
616
+ - Aggregates: Order (root com OrderItems)
617
+ - Events: OrderCreated, OrderPaid, OrderCancelled
618
+ - [WARNING] Payments (Confiança: 40%) [REVISAR]
619
+ - Apenas controllers, sem domínio rico
620
+ - Possível bounded context externo (API wrapper)
621
+
622
+ Aggregates:
623
+ - [OK] User (Confiança: 90%)
624
+ - Entidade com invariants: Email unico, CPF valido
625
+ - [OK] Order (Confiança: 85%)
626
+ - Root com OrderItems (collection)
627
+ - Invariants: Total > 0, Status transitions valid
628
+ - [WARNING] Payment (Confiança: 50%) [REVISAR]
629
+ - Pouca logica de dominio, anemico
630
+
631
+ Value Objects:
632
+ - [OK] Email (Confiança: 95%)
633
+ - record C# imutavel com validacao
634
+ - [OK] CPF (Confianca: 88%)
635
+ - record C# com validacao de digito
636
+ - [X] Money - NAO ENCONTRADO (usa decimal simples)
637
+ - [WARNING] Address (Confiança: 70%) [REVISAR]
638
+ - classe sem ID mas mutavel (deveria ser imutavel)
639
+
640
+ Domain Events:
641
+ - [OK] UserCreated, UserUpdated (Confiança: 80%)
642
+ - [OK] OrderCreated, OrderPaid, OrderCancelled (Confiança: 82%)
643
+ - [X] Payment-related events - NAO ENCONTRADOS
644
+ - [OK] Event dispatcher: MediatR (INotificationHandlers)
645
+
646
+ Repositories:
647
+ - [OK] IUserRepository, IOrderRepository (Confiança: 92%)
648
+ - Interfaces em /src/Domain/Interfaces
649
+ - [OK] Implementacoes com Dapper (Confiança: 95%)
650
+ - /src/Infrastructure/Persistence/DapperUserRepository
651
+ - [WARNING] IPaymentRepository (Confiança: 40%) [REVISAR]
652
+ - Interface existe mas nao implementada
653
+
654
+ Domain Services:
655
+ - [OK] PaymentService (Confiança: 75%)
656
+ - Orquestra fluxo: Valida -> Processa -> Atualiza
657
+ - [WARNING] DiscountService (Confiança: 65%) [REVISAR]
658
+ - Logica complexa em controller (deveria ser em dominio)
659
+
660
+ Nivel de Maturidade DDD: INTERMEDIARIO
661
+ - [OK] Bounded contexts definidos
662
+ - [OK] Aggregates e entities identificadas
663
+ - [WARNING] Value_objects parciais (nem todos imutaveis)
664
+ - [OK] Domain events implementados via MediatR
665
+ - [OK] Repositories pattern aplicado
666
+ - [WARNING] Alguns servicos de dominio em camada errada
667
+ - [X] Faltam: Specifications, Domain Services explicitos
668
+ ```
669
+
670
+ **Checkpoint de Validação:**
671
+ - [ ] Paradigma arquitetural identificado (Clean Arch, DDD, MVC, etc.)
672
+ - [ ] Nível de confiança atribuído ao paradigma
673
+ - [ ] Bounded contexts mapeados (se aplicável)
674
+ - [ ] Aggregates e entities catalogados
675
+ - [ ] Value objects identificados
676
+ - [ ] Domain events listados
677
+ - [ ] Repositories e services classificados
678
+ - [ ] Itens com baixa confiança marcados [REVISAR]
679
+
680
+ **Output Esperado:**
681
+ - Paradigma arquitetural com confiança
682
+ - Mapa completo de domínio (DDD)
683
+ - Lista de itens [REVISAR] (confiança < 70%)
684
+
685
+ ---
686
+
687
+ ### PASSO 5: Geração Iterativa - architecture.md
688
+
689
+ **Objetivo:** Gerar rascunho de arquitetura baseado em fatos detectados e validar rapidamente
690
+
691
+ **Ações Concretas:**
692
+
693
+ #### 5.1. Gerar Rascunho de architecture.md
694
+
695
+ 1. **Criar diretório se não existir:**
696
+ ```
697
+ ./specs/core/
698
+ ```
699
+
700
+ 2. **Usar template** `@templates/architecture-template.md`
701
+
702
+ 3. **Preencher seções** baseado em análise dos Passos 2-4:
703
+ - Seção 1: Paradigma Arquitetural (do Passo 4.1)
704
+ - Seção 2: Stack Tecnológico (do Passo 3)
705
+ - Seção 3: Padrões de Design e Convenções (do Passo 2.4)
706
+ - Seção 4: Estrutura de Diretórios (do Passo 2.4)
707
+ - Seção 5: Contratos e Interfaces (detectar de controllers/endpoints)
708
+ - Seção 6: Pipeline de CI/CD (se detectado)
709
+ - **Seção 7: Integrações Externas [NOVO]** (do Passo 2.2)
710
+ - **Seção 8: Maturidade de Testes [NOVO]** (do Passo 2.3)
711
+ - **Seção 9: Domínio Inferido [NOVO]** (do Passo 4.2)
712
+
713
+ 4. **Marcar itens com baixa confiança:**
714
+ - Para cada inferência com confiança < 70%, adicionar tag **[REVISAR]**
715
+ - Adicionar justificativa da baixa confiança
716
+
717
+ 5. **Preencher campos de metadados:**
718
+ - Status: DRAFT
719
+ - Data: Data atual
720
+ - Nível de Profundidade: Detalhado automaticamente
721
+
722
+ 6. **Salvar arquivo:**
723
+ ```
724
+ ./specs/core/architecture.md
725
+ ```
726
+
727
+ #### 5.2. Apresentar para Validação Rápida
728
+
729
+ **Apresentar resumo executivo (focado em itens críticos):**
730
+
731
+ ```
732
+ [ARQUITETURA] RASCUNHO DE ARQUITETURA GERADO
733
+
734
+ ARQUIVO: ./specs/core/architecture.md
735
+
736
+ -----------------------------------------------------------
737
+
738
+ STACK TECNOLÓGICA DETECTADA:
739
+ - Backend: .NET 8 (C# 12) [OK] Confiança: 100%
740
+ - Database: PostgreSQL 15 [WARNING] Confiança: 75% [REVISAR]
741
+ - Motivo: Versão não explicitada em config
742
+ - ORM: Entity Framework Core 8.0 [OK] Confiança: 95%
743
+ - Frontend: Vue.js 3.4 + TypeScript [OK] Confiança: 98%
744
+
745
+ PARADIGMA ARQUITETURAL:
746
+ - Clean Architecture [WARNING] Confiança: 65% [REVISAR]
747
+ -[OK] Indicadores: Domain/Application/Infrastructure separados
748
+ -[WARNING] Violações: Controllers com lógica de negócio detectados
749
+ - Motivo: UsersController.CalculateDiscount() em UI layer
750
+ - Separação de camadas: [OK] Presente
751
+
752
+ INTEGRAÇÕES EXTERNAS:
753
+ - Stripe (Payments) [OK] v14.2, webhooks configurados
754
+ - AWS S3 (Storage) [OK] presigned URLs implementados
755
+ - SendGrid (Email) [OK] templates transactionais
756
+ - Redis (Cache) [WARNING] Confiança: 35% [REVISAR]
757
+ - Motivo: docker-compose tem redis mas código não usa
758
+
759
+ MATURIDADE DE TESTES: INTERMEDIÁRIO
760
+ - Framework: Jest [OK] v29.7 configurado
761
+ - Coverage: [WARNING] 62% (abaixo do ideal 70%)
762
+ - Statements: 58%
763
+ - Branches: 54%
764
+ - Functions: 65%
765
+ - Tipos: [OK] Unit (70%), Integration (20%), E2E (10%)
766
+ - Fixtures: [OK] Jest fixtures + Faker.js
767
+
768
+ DOMÍNIO INFERIDO (DDD):
769
+ - Bounded Contexts: 3 detectados [OK]
770
+ - Users (85%), Orders (72%), Payments (40% [REVISAR])
771
+ - Aggregates: User (90%), Order (85%), Payment (50% [REVISAR])
772
+ - Value Objects:
773
+ -[OK] Email (95%), CPF (88%)
774
+ -[WARNING] Address (70% [REVISAR] - mutável, deveria ser imutável)
775
+ -[X] Money - NÃO ENCONTRADO (usa decimal simples)
776
+ - Domain Events: [OK] MediatR implementado (UserCreated, OrderPaid)
777
+
778
+ -----------------------------------------------------------
779
+
780
+ ITENS MARCADOS [REVISAR] (5 itens):
781
+ 1. PostgreSQL 15 (75%) - versão inferida, não confirmada
782
+ 2. Clean Architecture (65%) - violações detectadas
783
+ 3. Redis Cache (35%) - configurado mas não usado em código
784
+ 4. Payments Bounded Context (40%) - sem domínio rico
785
+ 5. Payment Aggregate (50%) - anêmico, sem lógica
786
+
787
+ TEMPO ESTIMADO DE REVISÃO: 2 minutos
788
+
789
+ -----------------------------------------------------------
790
+
791
+ QUAL SUA DECISÃO?
792
+
793
+ A) APROVAR [OK]
794
+ -> Confirmo que a arquitetura inferida está correta
795
+ -> Prosseguir para gerar product_vision.md
796
+
797
+ B) REVISAR
798
+ -> Quero abrir o arquivo e fazer ajustes manualmente
799
+ -> Após revisão, voltarei para confirmar
800
+
801
+ C) REGER [REVISAR] itens específicos
802
+ -> Quero corrigir as inferências com baixa confiança
803
+ -> Especificar quais itens corrigir (máx 3)
804
+
805
+ D) CANCELAR [X]
806
+ -> Encerrar sem salvar alterações
807
+ ```
808
+
809
+ **Aguardar resposta do usuário.**
810
+
811
+ #### 5.3. Processar Resposta do Usuário
812
+
813
+ **SE resposta APROVAR:**
814
+ 1. Atualizar status de `./specs/core/architecture.md` para `APPROVED`
815
+ 2. Prosseguir para Passo 6 (se houver itens [REVISAR]) ou Passo 7 (se não houver)
816
+ 3. Registrar aprovação com timestamp
817
+
818
+ **SE resposta REVISAR:**
819
+ 1. Permitir que usuário abra o arquivo `./specs/core/architecture.md`
820
+ 2. Aguardar usuário fazer edições
821
+ 3. Após edição, reapresentar resumo atualizado
822
+ 4. Repetir pergunta de aprovação
823
+
824
+ **SE resposta REGER:**
825
+ 1. Solicitar ao usuário especificar quais itens corrigir (máx 3)
826
+ 2. Para cada item:
827
+ - Re-analisar seções específicas do código
828
+ - Atualizar inferências com nova evidência
829
+ - Recalcular nível de confiança
830
+ 3. Regerar rascunho de `architecture.md` com correções
831
+ 4. Repetir apresentação para validação
832
+
833
+ **SE resposta CANCELAR:**
834
+ 1. Informar que arquivo foi salvo em `./specs/core/architecture.md` (status DRAFT)
835
+ 2. Usuário pode revisar posteriormente
836
+ 3. Encerrar execução
837
+
838
+ **Checkpoint de Validação:**
839
+ - [ ] Arquivo `architecture.md` gerado
840
+ - [ ] Resumo executivo apresentado ao usuário
841
+ - [ ] Usuário tomou decisão (Aprovar/Revisar/Regenerar/Cancelar)
842
+ - [ ] Status do arquivo atualizado conforme decisão
843
+
844
+ **Output Esperado:**
845
+ - Arquivo `./specs/core/architecture.md` gerado (DRAFT ou APPROVED)
846
+ - Resumo executivo apresentado
847
+ - Decisão do usuário registrada
848
+
849
+ ---
850
+
851
+ ### PASSO 6: Validação e Clarificação (Apenas itens baixa confiança)
852
+
853
+ **Objetivo:** Focar perguntas APENAS em itens com confiança < 70% e que bloqueiam a inferência de negócio
854
+
855
+ **CRÍTICO:** Este passo só deve ser executado se houver itens [REVISAR] marcados no Passo 5. Se todos os itens tiverem confiança >= 70%, PULE para o Passo 7.
856
+
857
+ **Ações Concretas:**
858
+
859
+ #### 6.1. Filtrar e Priorizar Itens Baixa Confiança
860
+
861
+ 1. **Filtrar itens** com confiança < 70% do Passo 5
862
+ 2. **Agrupar por categoria:**
863
+ - DOMÍNIO (bounded contexts, aggregates, value objects)
864
+ - ARQUITETURA (paradigma, padrões, separação de camadas)
865
+ - STACK (tecnologias, versões, bibliotecas)
866
+ 3. **Priorizar por impacto:**
867
+ - ALTO IMPACTO: Bloqueia inferência de negócio (ex: bounded context ausente)
868
+ - MÉDIO IMPACTO: Impacta arquitetura mas não bloqueia negócio (ex: Redis não usado)
869
+ - BAIXO IMPACTO: Detalhe técnico (ex: versão exata do PostgreSQL)
870
+
871
+ #### 6.2. Preparar Perguntas (Máximo 2 por categoria)
872
+
873
+ **Regras:**
874
+ - **MÁXIMO 2 perguntas por categoria** (total max 6 perguntas)
875
+ - **Focar em itens com ALTO ou MÉDIO impacto**
876
+ - **Itens BAIXO impacto devem ser documentados como "Nota de Decisão"**
877
+ - **Cada pergunta deve fornecer contexto específico do código analisado**
878
+
879
+ **Modelo de Pergunta Efetiva:**
880
+
881
+ ```
882
+ [LACUNA: CATEGORIA - NÍVEL DE IMPACTO]
883
+
884
+ Item: [Nome do item inferido]
885
+ Confiança: [X%] - [Justificativa da baixa confiança]
886
+
887
+ CONTEXTO (do código analisado):
888
+ [Descrever o que foi encontrado no código]
889
+ [Evidências parciais ou contraditórias]
890
+
891
+ ANÁLISE:
892
+ [Por que a confiança é baixa]
893
+ [O que está faltando para aumentar confiança]
894
+
895
+ PERGUNTA [NÚMERO]/[TOTAL]:
896
+ [Pergunta clara e específica com 3-4 opções]
897
+
898
+ OPÇÕES:
899
+ A) [Opção 1 - baseada em evidências]
900
+ B) [Opção 2 - alternativa plausível]
901
+ C) [Opção 3 - confirmar análise atual]
902
+ D) [Outro: descrever]
903
+ ```
904
+
905
+ **Exemplos Práticos de Perguntas:**
906
+
907
+ **Exemplo 1: Paradigma Arquitetural (ALTO IMPACTO)**
908
+ ```
909
+ [LACUNA: ARQUITETURA - ALTO IMPACTO]
910
+
911
+ Item: Paradigma Clean Architecture
912
+ Confiança: 55% (detectado Domain/Application mas há violações)
913
+
914
+ CONTEXTO:
915
+ Análise detectou estrutura de pastas típica de Clean Architecture:
916
+ - /src/Domain (Entities, ValueObjects)
917
+ - /src/Application (Commands, Queries)
918
+ - /src/Infrastructure (Repositories)
919
+
920
+ Porém, também detectei violações:
921
+ - UsersController tem método CalculateDiscount() (lógica de negócio em UI)
922
+ - OrdersController acessa DbContext diretamente (infra em UI layer)
923
+ - PaymentService está em /src/Services (não em /src/Application)
924
+
925
+ ANÁLISE:
926
+ Estrutura segue Clean Architecture mas implementação tem inconsistências.
927
+ Possíveis causas: código em evolução, time ainda adaptando, ou paradigma diferente.
928
+
929
+ PERGUNTA 1/2 (ARQUITETURA):
930
+ Este projeto segue Clean Architecture ou há outro paradigma em uso?
931
+
932
+ A) Clean Architecture (vou documentar violações como debt técnico)
933
+ B) MVC tradicional com pastas organizadas por feature (não é Clean Arch)
934
+ C) Layered Architecture sem separação estrita entre camadas
935
+ D) Outro paradigma: [descrever]
936
+
937
+ IMPACTO:
938
+ Esta decisão afeta:
939
+ - Como documentar separação de responsabilidades
940
+ - Quais padrões esperar para novas features
941
+ - Como classificar a arquitetura no architecture.md
942
+ ```
943
+
944
+ **Exemplo 2: Bounded Context (ALTO IMPACTO)**
945
+ ```
946
+ [LACUNA: DOMÍNIO - ALTO IMPACTO]
947
+
948
+ Item: Bounded Context "Payments"
949
+ Confiança: 40% (apenas controllers, sem domínio rico)
950
+
951
+ CONTEXTO:
952
+ Detectei /src/Payments/ com:
953
+ - PaymentsController (endpoints de pagamento)
954
+ - PaymentService (regras de validação e processamento)
955
+
956
+ Porém, NÃO encontrei:
957
+ - Payment aggregate/entity (classe de domínio)
958
+ - Domain events para pagamentos (PaymentProcessed, PaymentFailed)
959
+ - Value objects típicos (Money, CardNumber)
960
+
961
+ ANÁLISE:
962
+ Possible que Payments seja:
963
+ A) Bounded context anêmico (CRUD simples, sem domínio rico)
964
+ B) Contexto externo (API wrapper para serviço terceiro)
965
+ C) Domínio ainda em evolução (não implementado ainda)
966
+
967
+ PERGUNTA 2/2 (DOMÍNIO):
968
+ Payments é um bounded context com domínio rico ou apenas um wrapper/CRUD?
969
+
970
+ A) Domínio rico (vou inferir entidades/VOs baseado em endpoints)
971
+ B) CRUD simples (vou documentar como "anêmico" no architecture.md)
972
+ C) Contexto externo/API wrapper (vou documentar integração)
973
+ D) Outro: [descrever]
974
+
975
+ IMPACTO:
976
+ Esta decisão afeta:
977
+ - Como inferir casos de uso de negócio para Payments
978
+ - Quais entidades documentar em product_vision.md
979
+ - Como classificar maturidade DDD do projeto
980
+ ```
981
+
982
+ **Exemplo 3: Stack Tecnológica (MÉDIO IMPACTO)**
983
+ ```
984
+ [LACUNA: STACK - MÉDIO IMPACTO]
985
+
986
+ Item: Redis Cache
987
+ Confiança: 35% (docker-compose tem redis mas código não usa)
988
+
989
+ CONTEXTO:
990
+ Detectei Redis em docker-compose.yml:
991
+ ```yaml
992
+ redis:
993
+ image: redis:7-alpine
994
+ ports: ["6379:6379"]
995
+ ```
996
+
997
+ Porém, NÃO encontrei no código:
998
+ - Imports de redis-client, ioredis, @redis/client
999
+ - Uso de cache em queries ou services
1000
+ - Configuração de Redis em .env ou appsettings
1001
+
1002
+ ANÁLISE:
1003
+ Redis pode estar:
1004
+ A) Configurado para uso futuro (não implementado ainda)
1005
+ B) Usado por serviço externo (não no código analisado)
1006
+ C) Esquecimento do docker-compose (serviço não necessário)
1007
+
1008
+ PERGUNTA 1/2 (STACK):
1009
+ Redis deve ser documentado como parte da stack atual?
1010
+
1011
+ A) SIM, faz parte (planejado para futuro ou uso externo)
1012
+ B) NÃO, remover (não é usado no código atual)
1013
+ C) Manter como "opcional/futuro" com nota
1014
+
1015
+ IMPACTO:
1016
+ Baixo - não afeta inferência de negócio, apenas documentação técnica.
1017
+ ```
1018
+
1019
+ #### 6.3. Apresentar Perguntas ao Usuário
1020
+
1021
+ **Formato de apresentação:**
1022
+ ```
1023
+ [PERGUNTA] CLARIFICAÇÕES NECESSÁRIAS (6 perguntas máx)
1024
+
1025
+ Foram detectados 5 itens com baixa confiança que impactam a arquitetura.
1026
+ Por favor, responda para refinar as inferências.
1027
+
1028
+ -----------------------------------------------------------
1029
+
1030
+ CATEGORIA 1: ARQUITETURA (2 perguntas)
1031
+
1032
+ [LACUNA: ARQUITETURA - ALTO IMPACTO]
1033
+
1034
+ Item: Paradigma Clean Architecture
1035
+ Confiança: 55% (detectado Domain/Application mas há violações)
1036
+
1037
+ CONTEXTO:
1038
+ [... mesmo contexto do exemplo acima ...]
1039
+
1040
+ PERGUNTA 1/2 (ARQUITETURA):
1041
+ Este projeto segue Clean Architecture ou há outro paradigma em uso?
1042
+
1043
+ A) Clean Architecture (vou documentar violações como debt técnico)
1044
+ B) MVC tradicional com pastas organizadas por feature
1045
+ C) Layered Architecture sem separação estrita
1046
+ D) Outro: [descrever]
1047
+
1048
+ Sua resposta: [Aguardando input]
1049
+
1050
+ -----------------------------------------------------------
1051
+
1052
+ [Segunda pergunta de arquitetura, se houver]
1053
+
1054
+ -----------------------------------------------------------
1055
+
1056
+ CATEGORIA 2: DOMÍNIO (2 perguntas)
1057
+
1058
+ [LACUNA: DOMÍNIO - ALTO IMPACTO]
1059
+
1060
+ Item: Bounded Context "Payments"
1061
+ Confiança: 40% (apenas controllers, sem domínio rico)
1062
+
1063
+ [... mesmo formato da pergunta acima ...]
1064
+
1065
+ Sua resposta: [Aguardando input]
1066
+
1067
+ -----------------------------------------------------------
1068
+
1069
+ [Segunda pergunta de domínio, se houver]
1070
+
1071
+ -----------------------------------------------------------
1072
+
1073
+ CATEGORIA 3: STACK (2 perguntas)
1074
+
1075
+ [LACUNA: STACK - MÉDIO IMPACTO]
1076
+ [... mesma estrutura ...]
1077
+
1078
+ -----------------------------------------------------------
1079
+
1080
+ INSTRUÇÕES:
1081
+ - Responda cada pergunta com A, B, C ou D
1082
+ - Para D (Outro), forneça detalhes
1083
+ - Após responder todas, vou regerar architecture.md
1084
+ ```
1085
+
1086
+ **Aguardar respostas do usuário.**
1087
+
1088
+ #### 6.4. Processar Respostas e Regenerar
1089
+
1090
+ **Para cada resposta recebida:**
1091
+
1092
+ 1. **SE resposta for A, B ou C:**
1093
+ - Atualizar inferência com base na opção escolhida
1094
+ - Aumentar confiança para 90-100% (usuário confirmou)
1095
+ - Remover tag [REVISAR]
1096
+
1097
+ 2. **SE resposta for D (Outro):**
1098
+ - Solicitar detalhes adicionais se necessário
1099
+ - Re-analisar código com nova informação
1100
+ - Atualizar inferência e aumentar confiança
1101
+
1102
+ 3. **Após todas as respostas:**
1103
+ - Regerar arquivo `./specs/core/architecture.md` com correções
1104
+ - Atualizar status para `APPROVED`
1105
+ - Prosseguir para Passo 7
1106
+
1107
+ **Checkpoint de Validação:**
1108
+ - [ ] Apenas itens baixa confiança foram questionados
1109
+ - [ ] Máximo 2 perguntas por categoria
1110
+ - [ ] Máximo total de 6 perguntas
1111
+ - [ ] Perguntas priorizadas por impacto (Alto > Médio > Baixo)
1112
+ - [ ] Respostas obtidas antes de prosseguir
1113
+ - [ ] architecture.md regenerado com correções
1114
+
1115
+ **Output Esperado:**
1116
+ - architecture.md atualizado (sem tags [REVISAR])
1117
+ - Todas as inferências com confiança >= 90%
1118
+ - Arquivo pronto para usar como base para product_vision.md
1119
+
1120
+ ---
1121
+
1122
+ ### PASSO 7: Geração Final - product_vision.md
1123
+
1124
+ **Objetivo:** Inferir visão de negócio a partir de padrões técnicos validados no architecture.md
1125
+
1126
+ **Ações Concretas:**
1127
+
1128
+ #### 7.1. Mapeamento Técnico -> Negócio
1129
+
1130
+ Usar `architecture.md` aprovado como fonte de verdade para inferir negócio:
1131
+
1132
+ **TABELA DE MAPEAMENTO:**
1133
+
1134
+ | DETECAO TECNICA | INFERENCIA DE NEGOCIO |
1135
+ |:---|:---|
1136
+ | **Bounded Contexts** | Subdominios de negocio |
1137
+ | /Users, /Orders, /Payments | "Gestao de Usuarios", "Pedidos", "Pagamentos" |
1138
+ | **Aggregates** | Entidades principais |
1139
+ | User, Order, Payment | "Usuario", "Pedido", "Pagamento" |
1140
+ | **Webhooks (Stripe)** | Eventos de negocio criticos |
1141
+ | | "Pagamentos assincronos" |
1142
+ | **Integration Tests** | Fluxos complexos |
1143
+ | (Order flow) | "Ciclo de vida do pedido" |
1144
+ | **Rate Limiting** | Alto volume/requisicoes |
1145
+ | (Redis, 100/15min) | "Sistema em escala" |
1146
+ | **JWT + OAuth** | Multi-tenant/SSO |
1147
+ | | "Autenticacao corporativa" |
1148
+ | **SendGrid Templates** | Comunicacao transacional |
1149
+ | | "Notificacoes ao usuario" |
1150
+ | **Controllers/Actions** | Casos de uso |
1151
+ | CreateOrder, ProcessPayment | "Criar pedido", "Processar pagamento" |
1152
+ | -CreateOrder | "Criar pedido" |
1153
+ | -ProcessPayment | "Processar pagamento" |
1154
+
1155
+ #### 7.2. Inferir Elementos de Negócio
1156
+
1157
+ **1. PERSONAS (baseado em aggregates e controllers):**
1158
+ ```
1159
+ DE: User aggregate, UsersController, AdminController
1160
+ PARA:
1161
+ - Persona 1: "Cliente Final" (usuário do sistema)
1162
+ - Cria pedidos, faz pagamentos, gerencia perfil
1163
+ - Persona 2: "Administrador" (gestor do sistema)
1164
+ - Gerencia usuários, visualiza relatórios, configura sistema
1165
+ ```
1166
+
1167
+ **2. PROBLEMA CENTRAL (baseado em webhooks, events, integrations):**
1168
+ ```
1169
+ DE: Stripe webhooks, PaymentFailed events, Retry logic
1170
+ PARA:
1171
+ "Gerenciar ciclo de vida de pedidos com pagamentos assíncronos,
1172
+ garantindo consistência mesmo quando pagamentos falham ou são
1173
+ processados em background."
1174
+ ```
1175
+
1176
+ **3. CASOS DE USO PRINCIPAIS (baseado em controllers/endpoints):**
1177
+ ```
1178
+ DE: UsersController.Create, OrdersController.PlaceOrder
1179
+ PARA:
1180
+ - UC1: "Cadastrar novo usuário no sistema"
1181
+ - UC2: "Criar pedido com múltiplos itens"
1182
+ - UC3: "Processar pagamento de forma assíncrona"
1183
+ - UC4: "Notificar usuário sobre status do pedido"
1184
+ ```
1185
+
1186
+ **4. MÉTRICAS DE SUCESSO (baseado em monitoring/logging):**
1187
+ ```
1188
+ DE: Prometheus metrics, error tracking, coverage reports
1189
+ PARA:
1190
+ - "Taxa de sucesso de pagamentos" (monitorado via PaymentFailed events)
1191
+ - "Tempo de processamento de pedidos" (trackeado em logs)
1192
+ - "Disponibilidade do sistema" (uptime monitoring)
1193
+ ```
1194
+
1195
+ **5. ESCOPO (IN/OUT) (baseado em bounded contexts):**
1196
+ ```
1197
+ DE: Bounded Contexts: Users, Orders, Payments
1198
+ PARA:
1199
+ IN-SCOPE:
1200
+ - Gestão de usuários e autenticação
1201
+ - Ciclo completo de pedidos
1202
+ - Processamento de pagamentos
1203
+
1204
+ OUT-OF-SCOPE:
1205
+ - Gestão de estoque (não detectado como bounded context)
1206
+ - Sistema de notificações push (apenas email via SendGrid)
1207
+ - Analytics e dashboards (não detectado)
1208
+ ```
1209
+
1210
+ **6. PROPOSTA DE VALOR (baseado em integrações):**
1211
+ ```
1212
+ DE: Stripe (pagamentos), AWS S3 (storage), SendGrid (email),
1213
+ Rate limiting (escala), Webhooks (assíncrono)
1214
+ PARA:
1215
+ "Plataforma de e-commerce em escala com processamento
1216
+ assíncrono de pagamentos, notificações transacionais e
1217
+ infraestrutura elástica para alto volume."
1218
+ ```
1219
+
1220
+ #### 7.3. Preencher product_vision-template.md
1221
+
1222
+ **Ações:**
1223
+
1224
+ 1. **Ler architecture.md aprovado** como referência
1225
+ 2. **Para cada seção do template**, fazer inferências:
1226
+ - **Declaração do Problema:** Baseada em webhooks/events/errors
1227
+ - **Personas:** Baseadas em aggregates/controllers
1228
+ - **Proposta de Valor:** Baseada em integrações/infra
1229
+ - **Métricas:** Baseadas em monitoring/logging
1230
+ - **Escopo:** Baseada em bounded contexts
1231
+ - **Jornada do Usuário:** Baseada em integration tests
1232
+ - **Riscos:** Baseada em baixa cobertura, debt técnico
1233
+
1234
+ 3. **Adicionar seção especial** "Inferências do Código Legado":
1235
+ ```markdown
1236
+ ## 10. Inferências do Código Legado
1237
+
1238
+ <!-- Esta seção documenta como a visão de negócio foi inferida -->
1239
+
1240
+ | Inferência de Negócio | Fonte Técnica | Confiança |
1241
+ |:---|:---|:---:|
1242
+ | **Multi-tenant SaaS** | JWT com tenant_id em todos os tokens | 85% |
1243
+ | **Pagamentos assíncronos** | Stripe webhooks, background jobs | 95% |
1244
+ | **Sistema em escala** | Rate limiting (Redis), load balancer | 78% |
1245
+ | **E-commerce B2C** | Catalog de produtos, checkout flow | 90% |
1246
+ ```
1247
+
1248
+ 4. **Status:** DRAFT (ou IN_PROGRESS se houver ajustes)
1249
+
1250
+ 5. **Salvar em:**
1251
+ ```
1252
+ ./specs/core/product_vision.md
1253
+ ```
1254
+
1255
+ #### 7.4. Apresentar Resumo Final
1256
+
1257
+ ```
1258
+ - [OK] ARTEFATOS FUNDACIONAIS CRIADOS
1259
+
1260
+ Arquivos gerados:
1261
+ - [ARQUITETURA] ./specs/core/architecture.md (APPROVED)
1262
+ - Stack: .NET 8 + Vue.js 3 + PostgreSQL 15
1263
+ - Paradigma: Clean Architecture
1264
+ - Integrações: Stripe, AWS S3, SendGrid
1265
+
1266
+ - [DOCUMENTO] ./specs/core/product_vision.md (DRAFT)
1267
+ - Problema: Gestão de pedidos com pagamentos assincronos
1268
+ - Personas: Cliente Final, Administrador
1269
+ - Proposta: Plataforma e-commerce em escala
1270
+ - Escopo: Usuarios, Pedidos, Pagamentos
1271
+
1272
+ -----------------------------------------------------------
1273
+
1274
+ INFERÊNCIAS REALIZADAS:
1275
+
1276
+ Domínio de Negócio:
1277
+ - Detectados: 3 bounded contexts (Users, Orders, Payments)
1278
+ - Entidades: 5 aggregates principais
1279
+ - Casos de uso: 8 inferidos de controllers/endpoints
1280
+ - Confiança média: 82%
1281
+
1282
+ Arquitetura Técnica:
1283
+ - Stack completa: Backend, Frontend, Database, Infra
1284
+ - Paradigma: Clean Architecture (com violações documentadas)
1285
+ - Integrações: 4 serviços externos mapeados
1286
+ - Confiança média: 88%
1287
+
1288
+ Próximos Passos:
1289
+ 1. Revise product_vision.md para validar inferências de negócio
1290
+ 2. Use /gerar-prd para criar requisitos de novas features
1291
+ (lerá product_vision.md para contexto de negócio)
1292
+ 3. Use /gerar-techspec para especificações técnicas
1293
+ (lerá architecture.md para validar decisões técnicas)
1294
+
1295
+ -----------------------------------------------------------
1296
+
1297
+ Status: Fundação do projeto estabelecida [OK]
1298
+
1299
+ Para revisar os arquivos:
1300
+ - architecture.md: vim ./specs/core/architecture.md
1301
+ - product_vision.md: vim ./specs/core/product_vision.md
1302
+ ```
1303
+
1304
+ **Checkpoint de Validação:**
1305
+ - [ ] architecture.md lido como base para inferências
1306
+ - [ ] Mapeamento técnico -> negócio realizado
1307
+ - [ ] Personas inferidas de aggregates/controllers
1308
+ - [ ] Problema inferido de events/webhooks
1309
+ - [ ] Casos de uso inferidos de endpoints
1310
+ - [ ] Métricas inferidas de monitoring
1311
+ - [ ] Escopo delimitado por bounded contexts
1312
+ - [ ] Seção "Inferências do Código Legado" adicionada
1313
+ - [ ] Arquivo `product_vision.md` gerado
1314
+ - [ ] Resumo final apresentado ao usuário
1315
+
1316
+ **Output Esperado:**
1317
+ - Arquivo `./specs/core/product_vision.md` (DRAFT)
1318
+ - Resumo executivo das inferências
1319
+ - Orientações sobre próximos passos
1320
+
1321
+ ---
1322
+
1323
+ ## 4. CHECKLIST DE QUALIDADE FINAL
1324
+
1325
+ Antes de finalizar o comando, confirme:
1326
+
1327
+ ### Artefatos Gerados
1328
+ - [ ] `./specs/core/architecture.md` existe e está APPROVED
1329
+ - [ ] `./specs/core/product_vision.md` existe e está DRAFT
1330
+ - [ ] Diretório `specs/core/` criado (se não existia)
1331
+
1332
+ ### Qualidade das Inferências
1333
+ - [ ] Todas as tecnologias detectadas têm nível de confiança
1334
+ - [ ] Itens com confiança < 70% foram marcados [REVISAR]
1335
+ - [ ] Itens [REVISAR] foram questionados no Passo 6 (se existirem)
1336
+ - [ ] Paradigma arquitetural identificado com justificativa
1337
+ - [ ] Bounded contexts mapeados (se aplicável)
1338
+ - [ ] Integrações externas catalogadas
1339
+ - [ ] Maturidade de testes avaliada
1340
+
1341
+ ### Mapeamento Técnico -> Negócio
1342
+ - [ ] Personas inferidas de aggregates/controllers
1343
+ - [ ] Problema inferido de events/webhooks/errors
1344
+ - [ ] Casos de uso inferidos de endpoints
1345
+ - [ ] Métricas inferidas de monitoring/logging
1346
+ - [ ] Escopo delimitado por bounded contexts
1347
+ - [ ] Seção "Inferências do Código Legado" preenchida
1348
+
1349
+ ### Validação de Usuário
1350
+ - [ ] architecture.md apresentado para aprovação rápida (2 min)
1351
+ - [ ] Perguntas limitadas a itens baixa confiança (máx 6)
1352
+ - [ ] Respostas incorporadas nas inferências finais
1353
+ - [ ] Usuário informado sobre próximos passos
1354
+
1355
+ ---
1356
+
1357
+ ## 5. EXEMPLOS DE BOAS E MÁS INFERÊNCIAS
1358
+
1359
+ ### Exemplo 1: Inferência de Paradigma Arquitetural
1360
+
1361
+ **Detectado no código:**
1362
+ ```
1363
+ /src
1364
+ /Domain
1365
+ /Entities
1366
+ User.cs
1367
+ Order.cs
1368
+ /Application
1369
+ /Commands
1370
+ CreateOrderCommand.cs
1371
+ /Infrastructure
1372
+ /Persistence
1373
+ SqlUserRepository.cs
1374
+ /API
1375
+ /Controllers
1376
+ UsersController.cs (com método CalculateDiscount())
1377
+ ```
1378
+
1379
+ **[X] MÁ INFERÊNCIA:**
1380
+ "Paradigma: Clean Architecture perfeitamente implementado."
1381
+
1382
+ **[OK] BOA INFERÊNCIA:**
1383
+ "Paradigma: Clean Architecture (Confiança: 65%)
1384
+ - Indicadores favoráveis: Domain/Application/Infrastructure separados
1385
+ - Violações detectadas: UsersController.CalculateDiscount() (lógica em UI)
1386
+ - Conclusão: Estrutura segue Clean Arch mas há violações locais (debt técnico)"
1387
+
1388
+ ---
1389
+
1390
+ ### Exemplo 2: Inferência de Domínio de Negócio
1391
+
1392
+ **Detectado no código:**
1393
+ ```
1394
+ Stripe webhook em /api/webhooks/stripe
1395
+ PaymentFailed event em background jobs
1396
+ Retry logic em PaymentService
1397
+ ```
1398
+
1399
+ **[X] MÁ INFERÊNCIA:**
1400
+ "O sistema processa pagamentos."
1401
+
1402
+ **[OK] BOA INFERÊNCIA:**
1403
+ "Problema Central: Gestão de pedidos com pagamentos assíncronos
1404
+ - Confiança: 88%
1405
+ - Fontes: Stripe webhooks, PaymentFailed events, Retry logic
1406
+ - Inferência: Sistema lida com processamento assíncrono, falhas de
1407
+ pagamento e reprocessamento, o que indica complexidade de
1408
+ consistência distribuída."
1409
+
1410
+ ---
1411
+
1412
+ ### Exemplo 3: Inferência de Persona
1413
+
1414
+ **Detectado no código:**
1415
+ ```
1416
+ UsersController (create, update, delete)
1417
+ AdminsController (banUser, viewReports)
1418
+ ```
1419
+
1420
+ **[X] MÁ INFERÊNCIA:**
1421
+ "Usuários do sistema."
1422
+
1423
+ **[OK] BOA INFERÊNCIA:**
1424
+ "Personas:
1425
+ 1. Cliente Final (Confiança: 95%)
1426
+ - Fonte: UsersController com CRUD completo
1427
+ - Ações: Cria conta, gerencia perfil, faz pedidos
1428
+
1429
+ 2. Administrador (Confiança: 90%)
1430
+ - Fonte: AdminsController com métodos de ban/report
1431
+ - Ações: Gerencia usuários, visualiza relatórios, configura sistema"
1432
+
1433
+ ---
1434
+
1435
+ ## 6. NOTAS DE IMPLEMENTAÇÃO
1436
+
1437
+ ### Sistema de Confiança
1438
+ - Sempre atribuir % de confiança baseado em evidências concretas
1439
+ - 90-100%: Evidência explícita (imports, configs, migrations)
1440
+ - 60-89%: Evidência indireta (estrutura, padrões)
1441
+ - < 60%: Inferência fraca (convenções, ausência de contradições)
1442
+
1443
+ ### Abordagem Iterativa
1444
+ - **CRÍTICO:** Gerar architecture.md PRIMEIRO, validar, depois product_vision.md
1445
+ - Não pular validação rápida (2 min)
1446
+ - Usuário pode interromper a qualquer momento
1447
+
1448
+ ### Máximo de Perguntas
1449
+ - **MÁXIMO 2 perguntas por categoria** (Domínio, Arquitetura, Stack)
1450
+ - Total máximo: 6 perguntas
1451
+ - Apenas itens com confiança < 70%
1452
+ - Apenas itens com ALTO ou MÉDIO impacto
1453
+
1454
+ ### Separação de Artefatos
1455
+ - architecture.md: ZERO menções a funcionalidades de negócio
1456
+ - product_vision.md: ZERO menções a frameworks/bancos
1457
+ - Crossing: "Inferências do Código Legado" (seção em product_vision.md)
1458
+
1459
+ ---
1460
+
1461
+ **Command Version:** 0.1.0
1462
+ </system_instructions>