Module 7: Release Notes¶
The Release Notes module drafts GitHub release notes from repository evidence. It reads merged pull requests, direct commits, labels, changed files, and the previous release range, then asks the configured LLM to classify and summarize the changes.
RepoKeeper only creates or updates a draft release. It does not publish the
release, move tags, bump package versions, or edit CHANGELOG.md.
How It Works¶
- Finds the latest published release, unless
--baseis provided. - Compares
base...targetto collect changed commits and files. - Searches merged pull requests since the previous release date.
- Keeps direct commits as first-class release evidence.
- Generates grouped markdown release notes with source references.
- Creates or updates a matching GitHub draft release.
CLI¶
# Create or update a draft release using the latest published release as base
repokeeper release --repo owner/repo
# Preview without writing a GitHub draft release
repokeeper release --repo owner/repo --dry-run
# Override the range and target draft tag
repokeeper release --repo owner/repo --base v1.4.0 --target main --tag v1.4.1
GitHub Actions¶
Use the bundled release.yml workflow or call the root action directly:
- uses: shenxianpeng/repokeeper@v1
with:
module: release
repo: ${{ github.repository }}
llm_api_key: ${{ secrets.DEEPSEEK_API_KEY }}
github_token: ${{ secrets.REPOKEEPER_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
The workflow needs:
Configuration¶
Add a release section to repokeeper.yml:
release:
enabled: true
model: null
temperature: 0.1
audience: users and maintainers
categories:
- Breaking Changes
- Features
- Fixes
- Documentation
- Maintenance
include_prereleases: false
prerelease: false
| Setting | Default | Description |
|---|---|---|
enabled |
true |
Enable release note drafting |
model |
null |
Per-module model, or inherit agent.model |
temperature |
0.1 |
LLM temperature |
audience |
users and maintainers |
Who the notes should be written for |
categories |
see example | Preferred section order |
include_prereleases |
false |
Consider prereleases when finding the previous release |
prerelease |
false |
Mark the draft release as a prerelease |
Boundary¶
This module is intentionally narrower than a release manager:
- It drafts notes; it does not publish.
- It suggests a next patch tag by default; it does not move tags.
- It uses labels as hints; it does not require labels to be correct.
- It includes direct commits instead of assuming every change came from a PR.