@brunosps00/dev-workflow 0.0.3
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 +156 -0
- package/bin/dev-workflow.js +64 -0
- package/lib/constants.js +97 -0
- package/lib/init.js +101 -0
- package/lib/mcp.js +40 -0
- package/lib/prompts.js +36 -0
- package/lib/utils.js +69 -0
- package/lib/wrappers.js +22 -0
- package/package.json +41 -0
- package/scaffold/en/commands/analyze-project.md +695 -0
- package/scaffold/en/commands/brainstorm.md +79 -0
- package/scaffold/en/commands/bugfix.md +345 -0
- package/scaffold/en/commands/code-review.md +280 -0
- package/scaffold/en/commands/commit.md +179 -0
- package/scaffold/en/commands/create-prd.md +99 -0
- package/scaffold/en/commands/create-tasks.md +134 -0
- package/scaffold/en/commands/create-techspec.md +138 -0
- package/scaffold/en/commands/deep-research.md +411 -0
- package/scaffold/en/commands/fix-qa.md +109 -0
- package/scaffold/en/commands/generate-pr.md +206 -0
- package/scaffold/en/commands/help.md +289 -0
- package/scaffold/en/commands/refactoring-analysis.md +298 -0
- package/scaffold/en/commands/review-implementation.md +239 -0
- package/scaffold/en/commands/run-plan.md +236 -0
- package/scaffold/en/commands/run-qa.md +296 -0
- package/scaffold/en/commands/run-task.md +174 -0
- package/scaffold/en/templates/bugfix-template.md +91 -0
- package/scaffold/en/templates/prd-template.md +70 -0
- package/scaffold/en/templates/task-template.md +62 -0
- package/scaffold/en/templates/tasks-template.md +34 -0
- package/scaffold/en/templates/techspec-template.md +123 -0
- package/scaffold/pt-br/commands/analyze-project.md +628 -0
- package/scaffold/pt-br/commands/brainstorm.md +79 -0
- package/scaffold/pt-br/commands/bugfix.md +251 -0
- package/scaffold/pt-br/commands/code-review.md +220 -0
- package/scaffold/pt-br/commands/commit.md +127 -0
- package/scaffold/pt-br/commands/create-prd.md +98 -0
- package/scaffold/pt-br/commands/create-tasks.md +134 -0
- package/scaffold/pt-br/commands/create-techspec.md +136 -0
- package/scaffold/pt-br/commands/deep-research.md +158 -0
- package/scaffold/pt-br/commands/fix-qa.md +97 -0
- package/scaffold/pt-br/commands/generate-pr.md +162 -0
- package/scaffold/pt-br/commands/help.md +226 -0
- package/scaffold/pt-br/commands/refactoring-analysis.md +298 -0
- package/scaffold/pt-br/commands/review-implementation.md +201 -0
- package/scaffold/pt-br/commands/run-plan.md +159 -0
- package/scaffold/pt-br/commands/run-qa.md +238 -0
- package/scaffold/pt-br/commands/run-task.md +158 -0
- package/scaffold/pt-br/templates/bugfix-template.md +91 -0
- package/scaffold/pt-br/templates/prd-template.md +70 -0
- package/scaffold/pt-br/templates/task-template.md +62 -0
- package/scaffold/pt-br/templates/tasks-template.md +34 -0
- package/scaffold/pt-br/templates/techspec-template.md +123 -0
- package/scaffold/rules-readme.md +25 -0
|
@@ -0,0 +1,628 @@
|
|
|
1
|
+
<system_instructions>
|
|
2
|
+
Você é um assistente especializado em análise de projetos de software. Sua tarefa é escanear a estrutura do repositório, identificar a stack tecnológica, detectar padrões de arquitetura e gerar documentação de rules automaticamente.
|
|
3
|
+
|
|
4
|
+
<critical>NUNCA modifique código fonte, apenas leia e documente</critical>
|
|
5
|
+
<critical>Gere os arquivos de rules em ai/rules/ na raiz do workspace</critical>
|
|
6
|
+
<critical>Inclua exemplos de código do próprio projeto nas rules geradas</critical>
|
|
7
|
+
|
|
8
|
+
## Objetivo
|
|
9
|
+
|
|
10
|
+
Analisar o repositório atual e gerar automaticamente:
|
|
11
|
+
- `ai/rules/index.md` - Visão geral do ecossistema/projeto
|
|
12
|
+
- `ai/rules/[projeto].md` - Rules detalhadas por projeto/módulo
|
|
13
|
+
|
|
14
|
+
Estes arquivos serão utilizados por todos os outros comandos do workflow (criar-prd, criar-techspec, executar-task, code-review, etc.).
|
|
15
|
+
|
|
16
|
+
## Fluxo de Trabalho
|
|
17
|
+
|
|
18
|
+
### 1. Escanear Estrutura do Repositório — Scan Recursivo Profundo (Obrigatório)
|
|
19
|
+
|
|
20
|
+
<critical>NÃO pare no primeiro nível. Escaneie recursivamente toda a árvore até alcançar cada projeto-folha. Um monorepo pode conter sub-projetos que são eles mesmos monorepos ou possuem git submodules. Continue descendo até não haver mais projetos aninhados.</critical>
|
|
21
|
+
|
|
22
|
+
#### 1.1 Identificar indicadores de projeto
|
|
23
|
+
|
|
24
|
+
Escanear estes arquivos na raiz E recursivamente em subdiretórios:
|
|
25
|
+
|
|
26
|
+
| Arquivo | Indica |
|
|
27
|
+
|---------|--------|
|
|
28
|
+
| `package.json` | Node.js / JavaScript / TypeScript |
|
|
29
|
+
| `requirements.txt` / `pyproject.toml` / `setup.py` | Python |
|
|
30
|
+
| `go.mod` | Go |
|
|
31
|
+
| `Cargo.toml` | Rust |
|
|
32
|
+
| `pom.xml` / `build.gradle` / `build.gradle.kts` | Java / Kotlin |
|
|
33
|
+
| `composer.json` | PHP |
|
|
34
|
+
| `Gemfile` | Ruby |
|
|
35
|
+
| `.csproj` / `.sln` | .NET / C# |
|
|
36
|
+
| `pubspec.yaml` | Dart / Flutter |
|
|
37
|
+
| `mix.exs` | Elixir |
|
|
38
|
+
| `CMakeLists.txt` | C / C++ |
|
|
39
|
+
|
|
40
|
+
#### 1.2 Detectar orquestradores de monorepo
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# Checar tooling de monorepo na raiz
|
|
44
|
+
cat package.json | grep -E "workspaces|workspace" # npm/yarn/pnpm workspaces
|
|
45
|
+
ls lerna.json nx.json turbo.json pnpm-workspace.yaml rush.json 2>/dev/null
|
|
46
|
+
|
|
47
|
+
# Descobrir pacotes de workspace (resolver globs para diretórios reais)
|
|
48
|
+
# pnpm: ler pnpm-workspace.yaml → resolver glob packages → listar todos
|
|
49
|
+
# npm/yarn: ler package.json workspaces → resolver globs → listar todos
|
|
50
|
+
# nx: ler workspace.json ou project.json nos subdirs
|
|
51
|
+
# turborepo: ler turbo.json → ler package.json workspaces
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
#### 1.3 Detectar git submodules (recursivo)
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
# Checar submodules
|
|
58
|
+
cat .gitmodules 2>/dev/null
|
|
59
|
+
|
|
60
|
+
# Listar todos os submodules recursivamente (submodules podem conter submodules)
|
|
61
|
+
git submodule status --recursive 2>/dev/null
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Para cada submodule encontrado:
|
|
65
|
+
- Registrar path, URL remota e branch
|
|
66
|
+
- Entrar no diretório do submodule e repetir o Step 1 inteiro dentro dele
|
|
67
|
+
- Um submodule pode ser ele mesmo um monorepo — detectar e expandir
|
|
68
|
+
|
|
69
|
+
#### 1.4 Descoberta recursiva de projetos
|
|
70
|
+
|
|
71
|
+
A partir da raiz do workspace, realizar um **scan em profundidade (depth-first)**:
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
1. No diretório atual, checar: é um projeto? (tem package.json, go.mod, etc.)
|
|
75
|
+
2. Se orquestrador de monorepo encontrado → resolver todos os pacotes → entrar em cada um
|
|
76
|
+
3. Se .gitmodules encontrado → resolver todos os submodules → entrar em cada um
|
|
77
|
+
4. Para cada subdiretório que é um projeto → repetir a partir do passo 1
|
|
78
|
+
5. Parar APENAS quando o diretório não tem projetos aninhados, workspaces ou submodules
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**Layouts comuns de monorepo para detectar:**
|
|
82
|
+
|
|
83
|
+
| Layout | Padrão | Como descobrir projetos |
|
|
84
|
+
|--------|--------|------------------------|
|
|
85
|
+
| **apps + packages** | `apps/*/`, `packages/*/` | Cada dir com seu próprio package.json/go.mod/etc. |
|
|
86
|
+
| **services** | `services/*/` | Microserviços, cada um independente |
|
|
87
|
+
| **libs + apps** | `libs/*/`, `apps/*/` | Bibliotecas compartilhadas + aplicações |
|
|
88
|
+
| **monorepo aninhado** | `packages/core/packages/*/` | Monorepo dentro de monorepo — continuar descendo |
|
|
89
|
+
| **git submodules** | caminhos do `.gitmodules` | Repos externos montados como diretórios |
|
|
90
|
+
| **multi-linguagem** | `backend/`, `frontend/`, `infra/` | Stacks diferentes no mesmo repo |
|
|
91
|
+
| **gradle multi-project** | `settings.gradle` com `include` | Sub-projetos Java/Kotlin |
|
|
92
|
+
| **cargo workspace** | `Cargo.toml` com `[workspace]` | Crates Rust |
|
|
93
|
+
| **go workspace** | `go.work` | Módulos Go |
|
|
94
|
+
| **dotnet solution** | `.sln` com refs de projetos | Projetos C# |
|
|
95
|
+
|
|
96
|
+
#### 1.5 Construir a árvore de projetos
|
|
97
|
+
|
|
98
|
+
Após o scan recursivo, produzir uma **árvore de projetos** completa mostrando a hierarquia:
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
workspace-root/ [monorepo — turborepo + pnpm]
|
|
102
|
+
├── apps/
|
|
103
|
+
│ ├── web/ [Next.js 14, TypeScript]
|
|
104
|
+
│ ├── mobile/ [React Native, TypeScript]
|
|
105
|
+
│ └── admin/ [Next.js 14, TypeScript]
|
|
106
|
+
├── packages/
|
|
107
|
+
│ ├── ui/ [Biblioteca de componentes React]
|
|
108
|
+
│ ├── db/ [Prisma schema + client]
|
|
109
|
+
│ ├── config/ [Configs compartilhadas ESLint/TS]
|
|
110
|
+
│ └── auth/ [Utilitários de auth]
|
|
111
|
+
├── services/
|
|
112
|
+
│ ├── api/ [NestJS, TypeScript]
|
|
113
|
+
│ └── worker/ [Processador de filas Bull]
|
|
114
|
+
├── infra/ [Terraform, AWS CDK]
|
|
115
|
+
│ └── modules/ [git submodule → terraform-modules repo]
|
|
116
|
+
│ ├── networking/ [Módulo Terraform]
|
|
117
|
+
│ └── compute/ [Módulo Terraform]
|
|
118
|
+
└── docs/ [Docusaurus]
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Esta árvore é o **mapa** para o resto da análise. Cada projeto-folha nesta árvore receberá seu próprio arquivo `ai/rules/{projeto}.md`.
|
|
122
|
+
|
|
123
|
+
#### 1.6 Mapear dependências entre projetos
|
|
124
|
+
|
|
125
|
+
Para monorepos e setups multi-projeto, identificar como os projetos dependem uns dos outros:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
# Para Node.js: checar dependencies/devDependencies referenciando pacotes do workspace
|
|
129
|
+
grep -r "workspace:" apps/*/package.json packages/*/package.json 2>/dev/null
|
|
130
|
+
|
|
131
|
+
# Para Go: checar diretivas replace no go.mod
|
|
132
|
+
grep "replace" */go.mod 2>/dev/null
|
|
133
|
+
|
|
134
|
+
# Para Rust: checar dependências path no Cargo.toml
|
|
135
|
+
grep "path = " */Cargo.toml 2>/dev/null
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Registrar uma **matriz de dependências**:
|
|
139
|
+
|
|
140
|
+
| Projeto | Depende de | Dependido por |
|
|
141
|
+
|---------|-----------|---------------|
|
|
142
|
+
| `apps/web` | `packages/ui`, `packages/db`, `packages/auth` | — |
|
|
143
|
+
| `packages/ui` | `packages/config` | `apps/web`, `apps/admin` |
|
|
144
|
+
| `services/api` | `packages/db`, `packages/auth` | `apps/web` (via API) |
|
|
145
|
+
|
|
146
|
+
Identificar também **padrões de comunicação entre projetos**:
|
|
147
|
+
- Imports internos (pacotes do workspace)
|
|
148
|
+
- Chamadas REST / GraphQL entre serviços
|
|
149
|
+
- Filas de mensagens (Redis pub/sub, RabbitMQ, Kafka, MQTT)
|
|
150
|
+
- Chamadas gRPC
|
|
151
|
+
- Acesso compartilhado ao banco de dados
|
|
152
|
+
- Padrões event-driven
|
|
153
|
+
|
|
154
|
+
### 2. Identificar Stack Tecnológica (Obrigatório)
|
|
155
|
+
|
|
156
|
+
Para cada projeto/módulo detectado, identificar:
|
|
157
|
+
|
|
158
|
+
| Aspecto | Como Detectar |
|
|
159
|
+
|---------|---------------|
|
|
160
|
+
| **Linguagem** | Extensões de arquivo (.ts, .py, .go, .rs, .java) |
|
|
161
|
+
| **Framework** | package.json (deps), requirements.txt, go.mod |
|
|
162
|
+
| **ORM/DB** | Prisma, TypeORM, SQLAlchemy, GORM, etc. |
|
|
163
|
+
| **Banco de dados** | docker-compose.yml, .env, configs |
|
|
164
|
+
| **Testes** | Jest, Vitest, Pytest, Go test, etc. |
|
|
165
|
+
| **CI/CD** | .github/workflows/, .gitlab-ci.yml, Jenkinsfile |
|
|
166
|
+
| **Linter/Formatter** | .eslintrc, .prettierrc, ruff.toml, etc. |
|
|
167
|
+
| **Containerização** | Dockerfile, docker-compose.yml |
|
|
168
|
+
| **Monorepo tools** | Turborepo, Nx, Lerna, pnpm workspaces |
|
|
169
|
+
|
|
170
|
+
### 3. Ler Arquivos Fonte Representativos (Obrigatório)
|
|
171
|
+
|
|
172
|
+
Ler **10-20 arquivos fonte** por módulo para identificar padrões. Para projetos grandes, aumentar cobertura proporcionalmente.
|
|
173
|
+
|
|
174
|
+
**Estratégia de seleção — ler no mínimo:**
|
|
175
|
+
- 2-3 arquivos de **entrada** (controllers, routes, handlers, resolvers, pages)
|
|
176
|
+
- 2-3 arquivos de **lógica de negócio** (services, use-cases, domain models)
|
|
177
|
+
- 2-3 arquivos de **dados** (repositories, DAOs, ORM models, migrations)
|
|
178
|
+
- 1-2 arquivos de **middleware / guards / interceptors**
|
|
179
|
+
- 1-2 arquivos de **utilitários / helpers compartilhados**
|
|
180
|
+
- 1-2 arquivos de **configuração** (env loaders, bootstrap, containers DI)
|
|
181
|
+
- 2-3 arquivos de **teste** (unitário, integração, e2e)
|
|
182
|
+
- 1-2 arquivos de **definições de tipos / DTOs / schemas** (se linguagem tipada)
|
|
183
|
+
|
|
184
|
+
Para cada arquivo, documentar:
|
|
185
|
+
- Padrão de arquitetura (MVC, Clean Architecture, DDD, etc.)
|
|
186
|
+
- Convenções de nomenclatura (camelCase, snake_case, PascalCase)
|
|
187
|
+
- Padrão de tratamento de erros (Result, exceptions, error codes)
|
|
188
|
+
- Padrão de API (REST, GraphQL, tRPC, gRPC)
|
|
189
|
+
- Padrão de validação (Zod, Joi, class-validator, Pydantic)
|
|
190
|
+
- Padrão de injeção de dependências
|
|
191
|
+
|
|
192
|
+
### 3.1 Rastrear Fluxos de Requisição Ponta a Ponta (Obrigatório)
|
|
193
|
+
|
|
194
|
+
Selecionar **2-3 features representativas** e rastrear o ciclo completo:
|
|
195
|
+
|
|
196
|
+
1. **Ponto de entrada** — como a requisição chega? (definição de rota, método do controller, resolver)
|
|
197
|
+
2. **Validação** — onde e como o input é validado? (middleware, DTO, schema)
|
|
198
|
+
3. **Auth/Autorização** — quais guards ou middlewares protegem a rota?
|
|
199
|
+
4. **Lógica de negócio** — qual service/use case processa a operação?
|
|
200
|
+
5. **Acesso a dados** — como chega no banco? (repository, chamada direta ORM, query raw)
|
|
201
|
+
6. **Resposta** — como a resposta é formatada? (serializer, transformer, retorno direto)
|
|
202
|
+
7. **Caminho de erro** — o que acontece quando falha em cada camada?
|
|
203
|
+
|
|
204
|
+
Documentar os fluxos rastreados com caminhos de arquivo em cada etapa.
|
|
205
|
+
|
|
206
|
+
### 3.2 Analisar Padrões de Segurança e Infraestrutura (Obrigatório)
|
|
207
|
+
|
|
208
|
+
**Padrões de segurança:**
|
|
209
|
+
- Fluxo de autenticação (session, JWT, OAuth, API keys) — rastrear a cadeia completa
|
|
210
|
+
- Modelo de autorização (RBAC, ABAC, policies, guards)
|
|
211
|
+
- Configuração CORS
|
|
212
|
+
- Rate limiting / throttling
|
|
213
|
+
- Sanitização de input além de validação
|
|
214
|
+
- Gestão de secrets (env vars, vaults, config services)
|
|
215
|
+
- Proteção CSRF (se aplicável)
|
|
216
|
+
|
|
217
|
+
**Infraestrutura e deploy:**
|
|
218
|
+
- Análise de Dockerfile (imagem base, multi-stage builds, portas expostas)
|
|
219
|
+
- Serviços Docker Compose (bancos, caches, filas, serviços externos)
|
|
220
|
+
- Estágios do pipeline CI/CD (lint, test, build, deploy)
|
|
221
|
+
- Separação de ambientes (dev, staging, prod)
|
|
222
|
+
- Indicadores de cloud provider (AWS, GCP, Azure, arquivos IaC)
|
|
223
|
+
|
|
224
|
+
**Padrões de performance:**
|
|
225
|
+
- Estratégia de cache (Redis, in-memory, HTTP cache headers)
|
|
226
|
+
- Abordagem de paginação (offset, cursor, keyset)
|
|
227
|
+
- Processamento de filas/jobs (Bull, Celery, Sidekiq, etc.)
|
|
228
|
+
- Configuração de connection pooling
|
|
229
|
+
- Padrões de lazy loading / eager loading (queries ORM)
|
|
230
|
+
|
|
231
|
+
**Observabilidade:**
|
|
232
|
+
- Biblioteca e padrões de logging (logs estruturados, níveis de log)
|
|
233
|
+
- Rastreamento de erros (Sentry, Bugsnag, Datadog, etc.)
|
|
234
|
+
- Instrumentação de métricas / APM
|
|
235
|
+
- Endpoints de health check
|
|
236
|
+
|
|
237
|
+
**Contratos de API:**
|
|
238
|
+
- Presença de OpenAPI / Swagger spec
|
|
239
|
+
- Arquivos de schema GraphQL
|
|
240
|
+
- Definições de router tRPC
|
|
241
|
+
- Arquivos proto gRPC
|
|
242
|
+
- Estratégia de versionamento de API
|
|
243
|
+
|
|
244
|
+
**Para cada área, documentar o que existe com caminhos de arquivo e exemplos de código. Se uma área não tiver implementação, anotar como "Não detectado" — isso é informação valiosa para desenvolvimento futuro.**
|
|
245
|
+
|
|
246
|
+
### 4. Detectar Antipatterns (Obrigatório)
|
|
247
|
+
|
|
248
|
+
Verificar a presença de:
|
|
249
|
+
|
|
250
|
+
| Antipattern | Como Detectar |
|
|
251
|
+
|-------------|---------------|
|
|
252
|
+
| **God files** | Arquivos com >500 linhas |
|
|
253
|
+
| **Missing error handling** | catch vazio, erros silenciados |
|
|
254
|
+
| **Hardcoded values** | URLs, credenciais, magic numbers no código |
|
|
255
|
+
| **any types** | Uso de `any` em TypeScript |
|
|
256
|
+
| **console.log em prod** | console.log fora de contexto de debug |
|
|
257
|
+
| **SQL injection** | Queries sem parametrização |
|
|
258
|
+
| **Missing tests** | Diretórios sem arquivos de teste |
|
|
259
|
+
| **Circular dependencies** | Imports circulares |
|
|
260
|
+
|
|
261
|
+
Registrar antipatterns encontrados como avisos nas rules, sem corrigir.
|
|
262
|
+
|
|
263
|
+
### 4.1 Análise de Topologia (Obrigatório)
|
|
264
|
+
|
|
265
|
+
Analisar o grafo de dependências do codebase para identificar riscos estruturais. Isso vai além de antipatterns individuais para revelar problemas sistêmicos de acoplamento.
|
|
266
|
+
|
|
267
|
+
**Como analisar:**
|
|
268
|
+
- Escanear todos os statements de import/require/include nos arquivos fonte
|
|
269
|
+
- Contar dependências de entrada e saída para cada arquivo/módulo
|
|
270
|
+
- Construir um mapa simplificado de dependências dos nós mais conectados
|
|
271
|
+
|
|
272
|
+
**Métricas a computar por arquivo/módulo:**
|
|
273
|
+
|
|
274
|
+
| Métrica | Fórmula | Interpretação |
|
|
275
|
+
|---------|---------|---------------|
|
|
276
|
+
| **Acoplamento aferente (Ca)** | Quantidade de arquivos que importam este arquivo | Alto = muitos dependentes, arriscado alterar |
|
|
277
|
+
| **Acoplamento eferente (Ce)** | Quantidade de arquivos que este arquivo importa | Alto = muitas dependências, frágil |
|
|
278
|
+
| **Instabilidade (I)** | Ce / (Ca + Ce) | 0 = maximamente estável, 1 = maximamente instável |
|
|
279
|
+
|
|
280
|
+
**O que detectar:**
|
|
281
|
+
|
|
282
|
+
- **God nodes:** arquivos com Ca > 10 — são os arquivos de maior raio de impacto no projeto
|
|
283
|
+
- **Arquivos hub:** arquivos com Ca E Ce altos — perigosos porque são muito dependidos e também frágeis
|
|
284
|
+
- **Risco de barrel files:** arquivos index que re-exportam muitos módulos (Ca artificialmente inflado, mas raio de impacto é real)
|
|
285
|
+
- **Dependências circulares:** ciclos de import bidirecionais — rastrear o caminho completo do ciclo
|
|
286
|
+
- **Módulos isolados:** arquivos com Ca = 0 e Ce = 0 — potencial código morto
|
|
287
|
+
|
|
288
|
+
**Gerar um grafo de dependências** dos 10-15 arquivos mais conectados em ASCII art:
|
|
289
|
+
|
|
290
|
+
```
|
|
291
|
+
auth.service → user.repository, token.service, config
|
|
292
|
+
user.controller → auth.service, user.service, validation.pipe
|
|
293
|
+
user.service → user.repository, email.service
|
|
294
|
+
email.service → config, templates
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
**Registrar nós críticos** em uma tabela com Ca, Ce, Instabilidade e classificação de risco.
|
|
298
|
+
|
|
299
|
+
### 5. Gerar Arquivos de Output (Obrigatório)
|
|
300
|
+
|
|
301
|
+
**Regra de geração:**
|
|
302
|
+
- **Sempre:** `ai/rules/index.md` + um `ai/rules/{projeto}.md` por projeto-folha descoberto
|
|
303
|
+
- **Se 2+ projetos:** `ai/rules/integrations.md` documentando dependências e comunicação
|
|
304
|
+
|
|
305
|
+
#### 5.1 `ai/rules/index.md`
|
|
306
|
+
|
|
307
|
+
```markdown
|
|
308
|
+
# Rules do Projeto - [Nome do Projeto]
|
|
309
|
+
|
|
310
|
+
## Visão Geral
|
|
311
|
+
[Descrição do projeto baseada no README e package.json]
|
|
312
|
+
|
|
313
|
+
## Estrutura
|
|
314
|
+
[monorepo / multi-projeto / git submodules / projeto único]
|
|
315
|
+
[orquestrador de monorepo se aplicável: Turborepo, Nx, Lerna, pnpm workspaces, etc.]
|
|
316
|
+
|
|
317
|
+
### Árvore de Projetos
|
|
318
|
+
{Árvore completa mostrando cada projeto descoberto até a folha mais profunda}
|
|
319
|
+
```
|
|
320
|
+
workspace-root/
|
|
321
|
+
├── apps/
|
|
322
|
+
│ ├── web/ [Next.js, TypeScript]
|
|
323
|
+
│ └── mobile/ [React Native, TypeScript]
|
|
324
|
+
├── packages/
|
|
325
|
+
│ ├── ui/ [Biblioteca de componentes React]
|
|
326
|
+
│ └── db/ [Prisma client]
|
|
327
|
+
├── services/
|
|
328
|
+
│ └── api/ [NestJS, TypeScript]
|
|
329
|
+
└── infra/ [git submodule → terraform-modules]
|
|
330
|
+
├── networking/ [Módulo Terraform]
|
|
331
|
+
└── compute/ [Módulo Terraform]
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
### Índice de Projetos
|
|
335
|
+
| Projeto | Caminho | Stack | Tipo | Rules |
|
|
336
|
+
|---------|---------|-------|------|-------|
|
|
337
|
+
| [nome] | [caminho] | [framework + linguagem] | app / package / service / submodule / infra | [{nome}.md]({nome}.md) |
|
|
338
|
+
|
|
339
|
+
### Matriz de Dependências
|
|
340
|
+
| Projeto | Depende de | Dependido por |
|
|
341
|
+
|---------|-----------|---------------|
|
|
342
|
+
| [nome] | [lista] | [lista] |
|
|
343
|
+
|
|
344
|
+
### Padrões de Comunicação
|
|
345
|
+
[Como projetos/serviços se comunicam: imports de workspace, REST, GraphQL, gRPC, filas, DB compartilhado, eventos]
|
|
346
|
+
|
|
347
|
+
## Stack Tecnológica
|
|
348
|
+
| Aspecto | Tecnologia |
|
|
349
|
+
|---------|------------|
|
|
350
|
+
| Linguagem | [ex: TypeScript 5.x] |
|
|
351
|
+
| Framework | [ex: NestJS 11] |
|
|
352
|
+
| ORM | [ex: Prisma 6] |
|
|
353
|
+
| Banco de Dados | [ex: PostgreSQL 16] |
|
|
354
|
+
| Testes | [ex: Jest] |
|
|
355
|
+
| CI/CD | [ex: GitHub Actions] |
|
|
356
|
+
| Ferramenta de Monorepo | [orquestrador ou "N/A"] |
|
|
357
|
+
|
|
358
|
+
## Convenções Git
|
|
359
|
+
- Estilo de commit: [convenção]
|
|
360
|
+
- Padrão de branch: [padrão]
|
|
361
|
+
|
|
362
|
+
## Submodules
|
|
363
|
+
[Se git submodules existirem, listar: caminho, URL remota, branch, conteúdo]
|
|
364
|
+
[Se não: "Nenhum detectado"]
|
|
365
|
+
|
|
366
|
+
## Comandos Úteis
|
|
367
|
+
| Comando | Descrição |
|
|
368
|
+
|---------|-----------|
|
|
369
|
+
| [ex: pnpm test] | Rodar testes |
|
|
370
|
+
| [ex: pnpm dev] | Iniciar dev server |
|
|
371
|
+
|
|
372
|
+
## Referência Rápida
|
|
373
|
+
- Ver [{módulo}]({módulo}.md) para rules detalhadas por módulo
|
|
374
|
+
- Ver [integrations.md](integrations.md) para comunicação entre projetos (se monorepo)
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
#### 5.2 `ai/rules/integrations.md` (apenas para monorepo / multi-projeto)
|
|
378
|
+
|
|
379
|
+
Gerar este arquivo quando 2+ projetos forem detectados.
|
|
380
|
+
|
|
381
|
+
```markdown
|
|
382
|
+
# Integrações — [Nome do Workspace]
|
|
383
|
+
|
|
384
|
+
> Auto-gerado por /analisar-projeto em [data]
|
|
385
|
+
|
|
386
|
+
## Grafo de Dependências
|
|
387
|
+
|
|
388
|
+
```
|
|
389
|
+
apps/web → packages/ui, packages/db, packages/auth
|
|
390
|
+
apps/admin → packages/ui, packages/db
|
|
391
|
+
services/api → packages/db, packages/auth
|
|
392
|
+
packages/ui → packages/config
|
|
393
|
+
packages/auth → packages/db
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
## Pacotes Compartilhados
|
|
397
|
+
|
|
398
|
+
| Pacote | Caminho | Usado por | Propósito |
|
|
399
|
+
|--------|---------|-----------|-----------|
|
|
400
|
+
| [nome] | [caminho] | [lista de consumidores] | [o que fornece] |
|
|
401
|
+
|
|
402
|
+
## Comunicação entre Serviços
|
|
403
|
+
|
|
404
|
+
| De | Para | Método | Endpoint/Tópico | Descrição |
|
|
405
|
+
|----|------|--------|----------------|-----------|
|
|
406
|
+
| [serviço A] | [serviço B] | REST / gRPC / fila / evento | [endpoint ou tópico] | [que dados trafegam] |
|
|
407
|
+
|
|
408
|
+
## Git Submodules
|
|
409
|
+
|
|
410
|
+
| Submodule | Caminho | URL Remota | Branch | Conteúdo |
|
|
411
|
+
|-----------|---------|-----------|--------|----------|
|
|
412
|
+
| [nome] | [caminho] | [url] | [branch] | [descrição breve] |
|
|
413
|
+
|
|
414
|
+
## Configuração Compartilhada
|
|
415
|
+
|
|
416
|
+
| Config | Localização | Consumido por |
|
|
417
|
+
|--------|-------------|---------------|
|
|
418
|
+
| [ESLint config] | [caminho] | [lista de projetos] |
|
|
419
|
+
| [TypeScript config] | [caminho] | [lista de projetos] |
|
|
420
|
+
| [Docker Compose] | [caminho] | [lista de serviços] |
|
|
421
|
+
|
|
422
|
+
## Ordem de Build & Deploy
|
|
423
|
+
|
|
424
|
+
1. [packages/config] — sem dependências
|
|
425
|
+
2. [packages/db] — depende de config
|
|
426
|
+
3. [packages/ui] — depende de config
|
|
427
|
+
4. [packages/auth] — depende de db
|
|
428
|
+
5. [services/api] — depende de db, auth
|
|
429
|
+
6. [apps/web] — depende de ui, db, auth
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
#### 5.3 `ai/rules/[projeto].md` (para cada projeto-folha)
|
|
433
|
+
|
|
434
|
+
```markdown
|
|
435
|
+
# Rules - [Nome do Projeto]
|
|
436
|
+
|
|
437
|
+
## Arquitetura
|
|
438
|
+
[Padrão identificado: MVC, Clean Architecture, DDD, etc.]
|
|
439
|
+
|
|
440
|
+
## Estrutura de Diretórios
|
|
441
|
+
```
|
|
442
|
+
[árvore de diretórios — desça o quanto for necessário para mostrar cada camada significativa, não pare em 2-3 níveis]
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
## Contexto do Projeto
|
|
446
|
+
- **Localização no workspace:** [caminho relativo da raiz]
|
|
447
|
+
- **Tipo:** [app / package / service / library / submodule / infra]
|
|
448
|
+
- **Git submodule:** [sim/não — se sim, URL remota e branch]
|
|
449
|
+
- **Depende de:** [lista de projetos-irmãos que este projeto importa/usa]
|
|
450
|
+
- **Dependido por:** [lista de projetos-irmãos que importam/usam este]
|
|
451
|
+
|
|
452
|
+
## Padrões de Código
|
|
453
|
+
|
|
454
|
+
### Nomenclatura
|
|
455
|
+
[Convenções encontradas com exemplos do próprio código]
|
|
456
|
+
|
|
457
|
+
### Tratamento de Erros
|
|
458
|
+
[Padrão encontrado com exemplos]
|
|
459
|
+
```typescript
|
|
460
|
+
// Exemplo real do projeto
|
|
461
|
+
[trecho de código do repositório]
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
### Padrão de API
|
|
465
|
+
[REST, GraphQL, etc. com exemplos de endpoints]
|
|
466
|
+
|
|
467
|
+
### Validação
|
|
468
|
+
[Padrão encontrado: Zod, Joi, etc.]
|
|
469
|
+
|
|
470
|
+
### Testes
|
|
471
|
+
[Framework, padrão de arquivo, exemplos de mock, cobertura]
|
|
472
|
+
```typescript
|
|
473
|
+
// Exemplo real do projeto
|
|
474
|
+
[trecho de teste do repositório]
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
## Exemplos de Fluxo de Requisição
|
|
478
|
+
|
|
479
|
+
### [Nome da Feature/Fluxo]
|
|
480
|
+
1. **Entrada:** `[arquivo de rota]` → `[método do controller]`
|
|
481
|
+
2. **Validação:** `[camada de validação]`
|
|
482
|
+
3. **Auth:** `[guard/middleware]`
|
|
483
|
+
4. **Lógica:** `[service/use-case]`
|
|
484
|
+
5. **Dados:** `[repository/chamada ORM]`
|
|
485
|
+
6. **Resposta:** `[serializer/transformer]`
|
|
486
|
+
|
|
487
|
+
## Padrões de Segurança
|
|
488
|
+
|
|
489
|
+
- **Autenticação:** [método — session/JWT/OAuth/API keys]
|
|
490
|
+
- **Autorização:** [modelo — RBAC/ABAC/guards/policies]
|
|
491
|
+
- **CORS:** [localização da config e política]
|
|
492
|
+
- **Rate Limiting:** [implementação ou "Não detectado"]
|
|
493
|
+
- **Gestão de Secrets:** [env vars / vault / config service]
|
|
494
|
+
|
|
495
|
+
## Infraestrutura
|
|
496
|
+
|
|
497
|
+
- **Containerização:** [detalhes do Dockerfile ou "Não detectado"]
|
|
498
|
+
- **Serviços:** [serviços Docker Compose ou cloud]
|
|
499
|
+
- **CI/CD:** [estágios do pipeline e localização da config]
|
|
500
|
+
- **Ambientes:** [separação dev/staging/prod]
|
|
501
|
+
|
|
502
|
+
## Padrões de Performance
|
|
503
|
+
|
|
504
|
+
- **Cache:** [estratégia e implementação]
|
|
505
|
+
- **Paginação:** [abordagem — offset/cursor/keyset]
|
|
506
|
+
- **Filas/Jobs:** [biblioteca e uso]
|
|
507
|
+
- **Connection Pooling:** [configuração]
|
|
508
|
+
|
|
509
|
+
## Observabilidade
|
|
510
|
+
|
|
511
|
+
- **Logging:** [biblioteca, padrão, estruturado/não-estruturado]
|
|
512
|
+
- **Rastreamento de Erros:** [serviço — Sentry/Datadog/etc. ou "Não detectado"]
|
|
513
|
+
- **Health Checks:** [localização do endpoint ou "Não detectado"]
|
|
514
|
+
|
|
515
|
+
## Contratos de API
|
|
516
|
+
|
|
517
|
+
- **Formato de spec:** [OpenAPI/GraphQL schema/proto/nenhum]
|
|
518
|
+
- **Versionamento:** [estratégia ou "Não detectado"]
|
|
519
|
+
- **Documentação:** [localização ou "Não detectado"]
|
|
520
|
+
|
|
521
|
+
## Análise de Topologia
|
|
522
|
+
|
|
523
|
+
### Grafo de Dependências
|
|
524
|
+
|
|
525
|
+
```
|
|
526
|
+
{Grafo ASCII de dependências dos 10-15 arquivos/módulos mais conectados}
|
|
527
|
+
{Exemplo:}
|
|
528
|
+
{auth.service → user.repository, token.service, config}
|
|
529
|
+
{user.controller → auth.service, user.service, validation.pipe}
|
|
530
|
+
```
|
|
531
|
+
|
|
532
|
+
### Nós Críticos
|
|
533
|
+
|
|
534
|
+
| Arquivo | Ca (in) | Ce (out) | Instabilidade | Classificação |
|
|
535
|
+
|---------|---------|----------|---------------|---------------|
|
|
536
|
+
| [arquivo] | [n] | [n] | [ratio] | [God node / Hub / Barrel / Estável / Instável] |
|
|
537
|
+
|
|
538
|
+
### Dependências Circulares
|
|
539
|
+
|
|
540
|
+
- [módulo A] <-> [módulo B] (via [dependência compartilhada])
|
|
541
|
+
- [ou "Nenhuma detectada"]
|
|
542
|
+
|
|
543
|
+
### Observações
|
|
544
|
+
|
|
545
|
+
[Análise livre: quais módulos são maior risco para mudanças, quais estão surpreendentemente isolados, recomendações estruturais]
|
|
546
|
+
|
|
547
|
+
## Banco de Dados
|
|
548
|
+
[ORM, schema, migrations]
|
|
549
|
+
|
|
550
|
+
## Variáveis de Ambiente
|
|
551
|
+
[Lista de variáveis necessárias - SEM valores, apenas nomes e descrições]
|
|
552
|
+
|
|
553
|
+
## Comandos
|
|
554
|
+
| Comando | Descrição |
|
|
555
|
+
|---------|-----------|
|
|
556
|
+
| [comando] | [descrição] |
|
|
557
|
+
```
|
|
558
|
+
|
|
559
|
+
## Regras Importantes
|
|
560
|
+
|
|
561
|
+
<critical>
|
|
562
|
+
- NUNCA modifique código fonte — apenas leia e documente
|
|
563
|
+
- Inclua exemplos REAIS do código do projeto (trechos de 5-15 linhas)
|
|
564
|
+
- NÃO liste variáveis de ambiente com seus valores (apenas nomes)
|
|
565
|
+
- NÃO exponha secrets, tokens ou credenciais
|
|
566
|
+
- Se não conseguir identificar um padrão, documente como "Não identificado"
|
|
567
|
+
- Crie o diretório ai/rules/ se não existir
|
|
568
|
+
</critical>
|
|
569
|
+
|
|
570
|
+
## Perguntas de Esclarecimento
|
|
571
|
+
|
|
572
|
+
<critical>
|
|
573
|
+
Antes de iniciar a análise, faça ao menos 3 perguntas ao usuário:
|
|
574
|
+
|
|
575
|
+
1. Há áreas específicas do código que você quer que eu foque?
|
|
576
|
+
2. Existem padrões ou convenções que deveriam ser documentados mas podem não ser óbvios no código?
|
|
577
|
+
3. Há partes do código que são legadas ou estão sendo refatoradas (para eu sinalizar o padrão alvo vs estado atual)?
|
|
578
|
+
4. Existem serviços externos ou integrações críticas para o funcionamento do projeto?
|
|
579
|
+
5. Há algo sobre o setup de deploy ou infraestrutura que eu deva prestar atenção especial?
|
|
580
|
+
</critical>
|
|
581
|
+
|
|
582
|
+
Após o usuário responder, prossiga com a análise completa.
|
|
583
|
+
|
|
584
|
+
## Checklist de Qualidade
|
|
585
|
+
|
|
586
|
+
- [ ] Estrutura do repositório escaneada
|
|
587
|
+
- [ ] Stack tecnológica identificada
|
|
588
|
+
- [ ] 10-20 arquivos fonte lidos e analisados por módulo
|
|
589
|
+
- [ ] Pelo menos 2 fluxos de requisição rastreados ponta a ponta
|
|
590
|
+
- [ ] Padrões de arquitetura documentados
|
|
591
|
+
- [ ] Convenções de nomenclatura documentadas
|
|
592
|
+
- [ ] Padrões de erro documentados
|
|
593
|
+
- [ ] Padrões de segurança documentados (auth, autorização, CORS, etc.)
|
|
594
|
+
- [ ] Setup de infraestrutura documentado (Docker, CI/CD, ambientes)
|
|
595
|
+
- [ ] Padrões de performance documentados (cache, paginação, filas)
|
|
596
|
+
- [ ] Setup de observabilidade documentado (logging, error tracking, health checks)
|
|
597
|
+
- [ ] Contratos de API documentados (OpenAPI, GraphQL schema, etc.)
|
|
598
|
+
- [ ] Análise de topologia completada (god nodes, métricas de acoplamento, grafo de dependências)
|
|
599
|
+
- [ ] Tabela de nós críticos gerada com Ca, Ce, instabilidade
|
|
600
|
+
- [ ] Dependências circulares identificadas e documentadas
|
|
601
|
+
- [ ] Antipatterns detectados e listados (mínimo 8 categorias verificadas)
|
|
602
|
+
- [ ] Descoberta recursiva de projetos completada (alcançou cada projeto-folha)
|
|
603
|
+
- [ ] Árvore completa de projetos documentada no index.md
|
|
604
|
+
- [ ] Matriz de dependências entre projetos documentada
|
|
605
|
+
- [ ] Git submodules identificados e escaneados recursivamente (se houver)
|
|
606
|
+
- [ ] `ai/rules/index.md` gerado com árvore de projetos
|
|
607
|
+
- [ ] Um `ai/rules/{projeto}.md` gerado por projeto-folha descoberto
|
|
608
|
+
- [ ] `ai/rules/integrations.md` gerado (se 2+ projetos)
|
|
609
|
+
- [ ] Exemplos de código reais incluídos
|
|
610
|
+
- [ ] Nenhum secret exposto
|
|
611
|
+
- [ ] Convenções de teste documentadas (framework, padrões, cobertura)
|
|
612
|
+
|
|
613
|
+
## Exemplo de Uso
|
|
614
|
+
|
|
615
|
+
```
|
|
616
|
+
/analisar-projeto
|
|
617
|
+
```
|
|
618
|
+
|
|
619
|
+
Isso escaneará o repositório atual e gerará os arquivos de rules automaticamente.
|
|
620
|
+
|
|
621
|
+
## Notas
|
|
622
|
+
|
|
623
|
+
- Este comando deve ser o PRIMEIRO a ser executado em um projeto novo
|
|
624
|
+
- Os arquivos gerados são a base para todos os outros comandos do workflow
|
|
625
|
+
- Reexecute quando houver mudanças significativas na stack ou arquitetura
|
|
626
|
+
- Os arquivos gerados podem ser editados manualmente para refinar
|
|
627
|
+
|
|
628
|
+
</system_instructions>
|