@justmpm/ai-tool 0.3.1 → 0.4.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,29 +1,27 @@
1
1
  # ai-tool
2
2
 
3
- Ferramenta de análise de dependências e impacto para projetos TypeScript/JavaScript.
3
+ Ferramenta de analise de dependencias e impacto para projetos TypeScript/JavaScript.
4
4
 
5
- Usa [Skott](https://github.com/antoine-coulon/skott) + [Knip](https://knip.dev) internamente para análise precisa.
5
+ Usa [Skott](https://github.com/antoine-coulon/skott) + [Knip](https://knip.dev) + [ts-morph](https://ts-morph.com) internamente.
6
6
 
7
- ## Instalação
7
+ ## Instalacao
8
8
 
9
9
  ```bash
10
10
  # Via npx (sem instalar)
11
- npx ai-tool map
12
- npx ai-tool dead
13
- npx ai-tool impact Button
11
+ npx @justmpm/ai-tool map
14
12
 
15
13
  # Ou instalar globalmente
16
- npm install -g ai-tool
14
+ npm install -g @justmpm/ai-tool
17
15
 
18
16
  # Ou como devDependency
19
- npm install -D ai-tool
17
+ npm install -D @justmpm/ai-tool
20
18
  ```
21
19
 
22
20
  ## Comandos
23
21
 
24
22
  ### `map` - Mapa do Projeto
25
23
 
26
- Gera um mapa completo do projeto com categorização de arquivos.
24
+ Gera um mapa completo do projeto com categorizacao de arquivos.
27
25
 
28
26
  ```bash
29
27
  ai-tool map
@@ -32,13 +30,13 @@ ai-tool map --format=json
32
30
 
33
31
  **Output:**
34
32
  - Total de arquivos e pastas
35
- - Categorização automática (component, hook, service, util, etc.)
33
+ - Categorizacao automatica (component, hook, service, util, etc.)
36
34
  - Estrutura de pastas
37
- - Dependências circulares detectadas
35
+ - Dependencias circulares detectadas
38
36
 
39
- ### `dead` - Código Morto
37
+ ### `dead` - Codigo Morto
40
38
 
41
- Detecta arquivos, exports e dependências não utilizados.
39
+ Detecta arquivos, exports e dependencias nao utilizados.
42
40
 
43
41
  ```bash
44
42
  ai-tool dead
@@ -47,13 +45,13 @@ ai-tool dead --fix # Remove automaticamente
47
45
  ```
48
46
 
49
47
  **Detecta:**
50
- - Arquivos órfãos (ninguém importa)
51
- - Exports não utilizados
52
- - Dependências npm não usadas
48
+ - Arquivos orfaos (ninguem importa)
49
+ - Exports nao utilizados
50
+ - Dependencias npm nao usadas
53
51
 
54
- ### `impact` - Análise de Impacto
52
+ ### `impact` - Analise de Impacto
55
53
 
56
- Analisa o impacto de modificar um arquivo específico.
54
+ Analisa o impacto de modificar um arquivo especifico.
57
55
 
58
56
  ```bash
59
57
  ai-tool impact Button
@@ -62,100 +60,159 @@ ai-tool impact useAuth --format=json
62
60
  ```
63
61
 
64
62
  **Output:**
65
- - **Upstream**: Quem importa este arquivo (afetados por mudanças)
66
- - **Downstream**: O que este arquivo importa (dependências)
67
- - **Riscos**: Arquivo crítico, dependências circulares, etc.
68
- - **Sugestões**: Recomendações para modificação segura
63
+ - **Upstream**: Quem importa este arquivo (afetados por mudancas)
64
+ - **Downstream**: O que este arquivo importa (dependencias)
65
+ - **Riscos**: Arquivo critico, dependencias circulares, etc.
66
+ - **Sugestoes**: Recomendacoes para modificacao segura
69
67
 
70
- ## Uso Programático
68
+ ### `suggest` - Sugestao de Leitura
69
+
70
+ Sugere arquivos para ler ANTES de modificar um arquivo.
71
+
72
+ ```bash
73
+ ai-tool suggest Button
74
+ ai-tool suggest src/hooks/useAuth.ts --limit=5
75
+ ```
76
+
77
+ **Prioridades:**
78
+ - **Critical**: Tipos/interfaces usados pelo arquivo
79
+ - **High**: Dependencias diretas (imports)
80
+ - **Medium**: Upstream (quem usa o arquivo)
81
+ - **Low**: Testes relacionados
82
+
83
+ ### `context` - Contexto do Arquivo
84
+
85
+ Extrai assinaturas de funcoes e tipos SEM a implementacao.
86
+
87
+ ```bash
88
+ ai-tool context Button
89
+ ai-tool context src/hooks/useAuth.ts --format=json
90
+ ```
91
+
92
+ **Extrai:**
93
+ - Imports com specifiers
94
+ - Exports do arquivo
95
+ - Funcoes com parametros e tipos de retorno
96
+ - Interfaces, types e enums com definicoes
97
+
98
+ Ideal para entender rapidamente a API publica de um arquivo.
99
+
100
+ ## Servidor MCP
101
+
102
+ Integra com Claude Desktop e outras ferramentas MCP.
103
+
104
+ ```bash
105
+ ai-tool --mcp
106
+ ```
107
+
108
+ **Tools expostas:**
109
+ - `aitool_project_map` - Mapa do projeto
110
+ - `aitool_dead_code` - Codigo morto
111
+ - `aitool_impact_analysis` - Analise de impacto
112
+ - `aitool_suggest_reads` - Sugestao de leitura
113
+ - `aitool_file_context` - Contexto do arquivo
114
+
115
+ ### Configuracao Claude Code
116
+
117
+ Adicione ao `.mcp.json` do projeto ou ao arquivo global `~/.claude/settings.json`:
118
+
119
+ ```json
120
+ {
121
+ "mcpServers": {
122
+ "analyze": {
123
+ "command": "npx",
124
+ "args": ["-y", "@justmpm/ai-tool", "--mcp"]
125
+ }
126
+ }
127
+ }
128
+ ```
129
+
130
+ ### Configuracao Claude Desktop
131
+
132
+ Adicione ao `claude_desktop_config.json`:
133
+
134
+ **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
135
+ **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
136
+
137
+ ```json
138
+ {
139
+ "mcpServers": {
140
+ "analyze": {
141
+ "command": "npx",
142
+ "args": ["-y", "@justmpm/ai-tool", "--mcp"]
143
+ }
144
+ }
145
+ }
146
+ ```
147
+
148
+ ## Uso Programatico
71
149
 
72
150
  ```typescript
73
- import { map, dead, impact } from "ai-tool";
151
+ import { map, dead, impact, suggest, context } from "@justmpm/ai-tool";
74
152
 
75
153
  // Mapa do projeto
76
154
  const projectMap = await map({ format: "json" });
77
155
 
78
- // Código morto
156
+ // Codigo morto
79
157
  const deadCode = await dead({ format: "json" });
80
158
 
81
- // Análise de impacto
82
- const analysis = await impact("src/components/Button.tsx", {
83
- format: "json"
84
- });
159
+ // Analise de impacto
160
+ const analysis = await impact("Button", { format: "json" });
161
+
162
+ // Sugestao de leitura
163
+ const suggestions = await suggest("Button", { limit: 5 });
164
+
165
+ // Contexto do arquivo
166
+ const fileContext = await context("Button", { format: "json" });
85
167
  ```
86
168
 
87
- ## Opções
169
+ ## Opcoes
88
170
 
89
- | Opção | Descrição | Default |
171
+ | Opcao | Descricao | Default |
90
172
  |-------|-----------|---------|
91
- | `--format=text\|json` | Formato de saída | `text` |
92
- | `--cwd=<path>` | Diretório do projeto | `process.cwd()` |
93
- | `--fix` | Remove código morto (só para `dead`) | `false` |
173
+ | `--format=text\|json` | Formato de saida | `text` |
174
+ | `--cwd=<path>` | Diretorio do projeto | `process.cwd()` |
175
+ | `--no-cache` | Ignora cache | `false` |
176
+ | `--fix` | Remove codigo morto (so `dead`) | `false` |
177
+ | `--limit=<n>` | Limite de sugestoes (so `suggest`) | `10` |
178
+ | `--mcp` | Inicia servidor MCP | - |
94
179
 
95
180
  ## Categorias de Arquivos
96
181
 
97
- O ai-tool categoriza automaticamente os arquivos:
98
-
99
- | Categoria | Descrição |
182
+ | Categoria | Descricao |
100
183
  |-----------|-----------|
101
- | `page` | Páginas (Next.js, etc.) |
184
+ | `page` | Paginas (Next.js, etc.) |
102
185
  | `layout` | Layouts |
103
186
  | `route` | Rotas de API |
104
187
  | `component` | Componentes React/Vue |
105
188
  | `hook` | React Hooks |
106
- | `service` | Serviços/API |
107
- | `store` | Estado global (Redux, Zustand, Context) |
108
- | `util` | Utilitários |
189
+ | `service` | Servicos/API |
190
+ | `store` | Estado global |
191
+ | `util` | Utilitarios |
109
192
  | `type` | Tipos TypeScript |
110
- | `config` | Configurações |
193
+ | `config` | Configuracoes |
111
194
  | `test` | Testes |
112
195
  | `other` | Outros |
113
196
 
114
- ## Integração com IA
197
+ ## Cache
115
198
 
116
- Este pacote foi criado para ser usado com ferramentas de IA como Claude Code, OpenCode, etc.
199
+ Resultados sao salvos em `.analyze/` para acelerar execucoes futuras.
117
200
 
118
- Exemplo de tool para OpenCode:
119
-
120
- ```typescript
121
- import { tool } from "@opencode-ai/plugin";
122
- import { execSync } from "child_process";
123
-
124
- export default tool({
125
- description: `Analisa dependências e impacto do projeto.
126
-
127
- COMANDOS:
128
- - map: Mapa do projeto
129
- - dead: Código morto
130
- - impact <arquivo>: Análise de impacto`,
131
-
132
- args: {
133
- command: tool.schema.enum(["map", "dead", "impact"]),
134
- target: tool.schema.string().optional(),
135
- format: tool.schema.enum(["text", "json"]).optional()
136
- },
137
-
138
- async execute({ command, target, format }) {
139
- const fmt = format || "text";
140
- const cmd = target
141
- ? `npx ai-tool ${command} "${target}" --format=${fmt}`
142
- : `npx ai-tool ${command} --format=${fmt}`;
143
-
144
- return execSync(cmd, { encoding: "utf-8" });
145
- }
146
- });
147
- ```
201
+ - Cache e invalidado automaticamente quando arquivos mudam
202
+ - Use `--no-cache` para forcar regeneracao
203
+ - Adicione `.analyze/` ao `.gitignore`
148
204
 
149
205
  ## Requisitos
150
206
 
151
207
  - Node.js >= 18.0.0
152
- - TypeScript/JavaScript project
208
+ - Projeto TypeScript/JavaScript
153
209
 
154
- ## Créditos
210
+ ## Creditos
155
211
 
156
- - [Skott](https://github.com/antoine-coulon/skott) - Análise de dependências
157
- - [Knip](https://knip.dev) - Detecção de código morto
212
+ - [Skott](https://github.com/antoine-coulon/skott) - Analise de dependencias
213
+ - [Knip](https://knip.dev) - Deteccao de codigo morto
214
+ - [ts-morph](https://ts-morph.com) - Analise AST
158
215
 
159
- ## Licença
216
+ ## Licenca
160
217
 
161
218
  MIT - [Koda AI Studio](https://kodaai.app)