@justmpm/ai-tool 0.7.10 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  # ai-tool
2
2
 
3
- Ferramenta de analise de dependencias e impacto para projetos TypeScript/JavaScript.
3
+ Ferramenta de análise de dependências e impacto para projetos TypeScript/JavaScript.
4
4
 
5
5
  Usa [Skott](https://github.com/antoine-coulon/skott) + [Knip](https://knip.dev) + [ts-morph](https://ts-morph.com) internamente.
6
6
 
7
- ## Instalacao
7
+ ## Instalação
8
8
 
9
9
  ```bash
10
10
  # Via npx (sem instalar)
@@ -21,7 +21,7 @@ npm install -D @justmpm/ai-tool
21
21
 
22
22
  ### `map` - Mapa do Projeto
23
23
 
24
- Gera um resumo compacto do projeto com contagens, areas e alertas.
24
+ Gera um resumo compacto do projeto com contagens, áreas e alertas.
25
25
 
26
26
  ```bash
27
27
  ai-tool map # Resumo compacto (otimizado para tokens)
@@ -48,11 +48,11 @@ ai-tool map --format=json
48
48
  **Output (--full):**
49
49
  - Lista completa de arquivos por pasta
50
50
  - Estrutura detalhada de pastas
51
- - Dependencias circulares listadas
51
+ - Dependências circulares listadas
52
52
 
53
- ### `dead` - Codigo Morto
53
+ ### `dead` - Código Morto
54
54
 
55
- Detecta arquivos, exports e dependencias nao utilizados.
55
+ Detecta arquivos, exports e dependências não utilizados.
56
56
 
57
57
  ```bash
58
58
  ai-tool dead
@@ -61,13 +61,13 @@ ai-tool dead --fix # Remove automaticamente
61
61
  ```
62
62
 
63
63
  **Detecta:**
64
- - Arquivos orfaos (ninguem importa)
65
- - Exports nao utilizados
66
- - Dependencias npm nao usadas
64
+ - Arquivos órfãos (ninguém importa)
65
+ - Exports não utilizados
66
+ - Dependências npm não usadas
67
67
 
68
- ### `impact` - Analise de Impacto
68
+ ### `impact` - Análise de Impacto
69
69
 
70
- Analisa o impacto de modificar um arquivo especifico.
70
+ Analisa o impacto de modificar um arquivo específico.
71
71
 
72
72
  ```bash
73
73
  ai-tool impact Button
@@ -76,12 +76,12 @@ ai-tool impact useAuth --format=json
76
76
  ```
77
77
 
78
78
  **Output:**
79
- - **Upstream**: Quem importa este arquivo (afetados por mudancas)
80
- - **Downstream**: O que este arquivo importa (dependencias)
81
- - **Riscos**: Arquivo critico, dependencias circulares, etc.
82
- - **Sugestoes**: Recomendacoes para modificacao segura
79
+ - **Upstream**: Quem importa este arquivo (afetados por mudanças)
80
+ - **Downstream**: O que este arquivo importa (dependências)
81
+ - **Riscos**: Arquivo crítico, dependências circulares, etc.
82
+ - **Sugestões**: Recomendações para modificação segura
83
83
 
84
- ### `suggest` - Sugestao de Leitura
84
+ ### `suggest` - Sugestão de Leitura
85
85
 
86
86
  Sugere arquivos para ler ANTES de modificar um arquivo.
87
87
 
@@ -92,59 +92,59 @@ ai-tool suggest src/hooks/useAuth.ts --limit=5
92
92
 
93
93
  **Prioridades:**
94
94
  - **Critical**: Tipos/interfaces usados pelo arquivo
95
- - **High**: Dependencias diretas (imports)
95
+ - **High**: Dependências diretas (imports)
96
96
  - **Medium**: Upstream (quem usa o arquivo)
97
97
  - **Low**: Testes relacionados
98
98
 
99
99
  ### `context` - Contexto do Arquivo
100
100
 
101
- Extrai assinaturas de funcoes e tipos SEM a implementacao.
101
+ Extrai assinaturas de funções e tipos SEM a implementação.
102
102
 
103
103
  ```bash
104
104
  ai-tool context Button
105
105
  ai-tool context src/hooks/useAuth.ts --format=json
106
- ai-tool context --area=auth # Contexto consolidado de toda uma area
106
+ ai-tool context --area=auth # Contexto consolidado de toda uma área
107
107
  ```
108
108
 
109
109
  **Extrai:**
110
110
  - Imports com specifiers
111
111
  - Exports do arquivo
112
- - Funcoes com parametros e tipos de retorno
113
- - Interfaces, types e enums com definicoes
112
+ - Funções com parâmetros e tipos de retorno
113
+ - Interfaces, types e enums com definições
114
114
 
115
- Ideal para entender rapidamente a API publica de um arquivo.
115
+ Ideal para entender rapidamente a API pública de um arquivo.
116
116
 
117
- **Contexto de Area** (`--area=<nome>`):
118
- - Tipos e interfaces da area
119
- - Hooks com parametros e retornos
120
- - Funcoes principais
117
+ **Contexto de Área** (`--area=<nome>`):
118
+ - Tipos e interfaces da área
119
+ - Hooks com parâmetros e retornos
120
+ - Funções principais
121
121
  - Componentes React
122
122
  - Services e stores
123
123
  - Uma chamada = entender toda a feature
124
124
 
125
- ### `find` - Busca de Simbolos
125
+ ### `find` - Busca de Símbolos
126
126
 
127
- Busca simbolos no codigo (funcoes, tipos, componentes, hooks, constantes, triggers).
127
+ Busca símbolos no código (funções, tipos, componentes, hooks, constantes, triggers).
128
128
 
129
129
  ```bash
130
- ai-tool find useAuth # Definicao + usos
130
+ ai-tool find useAuth # Definição + usos
131
131
  ai-tool find User --type=type # Busca apenas tipos
132
- ai-tool find login --area=auth # Busca na area auth
133
- ai-tool find submit --def # Apenas definicoes
134
- ai-tool find submit --refs # Apenas referencias/usos
132
+ ai-tool find login --area=auth # Busca na área auth
133
+ ai-tool find submit --def # Apenas definições
134
+ ai-tool find submit --refs # Apenas referências/usos
135
135
  ai-tool find createUser --type=trigger # Busca Cloud Functions
136
136
  ```
137
137
 
138
- **Tipos de simbolos:**
139
- - `function` - Funcoes e arrow functions (inclui triggers)
138
+ **Tipos de símbolos:**
139
+ - `function` - Funções e arrow functions (inclui triggers)
140
140
  - `type` - Types, interfaces e enums
141
- - `const` - Constantes e variaveis
142
- - `component` - Componentes React (funcao que retorna JSX)
143
- - `hook` - React hooks (funcao que comeca com `use`)
141
+ - `const` - Constantes e variáveis
142
+ - `component` - Componentes React (função que retorna JSX)
143
+ - `hook` - React hooks (função que começa com `use`)
144
144
  - `trigger` - Firebase Cloud Functions (onCall, onDocumentCreated, etc.)
145
145
  - `all` - Todos os tipos (default)
146
146
 
147
- **Diferente de grep:** Entende o AST do TypeScript, encontra definicoes reais e onde sao usados.
147
+ **Diferente de grep:** Entende o AST do TypeScript, encontra definições reais e onde são usados.
148
148
 
149
149
  ### `functions` - Firebase Cloud Functions
150
150
 
@@ -189,9 +189,9 @@ ai-tool functions --format=json
189
189
  - Identity: `beforeUserCreated`, `beforeUserSignedIn`, `beforeEmailSent`, `beforeSmsSent`
190
190
  - E mais: Crashlytics, Performance, Remote Config, Eventarc, Tasks, Test Lab
191
191
 
192
- ### `areas` - Areas/Dominios Funcionais
192
+ ### `areas` - Áreas/Domínios Funcionais
193
193
 
194
- Lista todas as areas funcionais do projeto (auth, dashboard, stripe, etc).
194
+ Lista todas as áreas funcionais do projeto (auth, dashboard, stripe, etc).
195
195
 
196
196
  ```bash
197
197
  ai-tool areas
@@ -199,13 +199,13 @@ ai-tool areas --format=json
199
199
  ```
200
200
 
201
201
  **Output:**
202
- - Lista de areas detectadas automaticamente
203
- - Contagem de arquivos por area
204
- - Distribuicao de categorias por area
202
+ - Lista de áreas configuradas manualmente
203
+ - Contagem de arquivos por área
204
+ - Distribuição de categorias por área
205
205
 
206
- ### `area` - Detalhe de uma Area
206
+ ### `area` - Detalhe de uma Área
207
207
 
208
- Mostra todos os arquivos de uma area especifica.
208
+ Mostra todos os arquivos de uma área específica.
209
209
 
210
210
  ```bash
211
211
  ai-tool area auth
@@ -215,11 +215,11 @@ ai-tool area stripe --full # Mostra todos os arquivos
215
215
 
216
216
  **Output:**
217
217
  - Arquivos agrupados por categoria
218
- - Descricao inferida de cada arquivo
218
+ - Descrição inferida de cada arquivo
219
219
 
220
- ### `areas init` - Configuracao de Areas
220
+ ### `areas init` - Configuração de Áreas
221
221
 
222
- Gera arquivo de configuracao editavel para areas.
222
+ Gera arquivo de configuração editável para áreas.
223
223
 
224
224
  ```bash
225
225
  ai-tool areas init
@@ -227,15 +227,17 @@ ai-tool areas init --force # Sobrescreve config existente
227
227
  ```
228
228
 
229
229
  Cria `.analyze/areas.config.json` com:
230
- - Areas detectadas automaticamente
231
- - Patterns glob para cada area
232
- - Keywords de deteccao
233
- - Descricoes manuais de arquivos
234
- - Padroes de ignore global
230
+ - Template de áreas baseado no framework detectado
231
+ - Patterns glob para cada área
232
+ - Keywords de detecção
233
+ - Descrições manuais de arquivos
234
+ - Padrões de ignore global
235
235
 
236
- ### Configuracao de Areas
236
+ ### Configuração de Áreas
237
237
 
238
- O arquivo `.analyze/areas.config.json` suporta:
238
+ O arquivo `.analyze/areas.config.json` é a **fonte de verdade** para organização do projeto por domínios funcionais.
239
+
240
+ **Estrutura completa:**
239
241
 
240
242
  ```json
241
243
  {
@@ -248,29 +250,57 @@ O arquivo `.analyze/areas.config.json` suporta:
248
250
  ],
249
251
  "areas": {
250
252
  "auth": {
251
- "name": "Autenticacao",
252
- "description": "Sistema de login e sessao",
253
+ "name": "Autenticação",
254
+ "description": "Sistema de login e sessão",
253
255
  "patterns": ["**/auth/**", "**/login/**"],
254
256
  "keywords": ["auth", "login", "session"]
257
+ },
258
+ "meus-pets": {
259
+ "name": "Meus Pets",
260
+ "description": "Gerenciamento de pets do usuário",
261
+ "patterns": [
262
+ "app/meus-pets/**",
263
+ "components/pets/**",
264
+ "hooks/usePets.*",
265
+ "services/petService.*"
266
+ ],
267
+ "keywords": ["pet", "animal"],
268
+ "exclude": ["components/pets/shared/**"]
255
269
  }
256
270
  },
257
271
  "descriptions": {
258
- "src/hooks/useAuth.ts": "Hook principal de autenticacao"
272
+ "src/hooks/useAuth.ts": "Hook principal de autenticação",
273
+ "src/services/petService.ts": "Serviço de gerenciamento de pets"
259
274
  },
260
275
  "settings": {
261
- "autoDetect": true,
262
- "inferDescriptions": true
276
+ "autoDetect": false,
277
+ "inferDescriptions": true,
278
+ "groupByCategory": true
263
279
  }
264
280
  }
