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.

Basic Use

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.2.tar.gz (10.0 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.2-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: releaseguru-0.1.2.tar.gz
  • Upload date:
  • Size: 10.0 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.2.tar.gz
Algorithm Hash digest
SHA256 42f83a51b9b9d83cc4f7215bb5183103423791fa6cda34086910852c208de0b8
MD5 fa17af76b5cc56e8fd382b8ccd27aa49
BLAKE2b-256 651f00abd58595930d9ad71aca2823948571ede28739375c387723cbd4874d2c

See more details on using hashes here.

Provenance

The following attestation bundles were made for releaseguru-0.1.2.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.2-py3-none-any.whl.

File metadata

  • Download URL: releaseguru-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 9.6 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 54ecf6aeb04da82f31bd079ca7a3f01189967d862d1b80d88c07fa10ffcf34e4
MD5 f91cd1f0d3e38c2386b0736d048ff61f
BLAKE2b-256 63a2c6305e635d26c109758b4cd5f4513ef04e09b1f7972f64fde24aeceecc4a

See more details on using hashes here.

Provenance

The following attestation bundles were made for releaseguru-0.1.2-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