ast-grep

Структурный поиск, линт и замена кода по синтаксическому дереву: шаблоны пишутся как обычный код

CLIСредний риск

ast-grep/ast-grep

Установка

brew install ast-grep

Также: npm install --global @ast-grep/cli, pip install ast-grep-cli, cargo install ast-grep --locked.

Это чужой код. Посмотрите файлы в репозитории перед установкой.

Что делает

ast-grep ищет в коде не текст, а синтаксические конструкции: шаблон записывается как фрагмент кода, а метапеременные вроде $A совпадают с любым узлом дерева. Найденное можно сразу переписать по шаблону замены. Правила линта и массовых правок описываются в YAML. Разбор идет через tree-sitter, инструмент написан на Rust и использует несколько ядер. Агенту это дает точные рефакторинги на весь проект вместо хрупких регулярных выражений.

Для кого. Для разработчиков и агентов, которым нужны массовые правки и поиск по коду с учетом синтаксиса.

Подходит, если

  • Нужно заменить устаревший вызов API во всем проекте
  • Нужно написать собственное правило линта для команды
  • Регулярное выражение цепляет лишнее или пропускает многострочные конструкции

Не подходит, если

  • Нужна замена в обычном тексте или конфигурации без синтаксиса языка
  • Нужно переименование с учетом типов и импортов, для этого лучше языковой сервер

Пример запроса к агенту

С помощью ast-grep замени во всех TypeScript-файлах конструкции вида a && a() на a?.()

Ограничения

Работает только с языками, для которых есть грамматика tree-sitter. Не знает о типах, поэтому одинаковые по форме, но разные по смыслу конструкции совпадут одинаково. Шаблоны и YAML-правила требуют привыкания.

Как отключить. Удалите пакет тем же менеджером, которым ставили: npm uninstall -g @ast-grep/cli, pip uninstall ast-grep-cli или brew uninstall ast-grep.

Проверка безопасности

  • При замене переписывает файлы проекта массово

Коротко о README

README объясняет идею поиска по синтаксическому дереву и синтаксис метапеременных. Установка возможна через npm, pip, cargo, Homebrew, scoop, MacPorts, Nix и mise. Приведены примеры замен для TypeScript и перечислены основные возможности: шаблоны в виде кода, API для обхода дерева и правила в YAML. Лицензия MIT.

Частые вопросы

Чем это лучше grep или sed?

Совпадение идет по структуре кода, поэтому пробелы, переносы и форматирование не мешают, а строки и комментарии не цепляются случайно.

Можно ли попробовать без установки?

Да, на сайте проекта есть онлайн-песочница.

Выбор редакции

Набор скиллов, который задает агенту процесс разработки: уточнение задачи, план, TDD, субагенты и ревью кода

ПлагинСредний риск286,6 тыс.
Выбор редакции

Небольшие компонуемые скиллы для инженерной работы с агентом: интервью по плану, TDD, диагностика багов, ревью и архитектура

СкиллНизкий риск262 тыс.

Референсные MCP-серверы

Model Context Protocol servers

Выбор редакции

Официальные референсные MCP-серверы: Filesystem, Fetch, Git, Memory, Sequential Thinking, Time и Everything

MCP-серверСредний риск90,3 тыс.
Выбор редакции

Актуальная документация и примеры кода нужной версии библиотеки прямо в контексте агента, через MCP или CLI со скиллом

MCP-серверСредний риск62 тыс.