265
281
  ```
266
282
 
267
- | Campo | Descricao |
283
+ | Campo | Descrição |
268
284
  |-------|-----------|
269
- | `ignore` | Padroes glob para ignorar arquivos/pastas globalmente |
270
- | `areas` | Definicao manual de areas com patterns e keywords |
271
- | `descriptions` | Descricoes manuais para arquivos especificos |
272
- | `settings.autoDetect` | Se `false`, usa apenas areas definidas manualmente |
273
- | `settings.inferDescriptions` | Infere descricoes automaticamente baseado no nome |
285
+ | `ignore` | Padrões glob para ignorar arquivos/pastas globalmente |
286
+ | `areas` | Definição manual de áreas com patterns e keywords |
287
+ | `areas.<id>.name` | Nome amigável da área |
288
+ | `areas.<id>.description` | Descrição do domínio de negócio |
289
+ | `areas.<id>.patterns` | Padrões glob que identificam arquivos da área |
290
+ | `areas.<id>.keywords` | Keywords no caminho do arquivo |
291
+ | `areas.<id>.exclude` | Padrões para excluir arquivos específicos |
292
+ | `descriptions` | Descrições manuais para arquivos específicos |
293
+ | `settings.autoDetect` | **Sempre `false`** - configuração manual obrigatória |
294
+ | `settings.inferDescriptions` | Infere descrições automaticamente baseado no nome |
295
+ | `settings.groupByCategory` | Agrupa arquivos por categoria nos comandos |
296
+
297
+ **Boas práticas:**
298
+
299
+ - Ideal: 5-15 áreas (muitas áreas é difícil de navegar)
300
+ - Use patterns para pastas: `"app/dashboard/**"`
301
+ - Use keywords para arquivos espalhados: `["auth", "login"]`
302
+ - Um arquivo pode pertencer a múltiplas áreas
303
+ - Use `exclude` para remover arquivos específicos de uma área
274
304
 
275
305
  ## Servidor MCP
276
306
 
@@ -282,18 +312,18 @@ ai-tool --mcp
282
312
 
283
313
  **Tools expostas:**
284
314
  - `aitool_project_map` - Mapa do projeto (resumo compacto)
285
- - `aitool_dead_code` - Detecta codigo morto
286
- - `aitool_impact_analysis` - Analise de impacto antes de modificar
315
+ - `aitool_dead_code` - Detecta código morto
316
+ - `aitool_impact_analysis` - Análise de impacto antes de modificar
287
317
  - `aitool_suggest_reads` - Sugere arquivos para ler antes de editar
288
318
  - `aitool_file_context` - Extrai assinaturas de um arquivo
289
- - `aitool_list_areas` - Lista areas funcionais do projeto
290
- - `aitool_area_detail` - Arquivos de uma area especifica
291
- - `aitool_areas_init` - Gera config de areas
292
- - `aitool_area_context` - Contexto consolidado de toda uma area
293
- - `aitool_find` - Busca simbolos no codigo (definicao + usos)
319
+ - `aitool_list_areas` - Lista áreas funcionais do projeto
320
+ - `aitool_area_detail` - Arquivos de uma área específica
321
+ - `aitool_areas_init` - Gera config de áreas
322
+ - `aitool_area_context` - Contexto consolidado de toda uma área
323
+ - `aitool_find` - Busca símbolos no código (definição + usos)
294
324
  - `aitool_list_functions` - Lista Cloud Functions Firebase
295
325
 
296
- ### Configuracao Claude Code
326
+ ### Configuração Claude Code
297
327
 
298
328
  Adicione ao `.mcp.json` do projeto ou ao arquivo global `~/.claude/settings.json`:
299
329
 
@@ -308,7 +338,7 @@ Adicione ao `.mcp.json` do projeto ou ao arquivo global `~/.claude/settings.json
308
338
  }
