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 уже найден (например, чтобы обновиться до свежего релиза).
Что делает скрипт (по шагам)
- Определяет корень репозитория (
git rev-parse --show-toplevel). - Ищет git-cliff: сначала локальную копию
./tools/git-cliff/git-cliff(.exe), затем утилиту в PATH. Если найдена и не указан--force— сообщает версию и завершается с кодом 0 (навык идемпотентен). - Определяет ОС и архитектуру и выбирает платформенный триплет:
x86_64-pc-windows-msvc,x86_64-unknown-linux-gnu,aarch64-apple-darwinи т. п. - Запрашивает последний релиз через GitHub API и находит ссылку на нужный ассет.
- Скачивает архив во временный каталог и распаковывает в
./tools/git-cliff(ZIP — штатными средствами OneScript,.tar.gz— утилитойtar, затемchmod +x). - Проверяет работоспособность: запускает
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.
Docker Compose Architect
DevOps
Designs optimized Docker Compose configurations.
Incident Postmortem Writer
DevOps
Writes structured and blameless incident postmortem reports.
Runbook Creator
DevOps
Creates clear operational runbooks for common DevOps procedures.