changelog
sakuro/dotfiles
Генерирует записи в журнале изменений на основе коммитов, сделанных с момента последнего релиза. Используется, когда пользователю необходимо обновить файл CHANGELOG.md, добавить записи в журнал изменений или задокументировать изменения.
...Расширить всеО changelog
Скилл « changelog » автоматизирует процесс генерации записей на странице changelog на основе коммитов в Git, сделанных с момента последнего релиза. Он разработан, чтобы помочь командам разработчиков вести последовательный и ориентированный на пользователя учет изменений в своих проектах. Анализируя сообщения коммитов и различая изменения, заметные для пользователей, и внутренние изменения, этот с킬 гарантирует, что файл CHANGELOG.md отражает значимые обновления, актуальные для конечных пользователей. Это сокращает ручной труд, позволяет избежать упущенных изменений и гарантирует, что документация к релизу остается точной и актуальной.
Этот навык обеспечивает структурированный рабочий процесс для извлечения информации о коммитах, классификации изменений и форматирования записей в стандартизированном стиле. Ключевые функции включают выявление изменений, заметных для пользователей, таких как новые функции, исправления ошибок, улучшения производительности, устаревшие функции и обновления безопасности, при одновременном исключении чисто внутренних изменений, таких как рефакторинг, тесты или модификации CI/CD. Он автоматически извлекает ссылки на задачи из сообщений о фиксациях и группирует записи по заранее определённым категориям («Добавлено», «Изменено», «Исправлено», «Удалено», «Устарело», «Безопасность»). Кроме того, он определяет соответствующий раздел реестра изменений ( changelog ) на основе текущей ветки, поддерживая как версионные релизы, так и раздел «Невыпущенные» (Unreleased). Скилл использует команды Bash и инструмент Edit для беспрепятственного чтения и обновления реестра изменений ( changelog ).
Этот с킬 идеально подходит для разработчиков, менеджеров по релизам и команд, поддерживающих проекты с открытым исходным кодом или внутренние программные проекты, которые хотят оптимизировать обслуживание файла « changelog ». Он особенно полезен для проектов с частыми фиксациями или множеством участников, так как гарантирует, что все значимые для пользователей изменения будут документированы последовательно. Пользователи получают такие преимущества, как экономия времени, сокращение количества ошибок, а также профессиональный и структурированный файл « changelog », который чётко информирует конечных пользователей, заинтересованные стороны и участников о внедренных обновлениях.
Часто задаваемые вопросы
Как использовать навык « changelog »?
Для начала запустите навык в репозитории вашего проекта. Он автоматически обнаружит коммиты, сделанные с момента последнего релиза, классифицирует изменения, заметные для пользователей, извлечёт ссылки на тикеты и обновит файл CHANGELOG.md в соответствующем разделе («Невыпущенные» или «Релиз с версией»).
Какие типы изменений включаются в файл « changelog »?
Скилл включает изменения, заметные для пользователей, такие как новые функции, исправления ошибок, улучшения производительности, изменения, нарушающие совместимость, устаревшие функции и исправления безопасности. Внутренние изменения, такие как рефакторинг, тесты, CI/CD или обновления стиля кода, исключаются, если они не влияют на поведение, заметное для пользователей.
Может ли он обрабатывать репозитории без тегов предыдущих релизов?
Да, если тегов предыдущих релизов нет, навык анализирует самые последние коммиты (до 50) для генерации записей « changelog » и помещает их в раздел «Невыпущенные».
Автоматически ли он объединяет новые записи с существующим содержимым файла changelog?
Да, навык считывает текущий файл CHANGELOG.md, создает целевой раздел, если его нет, и объединяет новые записи, избегая дубликатов.
Обязательно ли указывать ссылки на задачи в сообщениях о фиксации?
Нет, ссылки на задачи не обязательны. Если они присутствуют, они включаются в запись в формате «(#123)». Несколько ссылок объединяются в виде «(#123, #124)».
Changelog Generation Skill
Analyzes commits since the last release and adds user-facing changes to CHANGELOG.md.
Instructions
IMPORTANT: When using this skill, announce to the user: "Using changelog skill to generate changelog entries."
1. Get Last Release Tag
# Get the most recent release tagLAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")if [ -z "$LAST_TAG" ]; then echo "No previous release tag found. Will analyze all commits."fi
2. Get Commits Since Last Release
# If tag existsgit log --format="%H %s" "$LAST_TAG"..HEAD# If no tag, get recent commitsgit log --format="%H %s" -50
3. Analyze Each Commit
For each commit, determine if it has user-facing impact:
Include (user-facing):
- New features (
:sparkles:) - Bug fixes (
:bug:) - Performance improvements (
:zap:) - Breaking changes (
:boom:) - Deprecations
- Security fixes (
:lock:)
Exclude (internal):
- Refactoring (
:recycle:) - unless it changes behavior - Tests (
:white_check_mark:) - CI/CD changes (
:construction_worker:) - Documentation (
:memo:) - unless user-facing docs - Code style (
:art:) - Merge commits
4. Extract Issue References
Look for issue references in commit messages:
#123Fixes #123Closes #123Related to #123
5. Categorize Changes
Group entries by category:
### Added- New features### Changed- Changes to existing functionality### Fixed- Bug fixes### Removed- Removed features### Deprecated- Soon-to-be removed features### Security- Security fixes
6. Format Entries
Each entry should:
- Start with imperative verb (Add, Fix, Change, Remove)
- Be concise (one line)
- Include issue reference at end if available
Examples:
- Add list formatting support (#42)- Fix memory leak in data provider (#88)- Change default locale to en-US
7. Determine Target Section
# Get current branchBRANCH=$(git branch --show-current)# Determine target sectionif [[ "$BRANCH" =~ ^release-v([0-9]+\.[0-9]+\.[0-9]+)$ ]]; then # On release branch → target is that version TARGET_SECTION="[${BASH_REMATCH[1]}]"else # Not on release branch → target is Unreleased TARGET_SECTION="[Unreleased]"fi
8. Update CHANGELOG.md
- If target section doesn't exist, create it
- Add/merge entries under the target section
Creating new section if needed:
- For
[Unreleased]: Add after the header, before first version section - For version
[X.Y.Z]: Add after[Unreleased], before previous versions
Example structure:
## [Unreleased]## [0.7.0] - 2024-01-15### Added- New feature description (#123)## [0.6.0] - 2024-01-01...
Use the Edit tool to update CHANGELOG.md.
Workflow
- Get last release tag
- List commits since that tag
- For each commit:
- Read commit message
- Determine if user-facing
- Extract issue references
- Categorize (Added/Changed/Fixed/etc.)
- Determine target section:
- On
release-vX.Y.Zbranch →[X.Y.Z] - Otherwise →
[Unreleased]
- On
- Read current CHANGELOG.md
- Create target section if it doesn't exist
- Merge new entries with existing content in target section
- Update CHANGELOG.md using Edit tool
Guidelines
Entry Writing
- Use imperative mood: "Add" not "Added" or "Adds"
- Be specific but concise
- Focus on user impact, not implementation details
- One logical change per entry
Issue References
- Always include if available
- Format:
(#123)at end of line - Multiple issues:
(#123, #124)
Avoiding Duplicates
- Check existing [Unreleased] entries before adding
- Merge or update if similar entry exists
Example Output
## [Unreleased]### Added- Implement DecimalFormatter for number formatting (#42)- Add locale fallback support### Changed- Update default collation strength to tertiary### Fixed- Fix crash when parsing invalid locale string (#55)- Resolve memory leak in DataProvider (#58)
Arguments
This skill takes no arguments. It always analyzes commits from the last release tag to HEAD.
Установить changelog
Скачайте файлы навыков и распакуйте их в каталог .claude/skills/.
Скачать ZIPКлонируйте репозиторий и скопируйте файлы навыка в свой проект.
git clone https://github.com/sakuro/dotfiles/blob/main/.config/claude/skills/changelog/SKILL.md # Copy SKILL.md to your .claude/skills/ directory
Копировать





Дом
