---
name: Changelog
slug: changelog-3
category: Automation
description: Changelog updates the Unreleased section of CHANGELOG.md from commits after the latest release. Use it when asked to update changelog or release notes from recent git commits.
github: "https://github.com/codeaholicguy/ai-devkit/tree/main/skills/changelog"
language: TypeScript
stars: 1581
forks: 242
install: "npx degit https://github.com/codeaholicguy/ai-devkit/tree/main/skills/changelog ~/.claude/skills/changelog"
installs_to: ~/.claude/skills/changelog
source_path: skills/changelog/SKILL.md
collection_size: 25
category_size: 1523
collection_url: "https://dirskills.com/collections/codeaholicguy/ai-devkit"
added: 2026-08-19T07:26:17.993Z
last_synced: 2026-08-19T07:26:17.993Z
canonical_url: "https://dirskills.com/skills/changelog-3"
---

# Changelog

Changelog updates the Unreleased section of CHANGELOG.md from commits after the latest release. Use it when asked to update changelog or release notes from recent git commits.

**Install:**

```bash
npx degit https://github.com/codeaholicguy/ai-devkit/tree/main/skills/changelog ~/.claude/skills/changelog
```

## README

# Changelog

Update the top `Unreleased` list in `CHANGELOG.md` from commits after the latest release.

## Workflow

1. Find the latest release base:
   - Prefer the latest reachable tag: `git describe --tags --abbrev=0`.
   - If there are no tags, search recent history for a release commit and use that hash.
2. Get commits: `git log <base>..HEAD --reverse --format='%H%x09%s'`.
3. Derive the GitHub repo URL from `git remote get-url origin`.
4. For each commit, add one concise changelog line:
   - Format: `- [<short-hash>](<url>) <one-line summary>`
   - If the commit clearly relates to a PR, link the hash to the PR URL instead of the commit URL.
   - Detect PRs from subjects like `(#123)`, merge commits, or `gh pr list --search <hash> --state all --json number,url`.
5. Insert the new lines into the top `Unreleased` section/list in `CHANGELOG.md`.
   - If no `Unreleased` section exists, create one at the top.
   - Do not create a dated release heading unless the user asks for a release.

## Rules

- Keep one line per commit.
- Preserve the existing changelog style when obvious.
- Always add entries to the top `Unreleased` list.
- Skip noisy commits only when clearly non-user-facing and explain what was skipped.
- Do not invent PR links; use commit links when PR evidence is missing.
