Official first-party plugin catalog for semrel — the semantic release tool.
All plugins follow the semrel plugin contract: they are standalone binaries that communicate via environment variables, write JSON to stdout (analyzers only), and exit with a meaningful code.
Analyzers inspect commits and determine the next semantic version.
| Plugin | Repository | Description |
|---|---|---|
analyzer-conventional |
SemRels/analyzer-conventional | Conventional Commits (feat/fix/BREAKING CHANGE) |
analyzer-default |
SemRels/analyzer-default | Simple keyword-based bump detection |
Generators produce release artefacts from commit history.
| Plugin | Repository | Description |
|---|---|---|
generator-changelog-md |
SemRels/generator-changelog-md | Markdown changelog (CHANGELOG.md) |
generator-changelog-html |
SemRels/generator-changelog-html | HTML changelog |
generator-release-notes |
SemRels/generator-release-notes | GitHub/GitLab release notes body |
Providers publish the release to a hosting platform.
| Plugin | Repository | Description |
|---|---|---|
provider-github |
SemRels/provider-github | GitHub Releases + asset upload |
provider-gitlab |
SemRels/provider-gitlab | GitLab Releases |
provider-gitea |
SemRels/provider-gitea | Gitea Releases |
provider-bitbucket |
SemRels/provider-bitbucket | Bitbucket Cloud |
provider-git |
SemRels/provider-git | Plain git tag push |
Conditions gate the release pipeline — a non-zero exit aborts the release.
| Plugin | Repository | Description |
|---|---|---|
condition-github-actions |
SemRels/condition-github-actions | Ensures running in GitHub Actions on the correct branch |
condition-gitlab-ci |
SemRels/condition-gitlab-ci | Ensures running in GitLab CI on the correct branch |
condition-gitea-actions |
SemRels/condition-gitea-actions | Ensures running in Gitea Actions |
condition-generic |
SemRels/condition-generic | Generic branch/env condition checks |
Hooks run before or after release for notifications and integrations.
| Plugin | Repository | Description |
|---|---|---|
hook-slack |
SemRels/hook-slack | Slack release notification |
hook-teams |
SemRels/hook-teams | Microsoft Teams notification |
hook-email |
SemRels/hook-email | Email notification via SMTP |
hook-matrix |
SemRels/hook-matrix | Matrix (Element) notification |
hook-jira |
SemRels/hook-jira | Jira version tracking |
hook-gitplugin |
SemRels/hook-gitplugin | Git-based plugin hooks |
Updaters bump version strings in project files after the release version is determined.
| Plugin | Repository | Description |
|---|---|---|
updater-npm |
SemRels/updater-npm | package.json version field |
updater-go |
SemRels/updater-go | Go module version constant |
updater-cargo |
SemRels/updater-cargo | Cargo.toml version field |
updater-python |
SemRels/updater-python | pyproject.toml / setup.py version |
updater-maven |
SemRels/updater-maven | pom.xml version element |
updater-gradle |
SemRels/updater-gradle | build.gradle / build.gradle.kts version |
updater-docker |
SemRels/updater-docker | Dockerfile ARG/LABEL version |
updater-helm |
SemRels/updater-helm | Helm Chart.yaml version |
updater-terraform |
SemRels/updater-terraform | Terraform module version constraint |
updater-nuget |
SemRels/updater-nuget | NuGet .csproj version |
updater-homebrew |
SemRels/updater-homebrew | Homebrew formula version |
See the plugin development guide for a step-by-step tutorial on writing custom plugins.
All plugins communicate via:
- Environment variables → plugin: release context (
SEMREL_*) and plugin config (SEMREL_PLUGIN_*) - stdout (analyzers only): JSON analysis result
- stderr: logs and
plugin_schema_version=Nannouncement - Exit code: 0 = success, non-zero = abort release
Each plugin lives in its own repository under the SemRels organization. See CONTRIBUTING.md if present, or open an issue in the relevant plugin repo.