Back to the catalog

release-notes-generator

A Gemini CLI extension that generates structured, audience-specific release notes from git history.

Open source Open in the app JSON README (API)

About

A Gemini CLI extension that generates structured, audience-specific release notes from git history.

Details

Kind
Plugins
Topic
AI, RAG & memory
Publisher
rajavijayach
Origin
gemini
Category
ferramentas
Version
1.0.0
Last push
2026-02-20T05:37:54Z
Repository state
ativo
Language
TypeScript
Added
2026-08-30 14:13:39
Updated
2026-08-30 14:13:39
Origin id
rajavijayach/release-notes-generator

README

# Release Notes Generator — Gemini CLI Extension

A Gemini CLI extension that automatically generates structured, high-quality release notes from git history. Built for founders and product teams who ship frequently.

---

## Features

- 🔍 **Automatic commit extraction** from any git range
- 🏷 **Smart classification** using conventional commits + heuristics (added / fixed / changed / removed / refactored / breaking)
- 🧹 **Deduplication** removes low-signal and repeated messages
- 📦 **Four output modes** for different audiences
- 🎯 **Marketing angles** for framing release copy
- 🔢 **Semantic version suggestions** (major / minor / patch)
- 💾 **File output** writes a ready-to-ship markdown file

---

## 📋 Prerequisites

Before installing the Release Notes Generator, ensure you have:

