
Changelog Manager
- 1 installs
- Updated March 2, 2026
- dundas/uhr
Create and update CHANGELOG.md in Keep a Changelog format with AI model/CLI attribution, PRD and task context, and validated commits.
About
Maintains a CHANGELOG.md that records changes with AI-system attribution and links to PRDs, tasks, and PRs. A developer uses it to add or initialize changelog entries with traceable context.
- Auto-detects the AI system making the change
- Inserts entries under Unreleased and commits with validation
Changelog Manager by the numbers
- 1 all-time installs (skills.sh)
- Ranked #1,361 of 1,879 Documentation skills by installs in the Skillselion catalog
- Data as of Jul 8, 2026 (Skillselion catalog sync)
npx skills add https://github.com/dundas/uhr --skill changelog-managerAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1 |
|---|---|
| Last updated | March 2, 2026 |
| Repository | dundas/uhr ↗ |
What it does
Create and update CHANGELOG.md in Keep a Changelog format with AI model/CLI attribution, PRD and task context, and validated commits.
Files
Changelog Manager
Goal
Maintain a comprehensive CHANGELOG.md that tracks all changes with attribution to the AI model/CLI that made them, linked to PRDs and tasks when applicable.
Input
- Entry type: Manual entry, PR-based entry, or bulk update
- Change description: What was changed
- Optional context: PRD file path, task reference, PR number
Output
- File:
CHANGELOG.mdat repository root - Format: Enhanced Keep a Changelog with attribution metadata
---
Process
Phase 1: Initialization
1. Detect AI Model/CLI
# Auto-detect which AI is running
# Claude Code: Check for CLAUDE_CODE_VERSION env var or .claude directory
# Gemini: Check for .gemini directory
# Codex: Check for .codex directory
# Default: "AI Assistant"
if [[ -d ".claude" ]] || [[ -n "$CLAUDE_CODE_VERSION" ]]; then
AI_SYSTEM="Claude Code"
elif [[ -d ".gemini" ]]; then
AI_SYSTEM="Gemini CLI"
elif [[ -d ".codex" ]]; then
AI_SYSTEM="Codex"
else
AI_SYSTEM="AI Assistant"
fi2. Check if CHANGELOG.md exists
if [[ ! -f CHANGELOG.md ]]; then
echo "CHANGELOG.md not found. Creating..."
# Initialize new changelog (see template below)
fiPhase 2: Entry Creation
3. Gather Entry Details
Ask the user:
What type of change is this?
a) Added (new feature)
b) Fixed (bug fix)
c) Changed (refactor, improvement)
d) Deprecated (feature marked for removal)
e) Removed (feature removed)
f) Security (security fix)
g) Documentation (docs only)4. Gather Context
Ask the user:
Related to a PRD? (optional)
- If yes: path to PRD file (e.g., tasks/0001-prd-feature.md)
Related to a task? (optional)
- If yes: task reference (e.g., Task 1.2 from tasks-0001-prd-feature.md)
Related to a PR? (optional)
- If yes: PR number5. Capture Description
Prompt:
Describe the change in one line:
(e.g., "User profile editing with avatar upload")6. Generate Entry
Format:
- [Description] ([AI System], YYYY-MM-DD)
- **Context:** [PRD link] | Task [reference] | PR #[number]If no context:
- [Description] ([AI System], YYYY-MM-DD)Phase 3: Update CHANGELOG.md
7. Parse Existing Changelog
- Find
[Unreleased]section - Find appropriate category subsection (### Added, ### Fixed, etc.)
- Create subsection if it doesn't exist
8. Insert Entry
# Insert under appropriate category in [Unreleased]
# Maintain chronological order (newest first)9. Validate Format
- Ensure proper markdown structure
- Verify all links are valid
- Check for duplicate entries
10. Commit Changes
# Verify CHANGELOG.md exists and was modified
[[ -f CHANGELOG.md ]] || {
echo "❌ Error: CHANGELOG.md not found"
exit 1
}
# Check if file was actually modified
git diff CHANGELOG.md | grep -q . || {
echo "⚠️ Warning: CHANGELOG.md not modified. Entry may already exist."
echo "Skipping commit."
exit 0
}
# Stage the changelog
git add CHANGELOG.md || {
echo "❌ Error: Failed to stage CHANGELOG.md"
exit 1
}
# Commit with error handling
git commit -m "docs(changelog): add entry for [description]
Added by $AI_SYSTEM
" || {
echo "❌ Error: git commit failed"
echo "This may be due to:"
echo " - Pre-commit hooks failing"
echo " - No git user configured"
echo " - Repository in bad state"
git status
exit 1
}
# Verify commit succeeded
git log -1 --oneline | grep -q "docs(changelog)" || {
echo "❌ Error: Commit verification failed"
exit 1
}
echo "✅ CHANGELOG.md updated and committed successfully"---
CHANGELOG.md Template
Initial Creation
# 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/),
with enhanced attribution to track which AI model/CLI made each change.
## [Unreleased]
### Added
### Fixed
### Changed
### Deprecated
### Removed
### Security
---
## Format Notes
Each entry includes:
- **Description** - What was changed
- **Attribution** - Which AI model/CLI made the change (Claude Code, Gemini CLI, etc.)
- **Date** - When the change was made (YYYY-MM-DD)
- **Context** (optional) - Links to PRD, task reference, or PR number
Example:Added
- User profile editing with avatar upload (Claude Code, 2025-01-16)
- Context: PRD | Task 1.2 | PR #42
---
*Changelog initialized YYYY-MM-DD*---
Entry Formats
With Full Context
### Added
- Real-time notifications via WebSocket (Claude Code, 2025-01-16)
- **Context:** [PRD](tasks/0003-prd-notifications.md) | Task 2.1 | PR #45
- **Details:** Implemented server-sent events with fallback to pollingWith PRD Only
### Fixed
- Login session timeout on mobile (Gemini CLI, 2025-01-15)
- **Context:** [PRD](tasks/0001-prd-auth.md)With Task Only
### Changed
- Refactored database connection pooling (Claude Code, 2025-01-14)
- **Context:** Task 3.4 from [tasks-0005-prd-performance.md](tasks/tasks-0005-prd-performance.md)With PR Only (Auto-generated)
### Security
- Patched XSS vulnerability in message rendering (Claude Code, 2025-01-13)
- **Context:** PR #49Minimal Entry (No Context)
### Documentation
- Updated API documentation (Codex, 2025-01-12)---
Bulk Update Mode
For updating changelog from multiple PRs or commits:
1. Scan Git History
# Get commits since last changelog update
git log --oneline --since="$(git log -1 --format=%ai CHANGELOG.md)" --no-merges2. Parse Each Commit
- Extract conventional commit type
- Extract description
- Check for PR reference in commit message
3. Generate Entries
- Group by category (Added/Fixed/Changed/etc.)
- Add attribution based on co-author tag or default to current AI
4. Present for Review
- Show proposed entries
- Allow user to edit before inserting
---
Version Release
When releasing a new version:
1. Move [Unreleased] to Version Section
## [1.2.0] - 2025-01-16
### Added
[All entries from Unreleased/Added]
### Fixed
[All entries from Unreleased/Fixed]
...
## [1.1.0] - 2025-01-10
...2. Reset [Unreleased]
## [Unreleased]
### Added
### Fixed
### Changed
### Deprecated
### Removed
### Security3. Commit
git add CHANGELOG.md
git commit -m "docs(changelog): release v1.2.0"
git tag v1.2.0---
Integration with PR Review Loop
The pr-review-loop skill automatically calls this skill after merging:
# After PR merge:
changelog-manager \
--type "Added" \
--description "Feature from PR title" \
--pr 123 \
--autoThis adds an entry without user prompting.
---
Interaction Model
Manual Mode (Default)
- Prompts user for change type, description, context
- Interactive and guided
Auto Mode (from PR merge)
- Accepts parameters via flags
- No user interaction
- Used by pr-review-loop
Bulk Mode
- Scans git history
- Proposes entries for review
- User confirms/edits before insertion
---
Key Principles
1. Attribution - Every entry shows which AI made the change 2. Context - Link to PRD/task/PR when available 3. Chronological - Newest entries first within each category 4. Searchable - Easy to find when a change was made and by whom 5. Standard Format - Keep a Changelog compliance
---
References
- See
reference.mdfor format examples - Keep a Changelog: https://keepachangelog.com/en/1.0.0/
Changelog Manager Reference
Source
- Skill:
changelog-manager/SKILL.md - Standard: Keep a Changelog 1.0.0
AI System Detection
Auto-Detection Logic
if [[ -d ".claude" ]] || [[ -n "$CLAUDE_CODE_VERSION" ]]; then
AI_SYSTEM="Claude Code"
elif [[ -d ".gemini" ]]; then
AI_SYSTEM="Gemini CLI"
elif [[ -d ".codex" ]]; then
AI_SYSTEM="Codex"
else
AI_SYSTEM="AI Assistant"
fiAttribution Format
([AI System], YYYY-MM-DD)Examples:
(Claude Code, 2025-01-16)(Gemini CLI, 2025-01-15)(Codex, 2025-01-14)(AI Assistant, 2025-01-13)
---
Entry Templates
Full Context Entry
### Added
- User authentication with OAuth2 support (Claude Code, 2025-01-16)
- **Context:** [PRD](tasks/0001-prd-auth.md) | Task 1.3 | PR #42
- **Details:** Implemented Google and GitHub OAuth providers with PKCE flowPRD + Task Entry
### Fixed
- Memory leak in WebSocket connections (Gemini CLI, 2025-01-15)
- **Context:** [PRD](tasks/0002-prd-realtime.md) | Task 2.4PR Only Entry (Auto-generated)
### Changed
- Refactored database migrations to use Drizzle ORM (Claude Code, 2025-01-14)
- **Context:** PR #45Minimal Entry
### Documentation
- Added API endpoint documentation (Codex, 2025-01-13)With Additional Details
### Security
- Fixed SQL injection vulnerability in search (Claude Code, 2025-01-12)
- **Context:** Task 5.1 from [tasks-0010-prd-security-audit.md](tasks/tasks-0010-prd-security-audit.md)
- **Details:** Parameterized all queries, added input sanitization
- **Impact:** All versions since v1.0.0 affected---
Category Mapping
| Category | Use When | Examples |
|---|---|---|
| Added | New features, endpoints, functionality | "User profile editing", "WebSocket support" |
| Fixed | Bug fixes, error corrections | "Login timeout", "Race condition in cache" |
| Changed | Refactors, improvements, updates | "Improved query performance", "Updated React to v18" |
| Deprecated | Features marked for future removal | "Legacy /api/v1 endpoints" |
| Removed | Features/code removed | "Dropped Node 14 support" |
| Security | Security patches, vulnerability fixes | "Patched XSS in comments" |
| Documentation | Docs-only changes (optional to include) | "Updated README" |
---
Context Link Formats
PRD Link
[PRD](tasks/0001-prd-feature-name.md)Task Reference
Task 1.2
# Or with file link:
Task 1.2 from [tasks-0001-prd-feature.md](tasks/tasks-0001-prd-feature.md)PR Reference
PR #42
# Or with link (if public repo):
[PR #42](https://github.com/org/repo/pull/42)Combined Context
[PRD](tasks/0001-prd-auth.md) | Task 1.3 | PR #42---
Complete Example Changelog
# 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/),
with enhanced attribution to track which AI model/CLI made each change.
## [Unreleased]
### Added
- User profile editing with avatar upload (Claude Code, 2025-01-16)
- **Context:** [PRD](tasks/0001-prd-user-profile.md) | Task 1.2 | PR #42
- **Details:** Supports PNG/JPG, max 5MB, auto-resize to 200x200
- Real-time notifications via WebSocket (Claude Code, 2025-01-16)
- **Context:** [PRD](tasks/0003-prd-notifications.md) | Task 2.1 | PR #45
- **Details:** Server-sent events with polling fallback
- Export data to CSV (Gemini CLI, 2025-01-15)
- **Context:** Task 3.4 from [tasks-0005-prd-export.md](tasks/tasks-0005-prd-export.md)
### Fixed
- Login session timeout on mobile browsers (Claude Code, 2025-01-15)
- **Context:** [PRD](tasks/0001-prd-auth.md) | PR #44
- Race condition in message delivery (Codex, 2025-01-14)
- **Context:** Task 4.2
- **Details:** Added optimistic locking with version numbers
### Changed
- Refactored authentication to use JWT tokens (Claude Code, 2025-01-14)
- **Context:** [PRD](tasks/0001-prd-auth.md) | Task 1.5 | PR #46
- **Details:** Migrated from sessions, reduced server memory by 60%
- Improved database query performance (Gemini CLI, 2025-01-14)
- **Context:** PR #47
- **Details:** Added indexes, query plan optimization, 70% faster
### Deprecated
- Legacy REST API v1 endpoints (Claude Code, 2025-01-13)
- **Context:** [PRD](tasks/0008-prd-api-v2.md)
- **Details:** Will be removed in v2.0.0, use /api/v2 instead
### Security
- Patched XSS vulnerability in message rendering (Claude Code, 2025-01-13)
- **Context:** PR #49
- **Details:** Sanitize HTML input, escape user content
- **Impact:** Versions 1.0.0-1.1.2 affected
---
## [1.1.0] - 2025-01-10
### Added
- Dark mode support (Claude Code, 2025-01-09)
- **Context:** [PRD](tasks/0002-prd-theming.md) | PR #38
- Email notifications (Gemini CLI, 2025-01-08)
- **Context:** Task 2.3 | PR #36
### Fixed
- Memory leak in file upload (Claude Code, 2025-01-07)
- **Context:** PR #35
---
## [1.0.0] - 2025-01-05
### Added
- Initial release (Claude Code, 2025-01-05)
- **Context:** [PRD](tasks/0000-prd-mvp.md)
- User authentication
- Message board functionality
- File uploads
---
*Changelog initialized 2025-01-05*---
Bulk Update Example
Input (from git log)
feat(auth): add OAuth2 support
fix(api): handle rate limit errors
refactor(db): migrate to Prisma
docs: update READMEGenerated Entries
### Added
- OAuth2 support (Claude Code, 2025-01-16)
- **Context:** Auto-generated from git history
### Fixed
- Rate limit error handling in API (Claude Code, 2025-01-16)
- **Context:** Auto-generated from git history
### Changed
- Migrated to Prisma ORM (Claude Code, 2025-01-16)
- **Context:** Auto-generated from git history
### Documentation
- Updated README (Claude Code, 2025-01-16)---
Version Release Example
Before Release
## [Unreleased]
### Added
- Feature A
- Feature B
### Fixed
- Bug XAfter Release (v1.2.0)
## [Unreleased]
### Added
### Fixed
### Changed
### Deprecated
### Removed
### Security
---
## [1.2.0] - 2025-01-16
### Added
- Feature A (Claude Code, 2025-01-15)
- Feature B (Gemini CLI, 2025-01-14)
### Fixed
- Bug X (Claude Code, 2025-01-13)
---
## [1.1.0] - 2025-01-10
...---
Commit Messages
Manual Entry
git commit -m "docs(changelog): add entry for user profile editing
Added by Claude Code
"Auto Entry (from PR)
git commit -m "docs(changelog): update for PR #42
Added by Claude Code
Context: PRD tasks/0001-prd-user-profile.md | Task 1.2
"Version Release
git commit -m "docs(changelog): release v1.2.0"
git tag v1.2.0---
Integration with Other Skills
Called by pr-review-loop (Auto)
# After PR merge
changelog-manager --auto \
--type "Added" \
--description "User authentication with OAuth2" \
--pr 42Called by task-processor-auto (Auto)
# After parent task complete
changelog-manager --auto \
--type "Added" \
--description "Real-time notifications" \
--prd "tasks/0003-prd-notifications.md" \
--task "2.1"Manual Invocation
# User runs command
/changelog-manager---
Search and Query Patterns
Find all changes by AI system
grep "Claude Code" CHANGELOG.md
grep "Gemini CLI" CHANGELOG.mdFind changes related to a PRD
grep "tasks/0001-prd-auth.md" CHANGELOG.mdFind changes from a specific month
grep "2025-01" CHANGELOG.mdFind all security patches
sed -n '/### Security/,/###/p' CHANGELOG.md