CLI, который держит конфиги ESLint, Prettier и Stylelint в синхроне с общим пресетом — в одном проекте или сразу во многих — не теряя локальные правки.

Общий конфиг ESLint/Prettier/Stylelint легко написать один раз и трудно держать в синхроне — в одном проекте что-то поправили руками, в другом скопировали устаревшую версию, и через пару месяцев ни один проект не совпадает с другим по правилам. lintsync записывает правила пресета прямо в существующие файлы, отслеживает, что ему принадлежит, и спрашивает, прежде чем перезаписать то, что вы изменили вручную.
lintsync sync сравнивает реальный конфиг проекта с пресетом и переписывает только те ключи, которые можно обновить безопасно — те, что вы сами не трогали.
Ключ, отличающийся и от манифеста, и от текущего пресета — это конфликт, а не молчаливая перезапись: sync останавливается и спрашивает (в интерактивном терминале) или безопасно падает (в CI), вместо того чтобы гадать, какое значение должно победить.
lintsync get/set/unset редактируют одно поле напрямую и намеренно не трогают манифест — ручная правка это ровно то, что должно всплыть конфликтом на следующем sync, а не молча потеряться.
migrate конвертирует старый конфиг в новый формат или расположение, не удаляя исходник и не угадывая то, что нельзя перенести безопасно — правила ESLint переносятся автоматически, всё остальное помечается для ручной проверки.
Реестр известных проектов позволяет status/sync --all пройтись по всем сразу, с фильтрацией по тегам и одним общим кодом возврата, на который может ориентироваться CI.
Пресеты живут внутри самого lintsync — встроенные или собранные один раз интерактивно и сохранённые локально — отдельного пакета с конфигом публиковать, версионировать и синхронизировать с релизами lintsync не нужно.

lintsync init --preset=vue-app ставит зависимости, генерирует конфиги ESLint/Prettier/Stylelint и подключает npm-скрипты lint/lint:fix/format — одной командой. Без --preset в реальном терминале открывается интерактивное меню: готовый пресет, отдельные инструменты с общими дефолтами, или сборка нового пресета с нуля.

lintsync sync применяет безопасные изменения молча и открывает интерактивный TUI на конфликтах — постранично, с live-предпросмотром результата для каждого из трёх вариантов: принять пресет, оставить локальное или отредактировать вручную.

get/set/unset читают и пишут одно поле по пути вида eslint.rules["@typescript-eslint/no-unused-vars"] — точечная правка, а не переписывание всего файла, с сохранением остального форматирования.

migrate eslint --to flat и аналоги для Prettier/Stylelint переносят конфиг в новый формат или расположение, никогда не удаляя исходник и не перезаписывая существующую цель — то, что нельзя перенести безопасно, помечается для ручной проверки.

Интерактивный мастер внутри init собирает пресет по живым данным: опции Prettier — прямо из его собственного getSupportInfo(), около 80 правил Stylelint — из официальных -recommended/-standard конфигов. Готовый пресет сохраняется локально и доступен в любом проекте на машине.

lintsync projects add/sync --all/status --all держат список известных проектов с тегами и прогоняют проверку по всем сразу — отдельным кодом возврата для случая, когда проекты разошлись в результате.