Skip to main content

AI release assistant CLI for git repositories.

Project description

ReleaseGuru

ReleaseGuru is an AI release assistant CLI for git repositories.

Main feature: turn commit history into a release plan that tells the team what changed, what matters, what to test, and what can be published.

Secondary helpers: version bumping, release notes, GitHub Releases, JSON output, and GitHub Actions outputs.

Features

  • AI release brief from git commits
  • Release summary, highlights, risks, checks, and user-facing notes
  • SemVer recommendation: major, minor, or patch
  • Auto-version from latest git tag
  • Manual version override
  • Markdown or JSON output
  • Notes-only mode for GitHub release bodies
  • Dry-run mode for CI and review
  • GitHub Release publish
  • Draft and prerelease publish modes
  • GitHub repo override with --github-repo
  • Optional tag creation and push
  • GitHub Actions output support with --ci-output
  • Multi-provider support: Groq, Gemini, OpenAI, Anthropic, xAI

Install

After PyPI publish:

pipx install releaseguru

Or:

pip install releaseguru

During local development:

cd ReleaseGuru
python -m venv venv
pip install -e .
cp .env.example .env

Add one AI provider key to .env.

GROQ_API_KEY=
OPENAI_API_KEY=
ANTHROPIC_API_KEY=
GEMINI_API_KEY=
XAI_API_KEY=
GITHUB_TOKEN=

GITHUB_TOKEN is only needed when publishing.

For one global key across all repos, create %USERPROFILE%\.releaseguru.env and put your provider key there. ReleaseGuru loads that file automatically.

Basic Use

Example Output

ReleaseGuru dry-run example

Generate release plan:

releaseguru

Use custom range:

releaseguru --from v1.2.0 --to HEAD

Save to file:

releaseguru --output RELEASE.md

Generate JSON for automation:

releaseguru --format json --output release.json

Only print release notes:

releaseguru --notes-only

Dry run publish flow:

releaseguru --publish --dry-run --github-repo owner/repo

Publish full release:

releaseguru --publish

Publish only notes body:

releaseguru --publish --notes-only

Publish draft:

releaseguru --publish --draft

Publish prerelease:

releaseguru --publish --prerelease

Publish without creating/pushing a local tag:

releaseguru --publish --skip-tag

GitHub Actions

Use this when you want manual release from Actions.

name: ReleaseGuru

on:
  workflow_dispatch:

permissions:
  contents: write

jobs:
  release:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - uses: actions/setup-python@v5
        with:
          python-version: "3.11"

      - name: Install ReleaseGuru
        run: pip install releaseguru
      - name: Create release
        id: releaseguru
        env:
          GROQ_API_KEY: ${{ secrets.GROQ_API_KEY }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: releaseguru --publish --notes-only --ci-output

      - name: Show result
        run: |
          echo "Version: ${{ steps.releaseguru.outputs.version }}"
          echo "Bump: ${{ steps.releaseguru.outputs.bump_type }}"
          echo "URL: ${{ steps.releaseguru.outputs.release_url }}"

For review before publishing:

- name: Preview release
  env:
    GROQ_API_KEY: ${{ secrets.GROQ_API_KEY }}
  run: releaseguru --dry-run --format json --output release.json

Testing

Syntax check:

python -m py_compile releaseguru/cli.py releaseguru/providers.py

Unit tests:

python -m unittest discover -s tests

CLI dry run with mocked AI response:

releaseguru --mock-response tests/fixtures/ai_response.txt --dry-run

Real AI test:

releaseguru --provider groq --dry-run

Real GitHub publish test:

releaseguru --provider groq --publish --draft

Use --draft first so you can inspect the release before making it public.

Release Ways

  • Local preview: releaseguru --dry-run
  • Local file: releaseguru --output RELEASE.md
  • CI preview: releaseguru --format json --ci-output
  • GitHub draft: releaseguru --publish --draft
  • GitHub prerelease: releaseguru --publish --prerelease
  • GitHub stable release: releaseguru --publish
  • Notes-only release body: releaseguru --publish --notes-only
  • Existing tag release: releaseguru --publish --skip-tag --version v1.2.3
  • Manual version release: releaseguru --version v2.0.0 --publish

Provider Defaults

Provider Option Default model
Groq --provider groq llama-3.3-70b-versatile
Gemini --provider gemini gemini-1.5-flash
OpenAI --provider openai gpt-4o-mini
Anthropic --provider anthropic claude-3-5-haiku-20241022
xAI --provider xai grok-3-mini

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

releaseguru-0.1.6.tar.gz (101.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

releaseguru-0.1.6-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

File details

Details for the file releaseguru-0.1.6.tar.gz.

File metadata

  • Download URL: releaseguru-0.1.6.tar.gz
  • Upload date:
  • Size: 101.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for releaseguru-0.1.6.tar.gz
Algorithm Hash digest
SHA256 508da97214655ab32c853fb6d6bebc0df6b37830998a761915b763b0727bd03d
MD5 538d2849b0688cd5a172a3ed8d7cef84
BLAKE2b-256 4d634aa894a8a4fad4924615f215d76f096b57448bc362e51fff59497d2f3833

See more details on using hashes here.

Provenance

The following attestation bundles were made for releaseguru-0.1.6.tar.gz:

Publisher: publish-pypi.yml on ArhamAzeem/ReleaseGuru

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file releaseguru-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: releaseguru-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 9.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for releaseguru-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 097ad583655738ed1230dd1a704dbd09d4b7f9607b08099d23f801b607b1af15
MD5 fa2896e2300962a7d4b3663830478b65
BLAKE2b-256 3a78d3f09d0e50ab8b0b392fdaa4170d0a3952d63fdb0cf72ec24c61dea02b96

See more details on using hashes here.

Provenance

The following attestation bundles were made for releaseguru-0.1.6-py3-none-any.whl:

Publisher: publish-pypi.yml on ArhamAzeem/ReleaseGuru

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page