Skip to content

Plugin: Release Notes Generator #97

@neubig

Description

@neubig

Summary

Create a release notes generator plugin that produces consistent, well-structured release notes across OpenHands repositories. This plugin can be triggered via GitHub Actions on new release tags following semver patterns (e.g., v*.*.*).

Background

From the Product+App+Agent Coordination Meeting (2026-03-06): Current release notes are inconsistent across repositories—some are too detailed (Software Agent SDK) while others lack sufficient detail (OpenHands). We need a standardized approach.

What Makes Good Release Notes

Principles

  • Concise but informative: Not too verbose, but enough context for users to understand impact. In particular, the agent should omit small changes that are not worth mentioning, and group together multiple changes that form a single coherent feature or fix.
  • User-focused: Written from the perspective of what users care about, not internal implementation details
  • Scannable: Easy to quickly find relevant changes

Structure

Release notes should include these clearly categorized sections:

## [version] - YYYY-MM-DD

### ✨ New Features
- New capabilities and enhancements

### ⚠️ Breaking Changes
- Changes that require user action or may break existing workflows

### 🐛 Bug Fixes
- Issues that have been resolved

### 📚 Documentation
- Documentation improvements (optional, can be collapsed)

### 🏗️ Internal/Infrastructure
- CI/CD, refactoring, dependencies (optional, can be collapsed or omitted)

### 👥 New Contributors
- Highlight first-time contributors with links to their profiles

Content Guidelines

  • Each entry should be a single line with a link to the PR/commit
  • Group related changes together
  • Use imperative mood ("Add feature" not "Added feature")
  • Include PR number and author: Add dark mode support (#123) @username
  • For breaking changes, briefly explain migration path

Implementation Requirements

Trigger

  • GitHub Action workflow triggered on release tags matching semver pattern: v[0-9]+.[0-9]+.[0-9]+*
  • Can also support manual triggering with tag input

Inputs

  • tag: The release tag to generate notes for
  • previous_tag: (optional) Override automatic detection of previous release
  • include_internal: (optional, default: false) Include internal/infrastructure changes

Behavior

  1. Detect previous release tag automatically (or use provided override)
  2. Collect all commits/PRs between previous tag and current tag
  3. Categorize changes based on:
    • Conventional commit prefixes (feat:, fix:, docs:, chore:, BREAKING:)
    • PR labels (e.g., breaking-change, bug, enhancement, documentation)
  4. Identify first-time contributors by checking commit history
  5. Generate markdown following the structure above
  6. Output can be used to update GitHub release notes or a CHANGELOG.md file

Example Output

## [v1.2.0] - 2026-03-06

### ✨ New Features  
- Add support for Claude Sonnet 4.6 model (#445) @contributor1
- Implement parallel tool execution (#438) @contributor2

### ⚠️ Breaking Changes
- Remove deprecated `--legacy` CLI flag (#456) @maintainer

### 🐛 Bug Fixes
- Fix WebSocket reconnection on network interruption (#451) @contributor3
- Resolve memory leak in long-running sessions (#447) @maintainer

### 👥 New Contributors
- @contributor3 made their first contribution in #451

**Full Changelog**: https://github.com/org/repo/compare/v1.1.0...v1.2.0

References

  • Discussed in: Product+App+Agent Coordination Meeting (2026-03-06)
  • Linear ticket: AGE-859 (will be marked as duplicate of this issue)
  • Similar implementations: release-drafter, git-cliff

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions