changelog
Generate or update CHANGELOG.md from git commits using semantic versioning. Use when the user says "/changelog", wants to update the changelog, or asks to generate release notes.
Best use case
changelog is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Generate or update CHANGELOG.md from git commits using semantic versioning. Use when the user says "/changelog", wants to update the changelog, or asks to generate release notes.
Teams using changelog should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/changelog/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How changelog Compares
| Feature / Agent | changelog | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Generate or update CHANGELOG.md from git commits using semantic versioning. Use when the user says "/changelog", wants to update the changelog, or asks to generate release notes.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
## What this skill does Reviews commits since the last version tag, determines the version bump, and updates CHANGELOG.md. ## Steps ### 1. Find the latest version ```bash git tag --sort=-v:refname | head -5 ``` If no tags exist, the starting version is `v1.0.0` and all commits are included. ### 2. Get commits since last version ```bash git log <last-tag>..HEAD --oneline --no-merges ``` If no tag, use all commits: ```bash git log --oneline --no-merges ``` ### 3. Check if the latest tag has been pushed ```bash git log origin/main..HEAD --oneline 2>/dev/null ``` If the latest version tag exists only locally (i.e. the tagged commit appears in the `origin/main..HEAD` range), then this version has NOT been pushed yet. In that case: 1. Delete the existing local tag: `git tag -d <latest-tag>` 2. Merge the new commits into the EXISTING changelog entry for that version (update the entry in place, don't create a new one) 3. Re-tag the new changelog commit with the same version 4. Do NOT bump the version number — keep the same version Only create a new version bump when the latest tag has already been pushed to origin. ### 3b. Determine version bump (only if bumping) If `$ARGUMENTS` specifies `patch`, `minor`, or `major`, use that. Otherwise, analyze the commits: - **major**: breaking changes, architecture rewrites, API changes - **minor**: new features, new commands, new skills, new integrations - **patch**: bug fixes, config tweaks, documentation, refactors ### 4. Generate changelog entry Read existing `CHANGELOG.md` if it exists. Prepend the new version entry at the top. Format: ```markdown ## [vX.Y.Z] - YYYY-MM-DD ### Added - New features, skills, commands ### Changed - Modifications to existing behavior ### Fixed - Bug fixes ### Removed - Removed features or deprecated code ``` Group commits by category. Write concise human-readable descriptions (not raw commit messages). Skip empty categories. **Filter out noise.** Do NOT include trivial commits that don't matter to someone reading a changelog: - Formatting fixes (missing newlines, whitespace, trailing commas) - Lockfile updates (`uv.lock`, `package-lock.json`) - Version bumps that are just the changelog commit itself - Typo fixes in non-user-facing files Only include changes that affect functionality, behavior, or developer experience. ### 5. Commit the changelog Update the version in pyproject.toml and uv.lock Then commit all the files for the version bump. ```bash charlie-commit -m "Update CHANGELOG for vX.Y.Z Charlie 🐕 <charlie@charlieverse.ai>" ``` ### 6. Tag the version ```bash git tag vX.Y.Z ``` ### 7. Build the wheel and create a GitHub release Build the distributable wheel with all bundled assets: ```bash cd web && npm run build && cd .. rm -rf dist/ uv build --wheel ``` Create a GitHub release with the wheel attached. Use the changelog entry for this version as the release notes — extract the `## [vX.Y.Z]` section from CHANGELOG.md and pass it as `--notes`: ```bash gh release create vX.Y.Z dist/*.whl --title "vX.Y.Z" --notes "$(changelog_entry)" ``` Where `changelog_entry` is the markdown content between the `## [vX.Y.Z]` header and the next `## [` header (or end of file). Do NOT use a lazy "See CHANGELOG.md for details" — the release notes should contain the full changelog entry. Report the new version, summary of changes, and the release URL.
Related Skills
trick
Run Charlie tricks by name or path. Use when the user says "/trick", wants to run a trick, list available tricks, or execute a skill file. Also trigger when the user mentions running a specific trick by name (e.g., "run the session-save trick", "run ship", "do the commit trick").
research
Research a topic and save findings to Charlieverse knowledge. Use whenever the user wants to research something, look up documentation, investigate a library or tool, explore a concept, or asks "what do you know about X". Also trigger when the user says "/research", wants to build up knowledge about a subject, or asks you to "look into" something — even if they don't use the word "research" explicitly.
copilot
Run a task through GitHub Copilot CLI. Use when the user says "/copilot", wants to delegate work to Copilot, or mentions running something through Copilot. Also trigger when the user wants to use Copilot for a task.
codex
Run a task through OpenAI Codex CLI. Use when the user says "/codex", wants to delegate work to Codex, or mentions running something through Codex. Also trigger when the user wants to use an OpenAI model for a task.
session-save
Save or update the current session. Use this skill when asked to handoff, save session, update session, start a new chat, etc. Always call this before using the `update_session` MCP tool directly.
charlie-import
Import conversation history from AI providers (Claude, Copilot, Codex, Cursor) and generate stories from the imported data. Use on first session to bootstrap memory from existing conversations, or anytime the person wants to import history from another provider/machine.
typo-check
Find typos, grammar errors, punctuation/capitalization mistakes, and banned-phrase voice slips in prose and code comments. Use when the user says "/typo-check", wants to scan for typos, or before shipping user-facing text. Reports findings and confirms before fixing.
test-coverage
Evaluate the test coverage
ship
Commit, docs, changelog, and push in one go. Use when the user says "/ship", wants to ship their changes, or asks to commit and push everything.
qc
Run quality control checks on the codebase — type checking, linting, tests, and server smoke test. Use when the user says "/qc", wants to verify code quality, or after making significant changes.
docs
Generate or update public documentation from source code. Use when the user says "/docs", wants to update docs, or asks to generate documentation for the project.
commit
Review repo changes and create logical atomic commits. Use when the user says "/commit", wants to commit their work, or asks to break changes into commits.