| name | changelog-updater |
| description | Create and update CHANGELOG.md files to track development progress, features, fixes, and changes. Use this when completing features, fixing bugs, or documenting project milestones. |
| domain | project |
| type | updater |
| version | 1.0.0 |
| allowed-tools | ["Read","Write","Edit","Bash"] |
Changelog Updater Skill
This skill creates and maintains CHANGELOG.md files following best practices, tracking all development progress, features, bug fixes, and breaking changes.
Workflow Context
| Field | Value |
|---|
| Assigned Agent | qa-docs |
| Sprint Phase | End of sprint (Phase D) |
| Directory Scope | CHANGELOG.md |
| Workflow Reference | See docs/agent-team-workflow.md |
When to Use This Skill
Invoke this skill when the user:
- Says "update changelog" or "add to changelog"
- Completes a feature and wants to document it
- Fixes bugs and wants to track them
- Asks "how do I track changes to my game?"
- Says "create a changelog"
- Preparing for a release and needs release notes
- Wants to document development progress
Core Principle
Changelogs are development history:
- ✅ Track what changed, when, and why
- ✅ Help team understand project evolution
- ✅ Generate release notes automatically
- ✅ Document breaking changes
- ✅ Show progress to stakeholders
- ✅ Provide accountability and transparency
Changelog Format
Following Keep a Changelog standard:
# Changelog
All notable changes to [Project Name] 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]
### Added
- New features that have been added
### Changed
- Changes to existing functionality
### Deprecated
- Features that will be removed in upcoming releases
### Removed
- Features that have been removed
### Fixed
- Bug fixes
### Security
- Security fixes or improvements
## [1.0.0] - 2025-12-21
### Added
- Initial release
- Feature X implemented
- Feature Y implemented
### Fixed
- Bug #123: Description of fix
## [0.2.0] - 2025-12-15
### Added
- Feature Z in early prototype
### Changed
- Refactored system A for better performance
## [0.1.0] - 2025-12-10
### Added
- Project started
- Basic movement system
- Initial enemy spawning
[Unreleased]: https://github.com/user/repo/compare/v1.0.0...HEAD
[1.0.0]: https://github.com/user/repo/compare/v0.2.0...v1.0.0
[0.2.0]: https://github.com/user/repo/compare/v0.1.0...v0.2.0
[0.1.0]: https://github.com/user/repo/releases/tag/v0.1.0
Change Categories
Added
Use for: New features, new files, new capabilities
Examples:
- "Added weapon rule system for tactical combat"
- "Added 5 new enemy types (Scout, Tank, Drone, Artillery, Elite)"
- "Added level-up system with 3 upgrade choices"
Changed
Use for: Modifications to existing features
Examples:
- "Changed player movement speed from 150 to 200 px/s"
- "Changed XP curve to make early levels faster"
- "Refactored weapon system to use data-driven resources"
Deprecated
Use for: Features marked for removal (still work but will be removed)
Examples:
- "Deprecated old enemy spawning system (use WaveManager instead)"
- "Deprecated
get_damage() function (use calculate_damage() instead)"
Removed
Use for: Features that have been deleted
Examples:
- "Removed placeholder weapon system"
- "Removed debug UI from production build"
- "Removed unused enemy types (Healer, Support)"
Fixed
Use for: Bug fixes
Examples:
- "Fixed crash when player dies while level-up menu is open"
- "Fixed enemies spawning outside world bounds"
- "Fixed weapon not firing when target exactly at max range"
Security
Use for: Security vulnerabilities fixed
Examples:
- "Fixed potential save file exploit allowing stat manipulation"
- "Updated dependency X to patch CVE-2025-1234"
Semantic Versioning
Use Semantic Versioning: MAJOR.MINOR.PATCH
Version Format: X.Y.Z
MAJOR (X): Breaking changes
- Increment when making incompatible changes
- Example: 1.0.0 → 2.0.0 (save file format changed, old saves incompatible)
MINOR (Y): New features (backwards compatible)
- Increment when adding functionality
- Example: 1.0.0 → 1.1.0 (added new weapon type)
PATCH (Z): Bug fixes (backwards compatible)
- Increment when fixing bugs
- Example: 1.0.0 → 1.0.1 (fixed crash bug)
Pre-release Versions
- Alpha: 0.1.0, 0.2.0 (early development, unstable)
- Beta: 0.9.0, 0.10.0 (feature complete, testing)
- Release Candidate: 1.0.0-rc.1, 1.0.0-rc.2 (final testing before release)
Workflow
Creating a New Changelog
If no CHANGELOG.md exists:
-
Ask user for project details:
- Project name
- Current version (or start at 0.1.0)
- Git repository URL (if applicable)
-
Create CHANGELOG.md with header and first version
-
Ask about current state:
- What features are implemented?
- What's the initial release content?
-
Generate initial entry for version 0.1.0 or 1.0.0
Updating Existing Changelog
If CHANGELOG.md exists:
-
Read current CHANGELOG.md
-
Ask user what changed:
- "What did you add/change/fix?"
- "Is this a new version or still unreleased?"
-
Determine version bump:
- Breaking change? → MAJOR
- New feature? → MINOR
- Bug fix only? → PATCH
- Still in development? → Add to [Unreleased]
-
Update changelog:
- Add entries to appropriate category
- Update version number if releasing
- Update comparison links at bottom
Adding Entry to Unreleased Section
When: User completes work but hasn't released version yet
Process:
- Read CHANGELOG.md
- Add entry under
## [Unreleased] in appropriate category
- Use present tense ("Added weapon system" not "Add weapon system")
- Be specific and concise
Creating New Version Release
When: User says "release version X.Y.Z" or "cut a release"
Process:
- Read CHANGELOG.md
- Move all [Unreleased] entries to new version section
- Add date to version header:
## [X.Y.Z] - YYYY-MM-DD
- Clear [Unreleased] section
- Update comparison links at bottom
- Ask if user wants to tag git commit
Entry Writing Guidelines
Be Specific
❌ Bad: "Fixed bugs"
✅ Good: "Fixed crash when enemy dies while being targeted"
❌ Bad: "Improved performance"
✅ Good: "Improved wave spawning performance by caching enemy pools (30% FPS gain)"
Use Imperative Mood
❌ Bad: "Adds new weapon"
✅ Good: "Add new railgun weapon with pierce mechanic"
Include Context
❌ Bad: "Changed damage value"
✅ Good: "Changed machine gun damage from 10 to 5 for better balance"
Reference Issues/PRs
✅ "Fixed enemy pathfinding bug (#42)"
✅ "Added weapon evolution system (PR #15)"
Group Related Changes
Instead of:
- Added Scout enemy
- Added Tank enemy
- Added Drone enemy
Better:
- Added 3 new enemy types: Scout (fast/weak), Tank (slow/tough), Drone (flying/medium)
Special Cases
Breaking Changes
Always highlight breaking changes prominently:
## [2.0.0] - 2025-12-21
### ⚠️ BREAKING CHANGES
- Save file format changed - old saves will not load
- `WeaponBase.fire()` signature changed - custom weapons need update
- Deprecated `EnemyManager` removed - use `WaveManager` instead
### Changed
- Weapon system refactored to use resource-based data
Migration Guides
For major breaking changes, include migration notes:
## [2.0.0] - 2025-12-21
### Changed
- Weapon system now uses WeaponData resources instead of hardcoded stats
**Migration:**
1. Create WeaponData resource for each weapon
2. Replace weapon script constants with `@export var data: WeaponData`
3. See `docs/weapon-migration-guide.md` for details
Comparing Git Changes
If user has git, can generate changelog from commits:
Use bash to get recent commits:
git log --oneline --since="7 days ago"
Parse commits and categorize:
- Commits starting with "feat:" → Added
- Commits starting with "fix:" → Fixed
- Commits starting with "refactor:" → Changed
- Commits starting with "docs:" → (Usually skip in user-facing changelog)
Output File Location
Primary changelog: CHANGELOG.md (project root)
Alternative locations:
docs/CHANGELOG.md (if docs folder preferred)
docs/changelog/YYYY-MM.md (monthly changelogs for large projects)
Integration with Other Skills
With gdd-generator
- After creating GDD, add to changelog: "Added prototype design document"
With feature-spec-generator
- After implementing feature, add to changelog: "Implemented [feature] per spec"
With code-reviewer
- After refactoring, add to changelog: "Refactored [system] for code quality"
With Version Control
- Can generate release notes from changelog
- Can tag git commits with version numbers
- Can compare changelog to git history for accuracy
Example Interactions
User: "Update changelog - I added the weapon rule system"
Skill:
I'll add this to the Unreleased section under "Added".
Should I include any specific details about the weapon rule system?
(e.g., "Added weapon rule system with 5 targeting priorities and 4 firing conditions")
User: "Create changelog for my game"
Skill:
I'll create a CHANGELOG.md file. A few questions:
1. Project name?
2. Current version (or should I start at 0.1.0)?
3. Git repository URL (if any)?
4. What features are currently implemented?
User: "Release version 1.0.0"
Skill:
I'll move all Unreleased changes to version 1.0.0 with today's date.
Looking at [Unreleased]:
- 5 Added features
- 3 Changed items
- 12 Fixed bugs
This looks like a significant release. Should I tag this as 1.0.0 or would you like a different version number?
Quality Checklist
Before finalizing changelog update:
- ✅ Entries are specific and descriptive
- ✅ Version number follows semantic versioning
- ✅ Date is in YYYY-MM-DD format
- ✅ Breaking changes are highlighted
- ✅ Comparison links are updated (if using git)
- ✅ Categories are correct (Added/Changed/Fixed/etc.)
- ✅ Entries use consistent tense/voice
Example Invocations
User: "Update changelog"
User: "Add feature X to changelog"
User: "Create a changelog for my project"
User: "Release version 1.0.0"
User: "What changed since last version?"
User: "Generate changelog from git history"
Workflow Summary
- Check if CHANGELOG.md exists
- If new: Ask project details and create initial changelog
- If exists: Read current changelog
- Ask what changed (or read from git if applicable)
- Determine version impact (unreleased vs new version)
- Add entries to appropriate categories
- Update version numbers and dates if releasing
- Write updated CHANGELOG.md
- Confirm changes to user
This skill ensures development progress is documented systematically, making releases transparent and history traceable.