309
339
  ```
310
340
 
311
- ### Configuracao Claude Desktop
341
+ ### Configuração Claude Desktop
312
342
 
313
343
  Adicione ao `claude_desktop_config.json`:
314
344
 
@@ -326,86 +356,86 @@ Adicione ao `claude_desktop_config.json`:
326
356
  }
327
357
  ```
328
358
 
329
- ## Uso Programatico
359
+ ## Uso Programático
330
360
 
331
361
  ```typescript
332
362
  import { map, dead, impact, suggest, context, areaContext, find, functions, areas, area, areasInit } from "@justmpm/ai-tool";
333
363
 
334
- // Mapa do projeto (resumo por padrao, full: true para lista completa)
364
+ // Mapa do projeto (resumo por padrão, full: true para lista completa)
335
365
  const projectMap = await map({ format: "json" });
336
366
  const fullMap = await map({ format: "json", full: true });
337
367
 
338
- // Codigo morto
368
+ // Código morto
339
369
  const deadCode = await dead({ format: "json" });
340
370
 
341
- // Analise de impacto
371
+ // Análise de impacto
342
372
  const analysis = await impact("Button", { format: "json" });
343
373
 
344
- // Sugestao de leitura
374
+ // Sugestão de leitura
345
375
  const suggestions = await suggest("Button", { limit: 5 });
346
376
 
347
377
  // Contexto do arquivo
348
378
  const fileContext = await context("Button", { format: "json" });
349
379
 
350
- // Contexto de uma area inteira
380
+ // Contexto de uma área inteira
351
381
  const authContext = await areaContext("auth", { format: "json" });
352
382
 
353
- // Busca de simbolos
383
+ // Busca de símbolos
354
384
  const symbolSearch = await find("useAuth", { type: "hook", area: "auth" });
355
385
 
356
386
  // Cloud Functions Firebase
357
387
  const cloudFunctions = await functions({ trigger: "onCall" });
358
388
 
359
- // Areas funcionais
389
+ // Áreas funcionais
360
390
  const projectAreas = await areas({ format: "json" });
361
391
 
362
- // Detalhe de uma area
392
+ // Detalhe de uma área
363
393
  const authArea = await area("auth", { type: "hook" });
364
394
 
365
- // Gerar config de areas
395
+ // Gerar config de áreas
366
396
  await areasInit({ force: false });
367
397
  ```
