changelog-generator

📁 nlyrthiia/changelog-generator 📅 1 day ago
1
总安装量
1
周安装量
#44402
全站排名
安装命令
npx skills add https://github.com/nlyrthiia/changelog-generator --skill changelog-generator

Agent 安装分布

windsurf 1
amp 1
openclaw 1
qoder 1
opencode 1
cursor 1

Skill 文档

Changelog Generator

Generate structured changelogs from git commit history. Supports Conventional Commits parsing, semantic grouping, and multiple output formats.

Quick Start

Run the bundled script to generate a changelog:

python3 scripts/generate_changelog.py [--from TAG] [--to TAG] [--format FORMAT] [--output FILE]

Options:

  • --from: Start ref (tag, commit, branch). Defaults to latest tag.
  • --to: End ref. Defaults to HEAD.
  • --format: Output format — keepachangelog (default), conventional, grouped.
  • --output: Write to file instead of stdout. Use CHANGELOG.md for standard placement.
  • --no-merges: Exclude merge commits.

Workflow

  1. Determine the commit range (user-specified tags, or auto-detect latest tag to HEAD)
  2. Run scripts/generate_changelog.py with appropriate flags
  3. Review the generated output for accuracy
  4. If writing to CHANGELOG.md, prepend new entries above existing content

Commit Parsing

The script parses Conventional Commits (type(scope): description) and groups them:

Prefix Category
feat Added
fix Fixed
docs Documentation
refactor Changed
perf Performance
test Tests
chore, ci, build Maintenance
BREAKING CHANGE Breaking Changes

Non-conventional commits are grouped under “Other”.

Output Formats

For detailed format specifications and examples, see references/formats.md.

  • keepachangelog: Follows Keep a Changelog spec. Best for libraries and open-source projects.
  • conventional: Follows Conventional Changelog style. Best for projects using Conventional Commits.
  • grouped: Simple date-grouped list. Best for internal projects or quick summaries.

Edge Cases

  • No tags found: Use first commit as --from.
  • Merge commits: Included by default. Pass --no-merges to exclude.
  • Empty range: Script exits with message, no output file written.