mcpField
C
changelog

changelog

github.com/johnlindquist開発2645 回インストール45 週間前に更新
リポジトリ

changelog について

Gitの履歴から変更履歴やリリースノートを作成するスキルです。Gitコマンド、GitHub CLI、Geminiを使って変更を整理し、リリース準備を進めます。

主な機能

  1. 01Git履歴から草案を作成
  2. 02タグ間のコミット比較
  3. 03Conventional Commitsによる分類
  4. 04GitHubリリースノートの作成
  5. 05破壊的変更の検出

活用シーン

  1. 01バージョンリリースのノート作成
  2. 02タグ以降の変更の確認
  3. 03CHANGELOG.mdの管理

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/johnlindquist/claude --skill changelog

インストール後、Claude Code で/changelogを入力して読み込まれたか確認します。

詳細

変更履歴ジェネレーター

Git のコミットから変更履歴を生成し、リリースノートを管理します。

前提条件

# Git
git --version

# GitHub CLI (for release notes)
brew install gh
gh auth login

# Gemini (for AI summaries)
pip install google-generativeai
export GEMINI_API_KEY=your_api_key

CLI リファレンス

Git 履歴コマンド
# Recent commits
git log --oneline -20

# Since last tag
git log $(git describe --tags --abbrev=0)..HEAD --oneline

# Between tags
git log v1.0.0..v1.1.0 --oneline

# With full messages
git log v1.0.0..v1.1.0 --pretty=format:"%h %s%n%b"

# By author
git log --author="name" --oneline -10

# With dates
git log --format="%h %ad %s" --date=short
タグの検索
# List all tags
git tag

# List tags with dates
git tag --sort=-creatordate --format='%(refname:short) %(creatordate:short)'

# Latest tag
git describe --tags --abbrev=0

# Tags matching pattern
git tag -l "v1.*"
変更履歴の生成
Git ログから
# Simple changelog since tag
git log v1.0.0..HEAD --oneline > CHANGELOG_DRAFT.md

# Categorized by conventional commits
git log v1.0.0..HEAD --oneline | grep "^[a-f0-9]* feat:"
git log v1.0.0..HEAD --oneline | grep "^[a-f0-9]* fix:"
git log v1.0.0..HEAD --oneline | grep "^[a-f0-9]* chore:"
GitHub CLI を使用
# Generate release notes
gh release create v1.1.0 --generate-notes

# View release notes draft
gh release create v1.1.0 --generate-notes --notes-start-tag v1.0.0 --dry-run

# From existing release
gh release view v1.0.0
AI が生成する変更履歴
# Get commits since last tag
COMMITS=$(git log $(git describe --tags --abbrev=0)..HEAD --pretty=format:"%s%n%b")

# Generate polished changelog
gemini -m pro -o text -e "" "Generate a changelog from these commits:

$COMMITS

Format as:
## [Version] - Date

### Added
- New features

### Changed
- Modifications

### Fixed
- Bug fixes

### Breaking Changes
- Any breaking changes

Write user-friendly descriptions, not raw commit messages."

ワークフローパターン

リリースの準備
#!/bin/bash
VERSION=$1
LAST_TAG=$(git describe --tags --abbrev=0)

echo "# Release $VERSION"
echo ""
echo "Changes since $LAST_TAG:"
echo ""

# Categorize commits
echo "## Features"
git log $LAST_TAG..HEAD --oneline | grep -i "feat:" | sed 's/^[a-f0-9]* feat: /- /'

echo ""
echo "## Fixes"
git log $LAST_TAG..HEAD --oneline | grep -i "fix:" | sed 's/^[a-f0-9]* fix: /- /'

echo ""
echo "## Other"
git log $LAST_TAG..HEAD --oneline | grep -v -i "feat:\|fix:" | sed 's/^[a-f0-9]* /- /'
破壊的変更の検出
# Find breaking changes in commit messages
git log v1.0.0..HEAD --oneline | grep -i "breaking\|BREAKING"

# Find in commit bodies
git log v1.0.0..HEAD --grep="BREAKING" --pretty=format:"%h %s"
CHANGELOG.md の管理

標準形式(Keep a Changelog):

# Changelog

All notable changes to this project will be documented in this file.

## [Unreleased]

### Added
- New feature X

### Changed
- Updated Y

### Fixed
- Bug in Z

## [1.1.0] - 2024-01-15

### Added
- Feature A
- Feature B

### Fixed
- Issue #123
更新スクリプト
#!/bin/bash
VERSION=$1
DATE=$(date +%Y-%m-%d)

# Generate new section
NEW_SECTION="## [$VERSION] - $DATE

$(git log $(git describe --tags --abbrev=0)..HEAD --pretty=format:"- %s")
"

# Prepend to changelog (after header)
head -7 CHANGELOG.md > CHANGELOG_NEW.md
echo "" >> CHANGELOG_NEW.md
echo "$NEW_SECTION" >> CHANGELOG_NEW.md
echo "" >> CHANGELOG_NEW.md
tail -n +8 CHANGELOG.md >> CHANGELOG_NEW.md
mv CHANGELOG_NEW.md CHANGELOG.md

統計

# Commits by author since tag
git shortlog -sn v1.0.0..HEAD

# Files changed
git diff --stat v1.0.0..HEAD | tail -1

# Commits per day
git log --format="%ad" --date=short v1.0.0..HEAD | sort | uniq -c

# Most changed files
git diff --stat v1.0.0..HEAD | sort -k3 -n -r | head -10

GitHub リリース

# Create release with notes
gh release create v1.1.0 --title "v1.1.0" --notes-file RELEASE_NOTES.md

# Create from tag with auto-notes
gh release create v1.1.0 --generate-notes

# Edit existing release
gh release edit v1.1.0 --notes-file UPDATED_NOTES.md

# List releases
gh release list

# Download release assets
gh release download v1.1.0

ベストプラクティス

  1. Conventional Commits を使用する - 自動分類が可能になります
  2. リリースにタグを付ける - 変更履歴の明確な区切りになります
  3. ユーザー向けに書く - 技術的な内容をユーザーへの影響に置き換えます
  4. 破壊的変更を記載する - 目立つように示します
  5. Issue を参照する - 関連する Issue へのリンクを追加します
  6. リリース日を記載する - 明確なタイムラインを示します
  7. 未リリースセクションを維持する - 進行中の作業を追跡します

コメント