| name | relote |
| description | Generate Keep-A-Changelog release notes from git history and wsp-opt/wsp-sync outputs. The trigger is changelog, release notes, relote. |
| metadata | {"author":"EdwardJoke","version":"26.2.0"} |
relote - Release Notes Generator
Generate a Keep-A-Changelog formatted changelog by aggregating wsp-opt release notes, wsp-sync sync reports, and git history for the latest tag.
Prerequisite: wasup Structure
Ensure these directories exist (create if missing):
mkdir -p .wasup/changelogs
mkdir -p .wasup/tags
Phase 1: Discover
1.1 Find the Latest Tag
git describe --tags --abbrev=0 2>/dev/null || echo "No tags found"
If no tags exist, ask the user: "No git tags found. What version should the changelog be for? (e.g., v1.0.0)"
1.2 Get Previous Tag (for diff)
git describe --tags --abbrev=0 HEAD~1 2>/dev/null || echo "Initial release"
1.3 Read wsp-opt Output
Check for release notes from wsp-opt Phase 5:
ls .wasup/tags/*.md 2>/dev/null | sort -V | tail -1
Read the most recent tag file (e.g., .wasup/tags/v0.1.0.md). This contains:
- What's New
- Completed Tasks (with Must/Should have markers)
- Bug Fixes
- PRs
- Known Issues
1.4 Read wsp-sync Output
Check for sync reports:
ls .wasup/sync/*.md 2>/dev/null | sort -V | tail -1
Read the most recent sync report (e.g., .wasup/sync/v0.1.0.md). This contains:
- Files Updated
- Changes Summary
- What was synced
1.5 Get Git Commit History
if [ -n "$PREV_TAG" ]; then
git log --oneline --no-merges $PREV_TAG..HEAD
else
git log --oneline --no-merges
fi
Also get detailed commit info:
git log --pretty=format:"%h|%s|%b" --no-merges ${PREV_TAG}..HEAD 2>/dev/null
Phase 2: Aggregate
2.1 Parse wsp-opt Release Notes
Extract from .wasup/tags/vx.y.z.md:
- What's New →
## Added
- Completed Tasks → Categorize by type (feat, fix, chore)
- Bug Fixed →
## Fixed
- PRs → Reference in relevant sections
2.2 Parse wsp-sync Report
Extract from .wasup/sync/vx.y.z.md:
- Files Updated →
## Changed (documentation updates)
- Changes Summary → Distribute to appropriate sections
2.3 Categorize Git Commits
Map conventional commit types to Keep-A-Changelog sections:
feat: → ## Added
fix: → ## Fixed
perf: → ## Changed (performance improvements)
refactor: → ## Changed
docs: → ## Changed (documentation)
style: → Skip (cosmetic changes)
test: → Skip (test-only changes, unless user wants them)
chore: → ## Chores (optional section)
build:, ci: → Skip (infrastructure)
2.4 Merge and Deduplicate
Combine information from all three sources:
- wsp-opt gives high-level "what" (features, tasks)
- wsp-sync gives documentation changes
- git log gives commit-level details
Remove duplicates (same change mentioned in multiple sources).
Phase 3: Generate Changelog
3.1 Create Changelog File
Determine version from tag:
VERSION=$(git describe --tags --abbrev=0)
mkdir -p .wasup/changelogs
Write to .wasup/changelogs/${VERSION}.md
3.2 Follow Keep-A-Changelog Format
Use this template:
<!--- Generated by Relote --->
# 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/).
## [vx.y.z] - YYYY-MM-DD
### Added
- Feature description (#PR-number)
### Changed
- Documentation updated / performance improvements
### Fixed
- Bug description (#PR-number)
### Chores (optional)
- Build system / dependency updates
3.3 Populate Sections
| Section | Sources |
|---|
| Added | wsp-opt "What's New", git feat: commits |
| Changed | wsp-sync "Files Updated", git refactor:/perf: commits |
| Fixed | wsp-opt "Bug Fixed", git fix: commits |
| Removed | Features removed this version |
| Security | Security fixes |
Include PR link format: [#123](https://github.com/org/repo/pull/123)
3.4 Add Metadata
<!-- Generated by relote skill. Sources: wsp-opt, wsp-sync, git log -->
3.5 Compare with Previous Changelog
If a previous changelog exists in .wasup/changelogs/, read it to:
- Ensure no sections are missing
- Check that version ordering is correct
- Verify format consistency
Output
The final changelog is saved to:
.wasup/changelogs/vx.y.z.md
Present to user:
"Changelog generated at .wasup/changelogs/vx.y.z.md. I've aggregated data from wsp-opt release notes, wsp-sync reports, and git history. Here's what's included: [brief summary of sections]"
Important Notes
- Keep-A-Changelog format - Follow the spec exactly (Added, Changed, Fixed, etc.)
- Semantic versioning - Version numbers should follow semver (vx.y.z)
- Deduplication - Same change may appear in wsp-opt, wsp-sync, and git log - include only once
- PR links - Include PR references when available from wsp-opt or git log
- Date format - Use ISO 8601 (YYYY-MM-DD)
- No empty sections - Only include sections that have content
Example Output
<!---
Generated by: Relote
Source: git log, ...
Date: YY/MM/DD
Version: vx.y.z
---->
# 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).
## [v0.1.0] - 2026-05-05
### Added
- User authentication with JWT tokens (M1 from wsp-opt)
- Password reset functionality (S1 from wsp-opt)
- New `/api/auth/reset` endpoint (#12)
### Changed
- Updated API documentation in `docs/API.md` (from wsp-sync v0.1.0)
- Refactored auth middleware for better performance
### Fixed
- Login page now handles expired tokens correctly (Bug1 from wsp-opt)
- Password reset email delivery issue (#15)
_Generated by Relote_