368
398
 
369
- ## Opcoes
399
+ ## Opções
370
400
 
371
- | Opcao | Descricao | Default |
401
+ | Opção | Descrição | Default |
372
402
  |-------|-----------|---------|
373
- | `--format=text\|json` | Formato de saida | `text` |
374
- | `--cwd=<path>` | Diretorio do projeto | `process.cwd()` |
403
+ | `--format=text\|json` | Formato de saída | `text` |
404
+ | `--cwd=<path>` | Diretório do projeto | `process.cwd()` |
375
405
  | `--no-cache` | Ignora cache | `false` |
376
406
  | `--full` | Lista completa (`map`: arquivos, `area`: todos) | `false` |
377
- | `--fix` | Remove codigo morto (so `dead`) | `false` |
378
- | `--limit=<n>` | Limite de sugestoes (so `suggest`) | `10` |
379
- | `--type=<cat>` | Filtra por categoria (`area`) ou tipo de simbolo (`find`) | - |
380
- | `--area=<nome>` | Filtra por area (`context`, `find`) | - |
381
- | `--def` | Mostra apenas definicoes (so `find`) | `false` |
382
- | `--refs` | Mostra apenas referencias/usos (so `find`) | `false` |
407
+ | `--fix` | Remove código morto ( `dead`) | `false` |
408
+ | `--limit=<n>` | Limite de sugestões ( `suggest`) | `10` |
409
+ | `--type=<cat>` | Filtra por categoria (`area`) ou tipo de símbolo (`find`) | - |
410
+ | `--area=<nome>` | Filtra por área (`context`, `find`) | - |
411
+ | `--def` | Mostra apenas definições ( `find`) | `false` |
412
+ | `--refs` | Mostra apenas referências/usos ( `find`) | `false` |
383
413
  | `--mcp` | Inicia servidor MCP | - |
