Skip to content

goosewobbler/releasekit

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

455 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

ReleaseKit

License: MIT

Lightweight, composable release tooling for JavaScript and Rust projects. Built on conventional commits and designed for CI/CD pipelines.

Packages

Package Version Description
@releasekit/release npm Unified CLI — run version, notes, and publish in a single command
@releasekit/version npm Semantic versioning based on Git history and conventional commits
@releasekit/notes npm Changelog generation with LLM-powered enhancement and flexible templating
@releasekit/publish npm Publish packages to npm and crates.io with git tagging and GitHub releases
@releasekit/config (internal) Shared config loading and schema validation
@releasekit/core (internal) Shared types and utilities

Features

  • Conventional Commits — automatically derives the next semver bump from commit history
  • Monorepo support — versions packages independently or in sync, with per-package git tags
  • JavaScript + Rust — handles package.json and Cargo.toml side by side
  • CI/CD first — JSON output mode for scriptable pipelines; OIDC or token-based npm publishing
  • PR release previews — posts a comment on PRs showing what would be released if merged
  • Config-driven CI automation — control release triggers (commit vs label) and strategies per repo
  • Changelog generation — auto-generated from conventional commits with flexible templating
  • LLM-enhanced release notes — optional AI summarisation via Anthropic, OpenAI, or local models
  • Composable — use each tool independently or pipe them together

Usage

Unified release (recommended)

# Preview the full release pipeline
releasekit --dry-run

# Run a full release: version, changelog, and publish
releasekit

# Skip changelog generation
releasekit --skip-notes

# Force a patch bump
releasekit --bump patch

Individual steps are also available as subcommands:

releasekit version --dry-run --json
releasekit notes --dry-run
releasekit publish --dry-run

Composable tools

Each tool can also be used independently or piped together:

# Preview changes (dry run)
releasekit-version --dry-run --json

# Run version once, use output for both notes and publish
output=$(releasekit-version --json)
echo "$output" | releasekit-notes
echo "$output" | releasekit-publish

# Changelog-only (no publishing)
releasekit-version --json | releasekit-notes

# Publish-only (no changelog)
releasekit-version --json | releasekit-publish

See the package READMEs for full CLI reference.

GitHub Action (releasekit/action)

Use ReleaseKit as a composite GitHub Action with two modes: release and preview.

jobs:
  release:
    permissions:
      id-token: write
      contents: write
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
        with:
          fetch-depth: 0
      - uses: goosewobbler/releasekit@v1
        with:
          mode: release
          json: "true"
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
  preview:
    permissions:
      contents: read
      pull-requests: write
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
        with:
          fetch-depth: 0
      - uses: goosewobbler/releasekit@v1
        with:
          mode: preview
          preview-dry-run: "true"
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

See docs/action.md for full input/output reference and rollout guidance.

Configuration

ReleaseKit uses a single releasekit.config.json at the project root. Add $schema for editor autocompletion:

{
  "$schema": "https://goosewobbler.github.io/releasekit/schema.json",
  "notes": {
    "changelog": { "mode": "root" }
  },
  "publish": {
    "npm": { "enabled": true, "access": "public" }
  }
}

All configuration is optional — ReleaseKit uses sensible defaults. The full set of top-level keys:

Key Description
git Remote name, branch, push method
version Tag template, commit presets, monorepo strategy
notes Changelog and release notes output, templates, LLM
publish npm, Cargo, GitHub Releases
release Pipeline steps, CI skip patterns
ci Release triggers, PR labels, preview comments
monorepo Package paths for monorepo projects

See the per-package docs for full option references.

Documentation

Getting Started — install, first dry run, first release, CI setup

Reference

Guides

Contributing

Development

# Install dependencies
pnpm install

# Build all packages
pnpm build

# Run tests
pnpm test

# Lint and typecheck
pnpm lint
pnpm typecheck

See CONTRIBUTING.md for the full development guide.

License

MIT

About

Lightweight, composable release tooling for JavaScript and Rust projects. Built on conventional commits and designed for CI/CD pipelines.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors