| name | description |
|---|---|
release-changelog-demo |
Generate a structured release changelog between two git tags, optionally enriched with issue tracker (e.g. Jira) and feature-flag (e.g. GrowthBook) data. Use when the user asks for a changelog, release notes, or diff between two release tags. |
Generate a changelog between two git tags. Optionally enrich with data from an issue tracker and a feature-flag service, and format for internal distribution (e.g. Slack, docs).
The user provides:
$PREVIOUS_TAG— previous production (or baseline) tag$NEXT_TAG— tag just released (or target)- (Optional) Repo list and base URLs for commit links
Run git log for each tracked repo, for example:
git log $PREVIOUS_TAG..$NEXT_TAG --no-mergesUse your own VCS base URL for commit links (e.g. https://gitlab.com/org/repo/-/commit/ or https://github.com/org/repo/commit/).
git log $PREVIOUS_TAG..$NEXT_TAG --format="%H|%s|%an|%ad" --no-merges --date=shortOptionally include reverts and cherry-picks:
git log $PREVIOUS_TAG..$NEXT_TAG --no-merges --grep="Revert" --grep="cherry" --format="%H|%s|%an"- Configure your instance (e.g. Jira Cloud ID or API base URL).
- Extract unique ticket keys from commit subjects (e.g.
[A-Z]+-\d+). - Batch-query tickets (e.g. JQL:
key in (TICKET1, TICKET2, ...)). - Fetch fields such as:
summary,status,issuetype,priority.
- Configure your project (e.g. GrowthBook project ID).
- Fetch recent feature flags (e.g. limit 100, most recent first).
- Match flags to the release by keyword search on flag
idanddescription(ticket keys are often not stored verbatim). - For each matched flag, inspect production environment:
- DISABLED —
enabled: false - Enabled but default off —
enabled: true, no/disabled rules,defaultValue: "false" - Partially enabled — rules with conditions (user IDs, segments, etc.)
- Enabled for everyone —
enabled: truewith rules forcingtruefor all ordefaultValue: "true"
- DISABLED —
Maximize parallelism:
- Parallel: Git log for all repos + feature-flag list fetch.
- Sequential: Extract ticket keys from git logs and deduplicate.
- Parallel: Issue-tracker batch queries + per-flag detail lookups (e.g. max 4 concurrent).
- Sequential: Compile and write the changelog file.
- With ticket:
[TICKET-123](<your-issue-tracker-url>/TICKET-123) - description - No ticket:
**NOJIRA**(or**NO-TICKET**)- description - Support your project key pattern (e.g.
PROJ-123,TEAM-456).
Write to: CHANGELOG_$PREVIOUS_TAG--$NEXT_TAG.md (or append _slack.md if you have a Slack-specific variant).
# Changelog: `$PREVIOUS_TAG` → `$NEXT_TAG`
**Date:** YYYY-MM-DD
**Previous tag:** `$PREVIOUS_TAG`
**Released tag:** `$NEXT_TAG`
**Repos:** list repos that had changes
---
## Reverts & Cherry-picks
*(Only if any exist)*
Table of reverts/cherry-picks with commit and original commit if identifiable.
## New Features
Group by theme. Each group:
- Bulleted ticket links with descriptions
- **Feature flag:** flag name, production status, link to flag (if applicable)
## Risky Changes (Requires Monitoring)
Table: Ticket | Risk Type | Details
Risk types (customize to your product): e.g. DATA MIGRATION, AUTH, PERMISSIONS, LOGGING/PRIVACY, INFRASTRUCTURE, PAYMENT, REALTIME
## Fixes & Improvements
Brief bullets
## Tests & CI
Bullet list
## Other
Chore, tooling, commits without ticket
## Feature Flag Summary
Table: Flag | Related Tickets | Prod Status (with links if applicable)
## Top-N Contributors
Table: Author | Commits | Areas
Sorted by commit count descending.
---
**Total commits:** N (breakdown by repo if multiple)
**Focus areas:** 1–2 lines summarizing main themes
## Raw Commit Links
Grouped by repo, with your VCS base URL
## Raw Ticket Links
Deduplicated, sorted by project then numberBefore writing:
- Verify ticket keys resolve in the issue tracker (warn on 404).
- List commits without a ticket key under "Other".
- Ensure all linked feature flags and tickets are valid.