| name | changelog |
| description | Generate release notes from git history — parses Conventional Commits over a range (default last tag..HEAD), groups by type into human sections (Features/Fixes/Performance/...), drops noise (chore/merge), and outputs a markdown CHANGELOG section that can be prepended to CHANGELOG.md. Use when user says "сгенерируй чейнджлог", "релиз-ноты", "что изменилось с прошлого релиза", "changelog", "release notes", or types /changelog. |
| argument-hint | [v1.2.0..HEAD | --since <tag>] [--write] (по умолчанию с последнего тега до HEAD) |
| allowed-tools | Read Write Edit Bash(git *) |
Changelog / Release Notes
Собирает релиз-ноты из git-истории: парсит Conventional Commits, группирует по типам
в человекочитаемые секции, отбрасывает шум. Умеет печатать текст и допендивать новую
секцию сверху в существующий CHANGELOG.md.
Что на входе ($ARGUMENTS)
Шаги
-
Собрать коммиты по диапазону (subject + body для footer'ов):
git log <range> --no-merges --pretty=format:'%H%x09%s%x09%b%x1e'
-
Распарсить Conventional Commits type(scope)!: subject и сгруппировать:
feat → Features
fix → Bug Fixes
perf → Performance
refactor → Refactoring
docs → Documentation
- прочие типы (
build, ci, test, style) → Other (по желанию).
- Пропустить шум:
chore, merge-коммиты, бамп версий, мелочь без смысла для читателя.
- Breaking changes (
! после типа или BREAKING CHANGE: в body) → отдельная верхняя секция ⚠ BREAKING CHANGES.
- В строке пункта: subject, scope в скобках если есть, короткий хеш. Группировать одинаковые/дублирующиеся.
-
Сформировать markdown-секцию:
## <version> — YYYY-MM-DD
### ⚠ BREAKING CHANGES
- ...
### Features
- **scope:** описание (`abc1234`)
### Bug Fixes
- ...
- version: из аргумента/целевого тега; иначе предложить по semver (feat → minor, fix-only → patch, breaking → major) или взять из
package.json.
- дата: сегодняшняя (или дата тега).
-
Вывод/запись.
- Всегда напечатать готовую секцию пользователю.
- При
--write: вставить секцию сверху в CHANGELOG.md (после возможного заголовка # Changelog), не трогая старые записи; создать файл с заголовком, если его нет.
Выход
- Текст релиз-нот (markdown-секция, готовая к вставке).
- При
--write — обновлённый CHANGELOG.md (новая секция сверху) + путь к файлу.
- Короткая сводка: диапазон, сколько коммитов учтено / отброшено как шум.