К основному содержанию
скилл CX Codex

generate-release-notes — скилл для Claude Code: релиз-ноты из git

Собирает release notes и changelog из истории коммитов по Conventional Commits. Пригодится перед каждым тегом.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add donnfelker/donnfelker-plugin-marketplace --skill generate-release-notes -a claude-code
Открыть на GitHub

Что делает generate-release-notes

Скилл читает git log и разбирает сообщения коммитов по спецификации Conventional Commits: feat:, fix:, docs: и остальные префиксы. Дальше раскладывает их по разделам — Features, Bug Fixes, Performance Improvements и так далее — и выдаёт готовый markdown. Коммиты с пометкой о ломающих изменениях попадают в отдельный блок BREAKING CHANGES наверху, а те, что не подходят под формат, уезжают в Other Changes.

Работа идёт в семь шагов. Сначала скилл спрашивает, что нужно: RELEASE_NOTES.md, запись в CHANGELOG.md или оба файла. Потом определяет диапазон коммитов — по умолчанию от последнего тега до HEAD, но можно задать свой, например v1.0.0..v2.0.0. Разбор делает скрипт scripts/parse-commits.sh, он выдаёт по блоку на коммит с полями COMMIT, TYPE, SCOPE, BREAKING, DESCRIPTION, BODY и FOOTERS. Номер версии скилл предложит по SemVer: ломающее изменение — MAJOR, feat — MINOR, только fix и подобное — PATCH.

Если тегов в репозитории нет, диапазон придётся назвать самому или согласиться на все коммиты. И основное: без Conventional Commits разбирать нечего — скилл предупредит и предложит просто вывести сырые сообщения. Это повод проверить, как в проекте вообще пишут коммиты.

Какие задачи решает

  • собрать release notes к новому тегу из истории коммитов
  • дописать свежую запись в CHANGELOG.md, не тронув старые
  • вытащить все ломающие изменения в отдельный блок
  • предложить номер следующей версии по SemVer
  • разложить коммиты по разделам Features, Bug Fixes и остальным

Примеры запросов агенту

  • сгенерируй release notes от последнего тега до HEAD
  • сделай changelog для диапазона v1.0.0..v2.0.0
  • подготовь release notes и changelog, версия 2.0.0

Как установить generate-release-notes

1Через Skills CLI (Vercel)

npx skills add donnfelker/donnfelker-plugin-marketplace --skill generate-release-notes -a claude-code

2Вручную: положить файлы

~/.claude/skills/generate-release-notes/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/generate-release-notes/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Похожие

changelog-writer patricio0312rev Собирает CHANGELOG и release notes из git-коммитов, заголовков PR и ссылок на issues. Пригодится перед релизом, когда нужно разложить изменения по типам и подобрать версию. CX Codex +1 615установок release-notes phuryn Готовит релиз-ноты для пользователей по тикетам, PRD и журналам изменений. Пригодится для анонса обновлений и сводки поставленных изменений. CX Codex +1 2 900установок deliver-release-notes product-on-purpose Превращает список изменений в релиз-ноты, которые читают пользователи: что нового, что улучшили, что починили. CX Codex +1 751установок patch-notes Donchitos Собирает патч-ноуты для игроков из git-истории и внутренних ченджлогов, переводя язык разработчика в понятный текст. CX Codex +1 435установок write-release-notes tldraw Готовит и проверяет статьи о релизах tldraw SDK: собирает изменения из PR, выделяет критические правки и требует рецепты миграции. CX Codex +1 327установок changelog-automation Seth Hobson Скилл помогает собирать changelog и release notes из коммитов, PR и релизов. Подойдёт для настройки процесса релизов и единых правил коммитов. CX Codex 13 733установок

Рядом в теме «Git и GitHub»

Все скиллы по теме «Git и GitHub» →

Вопросы о generate-release-notes

Как установить generate-release-notes в Claude?

Выполните npx skills add donnfelker/donnfelker-plugin-marketplace --skill generate-release-notes -a claude-code. Скилл встанет в ~/.claude/skills/generate-release-notes/SKILL.md.

Что делает generate-release-notes?

Парсит сообщения коммитов по Conventional Commits и собирает из них release notes или запись в changelog. Разделы идут в фиксированном порядке, ломающие изменения выносятся наверх.

Что нужно, чтобы скилл сработал?

Коммиты, написанные по Conventional Commits с префиксами вроде feat: и fix:. Если формат не соблюдается, скилл предупредит и предложит вывести сырые сообщения.

Исходный текст

