ast-grep
Faz seu agente buscar e reescrever código usando padrões de sintaxe em vários idiomas. Ideal para modificar código baseado em sua estrutura, não apenas em texto.
O que ela faz
ast-grep é uma ferramenta que busca e modifica código em vários idiomas. Ele entende a estrutura do código, não apenas o texto, para encontrar padrões específicos ou fazer alterações.
Quando usar
- ✓Encontrar todas as funções que recebem um parâmetro específico.
- ✓Substituir um trecho de código por outro em vários arquivos.
- ✓Verificar se o código segue certas regras de estrutura.
Exemplo do que pedir para a IA
“Encontre todas as chamadas de função `console.log` e substitua por `logger.info` no meu projeto TypeScript.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
Você descreve o que quer encontrar ou mudar usando uma linguagem que entende a estrutura do código. A ferramenta analisa seu código como se fosse um código real e faz as modificações necessárias.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add code-yeongyu/oh-my-openagent --skill ast-grepOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/dev/packages/shared-skills/skills/ast-grep/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
ast-grep
sg (também instalado como ast-grep) é uma ferramenta de busca e reescrita ciente de AST em 25 idiomas. Ele trata seu padrão como código, o analisa da mesma forma que analisa seu projeto e corresponde estruturalmente. É a ferramenta certa sempre que sua pergunta depende da forma do código em vez de bytes de texto.
Esta habilidade envia um wrapper Python em scripts/ast_grep_helper.py e scripts de instalação de plataforma em install.sh (POSIX) e install.ps1 (Windows). O helper adiciona validação de padrão offline, o truque de reescrita de duas passagens e resolução automática de binários. Use-o como seu ponto de entrada padrão.
Nativo OmO: as ferramentas MCP ast-grep (caminho mais rápido, sem CLI necessário)
O OmO nativo também registra um servidor MCP ast-grep agrupado. Suas três ferramentas são adiadas: elas estão ausentes da lista de ferramentas residentes e ativam automaticamente na primeira vez que você as chama pelo nome — sem necessidade de viagem de ida e volta tool_search.
mcp__ast_grep_search({ pattern, language, paths })— busca de forma AST, o equivalente MCP desg run -p. Prefira isso em vez de usar o shell parasgpara pesquisas pontuais: sem instalação, sem problemas de PATH.mcp__ast_grep_rewrite({ pattern, rewrite, language, paths, apply })— visualiza correspondências (apply: false, o padrão) ou aplica a reescrita (apply: true). Mesma disciplina de duas passagens quesg run -r: visualize primeiro, depois aplique.mcp__ast_grep_scan({ paths })— executa regras YAML de projeto (sgconfig.yml,rules/), o equivalente MCP desg scan.
Mesma linguagem de padrão que a CLI: $VAR corresponde a um nó AST, $$$VAR corresponde a zero ou mais, e o padrão é código, não regex. paths aceita uma lista de arquivos ou diretórios; language é necessário para padrões que são ambíguos entre idiomas.
Quando usar esta habilidade
Use-a sempre que a pergunta do usuário for sobre estrutura de código, não bytes:
- "Encontre todas as funções que recebem um parâmetro
Request." - "Reescreva todos os
console.log(x)paralogger.info(x)." - "Remova todas as conversões
as any." - "Substitua
require(...)porimportem todo o repositório." - "Encontre blocos catch vazios."
- "Migre
Optional[X]paraX | None." - "Aplique este codemod em estes 200 arquivos."
- "Execute nossas regras de lint YAML e exiba as violações."
Mude para grep / rg simples quando a pergunta for em formato de texto (conteúdo de literais de string, comentários, cabeçalhos de licença, nomes de arquivos, regex entre idiomas). Em caso de dúvida, pergunte: "a resposta depende da árvore de sintaxe do idioma, ou apenas dos bytes do arquivo?" Se for o primeiro, ast-grep. Se for o último, grep.
Três coisas que o agente deve internalizar
1. ast-grep NÃO é regex
Os curingas são $VAR (um nó AST) e $$$ (zero ou mais nós). A sintaxe regex falha silenciosamente:
| Você escreveu | O que ast-grep viu | O que você queria |
|---|---|---|
foo|bar |
OU bitwise de foo e bar |
executar duas buscas separadas |
.*foo |
não analisável | $$$ foo (se $$$ for uma lista de nós) ou use rg |
\w+ |
não analisável | $VAR para capturar qualquer identificador |
[a-z] |
classe de caracteres, não analisável | mude para rg |
A tabela completa de antipadrões está em references/pitfalls.md §1. O helper validate pega esses problemas mecanicamente — chame-o antes de depurar "sem correspondências" manualmente.
2. Padrões devem ser código válido
O próprio padrão deve ser analisável. def $FN($$$): falha porque o : final o torna incompleto; use def $FN($$$). function $NAME sem parâmetros/corpo falha; use function $NAME($$$) { $$$ }. Tabela completa por idioma em references/pitfalls.md §2.
3. --update-all e --json são mutuamente exclusivos (silenciosamente)
Este é o maior problema ao scriptar. sg run -p P -r R --json --update-all retorna o JSON, mas não modifica os arquivos. Para visualizar E aplicar, execute duas passagens:
sg run -p P -r R --json=compact . # pass 1: see what would change
sg run -p P -r R --update-all . # pass 2: actually apply
O helper faz isso automaticamente quando você chama replace --apply. Leia references/pitfalls.md §9.
O script helper — scripts/ast_grep_helper.py
Um wrapper Python 3 de arquivo único da biblioteca padrão. O mesmo em todos os sistemas operacionais. O ponto de entrada padrão do agente.
search — encontra todas as correspondências de um padrão
python3 scripts/ast_grep_helper.py search 'console.log($MSG)' --lang ts src/
Valida o padrão offline primeiro. Se o padrão parecer regex (\w, .*, |, etc.), o helper sai com uma dica e nunca chama sg — economiza uma viagem de ida e volta. Passe --force para pular a validação.
Flags:
…
Perguntas frequentes
Qual a diferença entre ast-grep e grep (ou regex)?
grep e regex olham para o texto como uma sequência de caracteres. ast-grep entende a estrutura do código (como funções, variáveis, etc.), permitindo buscas e modificações mais precisas baseadas na forma do código.
O que são os caracteres `$VAR` e `$$$`?
`$VAR` é usado para capturar uma parte da estrutura do código (como um nome de variável ou função). `$$$` é usado para capturar zero ou mais partes da estrutura do código.
Como faço para aplicar as mudanças que encontrei?
Você pode primeiro ver uma prévia das mudanças (dry-run) e depois executar o comando novamente com a opção de aplicar para modificar os arquivos de fato.
Detalhes
Descrição original do autor
Searches and rewrites code by AST shape across 25 languages. Use when the target is a syntax pattern (every call/class/import shaped like X, a codemod, a YAML rule) rather than literal text; for plain strings, comments, or filenames, use rg.
Popularidade
- Estrelas no GitHub
- 70 mil
- Posição no ranking
- #1733
- Licença
- NOASSERTION
- Atualizada em
- 16/10/2026
Comentários
- …
Mais skills deste repositório
comment-checker
Ajuda seu agente a entender e responder a feedbacks de verificadores automáticos de comentários. É útil quando o agente precisa processar informações de ferramentas que revisam automaticamente o código ou o conteúdo.
code-yeongyu/oh-my-openagent
lcx-contribute-bug-fix
Ajuda seu agente a contribuir com correções de bugs para projetos relacionados ao LazyCodex. Ele cria issues ou pull requests para garantir a qualidade do código.
code-yeongyu/oh-my-openagent
lcx-doctor
Faz seu agente verificar a saúde da instalação do LazyCodex e Codex CLI. É útil quando o sistema se comporta de forma estranha após atualizações ou mudanças.
code-yeongyu/oh-my-openagent
lcx-report-bug
Ajuda seu agente a reportar bugs de forma detalhada em projetos do LazyCodex. Ele cria issues com informações úteis para os desenvolvedores corrigirem o problema.
code-yeongyu/oh-my-openagent
Skills parecidas
benchmark-optimization-loop
Faz seu agente melhorar a velocidade de algo de forma medida. Ele testa várias versões e escolhe a mais rápida que ainda funciona corretamente.
affaan-m/ECC
change-impact
Ajuda seu agente a analisar o impacto de mudanças no código antes de fazê-las. Ele compara o planejado com o real depois, cobrindo caminhos, dados, testes e documentação. É útil para mudanças arriscadas ou que afetam várias partes do sistema.
affaan-m/ECC
click-path-audit
Faz seu agente rastrear todos os botões e interações do usuário para achar bugs. Ele encontra problemas onde funções parecem funcionar sozinhas, mas falham juntas. Útil quando bugs persistem mesmo após depuração.
affaan-m/ECC