Интерактивный CLI для управления папкой локальных npm-пакетов: бамп версии через PR, публикация в npm, GitHub Releases и отслеживание рассинхронизации зависимостей — всё из одного инструмента.

Один пакет — это git clone и npm publish. Пятнадцать пакетов в одной папке — это уже вопрос дисциплины: какая ветка где называется, что не запушено, кто забыл прогнать тесты перед релизом. polyrepo-cli берёт этот процесс на себя.
Зайти в директорию, поднять версию, открыть PR, дождаться мерджа, поставить тег — и повторить то же самое для следующего пакета. Чекбокс с выбором нужных пакетов запускает весь цикл сразу для всех, один раз.
Один и тот же скрипт с фиксированным именем ветки ломается ровно там, где кто-то переименовал основную ветку на GitHub. Актуальное имя определяется для каждого репозитория отдельно, и остальные команды работают одинаково независимо от него.
Логин истёк, а узнаётся об этом только когда пятый пакет из десяти уже собран для публикации. Авторизация проверяется и при необходимости обновляется один раз, до того как начнётся сама публикация.
Ветки после смёрдженных PR остаются висеть и локально, и в списке удалённых веток, ссылки на давно удалённые на GitHub ветки не исчезают сами. Периодическая проверка находит это и предлагает безопасно убрать.

Список папок с пакетами хранится в конфиге — без ручного редактирования JSON. Отдельная команда сверяет список репозиториев GitHub-организации с тем, что уже склонировано локально, и подтягивает недостающее.

Версия, ветка, git-статус, тег, релиз и состояние npm-реестра для каждого пакета — проверяются параллельно. Устаревшие зависимости и открытые PR агрегируются по всем репозиториям сразу, с экспортом в Markdown, JSON, CSV или HTML.

Проверяется окружение, дрейф основной ветки от реального состояния на GitHub, расхождение с origin, защита ветки и мёртвые ветки после релизов — и там, где это безопасно, чинится само.

Выбранные репозитории подтягиваются до актуальной основной ветки — какой бы она ни называлась, master или main. Полный сброс грязного репозитория доступен только по явному флагу, никогда по умолчанию.

Версия поднимается через ветку и PR, процесс продолжается с того места, где прервался предыдущий запуск, черновик CHANGELOG.md пишется сам из истории коммитов. Отдельные шаги закрывают процесс тегом и GitHub Release.

В npm публикуются только пакеты, реально обогнавшие реестр, а истёкший логин подхватывается сам. Любая команда прогоняется по выбранным репозиториям одна за другой, с живым выводом в терминал.