GE

generate-release-notes

Generates release notes by analyzing git commit history and GitHub pull requests for Bit version releases.

Install

mkdir -p .claude/skills/generate-release-notes && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/1773" && unzip -o skill.zip -d .claude/skills/generate-release-notes && rm skill.zip

Installs to .claude/skills/generate-release-notes

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Generate comprehensive release notes for Bit from git commits and pull requests. Use when creating release notes, building changelogs, documenting version releases, or preparing a new Bit release.
196 chars✓ has a “when” trigger
Intermediate

Key capabilities

  • Compare git commits between release tags
  • Filter commits based on predefined rules
  • Save intermediate commit data to markdown
  • Format GitHub API output into changelogs

How it works

It performs a multi-step fetch of git commit history via GitHub API, filters the data through shell operations, and saves the result in a temp folder.

Inputs & outputs

You give it
Release tag and commit range
You get back
Filtered markdown release notes

When to use generate-release-notes

  • Drafting changelogs for a new Bit version
  • Automating release documentation for team review
  • Generating release notes from the latest release tag
  • Organizing raw commit data for release auditing

About this skill

Generate Release Notes for Bit

This skill helps generate release notes for Bit following the established patterns and guidelines.

Important: Intermediate Files

All intermediate steps must be saved to releases-docs/temp-files/ for review. This folder is gitignored.

Required intermediate files:

  1. raw-commits.md - Raw commit data from GitHub API
  2. filtered-commits.md - Two sections: filtered out commits and kept commits

Workflow

Follow these steps to generate release notes:

Step 1: Setup Temp Directory

First, ensure the temp directory exists:

mkdir -p releases-docs/temp-files

Step 2: Determine the Commit Range

  1. Get the latest release tag and commit:

    # Get latest release tag
    gh release view --repo teambit/bit --json tagName -q '.tagName'
    
    # Get the commit SHA for the tag (handles annotated tags)
    TAG="v1.12.158"  # Replace with actual tag
    TAG_REF=$(gh api "repos/teambit/bit/git/refs/tags/$TAG" -q '.object.sha')
    TAG_TYPE=$(gh api "repos/teambit/bit/git/refs/tags/$TAG" -q '.object.type')
    
    if [ "$TAG_TYPE" = "tag" ]; then
        # Annotated tag - get the commit it points to
        RELEASE_COMMIT=$(gh api "repos/teambit/bit/git/tags/$TAG_REF" -q '.object.sha')
    else
        # Lightweight tag - already have the commit
        RELEASE_COMMIT=$TAG_REF
    fi
    
  2. Determine the starting point:

    • If user provides a specific commit hash, use that as FROM_COMMIT
    • If not provided, use HEAD (latest commit on master)

Step 3: Fetch Commits and Save to raw-commits.md

Use the GitHub API to get commits between the release and the starting point:

# Compare commits between release and HEAD (or specific commit)
gh api "repos/teambit/bit/compare/${RELEASE_COMMIT}...${FROM_COMMIT}" \
    --jq '.commits[] | "\(.sha[0:7]) | \(.commit.message | split("\n")[0]) | \(.commit.author.name)"'

Save the output to releases-docs/temp-files/raw-commits.md with the following format:

# Raw Commits

Generated: {DATE}
From: {FROM_COMMIT or HEAD}
To: {RELEASE_TAG} ({RELEASE_COMMIT})
Total commits: {COUNT}

## Commits