SKILL.md · MIT
---
name: generate-release-notes
description: This skill should be used when the user asks to "generate release notes", "generate changelog", "create release notes", "write changelog", "what changed since last release", "prepare release notes", "update changelog", or "summarize changes from git history". Parses conventional commit messages to produce categorized, well-formatted release notes or changelog entries.
---

# Release Notes Generator

Generate release notes and changelogs by parsing conventional commit messages from git log history. Commits following the Conventional Commits specification (feat:, fix:, docs:, etc.) are categorized, grouped, and formatted into professional markdown output.

## Workflow

### Step 1: Determine Output Type

Ask the user what they need:

- **Release Notes** — a single release summary written to `RELEASE_NOTES.md`
- **Changelog** — append to an existing `CHANGELOG.md` (or create one)
- **Both** — generate both files

### Step 2: Determine Commit Range

Identify which commits to include. Two approaches:

**Since last tag (default):**
The parser script automatically detects the latest tag and uses `<tag>..HEAD` when no range is provided. To confirm the range with the user before generating, run `git describe --tags --abbrev=0` to display the latest tag.

**Custom range:**
Accept a user-specified range like `v1.0.0..v2.0.0` or `v1.0.0..HEAD` and pass it as the first argument to the parser script.

If no tags exist, ask the user for a range or default to all commits (the script handles this automatically).

### Step 3: Parse Commits

Run the parser script to extract structured commit data. The `${CLAUDE_PLUGIN_ROOT}` variable is set automatically by Claude Code when the plugin is installed:

```bash
bash ${CLAUDE_PLUGIN_ROOT}/skills/generate-release-notes/scripts/parse-commits.sh [<range>]
```

The script outputs one block per commit with fields: `COMMIT`, `TYPE`, `SCOPE`, `BREAKING`, `DESCRIPTION`, `BODY`, `FOOTERS`.

### Step 4: Categorize and Format

Group parsed commits by type into sections using this mapping:

| Type | Section Heading |
|------|----------------|
| feat | Features |
| fix | Bug Fixes |
| perf | Performance Improvements |
| refactor | Code Refactoring |
| docs | Documentation |
| style | Styles |
| test | Tests |
| build | Build System |
| ci | Continuous Integration |
| chore | Chores |
| revert | Reverts |

**Ordering:** List sections in the order shown above. Within each section, list entries alphabetically by scope (ungrouped entries last).

**Breaking changes:** Collect all commits with `BREAKING:yes` into a dedicated "BREAKING CHANGES" section at the top, regardless of their type. These also appear in their normal type section.

**Scope grouping:** When multiple commits share a scope, group them under a bold scope label.

**Commits with type "other":** Collect into an "Other Changes" section at the bottom. These are commits that do not follow the conventional commit format.

### Step 5: Determine Version

If the user provides a version number, use it. Otherwise, suggest a version based on SemVer rules:

- Any `BREAKING:yes` commit → suggest MAJOR bump
- Any `feat` commit → suggest MINOR bump
- Only `fix`, `docs`, `style`, etc. → suggest PATCH bump

Read the latest tag to determine the current version and calculate the next version. Present the suggestion and let the user confirm or override.

### Step 6: Write Output

**Release Notes** → Write to `RELEASE_NOTES.md` (overwrite previous content).

**Changelog** → Prepend new version entry to `CHANGELOG.md`. If the file does not exist, create it with a header. Preserve all existing entries below the new one.

Consult `references/formats.md` for the exact output templates.

### Step 7: Summary

After writing, display:
- Version number used
- Number of commits processed
- Breakdown by category (e.g., "3 features, 2 bug fixes, 1 breaking change")
- File(s) written

## Handling Edge Cases

**No conventional commits found:** Warn the user that no parseable commits were found. Offer to list raw commit messages instead.

**Mixed conventional and non-conventional:** Process conventional commits normally, list non-conventional commits under "Other Changes."

**Empty range:** If the range produces no commits, inform the user and suggest checking the range.

**Monorepo with scopes:** When scopes map to packages/modules, offer to group by scope as top-level sections instead of by type.

## Additional Resources

### Reference Files

For detailed output format templates and examples, consult:
- **`references/formats.md`** — Complete output templates for release notes and changelog, with examples of each section type

### Scripts

- **`scripts/parse-commits.sh`** — Parses git log into structured commit data. Accepts an optional range argument. Handles conventional commit parsing, scope extraction, breaking change detection, and footer parsing.

© donnfelker · MIT · donnfelker/donnfelker-plugin-marketplace

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой