plugins/claude-coding/skills/make-changelog/SKILL.md
This skill should be used when the user asks to "create a changelog", "generate a changelog", "update my changelog", "fill in the changelog", "add a changelog", "CHANGELOG is missing entries", "changelog is out of date", "what's missing from my changelog", "changelog from git history", "write changelog", "release notes", or says "my project needs a CHANGELOG".
npx skillsauth add gupsammy/claudest make-changelogInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Create or update CHANGELOG.md from git history using Keep-a-Changelog format.
Launch one haiku subagent per version range for parallel, token-efficient processing.
Run the range-planning script to validate the repo and gather all version ranges:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/make-changelog/scripts/list_ranges.py --output json
Also check for an existing changelog:
ls CHANGELOG.md CHANGELOG 2>/dev/null
If CHANGELOG.md exists, read it to identify the last documented version (the most
recent ## [x.y.z] heading).
No tags exist: Script returns a single Unreleased range. Proceed in fresh mode.
Tags exist, no CHANGELOG.md: Fresh mode — process all ranges the script returned.
Tags exist, CHANGELOG.md exists: Fill mode — re-run the script with --since-tag
to get only the uncovered ranges:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/make-changelog/scripts/list_ranges.py \
--since-tag <last_documented_tag> --output json
If the intent is ambiguous (user said "update changelog" but the file has extensive existing content), ask the user to choose:
[Unreleased] sectionInspect the JSON output from Step 1 or 2. Each range object has:
label — version string (1.2.0 or Unreleased)from_ref — lower git ref (empty string = from initial commit)to_ref — upper git refdate — tag date or todaycommit_count — number of commits in rangeSkip ranges where commit_count == 0 — no subagent needed.
Cap at 12 subagents. If the non-empty range list exceeds 12, ask the user whether to limit to the most recent 12 or process all (noting it will take longer).
Spawn one Task per non-empty range in a single message (parallel). Use
model: "haiku" for all subagents. Each subagent receives this self-contained
prompt (substitute values from the range object):
You are generating one section of a CHANGELOG.md.
Version: [label]
Date: [date]
Git command: git log [from_ref]..[to_ref] --format="%s"
(If from_ref is empty, use: git log [to_ref] --format="%s")
Categorize by user-observable impact, not by commit prefix. The conventional
commit prefix (feat:, fix:, etc.) is a hint only — a commit labelled "feat:"
that clearly corrects a bug belongs in Fixed, not Added. Use the prefix as a
starting signal and override it when the commit subject contradicts it.
Sections and classification signals:
- Added: new capabilities users can invoke (add, introduce, implement, support)
- Changed: modified behavior of existing features (update, change, refactor, improve)
- Deprecated: features explicitly flagged for future removal
- Removed: capabilities or endpoints deleted (remove, drop, delete)
- Fixed: bugs corrected, regardless of prefix (fix, resolve, patch, correct, hotfix)
- Security: vulnerability patches (security, CVE, sanitize, escape)
Skip: merge commits, CI/CD configuration changes, version-bump commits,
formatting-only changes.
Use present tense, imperative mood: "Add X", not "Added X" or "adds X".
Omit empty sections. Omit internal variable names and implementation details.
Output ONLY the markdown block, no preamble:
## [VERSION] - DATE
### Added
- ...
### Fixed
- ...
Collect all Task results before Step 5.
Order version blocks newest-first. Full document structure:
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
[content from unreleased subagent, or omit section if empty]
## [1.2.0] - 2024-03-15
[content from subagent]
Fill mode: Insert new version sections immediately after the # Changelog header
block, before the first existing ## [ entry. Preserve all existing content exactly.
Fresh/rebuild mode: Write the complete file.
Fresh mode: Write CHANGELOG.md. Confirm overwrite with AskUserQuestion if
the file already exists.
Fill mode: Use Edit to insert new sections at the correct position.
After writing, report:
scripts/list_ranges.py — queries git tags and computes version ranges. Invoked in
Steps 1 and 2. Exit 2 = repo invalid or empty; exit 0 = success.
# All ranges (text preview)
python3 ${CLAUDE_PLUGIN_ROOT}/skills/make-changelog/scripts/list_ranges.py
# All ranges (JSON for skill use)
python3 ${CLAUDE_PLUGIN_ROOT}/skills/make-changelog/scripts/list_ranges.py --output json
# Fill mode: only ranges newer than a specific tag
python3 ${CLAUDE_PLUGIN_ROOT}/skills/make-changelog/scripts/list_ranges.py \
--since-tag v1.2.0 --output json
tools
This skill should be used when the user asks to "design a CLI", "help me design command-line flags", "what flags should my tool have", "create a CLI spec", "refactor my CLI interface", "design a CLI my agent can call", or wants to design command-line UX (args/flags/subcommands/help/output/errors/config) before implementation or audit an existing CLI surface for consistency and composability.
testing
Recall, search, continue, or analyze past conversations. Triggers on recall phrases ("what did we discuss", "continue where we left off", "we decided"), retrospective phrases ("do a retro", "post-mortem", "what went well", "lessons learned", "find antipatterns"), and implicit signals (past-tense references, possessives without context, assumptive questions like "do you remember").
data-ai
Persist learnings to memory or maintain existing memories. Triggers on "extract learnings", "save this for next time", "remember this pattern", "consolidate memories", "dream", "clean up memories".
development
Use for any image creation or editing request — logo, sticker, product mockup, nano banana, t2i, i2i, multi-reference compositing via generate.py. Not for HTML/CSS mockups, diagrams, or coded UI.