| Hash    | Message                      | Author      |
| ------- | ---------------------------- | ----------- |
| abc1234 | feat: add new feature (#123) | Author Name |
| def5678 | fix: resolve bug (#456)      | Author Name |

...

Step 4: Filter Commits and Save to filtered-commits.md

Analyze each commit and categorize into two groups:

FILTER OUT (do not include in release notes):

  • Version bump commits: bump teambit version to X.X.X [skip ci]
  • CI-only changes: commits that only modify CircleCI config
  • Skip CI markers: commits with [skip ci] in the message
  • Auto-merge commits: Merge branch 'X' into master

KEEP (include in release notes):

  • All feature commits (feat:)
  • All fix commits (fix:)
  • All performance commits (perf:)
  • Dependency updates (go in Internal section)
  • Refactoring commits (go in Internal section)

Save to releases-docs/temp-files/filtered-commits.md with the following format:

# Filtered Commits

Generated: {DATE}

## Filtered Out ({COUNT} commits)

These commits are excluded from the release notes:

| Hash    | Message                                   | Reason       |
| ------- | ----------------------------------------- | ------------ |
| abc1234 | bump teambit version to 1.13.5 [skip ci]  | Version bump |
| def5678 | ci, temporarily set tag to increment by 2 | CI change    |

...

## Kept for Release Notes ({COUNT} commits)

These commits will be included in the release notes:

| Hash    | Message                         | Category     |
| ------- | ------------------------------- | ------------ |
| ghi9012 | feat: add new command (#123)    | New Features |
| jkl3456 | fix: resolve issue (#456)       | Bug Fixes    |
| mno7890 | chore(deps): bump lodash (#789) | Internal     |

...

Step 5: Enrich Commit Information

For commits that are merge commits or have unclear messages, fetch PR details:

# Get PR details by number
gh pr view 12345 --repo teambit/bit --json title,body,labels

# Search for PR by commit
gh pr list --repo teambit/bit --search "SHA_HERE" --state merged --json number,title,body

Look for:

  • PR title and description
  • Labels (feat, fix, perf, etc.)
  • Related issues

Step 6: Categorize Changes

Group the KEPT commits into these categories based on content:

CategoryIndicators
New FeaturesNew commands, new major functionality, "Introduce", "feat:" prefix
ImprovementsEnhancements, "Support", "Allow", "Add option", improvements to existing features
Performance"Optimize", "perf:", "Reduce memory", "Speed up", "Improve performance"
Bug Fixes"Fix", "fix:", bug corrections, issue resolutions
InternalDependency updates, refactoring, CI changes, code cleanup, test improvements

Step 7: Write Release Notes

Follow the guidelines in releases-docs/guideline.md:

  1. Section Order: New Features → Improvements → Performance → Bug Fixes → Internal
  2. Only include sections that have content
  3. Format each item:
    • Start with a verb (Fix, Add, Support, Improve, Introduce)
    • Include PR numbers at the end: (#1234) or (#1234, #1235)
    • Use backticks for: commands, flags, file names, config properties
    • Use bold for major feature names

Step 8: Save the Release Notes

Save to releases-docs/releases/ folder:

  • If version provided: releases-docs/releases/v{VERSION}.md
  • If no version: releases-docs/releases/new-release.md

Important: Do NOT include the header metadata (title, tag, draft, etc.) - only the release content starting from the sections.

Example Output Format

### New Features

- New `bit validate` command to run a complete `test`, `lint`, `compile` and `typecheck` for a project (#10022)
- **Bit Scripts** for simple shell commands or function execution for components (#10028)

### Improvements

- `bit recover` command now supports component and glob patterns (#10033)
- Improve error messages in CLI (#10027, #9983)

### Performance

- Don't read and parse the lockfile multiple times for calculating deps graph (#10019)

### Bug Fixes

- Fix an issue where test duration had incorrect format (#9940)
- Fix an issue where `bit new` wasn't resolving a remote env (#9981)

### Internal

- Update dependencies (#10018, #10015, #10006)
- Modernize some legacy code (#10024, #10014)

Output Files Summary

FileLocationPurpose
raw-commits.mdreleases-docs/temp-files/Raw commit data for review
filtered-commits.mdreleases-docs/temp-files/Filtered/kept commits for review
v{VERSION}.md or new-release.mdreleases-docs/releases/Final release notes

Reference Files

  • Guidelines: releases-docs/guideline.md - Detailed formatting and style guidelines
  • Examples: releases-docs/releases/ - Previous release notes for reference patterns

Helper Scripts (Optional)

The releases-docs/scripts/ directory contains shell scripts for manual use:

  • get-release-commits.sh [FROM_COMMIT] [TO_TAG] - Fetches commits between releases
  • filter-commits.sh - Filters out uninteresting commits (pipe input to it)

These scripts are provided for manual/CLI use. When using this skill, Claude uses the gh API commands directly as they work from any directory without needing the local git repository.

Tips

  1. Group related PRs - Multiple PRs for the same feature should be one line item
  2. Be concise - Users scan release notes; keep items short and clear
  3. Focus on user impact - Describe what changed for the user, not implementation details
  4. Check for typos - Common in commit messages; fix them in release notes
  5. Verify PR numbers - Ensure all referenced PRs exist and are correct

When not to use it

  • Manual release note writing
  • Non-git-based release management

Prerequisites

Gh cligit

Limitations

  • Requires strict commit message formatting
  • Must follow the specific directory structure provided

How it compares

It automates the audit trail of releases rather than generating notes from scratch via human input.

Compared to similar skills

generate-release-notes side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
generate-release-notes (this skill)78moReviewIntermediate
release-note-generation52moReviewIntermediate
oss-dist02moReviewAdvanced
icn-shipping06moNo flagsIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

release-note-generation

microsoft

Toolkit for generating PowerToys release notes from GitHub milestone PRs or commit ranges. Use when asked to create release notes, summarize milestone PRs, generate changelog, prepare release documentation, request Copilot reviews for PRs, update README for a new release, manage PR milestones, or collect PRs between commits/tags. Supports PR collection by milestone or commit range, milestone assignment, grouping by label, summarization with external contributor attribution, and README version bumping.

537

oss-dist

epicsagas

Audits and guides OSS project release readiness across the full lifecycle: community standards, README quality, launch strategy, distribution pipeline, and governance/security posture. Activates when reviewing, planning, or shipping an open-source project — at any stage from initial setup to public

00

icn-shipping

InterCooperative-Network

Prepare ICN branches for merge with required checks, doc/spec sync, clean git hygiene, and high-quality PR metadata.

00

migrate-workflow

JetBrains

Migrate a branch's docs/adr/<dir>/_workflow/** artifacts by replaying workflow-format commits from the per-artifact stamp base through HEAD. Resumable across /clear. TRIGGER: branch has stale _workflow/ after a workflow-format change on develop. SKIP: branches with no _workflow/.

00

prepare-changelog

nextest-rs

Guidelines for preparing changelog entries for nextest releases following Keep a Changelog format

689

workthrough

bear2u

Automatically document all development work and code modifications in a structured workthrough format. Use this skill after completing any development task, bug fix, feature implementation, or code refactoring to create comprehensive documentation.

1085

Search skills

Search the agent skills registry