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.
Architecte Docker Compose
DevOps
Concoit des configurations Docker Compose optimisees.
Rapport de Post-Mortem
DevOps
Rédige des rapports post-mortem d'incidents structurés et blameless.
Créateur de Runbooks
DevOps
Crée des runbooks opérationnels clairs pour les procédures DevOps courantes.