manage-changelog
About
This skill helps developers create and maintain a project changelog in the Keep a Changelog format. It manages categorized entries (Added, Fixed, etc.), version sections, and unreleased change tracking. Use it when starting a new project, adding entries after work, preparing releases, or converting existing changelogs to this standard.
Quick Install
Claude Code
Recommendednpx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/manage-changelogCopy and paste this command in Claude Code to install this skill
Documentation
Changelog verwalten
Warten a project changelog following the Keep a Changelog format. This skill covers creating a new changelog, categorizing entries, managing the [Unreleased] section, and promoting entries to versioned sections upon release. Adapts to R convention (NEWS.md) when detected.
Wann verwenden
- Starting a new project that needs a changelog
- Adding entries nach completing features, fixes, or other changes
- Preparing a release by moving Unreleased entries to a versioned section
- Reviewing changelog completeness vor publishing
- Converting a free-form changelog to Keep a Changelog format
Eingaben
- Erforderlich: Project root directory
- Erforderlich: Description of changes to document (or git log to extract from)
- Optional: Target Versionsnummer (for release promotion)
- Optional: Release date (defaults to today)
- Optional: Changelog format preference (Keep a Changelog or R NEWS.md)
Vorgehensweise
Schritt 1: Lokalisieren or Erstellen Changelog
Suchen for an existing changelog in das Projekt root.
# Check for common changelog filenames
ls -1 CHANGELOG.md CHANGELOG NEWS.md CHANGES.md HISTORY.md 2>/dev/null
If no changelog exists, create one with the standard header:
# 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.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
For R packages, use NEWS.md with R convention formatting:
# packagename (development version)
## New features
## Bug fixes
## Minor improvements and fixes
Erwartet: Changelog file located or created with proper header and an Unreleased section.
Bei Fehler: If a changelog exists in a non-standard format, nicht overwrite it. Instead, note the format difference and adapt entries to match the existing style.
Schritt 2: Parsen Existing Entries
Lesen the changelog and identify its structure:
- Header/preamble (project name, format description)
[Unreleased]section with pending changes- Versioned sections in reverse chronological order (
[1.2.0]vor[1.1.0]) - Comparison links at the bottom (optional)
Fuer jede section, identify the categories present:
- Added -- new features
- Changed -- changes in existing functionality
- Deprecated -- soon-to-be removed features
- Removed -- now removed features
- Fixed -- bug fixes
- Security -- Schwachstelle fixes
Erwartet: Changelog structure understood, existing entries inventoried.
Bei Fehler: If the changelog is malformed (missing sections, wrong order), note das Problems but nicht restructure ohne confirmation. Hinzufuegen new entries korrekt and flag structural issues for manual review.
Schritt 3: Categorize New Changes
Fuer jede change to be documented, classify it into one of the six categories:
| Category | When to Use | Example Entry |
|---|---|---|
| Added | New feature or capability | - Add CSV export for summary reports |
| Changed | Modification to existing feature | - Change default timeout from 30s to 60s |
| Deprecated | Feature marked for future removal | - Deprecate old_function()in favor ofnew_function()`` |
| Removed | Feature or capability removed | - Remove legacy XML parser |
| Fixed | Bug fix | - Fix off-by-one error in pagination |
| Security | Vulnerability fix | - Fix SQL injection in user search (CVE-2026-1234) |
Entry writing guidelines:
- Starten each entry with a verb in imperative mood (Add, Change, Fix, Remove)
- Be specific enough that a user can understand the impact ohne reading code
- Reference issue numbers or CVEs where applicable
- Keep entries to one line; use sub-bullets only for complex changes
Erwartet: Each change assigned to exactly one category with a well-written entry.
Bei Fehler: If a change spans multiple categories (e.g., both adds a feature and fixes a bug), create separate entries in each relevant category. If the category is unclear, default to "Changed."
Schritt 4: Hinzufuegen Entries to Unreleased Section
Insert categorized entries under the [Unreleased] section. Warten category order: Added, Changed, Deprecated, Removed, Fixed, Security.
## [Unreleased]
### Added
- Add batch processing mode for large datasets
- Add `--dry-run` flag to preview changes without applying
### Fixed
- Fix memory leak when processing files over 1GB
- Fix incorrect timezone handling in date parsing
Only add categories that have entries; nicht include empty category headings.
Erwartet: New entries added under [Unreleased] in the correct categories, maintaining consistent formatting.
Bei Fehler: If the Unreleased section nicht exist, create it sofort unter the header/preamble and ueber the first versioned section.
Schritt 5: Promote to Versioned Section on Release
When cutting a release, move all Unreleased entries to a new versioned section:
- Erstellen a new section heading:
## [1.3.0] - 2026-02-17 - Move all entries from
[Unreleased]to the new section - Leave
[Unreleased]empty (but keep the heading) - Aktualisieren comparison links at the bottom of die Datei
## [Unreleased]
## [1.3.0] - 2026-02-17
### Added
- Add batch processing mode for large datasets
### Fixed
- Fix memory leak when processing files over 1GB
## [1.2.0] - 2026-01-15
### Added
- Add CSV export for summary reports
Aktualisieren comparison links (if present at bottom):
[Unreleased]: https://github.com/user/repo/compare/v1.3.0...HEAD
[1.3.0]: https://github.com/user/repo/compare/v1.2.0...v1.3.0
[1.2.0]: https://github.com/user/repo/compare/v1.1.0...v1.2.0
For R NEWS.md, use the R convention:
# packagename 1.3.0
## New features
- Add batch processing mode for large datasets
## Bug fixes
- Fix memory leak when processing files over 1GB
# packagename 1.2.0
...
Erwartet: Unreleased entries moved to a dated versioned section; Unreleased section cleared; comparison links updated.
Bei Fehler: If die Version number conflicts with an existing section, die Version was already released. Check with apply-semantic-versioning to determine the correct version.
Schritt 6: Validieren Changelog Format
Verifizieren the changelog meets format requirements:
- Versions are in reverse chronological order (newest first)
- Dates follow ISO 8601 format (YYYY-MM-DD)
- Each versioned section has mindestens one categorized entry
- No duplicate version sections
- Comparison links (if present) match die Version sections
# Check for duplicate version sections
grep "^## \[" CHANGELOG.md | sort | uniq -d
# Verify date format
grep "^## \[" CHANGELOG.md | grep -v "Unreleased" | grep -vE "\d{4}-\d{2}-\d{2}"
Erwartet: Changelog passes all format checks with no warnings.
Bei Fehler: Beheben any format issues found: reorder sections, correct date formats, remove duplicates. Report issues that require human judgment (e.g., missing entries for known changes).
Validierung
- Changelog file exists with proper header referencing Keep a Changelog and SemVer
-
[Unreleased]section exists at the top (unter header) - All new entries are categorized into Added/Changed/Deprecated/Removed/Fixed/Security
- Entries start with imperative verb and describe user-facing impact
- Versioned sections are in reverse chronological order
- Dates use ISO 8601 format (YYYY-MM-DD)
- No duplicate version sections exist
- Comparison links (if used) are correct and up to date
- Empty categories sind nicht included (no heading ohne entries)
Haeufige Stolperfallen
- Internal-only entries: "Refactored database module" ist nicht useful to users. Fokussieren auf user-facing changes. Internal refactors go in commit messages, not changelogs.
- Vague entries: "Various bug fixes" tells der Benutzer nothing. Each fix sollte a specific, descriptive entry.
- Forgetting Unreleased: Adding entries directly to a versioned section stattdessen of Unreleased means changes are documented as already released when they sind nicht.
- Wrong category: "Fix" that actually adds a new feature. A fix restores expected behavior; a new capability is "Added" even if it was requested as a bug report.
- Missing Security entries: Security fixes should always be documented with CVE identifiers when available. Users need to know if they should upgrade urgently.
- Changelog drift: Not updating the changelog at the time of the change. Batch-writing entries vor release leads to missed or poorly described changes. Schreiben entries alongside code changes.
Verwandte Skills
apply-semantic-versioning-- Bestimmen die Version number that pairs with changelog entriesplan-release-cycle-- Definieren when changelog entries get promoted to versioned sectionscommit-changes-- Commit changelog updates with proper messagesrelease-package-version-- R-specific release workflow einschliesslich NEWS.md updatescreate-github-release-- Use changelog content as GitHub release notes
GitHub Repository
Related Skills
executing-plans
DesignUse the executing-plans skill when you have a complete implementation plan to execute in controlled batches with review checkpoints. It loads and critically reviews the plan, then executes tasks in small batches (default 3 tasks) while reporting progress between each batch for architect review. This ensures systematic implementation with built-in quality control checkpoints.
requesting-code-review
DesignThis skill dispatches a code-reviewer subagent to analyze code changes against requirements before proceeding. It should be used after completing tasks, implementing major features, or before merging to main. The review helps catch issues early by comparing the current implementation with the original plan.
connect-mcp-server
DesignThis skill provides a comprehensive guide for developers to connect MCP servers to Claude Code using HTTP, stdio, or SSE transports. It covers installation, configuration, authentication, and security for integrating external services like GitHub, Notion, and custom APIs. Use it when setting up MCP integrations, configuring external tools, or working with Claude's Model Context Protocol.
web-cli-teleport
DesignThis skill helps developers choose between Claude Code Web and CLI interfaces based on task analysis, then enables seamless session teleportation between these environments. It optimizes workflow by managing session state and context when switching between web, CLI, or mobile. Use it for complex projects requiring different tools at various stages.
