Skip to content
Back to skills

Changelog Generator

ASecurity

Generate changelogs from git history. Parses conventional commits, groups by type, and outputs Keep a Changelog or custom markdown. Use when: user asks to generate a changelog, release notes, or summarize changes between tags/commits. NOT for: writing commit messages (just follow conventional commits), or detailed code review (use github skill).

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 29, 2026
toolsgobashrefactoringgitapici/cdperformancedocumentation

Works with

  • api

Security analysis

A100/100

Scanned September 29, 2026

npx -y skills add Arry8/openclaw-edge --skill changelog-generator --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Changelog Generator?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Changelog Generator
[![Security: A β€” Skills Directory](https://www.skillsdirectory.com/api/skills/arry8-changelog-generator/badge)](https://www.skillsdirectory.com/skills/arry8-changelog-generator)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: changelog-generator
description: "Generate changelogs from git history. Parses conventional commits, groups by type, and outputs Keep a Changelog or custom markdown. Use when: user asks to generate a changelog, release notes, or summarize changes between tags/commits. NOT for: writing commit messages (just follow conventional commits), or detailed code review (use github skill)."
metadata:
  {
    "openclaw":
      {
        "emoji": "πŸ“‹",
        "requires": { "bins": ["git"] },
      },
  }
---

# Changelog Generator

Generate structured changelogs from git commit history.

## When to Use

βœ… **USE this skill when:**

- "Generate a changelog"
- "What changed since last release?"
- "Write release notes for v2.0"
- "Summarize commits between tags"
- Preparing a release and need formatted notes

## When NOT to Use

❌ **DON'T use this skill when:**

- Writing individual commit messages
- Doing code review β†’ use github skill
- Need CI/CD release automation β†’ use github-actions or similar

## Workflow

### 1. Identify the Range

Determine the commit range. Common patterns:

```bash
# Between two tags
git log v1.0.0..v2.0.0 --oneline

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

# Last N commits
git log -20 --oneline

# Between dates
git log --after="2024-01-01" --before="2024-02-01" --oneline

# All tags (to pick a range)
git tag --sort=-version:refname | head -10
```

### 2. Extract Commits

Use structured format for parsing:

```bash
# Full details for changelog
git log v1.0.0..HEAD --pretty=format:"%H|%s|%an|%ad" --date=short

# With body (for breaking changes, etc.)
git log v1.0.0..HEAD --pretty=format:"COMMIT_START%nHash: %H%nSubject: %s%nAuthor: %an%nDate: %ad%nBody: %b%nCOMMIT_END" --date=short
```

### 3. Classify Commits

Group by [Conventional Commits](https://www.conventionalcommits.org/) type:

| Prefix | Changelog Section |
|--------|------------------|
| `feat:` / `feat(scope):` | ✨ Features |
| `fix:` / `fix(scope):` | πŸ› Bug Fixes |
| `docs:` | πŸ“š Documentation |
| `perf:` | ⚑ Performance |
| `refactor:` | ♻️ Refactoring |
| `test:` | πŸ§ͺ Tests |
| `build:` / `ci:` | πŸ”§ Build & CI |
| `chore:` | 🏠 Chores |
| `BREAKING CHANGE` / `!:` | πŸ’₯ Breaking Changes |

Non-conventional commits go under **Other Changes**.

### 4. Output Format

Use [Keep a Changelog](https://keepachangelog.com/) format:

```markdown
# Changelog

## [2.0.0] - 2024-03-15

### πŸ’₯ Breaking Changes

- **api:** Remove deprecated `/v1/users` endpoint (#234)

### ✨ Features

- **auth:** Add OAuth2 PKCE flow support (#220)
- **ui:** New dashboard layout with dark mode (#215)

### πŸ› Bug Fixes

- **core:** Fix memory leak in connection pool (#228)
- Fix timezone handling in scheduler (#225)

### πŸ“š Documentation

- Update API migration guide for v2 (#230)

### ⚑ Performance

- **db:** Optimize query for large datasets (#222)
```

### 5. Include Metadata (Optional)

When helpful, append a summary footer:

```markdown
---

**Full diff:** [`v1.0.0...v2.0.0`](https://github.com/org/repo/compare/v1.0.0...v2.0.0)
**Contributors:** @alice, @bob, @charlie
```

Get contributors with:

```bash
git log v1.0.0..HEAD --pretty=format:"%an" | sort -u
```

## Tips

- **No conventional commits?** Summarize each commit in plain English. Group by area/file if possible.
- **Squash merges?** Use PR titles: `git log --merges --first-parent --oneline`
- **Monorepo?** Filter by path: `git log v1.0.0..HEAD -- packages/core/`
- **Link PRs/issues:** Match `(#123)` patterns and link to the repo's issue tracker.
- **Breaking changes:** Always put these first and make them prominent.
- **Keep it human-readable:** The LLM should rewrite terse commit messages into clear changelog entries.

## Quick Command

Generate raw material for a changelog in one shot:

```bash
git log $(git describe --tags --abbrev=0 2>/dev/null || echo "HEAD~20")..HEAD \
  --pretty=format:"- %s (%an, %ad)" --date=short
```

## Notes

- No external tools needed β€” just `git`
- Works with any git repo (GitHub, GitLab, local)
- For GitHub repos, consider enriching with PR data: `gh pr list --state merged --limit 50 --json title,number,labels`

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…