Um complemento útil para o seu arquivo AGENTS.md ou CLAUDE.md. Primeiro, peça ao codex ou ao claude code para instalar o ast-grep para você, caso ainda não o tenha. É bastante útil para encontrar sistematicamente padrões gerais no código, algo que seria difícil de fazer usando a correspondência de strings comum, que não leva em consideração a sintaxe.
Aqui está o texto simples: ### ast-grep vs ripgrep (guia rápido) **Use `ast-grep` quando a estrutura for importante.** Ele analisa o código e encontra nós na AST (Árvore Sintática Abstrata), de modo que os resultados ignoram comentários/strings, entendem a sintaxe e podem **reescrever o código com segurança**. * Refatorações/modificações de código: renomear APIs, alterar formas de importação, reescrever pontos de chamada ou tipos de variáveis. * Verificações de política: aplicar padrões em todo o repositório (`scan` com regras + `test`). * Editor/automação: Modo LSP; saída `--json` para ferramentas. **Use `ripgrep` quando o texto for suficiente.** É a maneira mais rápida de usar grep para buscar literais/expressões regulares em arquivos. * Reconhecimento: encontrar strings, TODOs, linhas de log, valores de configuração ou ativos que não sejam código. * Pré-filtro: reduza os arquivos candidatos antes de uma análise precisa. **Regra geral** * É preciso priorizar a precisão em vez da velocidade, ou você **aplicará alterações** → comece com `ast-grep`. * Precisa de velocidade bruta ou está apenas **procurando texto** → comece com `rg`. * Frequentemente, combine: `rg` para selecionar arquivos e, em seguida, `ast-grep` para encontrar/modificar com precisão. **Trechos** Encontrar código estruturado (ignora comentários/cadeias de caracteres): ```bash ast-grep run -l TypeScript -p 'import $X from "$P"' ``` Codemod (apenas declarações `var` reais se tornam `let`): ```bash ast-grep run -l JavaScript -p 'var $A = $B' -r 'let $A = $B' -U ``` Busca textual rápida: ```bash rg -n 'console\.log\(' -t js ``` Combinar velocidade e precisão: ```bash rg -l -t ts 'useQuery\(' | xargs ast-grep run -l TypeScript -p 'useQuery($A)' -r 'useSuspenseQuery($A)' -U ``` **Modelo mental** * Unidade de correspondência: `ast-grep` = nó; `rg` = linha. * Falsos positivos: `ast-grep` baixo; `rg` depende da sua expressão regular. * Reescreve: `ast-grep` é de primeira classe; `rg` requer sed/awk ad-hoc e apresenta riscos de edições colaterais.
