changelog-cli

A command-line tool that turns Git history into user-facing release notes. It compares commits since the last stable version tag and groups the changes into a changelog.

In plain words
What is it for?
Use it before a stable release to summarise changes between versions and produce formatted changelog content.
Why use it?
It saves developers from manually reviewing commits and rewriting them as release notes. It also provides a consistent version range and release-note format.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/heygen-com/heygen-cli/changelog-cli
Any agent
npx skills add heygen-com/heygen-cli --skill changelog-cli
Clone the repo
git clone --depth 1 https://github.com/heygen-com/heygen-cli

Made for: Claude Code, Codex.

Per session 46 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,037 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00046 $0.01037
Opus 5 $0.00023 $0.00518
Sonnet 5 $0.00009 $0.00207
Haiku 4.5 $0.00005 $0.00104

Measured 3d ago against content hash f14f7ab14afe, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

changelog-cli scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.claude/skills/changelog-cli/SKILL.md · 119 lines

How it starts

The opening of the file, as written. The whole thing — 119 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Changelog Generator

Generate release notes for a stable release by summarizing git commits since the last stable tag.

Step 1: Determine the range

# Find the last stable tag
LAST_STABLE=$(git tag --list 'v*' --sort=-v:refname | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | head -n 1)

If LAST_STABLE is empty (first stable release), use the full history by omitting the range:

# If LAST_STABLE is set:
git log "${LAST_STABLE}..origin/main" --oneline

# If LAST_STABLE is empty (first release):
git log origin/main --oneline

If a version argument was provided (e.g., /changelog-cli v0.0.6), use it as the heading. Otherwise, infer the next version by bumping the patch of $LAST_STABLE (or use v0.1.0 if no stable tag exists).

Step 2: Read the full commit details

Use the same range logic from Step 1 (with or without $LAST_STABLE):

# With a previous stable tag:
git log "${LAST_STABLE}..origin/main" --format="### %h%n%s%n%n%b%n---"

# First release (no stable tag):
git log origin/main --format="### %h%n%s%n%n%b%n---"

Also read the PR descriptions for any merged PRs in the range to get richer context on what changed and why:

# Extract PR numbers from commit messages (works on both GNU and BSD grep)
git log ${LAST_STABLE:+"${LAST_STABLE}.."}origin/main --oneline | grep -o '#[0-9]\+' | tr -d '#' | sort -u

For each PR number, read the PR body:

gh pr view <number> --json title,body --jq '.title + "\n" + .body'

Step 3: Categorize and write the changelog

Group changes into these categories (omit empty categories):

  • New - new commands, features, or capabilities
  • Improved - enhancements to existing behavior
  • Fixed - bug fixes
  • Internal - changes with no user-visible effect (CI, refactors, docs)

A codegen resync is not automatically Internal. What it did to the command surface is what a user cares about, so a resync that added a command or a flag is a New entry naming that command or flag, carrying the resync's PR number. List a resync under Internal only when it changed nothing a user can type.

Read the full file on GitHub · 119 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 3d ago First seen · 119 lines · 46 tokens per session scan A f14f7ab14afe

Subscribe to this mod's changes

changelog-cli is a skill published in the GitHub repository heygen-com/heygen-cli (113 stars, last pushed 4d ago), licensed Apache-2.0. It adds 46 tokens to every session and 1,037 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories