Installer l'utilitaire git-cliff

Vérifie la présence de git-cliff et télécharge la version adaptée à la plateforme dans ./tools/git-cliff.

Spar Skills Guide Bot
DevOpsDébutant
11018/08/2026
Claude Code
#git-cliff#installation#changelog#tools#onescript

Recommandé pour


name: git-cliff-install description: Проверяет наличие утилиты git-cliff и при необходимости скачивает подходящую под текущую платформу версию в ./tools/git-cliff. Нужна навыку changelog-generate.

Навык: Установка утилиты git-cliff (git-cliff-install)

Назначение

Скрипт scripts/git-cliff-install.os обеспечивает наличие утилиты git-cliff — генератора журнала изменений из истории коммитов, необходимого навыку changelog-generate. Скрипт проверяет, установлена ли утилита, и при её отсутствии скачивает последний релиз проекта orhun/git-cliff, подходящий под текущую ОС и архитектуру, и распаковывает его в ./tools/git-cliff.

Особенность семейства: это один из навыков проекта, обращающихся в интернет за сторонним бинарником (наряду с sqlcmd-install и bsl-ls-install). Берётся архив, а не системный пакет .deb / .rpm: распаковка не требует прав администратора и не меняет систему за пределами каталога проекта.

Когда применять

  • Навык changelog-generate сообщил, что утилита git-cliff не найдена.
  • Первичная настройка окружения на новой машине или CI-раннере.
  • Пользователь просит установить или обновить git-cliff.
  • Вызвана команда /git-cliff-install.

НЕ применять для генерации журнала изменений — это навык changelog-generate. Этот навык только устанавливает инструмент.

Обязательный диалог перед запуском скрипта

Параметры не требуются: платформа и версия релиза определяются автоматически. Спрашивать ничего не нужно. Стоит предупредить пользователя, что операция обращается в сеть (GitHub) и скачивает несколько мегабайт.

Запуск

Из корня репозитория (предпочтительно через PowerShell — корректная кириллица в выводе):

oscript .claude/skills/git-cliff-install/scripts/git-cliff-install.os

Необязательный аргумент:

  • --force — переустановить, даже если git-cliff уже найден (например, чтобы обновиться до свежего релиза).

Что делает скрипт (по шагам)

  1. Определяет корень репозитория (git rev-parse --show-toplevel).
  2. Ищет git-cliff: сначала локальную копию ./tools/git-cliff/git-cliff(.exe), затем утилиту в PATH. Если найдена и не указан --force — сообщает версию и завершается с кодом 0 (навык идемпотентен).
  3. Определяет ОС и архитектуру и выбирает платформенный триплет: x86_64-pc-windows-msvc, x86_64-unknown-linux-gnu, aarch64-apple-darwin и т. п.
  4. Запрашивает последний релиз через GitHub API и находит ссылку на нужный ассет.
  5. Скачивает архив во временный каталог и распаковывает в ./tools/git-cliff (ZIP — штатными средствами OneScript, .tar.gz — утилитой tar, затем chmod +x).
  6. Проверяет работоспособность: запускает git-cliff --version и печатает версию.

Почему ассет ищется по триплету, а не по точному имени

Имена ассетов git-cliff содержат номер версии (git-cliff-2.13.1-x86_64-pc-windows-msvc.zip), поэтому предсказать имя файла заранее нельзя. Скрипт ищет ассет, имя которого заканчивается на <триплет><расширение>.

Проверка именно окончания принципиальна: рядом с каждым архивом в релизе лежат файлы .tar.gz.sha512 и .tar.gz.sig с тем же триплетом в имени — поиск по вхождению подстроки выбрал бы файл подписи вместо архива.

Для платформ, где в релизе несколько вариантов, выбор зафиксирован: Windows — msvc (не gnu), Linux — gnu (не musl).

Интерпретация результатов

  • Exit code 0 — git-cliff доступен (был установлен ранее либо установлен сейчас). Сообщить пользователю расположение и версию; можно переходить к changelog-generate.
  • Exit code 1, ошибка сети / GitHub API — показать сообщение скрипта. Типичные причины: нет доступа в интернет, корпоративный прокси, код 403 из-за исчерпанного лимита анонимных запросов к GitHub API. Предложить повторить позже либо скачать релиз вручную и положить исполняемый файл в ./tools/git-cliff.
  • Exit code 1, платформа не определена — сборки для текущей ОС или архитектуры нет в релизе; предложить ручную установку.
  • Exit code 1, ассет не найден в релизе — изменился состав релиза git-cliff; проверить список файлов на странице релизов и при необходимости скорректировать скрипт.
  • Exit code 1, утилита не запускается после распаковки — проверить права на файл и совместимость сборки с платформой.

Ограничения

  • Требует доступа в интернет к api.github.com и github.com.
  • Ставит утилиту ТОЛЬКО в каталог проекта (./tools/git-cliff), не в систему и не в PATH; каталог добавлен в .gitignore и не коммитится.
  • Всегда ставит последний релиз — закрепление конкретной версии не предусмотрено.
  • Для Linux/macOS требуется tar в PATH (входит в состав этих ОС).
  • Не генерирует журнал изменений и не читает cliff.toml — это забота навыка changelog-generate.

Состояние проверки

Проверено на живом окружении 05.08.2026 (Windows, x86_64): установка end-to-end (git-cliff 2.13.1), повторный запуск (идемпотентность, код 0), отбор ассета среди файлов .sha512 и .sig.

Не проверялось: установка на Linux и macOS (ветка tar -xzf с --strip-components=1), поведение при исчерпанном лимите GitHub API.

Skills similaires