# Plugins

## Official plugins

* [@semantic-release/commit-analyzer](https://github.com/semantic-release/commit-analyzer)
  * **Note**: this is already part of semantic-release and does not have to be installed separately
  * `analyzeCommits`: Determine the type of release by analyzing commits with [conventional-changelog](https://github.com/conventional-changelog/conventional-changelog)
* [@semantic-release/release-notes-generator](https://github.com/semantic-release/release-notes-generator)
  * **Note**: this is already part of semantic-release and does not have to be installed separately
  * `generateNotes`: Generate release notes for the commits added since the last release with [conventional-changelog](https://github.com/conventional-changelog/conventional-changelog)
* [@semantic-release/github](https://github.com/semantic-release/github)
  * **Note**: this is already part of semantic-release and does not have to be installed separately
  * `verifyConditions`: Verify the presence and the validity of the GitHub authentication and release configuration
  * `publish`: Publish a [GitHub release](https://help.github.com/articles/about-releases)
  * `success`: Add a comment to GitHub issues and pull requests resolved in the release
  * `fail`: Open a GitHub issue when a release fails
* [@semantic-release/npm](https://github.com/semantic-release/npm)
  * **Note**: this is already part of semantic-release and does not have to be installed separately
  * `verifyConditions`: Verify the presence and the validity of the npm authentication and release configuration
  * `prepare`: Update the package.json version and create the npm package tarball
  * `publish`: Publish the package on the npm registry
* [@semantic-release/gitlab](https://github.com/semantic-release/gitlab)
  * `verifyConditions`: Verify the presence and the validity of the GitLab authentication and release configuration
  * `publish`: Publish a [GitLab release](https://docs.gitlab.com/ee/user/project/releases/)
* [@semantic-release/git](https://github.com/semantic-release/git)
  * `verifyConditions`: Verify the presence and the validity of the Git authentication and release configuration
  * `prepare`: Push a release commit and tag, including configurable files
* [@semantic-release/changelog](https://github.com/semantic-release/changelog)
  * `verifyConditions`: Verify the presence and the validity of the configuration
  * `prepare`: Create or update the changelog file in the local project repository
* [@semantic-release/exec](https://github.com/semantic-release/exec)
  * `verifyConditions`: Execute a shell command to verify if the release should happen
  * `analyzeCommits`: Execute a shell command to determine the type of release
  * `verifyRelease`: Execute a shell command to verifying a release that was determined before and is about to be published
  * `generateNotes`: Execute a shell command to generate the release note
  * `prepare`: Execute a shell command to prepare the release
  * `publish`: Execute a shell command to publish the release
  * `success`: Execute a shell command to notify of a new release
  * `fail`: Execute a shell command to notify of a failed release
* [@semantic-release/apm](https://github.com/semantic-release/apm)
  * `verifyConditions`: Verify the presence of the `ATOM_ACCESS_TOKEN` environment variable and the [`apm`](https://github.com/atom/apm) CLI
  * `prepare`: Update the `package.json` version with [`npm version`](https://docs.npmjs.com/cli/version)
  * `publish`: Publish the [Atom package](https://flight-manual.atom.io/hacking-atom/sections/publishing)

## Community plugins

[Open a Pull Request](https://github.com/semantic-release/semantic-release/blob/master/CONTRIBUTING.md#submitting-a-pull-request) to add your plugin to the list.

* [semantic-release-slack-bot](https://github.com/juliuscc/semantic-release-slack-bot)
  * `verifyConditions`: Verify that the environment variable `SLACK_WEBHOOK` has been defined.
  * `success`: Publish a message about the success to a slack channel.
  * `fail`: Optionally publish a message about failure to a slack channel.
* [semantic-release-docker](https://github.com/felixfbecker/semantic-release-docker)
  * `verifyConditions`: Verify that all needed configuration is present and login to the Docker registry.
  * `publish`: Tag the image specified by `name` with the new version, push it to Docker Hub and update the latest tag
* [@semantic-release-plus/docker](https://github.com/semantic-release-plus/semantic-release-plus/tree/master/packages/plugins/docker)
  * `verifyConditions`: Verify that all needed configuration is present and login to the configured docker registry.
  * `publish`: Tag the image specified by `name` with the new version and channel and push it to the configured docker registry.
  * `addChannel`: Updates a release published on one channel with the destinations channel tag and pushes to the registry i.e.: next to latest.
* [semantic-release-gcr](https://github.com/carlos-cubas/semantic-release-gcr)
  * `verifyConditions`: Verify that all needed configuration is present and login to the Docker registry
  * `publish`: Tag the image specified by `name` with the new version, push it to Docker Hub and update the latest tag
* [semantic-release-vsce](https://github.com/raix/semantic-release-vsce)
  * `verifyConditions`: Verify the presence and the validity of the "VS Code extension" authentication and release configuration
  * `prepare`: Create a `.vsix` for distribution
  * `publish`: Publish the package to the Visual Studio Code marketplace
* [semantic-release-verify-deps](https://github.com/piercus/semantic-release-verify-deps)
  * `verifyConditions`: Check the dependencies format against a regexp before a release
* [semantic-release-openapi](https://github.com/aensley/semantic-release-openapi)
  * `verifyConditions`: Verify `apiSpecFiles` is specified with at least one file name and all matching files have a .json, .yaml, or .yml extension.
  * `prepare`: Write the correct version to all OpenAPI / Swagger files specified in `apiSpecFiles`.
* [semantic-release-chrome](https://github.com/GabrielDuarteM/semantic-release-chrome)
  * `verifyConditions`: Verify the presence of the authentication (set via environment variables)
  * `prepare`: Write the correct version to the `manifest.json` and creates a zip file of the whole dist folder
  * `publish`: Uploads the generated zip file to the webstore, and publish the item
* [semantic-release-firefox-add-on](https://github.com/tophat/semantic-release-firefox-add-on)
  * `verifyConditions`: Verify that all required options are present and authentication is set via environment variables
  * `prepare`: Write the correct version to the `manifest.json`
  * `publish`: Creates an unsigned `.xpi` file, and submits it to the Mozilla Add On store for signing. Once the package is signed, downloads the signed `.xpi` to a local directory
* [semantic-release-gerrit](https://github.com/pascalMN/semantic-release-gerrit)
  * `generateNotes`: Generate release notes with Gerrit reviews URL
* [semantic-release-expo](https://github.com/bycedric/semantic-release-expo)
  * `verifyConditions`: Verify Expo manifest(s) are readable and valid.
  * `prepare`: Update version, ios build number and android version code in the Expo manifest(s).
* [maven-semantic-release](https://github.com/conveyal/maven-semantic-release)
  * `verifyConditions`: Verifies that the `pom.xml` file and other files exist and are setup to allow releases
  * `verifyRelease`: Checks and warns (does not error by default) if the version numbers found on maven central and within the Git project differ by quite a bit
  * `prepare`: Changes the version number in the `pom.xml` (or all `pom.xml` files in maven projects with multiple `pom.xml` files) and optionally creates a commit with this version number and pushes it to `master`
  * `publish`: Runs `mvn deploy` to deploy to maven central and optionally will update to next snapshot version and merge changes to development branch
* [maven-semantic-release](https://github.com/terrestris/maven-semantic-release) (alternative version)
  * `verifyConditions`: Verifies that the `mvn` command exists.
  * `prepare`: Changes version number in `pom.xml` and optionally in all child modules.
  * `publish`: Runs one of the mvn targets `deploy`, `package jib:build` or `deploy jib:build`.
  * `success`: Optionally sets new snapshot version and commits it.
* [semantic-release-ado](https://github.com/lluchmk/semantic-release-ado)
  * `prepare`: Stores the version number as an Azure DevOps pipeline variable available to downstream steps on the job
* [gradle-semantic-release](https://github.com/KengoTODA/gradle-semantic-release-plugin)
  * `verifyConditions`: Verify that project has a Gradle wrapper script, and `build.gradle` contains a task to publish artifacts.
  * `prepare`: Changes the version number in the `gradle.properties`
  * `publish`: Triggers Gradle to publish artifacts.
* [semantic-release-circleci-orb](https://github.com/matt-oakes/semantic-release-circleci-orb)
  * `verifyConditions`: Verify the presence of the `CIRCLECI_API_TOKEN` environment variable, `orbName` option, and the `circleci` CLI.
  * `publish`: Publish the CircleCI orb.
* [semantic-release-github-pages](https://github.com/qiwi/semantic-release-gh-pages-plugin)
  * `verifyConditions`: Verify the presence of the auth token set via environment variables.
  * `publish`: Pushes commit to the documentation branch.
* [semantic-release-github-pullrequest](https://github.com/asbiin/semantic-release-github-pullrequest)
  * `verifyConditions`: Verify the presence and the validity of the GitHub authentication and other configuration.
  * `publish`: Create a branch to upload all assets and create the pull request on the base branch on GitHub.
* [leiningen-semantic-release](https://github.com/NoxHarmonium/leiningen-semantic-release)
  * `verifyConditions`: Checks the project.clj is syntactically valid.
  * `prepare`: Update the project.clj version and package the output jar file.
  * `publish`: Publish the jar (and generated Maven metadata) to a maven repository (or clojars).
* [@saithodev/semantic-release-gitea](https://github.com/saitho/semantic-release-gitea)
  * `verifyConditions`: Verify the presence and the validity of the authentication and the assets option configuration.
  * `publish`: Publish a Gitea release, optionally uploading file assets.
  * `addChannel`: Update a Gitea release's pre-release field.
* [semantic-release-replace-plugin](https://github.com/jpoehnelt/semantic-release-replace-plugin)
  * `prepare`: Replace version strings in files using regex and glob.
* [semantic-release-rubygem](https://github.com/Gusto/semantic-release-rubygem)
  * `verifyConditions`: Locate and validate a `.gemspec` file, locate and validate a `lib/**/version.rb` file, verify the presence of the `GEM_HOST_API_KEY` environment variable, and create a credentials file with the API key.
  * `prepare`: Update the version in the `lib/**/version.rb` version file and [build](https://guides.rubygems.org/command-reference/#gem-build) the gem.
  * `publish`: [Push the Ruby gem](https://guides.rubygems.org/command-reference/#gem-push) to the gem server.
* [semantic-release-npm-deprecate-old-versions](https://github.com/ghusse/semantic-release-npm-deprecate-old-versions)
  * `verifyConditions`: Validates configuration.
  * `publish`: Deprecates old versions, based on the declaration of supported versions in the config.
* [amanda-mitchell/semantic-release-npm-multiple](https://github.com/amanda-mitchell/semantic-release-npm-multiple)
  * **Note**: this is a thin wrapper around the built-in npm plugin that can target multiple registries
  * `verifyConditions`: Verify the presence and the validity of the npm authentication and release configuration for multiple registries
  * `prepare`: Update the package.json version and create the npm package tarball
  * `publish`: Publish the package on the npm registry for multiple registries
* [semantic-release-license](https://github.com/cbhq/semantic-release-license) Automatically update dates and more in your license file for new releases.
  * `verifyConditions`: Verify the presence of a license file
  * `prepare`: Update the license file based on its type
* [semantic-release-pypi](https://github.com/abichinger/semantic-release-pypi)
  * `verifyConditions`: Verify the environment variable `PYPI_TOKEN` and installation of build tools
  * `prepare`: Update the version in `setup.cfg` and create the distribution packages
  * `publish`: Publish the python package to a repository (default: pypi)
* [@covage/semantic-release-poetry-plugin](https://github.com/covage/semantic-release-poetry-plugin)
  * `verifyConditions`: Verify the presence and validity of `pyproject.toml` file.
  * `prepare`: Update the version in `pyproject.toml`.
* [semantic-release-codeartifact](https://github.com/ryansonshine/semantic-release-codeartifact)
  * `verifyConditions`: Validate configuration, get AWS CodeArtifact authentication and repository, validate `publishConfig` or `.npmrc` (if they exist), then pass the configuration to the associated plugins.
* [semantic-release-telegram](https://github.com/pustovitDmytro/semantic-release-telegram)
  * `verifyConditions`: Validate configuration and verify `TELEGRAM_BOT_ID` and `TELEGRAM_BOT_TOKEN`
  * `success`: Publish a message about the successful release to a telegram chat
  * `fail`: publish a message about failure to a telegram chat
* [semantic-release-heroku](https://github.com/pustovitDmytro/semantic-release-heroku)
  * `verifyConditions`: Validate configuration and verify `HEROKU_API_KEY`
  * `prepare`: Update the package.json version and create release tarball
  * `publish`: Publish version to heroku
* [semantic-release-mattermost](https://github.com/ttrobisch/semantic-release-mattermost)
  * `verifyConditions`: Verify that the webhook is setup and release-notes-generator is present.
  * `success`: Send a message about the new release and its notes to a [mattermost](https://mattermost.com/) webhook.
* [semantic-release-github-milestones](https://github.com/nitzano/semantic-release-github-milestones)
  * `verifyConditions`: Verify github tokens are present and valid.
  * `verifyRelease`: Display information regarding the matching github milestone.
* [semantic-release-telegram-bot](https://github.com/skoropadas/semantic-release-telegram-bot)
  * `verifyConditions`: Validate configuration and verify `TELEGRAM_BOT_TOKEN` and package name
  * `success`: Publish a success message to certain telegram chats
  * `fail`: Publish a fail message to certain telegram chats
* [semantic-release-npm-deprecate](https://github.com/jpoehnelt/semantic-release-npm-deprecate)
  * `publish`: Automatically mark old versions as deprecated.
* [semantic-release-mirror-version](https://github.com/GarthDB/semantic-release-mirror-version)
  * `prepare`: Update the version number in any file that matches the defined [file glob](https://github.com/isaacs/node-glob).
* [semantic-release-space](https://github.com/123FLO321/semantic-release-space)
  * `verifyConditions` Verifies that all required options are set.
  * `prepare` Creates a JetBrains Space Deployment Target if it does not yet exist.
  * `publish` Starts a JetBrains Space Deployment.
  * `success` Marks the JetBrains Space Deployment as completed.
  * `fail` Marks the JetBrains Space Deployment as failed.
* [semantic-release-react-native](https://github.com/alexandermendes/semantic-release-react-native)
  * `verifyConditions` Validate configuration.
  * `prepare` Version native iOS and Android files.
* [semantic-release-cargo](https://github.com/buehler/semantic-release-cargo)
  * `verifyConditions` Validate configuration, `Cargo.toml`, and local cargo executable. Also, logs in into `crates.io`.
  * `prepare` Write the new version number into `Cargo.toml` file and perform `cargo check` if configured.
  * `publish` Publish the Rust crate to `crates.io`
* [semantic-release-coralogix](https://github.com/adobe/semantic-release-coralogix)
  * `verifyConditions` Verified that required credentials are provided and API is accessible
  * `publish` add a release tag to Coralogix
* [semantic-release-jira-notes](https://github.com/iamludal/semantic-release-jira-notes)
  * `verifyConditions`: Validate the config options.
  * `generateNotes`: Generate the release notes with links to JIRA issues.
* [semantic-release-major-tag](https://github.com/doteric/semantic-release-major-tag)
  * `success` Create major version tag, for example `v1`.
* [semantic-release-yarn](https://github.com/hongaar/semantic-release-yarn)
  * **Note**: this is an alternative to the default `@semantic-release/npm` plugin and adds support for monorepos.
  * `verifyConditions` Verify Yarn 2 or higher is installed, verify the presence of a NPM auth token (either in an environment variable or a `.yarnrc.yml` file) and verify the authentication method is valid.
  * `prepare` Update the `package.json` version and create the package tarball.
  * `addChannel` Add a tag for the release.
  * `publish` Publish to the npm registry.
* [semantic-release-pub](https://github.com/zeshuaro/semantic-release-pub)
  * `verifyConditions`: Verify the presence of the `pub.dev` authentication and release configuration
  * `prepare`: Update the `pubspec.yaml` version
  * `publish`: Publish the package onto the `pub.dev` registry
* [semantic-release-hackage](https://github.com/stackbuilders/semantic-release-hackage)
  * `verifyConditions`: Verify the environment variable `HACKAGE_TOKEN`
  * `prepare`: Update the version of .cabal file and create the distribution package (.tar)
  * `publish`: Publish the release candidate to the specified repository in Hackage
* [semantic-release-pull-request-analyzer](https://github.com/bobvanderlinden/semantic-release-pull-request-analyzer)
  * `verifyConditions` Verify configuration options and existance of GitHub token.
  * `analyzeCommits` Determine the type of release by analyzing merged GitHub pull requests and their labels.
  * `generateNotes` Generates release notes using [GitHub release notes generator](https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes).
* [semantic-release-commits-lint](https://github.com/BondarenkoAlex/semantic-release-commits-lint)
  * `analyzeCommits` Analyzing commit messages by [commitlint](https://github.com/conventional-changelog/commitlint).
* [semantic-release-kaniko](https://github.com/brendangeck/semantic-release-kaniko)
  * `verifyConditions`: Verify that all needed configuration is present and login to the Docker registry.
  * `publish`: Build a container image using [Kaniko](https://github.com/GoogleContainerTools/kaniko) and (optionally) push it to a Docker registry.
* [semantic-release-skopeo](https://github.com/LukasWestholt/semantic-release-skopeo)
  * `verifyConditions`: Verify that all needed configuration is present and check if destination is writeable (unless force=true).
  * `publish`: Copy OCI images to a custom (Docker) registry using daemonless open-source tool [skopeo](https://github.com/containers/skopeo/).
* [sr-uv-plugin](https://github.com/Artessan-Devs/sr-uv-plugin)
  * `verifyConditions`: Ensures `pyproject.toml` exists and contains a `[project]` section.
  * `prepare`: Updates the `[project].version` field in `pyproject.toml` to match the release version.
* [semantic-release-uv](https://github.com/Deltamir/semantic-release-uv)
  * `verifyConditions`: Verify the presence and validity of a `PYPI_TOKEN` and validate the `pyproject.toml` structure
  * `prepare`: Update the version in `pyproject.toml`, locking and build the distribution with `uv`
  * `publish`: Publish the package to PyPI or a custom index using `uv publish`
* [@jno21/semantic-release-github-commit](https://github.com/Jno21/semantic-release-github-commit)
  * **Notes**: This plugin creates a commit on GitHub using the GitHub API, enabling signed commits via a GitHub App.
  * `verifyConditions`: Verify GitHub authentication and configuration.
  * `prepare`: Create a commit with the specified files using the GitHub API.
* [semantic-release-minecraft](https://github.com/pynickle/semantic-release)
  * `verifyConditions`: Verify that all needed configuration is present.
  * `prepare`: Convert different types of CurseForge game versions to their corresponding IDs.
  * `publish`: Publish the Minecraft project to CurseForge and Modrinth.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://semantic-release.gitbook.io/semantic-release/extending/plugins-list.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
