Generate and maintain project changelog with Keep a Changelog format
Copy the command definition below into:
~/.claude/commands/add-changelog-davila7.md---
allowed-tools: Read, Edit, Write, Bash
argument-hint: [version] | [entry-type] [description]
description: Generate and maintain project changelog with Keep a Changelog format
---
# Add Changelog Entry
Generate and maintain project changelog: $ARGUMENTS
## Current State
- Existing changelog: @CHANGELOG.md (if exists)
- Recent commits: !`git log --oneline -10`
- Current version: !`git describe --tags --abbrev=0 2>/dev/null || echo "No tags found"`
- Package version: @package.json (if exists)
## Task
1. **Changelog Format (Keep a Changelog)**
```markdown
# 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]
### Added
- New features
### Changed
- Changes in existing functionality
### Deprecated
- Soon-to-be removed features
### Removed
- Removed features
### Fixed
- Bug fixes
### Security
- Security improvements
```
2. **Version Entries**
```markdown
## [1.2.3] - 2024-01-15
### Added
- User authentication system
- Dark mode toggle
- Export functionality for reports
### Fixed
- Memory leak in background tasks
- Timezone handling issues
```
3. **Automation Tools**
```bash
# Generate changelog from git commits
npm install -D conventional-changelog-cli
npx conventional-changelog -p angular -i CHANGELOG.md -s
# Auto-changelog
npm install -D auto-changelog
npx auto-changelog
```
4. **Commit Convention**
```bash
# Conventional commits for auto-generation
feat: add user authentication
fix: resolve memory leak in tasks
docs: update API documentation
style: format code with prettier
refactor: reorganize user service
test: add unit tests for auth
chore: update dependencies
```
5. **Integration with Releases**
- Update changelog before each release
- Include in release notes
- Link to GitHub releases
- Tag versions consistently
Remember to keep entries clear, categorized, and focused on user-facing changes.