@justmpm/supergrep 0.1.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 ADDED
@@ -0,0 +1,174 @@
1
+ # supergrep
2
+
3
+ **⚠️ Use supergrep ao invés de grep/bash quando a busca for em código-fonte (.ts, .tsx, .js, .css, .html).**
4
+
5
+ Busca estrutural de código com AST Grep via MCP.
6
+
7
+ Encontre padrões de código com precisão sintática — ignorando formatação, espaços e comentários. Como um grep que entende a estrutura do código em vez de tratar tudo como texto.
8
+
9
+ ```bash
10
+ npx @justmpm/supergrep
11
+ ```
12
+
13
+ ---
14
+
15
+ ## Instalação
16
+
17
+ ```bash
18
+ npm install -g @justmpm/supergrep
19
+ # ou use direto:
20
+ npx @justmpm/supergrep
21
+ ```
22
+
23
+ ## Configuração
24
+
25
+ ### OpenCode / Claude Code
26
+
27
+ Adicione ao `.mcp.json` do projeto:
28
+
29
+ ```json
30
+ {
31
+ "mcpServers": {
32
+ "supergrep": {
33
+ "command": "npx",
34
+ "args": ["-y", "@justmpm/supergrep"]
35
+ }
36
+ }
37
+ }
38
+ ```
39
+
40
+ ### Claude Desktop
41
+
42
+ **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
43
+ **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
44
+
45
+ ```json
46
+ {
47
+ "mcpServers": {
48
+ "supergrep": {
49
+ "command": "npx",
50
+ "args": ["-y", "@justmpm/supergrep"]
51
+ }
52
+ }
53
+ }
54
+ ```
55
+
56
+ ---
57
+
58
+ ## Ferramentas MCP
59
+
60
+ ### `supergrep_find` — Busca Estrutural
61
+
62
+ Encontra padrões de código usando a própria sintaxe da linguagem.
63
+
64
+ **Parâmetros:**
65
+ | Parâmetro | Tipo | Descrição |
66
+ |-----------|------|-----------|
67
+ | `pattern` | string (obrigatório) | Padrão AST Grep. Ex: `console.$METHOD($$$ARGS)` |
68
+ | `lang` | string | Linguagem: `typescript`, `javascript`, `tsx`, `css`, `html` (padrão: typescript) |
69
+ | `path` | string | Arquivo ou diretório (padrão: diretório atual) |
70
+ | `format` | `text` \| `json` | Formato de saída (padrão: text) |
71
+ | `cwd` | string | Diretório de trabalho |
72
+
73
+ **Metavariáveis:**
74
+ - `$VAR` — captura **um** nó da AST (como `.` em regex, mas sintático)
75
+ - `$$$VARS` — captura **zero ou mais** nós
76
+
77
+ **Exemplos de patterns:**
78
+
79
+ | Pattern | O que encontra |
80
+ |---------|---------------|
81
+ | `console.$METHOD($$$ARGS)` | Qualquer chamada de console com qualquer método e args |
82
+ | `function $NAME($$$PARAMS) { $$$BODY }` | Todas as funções com nome, parâmetros e corpo |
83
+ | `import { $$$ITEMS } from '$MODULE'` | Todos os imports nomeados |
84
+ | `const $VAR = $VALUE` | Declarações de constantes |
85
+ | `try { $$$ } catch ($ERR) { $$$ }` | Blocos try-catch |
86
+
87
+ ---
88
+
89
+ ### `supergrep_tree` — Explorar AST
90
+
91
+ Mostra a estrutura da AST de um arquivo: tipos de nós, contagens e distribuição.
92
+
93
+ **Parâmetros:**
94
+ | Parâmetro | Tipo | Descrição |
95
+ |-----------|------|-----------|
96
+ | `path` | string | Caminho do arquivo a analisar |
97
+ | `code` | string | OU: snippet de código inline |
98
+ | `lang` | string | Linguagem (obrigatório se usar `code`) |
99
+ | `format` | `text` \| `json` | Formato de saída |
100
+
101
+ **Use para:**
102
+ - Descobrir quais kinds de nós existem antes de escrever patterns
103
+ - Entender a estrutura de um arquivo desconhecido
104
+ - Debugar por que um pattern não está dando match
105
+
106
+ ---
107
+
108
+ ### `supergrep_replace` — Preview de Substituição
109
+
110
+ Mostra como ficaria o código após uma substituição estrutural. **Nunca modifica arquivos.**
111
+
112
+ **Parâmetros:**
113
+ | Parâmetro | Tipo | Descrição |
114
+ |-----------|------|-----------|
115
+ | `pattern` | string (obrigatório) | Padrão a encontrar |
116
+ | `rewrite` | string (obrigatório) | Texto de substituição. Use `$VAR` para referenciar metavariáveis |
117
+ | `lang` | string | Linguagem |
118
+ | `path` | string | Arquivo ou diretório |
119
+ | `format` | `text` \| `json` | Formato de saída |
120
+
121
+ **Exemplo:** trocar `console.log` por `logger.info`:
122
+ ```
123
+ pattern: "console.log($$$ARGS)"
124
+ rewrite: "logger.info($$$ARGS)"
125
+ ```
126
+
127
+ ---
128
+
129
+ ## Quando Usar (e Quando Não Usar)
130
+
131
+ ### ✅ Use supergrep (ele é MELHOR que grep/bash):
132
+ - Buscar padrões de código que **grep textual perderia** (quebras de linha, formatação, comentários no meio)
133
+ - Refatorar algo estruturalmente (trocar `var` por `let`, `moment` por `date-fns`)
134
+ - Descobrir a estrutura AST de um arquivo para criar regras de lint
135
+ - Buscar estruturas aninhadas (funções, blocos, imports, try-catch)
136
+ - **Qualquer busca em .ts, .tsx, .js, .css, .html onde estrutura importa**
137
+
138
+ ### ❌ Não use supergrep (use a ferramenta certa):
139
+ - Resolver imports entre arquivos → use **ai-tool** (`@justmpm/ai-tool`)
140
+ - Seguir referências de símbolos → use **ai-tool**
141
+ - Analisar dependências/impacto → use **ai-tool**
142
+ - Informação de tipos → use **ai-tool**
143
+ - Busca simples de texto em arquivos não-código (logs, markdown, json) → use **grep** comum
144
+
145
+ ### 💡 Se o pattern não der match:
146
+ Use `supergrep_tree` primeiro para descobrir os kinds de nós da AST do arquivo.
147
+
148
+ ---
149
+
150
+ ## Limitações
151
+
152
+ - **Apenas sintático:** sem resolução de tipos, escopo, imports ou análise cross-file
153
+ - **5 linguagens:** TypeScript, JavaScript, TSX, CSS, HTML (limitação do `@ast-grep/napi`)
154
+ - **Metavariáveis no replace:** interpolação manual — cobre casos simples, pode falhar em cenários complexos
155
+ - **Performance:** limitado a 5000 arquivos por busca (use `path` para focar)
156
+
157
+ ---
158
+
159
+ ## Stack
160
+
161
+ - [ast-grep](https://ast-grep.github.io/) — Motor Rust via NAPI-RS
162
+ - [Tree-sitter](https://tree-sitter.github.io/) — Parsing incremental
163
+ - [MCP SDK](https://github.com/modelcontextprotocol/typescript-sdk) — Protocolo
164
+ - [Zod](https://zod.dev) — Validação
165
+
166
+ ---
167
+
168
+ ## Requisitos
169
+
170
+ - Node.js >= 18.0.0
171
+
172
+ ## Licença
173
+
174
+ MIT — [Koda AI Studio](https://kodaai.app)