1. **Gemini CLI** installed and configured
   - [Installation guide](https://github.com/google-gemini/gemini-cli)
   - Verify with: `gemini --version`

2. **Node.js 18+** and npm
   - Check your version: `node --version`
   - Download from [nodejs.org](https://nodejs.org)

3. **Git repository** with commit history
   - The extension works on any git repository
   - Tags are recommended for version-based releases

4. **Optional API tokens** (for enhanced features)
   - `GITHUB_TOKEN` — Fetch PR titles from GitHub
   - `JIRA_TOKEN` & `JIRA_BASE_URL` — Fetch Jira ticket details

---

## 🚀 Installation

### Option 1: Install from GitHub (Recommended)

```bash
# Install the extension
gemini extensions install https://github.com/rajavijayach/release-notes-generator

# Restart Gemini CLI to activate
# Press Ctrl+C to exit, then restart your session
```

### Option 2: Local Development Setup

For local development or customization:

```bash
# Clone the repository
git clone https://github.com/rajavijayach/release-notes-generator.git
cd release-notes-generator

# Install dependencies and build
npm install
npm run build

# Link to Gemini CLI
gemini extensions link .

# Restart Gemini CLI to activate
```

### Verify Installation

After restarting Gemini CLI, verify the extension is loaded:

```bash
# The /release:notes command should be available
# Try: /release:notes

# Or ask naturally:
# "List available extensions"
```

---

## ✅ Activation

After installation, **restart your Gemini CLI session** to activate the extension.

### What's Available

Once activated, you'll have access to:

- **`/release:notes`** command — Quick release notes generation
- **Natural language interface** — Ask for release notes conversationally
- **Four specialized tools** — For programmatic access

### Quick Test

Navigate to a git repository and try:

```bash
# Using the custom command
/release:notes

# Or natural language
"Generate release notes for the latest changes"
```

If the command isn't recognized, ensure you've restarted Gemini CLI after installation.

---

## 💡 Usage

The extension offers multiple ways to generate release notes, from quick commands to detailed natural language requests.

### 🎯 Quick Command (Fastest)

```bash
# Generate notes since the last tag
/release:notes

# Generate notes since a specific tag
/release:notes v1.5

# Generate notes since a commit
/release:notes abc123f
```

### 🗣 Natural Language (Recommended)

Ask naturally and specify your needs:

```bash
# Quick release with auto-detection
"Generate release notes since the last tag"

# Specific version range
"What changed between v1.5 and v1.6?"

# Output mode selection
"Generate release notes since v2.0 in store mode"
"I need internal engineering notes for the latest release"
"Write marketing release notes with a trust angle for v3.0"

# Save to file
"Generate release notes since v1.8 and save to RELEASE.md"
"Create marketing notes for v2.0 and write to file"
```

### 📊 Common Scenarios

**Before tagging a new release:**
```bash
"What commits do we have since v1.2? Should this be a major, minor, or patch?"
"Show me commit stats since the last tag"
```

**For app store updates:**
```bash
"Generate release notes in store mode since v2.1"
```

**For internal team communication:**
```bash
"Generate internal release notes with full technical details"
```

**For marketing announcements:**
```bash
"Write marketing release notes with a growth angle"
"Create release highlights focusing on performance improvements"
```

### 🔧 Available Tools

The Gemini model can call these tools directly when you use natural language:

| Tool | Purpose |
|------|---------|
| `generate_release_notes` | Full pipeline: extract → classify → format |
| `list_git_tags` | Show all tags in repo (helps choose a starting point) |
| `get_commit_stats` | Commit breakdown + suggested version bump |
| `write_release_notes_file` | Generate and save to markdown file |

---

## 📦 Output Modes

Choose the right format for your audience. All modes include the suggested semantic version bump.

### `default` — Developer-Friendly

```markdown
## v1.7

- Added configurable focus window
- Fixed session expiration bug
- Performance improvements
```

### `store` — App Store Ready

```markdown
## What's New in v1.7

**🆕 New features**
• New configurable focus windows

**🛠 Fixes & reliability**
• Improved reliability for session locking
```

### `internal` — Engineering Detail

```markdown
## Internal Release Notes — v1.7

### Added
- Focus duration options (10, 15, 30)

### Fixed
- Race condition in relock logic
```

### `marketing` — Outcome-Driven

```markdown
## v1.7 — Release Highlights

- Strengthened session validation logic
- Improved reliability of access expiration
```

---

## 📖 Examples

### Example 1: Quick Hotfix Release

**Scenario:** You fixed a critical bug and need to ship patch release notes quickly.

```bash
# Check what changed
"What commits do we have since v2.1.3?"

# Generate patch notes
/release:notes v2.1.3
```

**Output (default mode):**
```markdown
## v2.1.4

### Fixed
- Fixed critical authentication timeout bug
- Resolved memory leak in session handler

**Suggested version bump:** patch
```

---

### Example 2: Feature Release for App Store

**Scenario:** New features ready for App Store submission. Need user-friendly copy.

```bash
"Generate release notes in store mode since v2.0"
```

**Output (store mode):**
```markdown
## What's New in v2.1

**🆕 New Features**
• Dark mode support across the entire app
• Export data to CSV and JSON formats
• Customizable notification preferences

**🛠 Improvements & Fixes**
• Faster app launch time
• More reliable cloud sync
• Fixed crash when viewing large datasets

**Suggested version bump:** minor
```

---

### Example 3: Internal Engineering Notes

**Scenario:** Team standup tomorrow. Need detailed technical notes for engineering.

```bash
"Generate internal release notes since v3.0 with full details"
```

**Output (internal mode):**
```markdown
## Internal Release Notes — v3.1

### Added
- OAuth2 integration with refresh token support
- Redis caching layer for API responses
- Comprehensive logging with structured JSON output
- Feature flags for gradual rollout control

### Changed
- Migrated from REST to GraphQL for user endpoints
- Updated dependencies: React 18.2 → 18.3, TypeScript 5.0 → 5.3
- Refactored authentication middleware for better testability

### Fixed
- Race condition in concurrent user sessions
- SQL injection vulnerability in search queries (CVE-2024-XXXX)
- Memory leak in WebSocket connection pool

### Breaking Changes
⚠️ API v2 endpoints removed (deprecated in v2.8)
⚠️ Changed response format for /api/users endpoint

**Suggested version bump:** major (breaking changes detected)
```

---

### Example 4: Marketing Release Highlights

**Scenario:** Product launch announcement for newsletter and social media.

```bash
"Write marketing release notes with a trust angle for v4.0"
```

**Output (marketing mode with trust angle):**
```markdown
## v4.0 — Release Highlights

**Built for Security & Reliability**

We've strengthened the foundation of our platform with enterprise-grade security:

- End-to-end encryption for all data transmission
- SOC 2 Type II compliant infrastructure
- 99.9% uptime SLA with automatic failover
- Comprehensive audit logging for compliance teams

**Trust-First Features**

- Two-factor authentication now mandatory for admin accounts
- Granular permission controls for team management
- Automated security scanning for uploaded files
- Real-time breach detection and alerts

Every feature in this release was designed with your data security in mind.

**Suggested version bump:** major
```

---

### Example 5: Checking Version Bump Before Tagging

**Scenario:** Commits ready, but unsure whether this should be major, minor, or patch.

```bash
"Show me commit stats since v1.8 and suggest the version bump"
```

**Output:**
```
Commit Stats (since v1.8.0):

📊 Total commits: 23

🏷 By category:
  - Added: 5 commits (new features)
  - Fixed: 12 commits (bug fixes)
  - Changed: 4 commits (modifications)
  - Breaking: 0 commits

💡 Suggested version bump: minor

Reasoning: New features detected (5 added), but no breaking changes.
Next version should be: v1.9.0
```

---

## 🔢 Semantic Version Bumping

The extension automatically suggests version bumps based on commit analysis:

| Commits contain | Suggested bump |
|----------------|----------------|
| Breaking changes | **major** |
| New features | **minor** |
| Bug fixes only | **patch** |

---

## ⚙️ Configuration

Enhance the extension with optional API integrations for richer release notes.

### Environment Variables

### Environment Variables

Set these via your shell profile or the Gemini CLI settings UI:

| Variable | Purpose |
|----------|---------|
| `GITHUB_TOKEN` | Fetch PR titles and descriptions from GitHub |
| `JIRA_TOKEN` | Fetch Jira ticket details for commit references |
| `JIRA_BASE_URL` | Your Jira instance URL (e.g., `https://yourcompany.atlassian.net`) |

**Example setup:**
```bash
export GITHUB_TOKEN="ghp_your_token_here"
export JIRA_BASE_URL="https://yourcompany.atlassian.net"
export JIRA_TOKEN="your_jira_token_here"
```

---

## 🛠 Development

Want to customize or contribute? Here's how to set up a local development environment.

### Build Commands

### Build Commands

```bash
npm install          # Install dependencies
npm run build        # Compile TypeScript to dist/
npm run dev          # Watch mode for active development
npm run clean        # Remove compiled output

gemini extensions link .   # Link for testing in Gemini CLI
```

### Development Workflow

1. Make changes in `src/` or `commands/`
2. Run `npm run dev` for automatic rebuilds
3. Restart Gemini CLI to test changes
4. Run `npm run build` before committing

---

## Project Structure

```
release-notes-generator/
├── gemini-extension.json       # Extension manifest
├── GEMINI.md                   # Persistent model context
├── package.json
├── tsconfig.json
├── src/
│   └── index.ts                # MCP server (all tools)
├── commands/
│   └── release/
│       └── notes.toml          # /release:notes command
├── skills/
│   └── release-notes/
│       └── SKILL.md            # Agent skill
└── dist/                       # Compiled output (after npm run build)
```

---

## 🔧 Troubleshooting

### Extension Not Found

**Problem:** `/release:notes` command not recognized after installation.

**Solution:**
1. Ensure you restarted Gemini CLI after installation
2. Verify extension is installed: `gemini extensions list`
3. Check extension directory exists: `~/.gemini/extensions/release-notes-generator/`

---

### No Commits Found

**Problem:** "No commits found since [tag]"

**Solution:**
- Verify you're in a git repository: `git status`
- Check the tag exists: `git tag -l`
- Ensure there are commits after the specified tag: `git log v1.0..HEAD`
- Try omitting the tag to use the last tag automatically

---

### Commands Not Recognized

**Problem:** Natural language requests aren't triggering the extension.

**Solution:**
- Be explicit: "Generate release notes using the release notes generator"
- Use the `/release:notes` command directly
- Ensure you're in a directory with git history

---

### Version Bump Confusion

**Problem:** Suggested version bump doesn't match expectations.

**Solution:**
- Use conventional commits for accurate classification (`feat:`, `fix:`, `BREAKING CHANGE:`)
- Check commit stats: "Show me commit stats since v1.0"
- The suggestion is based on detected changes:
  - **major**: Breaking changes found
  - **minor**: New features, no breaking changes
  - **patch**: Bug fixes only

---

### Build Errors (Local Development)

**Problem:** `npm run build` fails with TypeScript errors.

**Solution:**
```bash
# Clean and rebuild
npm run clean
rm -rf node_modules package-lock.json
npm install
npm run build
```

Ensure Node.js 18+ is installed: `node --version`

---

## License

Apache-2.0

More