384
414
 
385
415
  ## Categorias de Arquivos
386
416
 
387
- | Categoria | Descricao |
417
+ | Categoria | Descrição |
388
418
  |-----------|-----------|
389
- | `page` | Paginas (Next.js, etc.) |
419
+ | `page` | Páginas (Next.js, etc.) |
390
420
  | `layout` | Layouts |
391
421
  | `route` | Rotas de API |
392
422
  | `component` | Componentes React/Vue |
393
423
  | `hook` | React Hooks |
394
- | `service` | Servicos/API |
424
+ | `service` | Serviços/API |
395
425
  | `store` | Estado global |
396
- | `util` | Utilitarios |
426
+ | `util` | Utilitários |
397
427
  | `type` | Tipos TypeScript |
398
- | `config` | Configuracoes |
428
+ | `config` | Configurações |
399
429
  | `test` | Testes |
400
430
  | `cloud-function` | Firebase Cloud Functions |
401
431
  | `other` | Outros |
402
432
 
403
433
  ## Cache
404
434
 
405
- Resultados sao salvos em `.analyze/` para acelerar execucoes futuras.
435
+ Resultados são salvos em `.analyze/` para acelerar execuções futuras.
406
436
 
407
- - Cache e invalidado automaticamente quando arquivos mudam
408
- - Use `--no-cache` para forcar regeneracao
437
+ - Cache é invalidado automaticamente quando arquivos mudam
438
+ - Use `--no-cache` para forcar regeneração
409
439
  - Adicione `.analyze/` ao `.gitignore`
410
440
 
411
441
  ## Requisitos
@@ -413,12 +443,12 @@ Resultados sao salvos em `.analyze/` para acelerar execucoes futuras.
413
443
  - Node.js >= 18.0.0
414
444
  - Projeto TypeScript/JavaScript
415
445
 
416
- ## Creditos
446
+ ## Créditos
417
447
 
418
- - [Skott](https://github.com/antoine-coulon/skott) - Analise de dependencias
419
- - [Knip](https://knip.dev) - Deteccao de codigo morto
420
- - [ts-morph](https://ts-morph.com) - Analise AST
448
+ - [Skott](https://github.com/antoine-coulon/skott) - Análise de dependências
449
+ - [Knip](https://knip.dev) - Detecção de código morto
450
+ - [ts-morph](https://ts-morph.com) - Análise AST
421
451
 
422
- ## Licenca
452
+ ## Licença
423
453
 
424
454
  MIT - [Koda AI Studio](https://kodaai.app)