---
name: commitizen
description: Use this skill for tasks involving Conventional Commits, commit message validation, Commitizen configuration, semantic version bumps, changelog generation, or CI/release automation with the Commitizen CLI.
license: MIT
metadata:
  project: commitizen-tools/commitizen
  docs: https://commitizen-tools.github.io/commitizen/
  install: "pipx install commitizen"
---

# Commitizen

Commitizen is a CLI for enforcing Conventional Commits, automating version bumps, and generating changelogs.

## Use this skill when

- A task involves commit message authoring or validation.
- A repository needs Commitizen initialization or configuration updates.
- Work depends on version schemes, version providers, version files, tags, or changelog behavior.
- CI/CD automation needs commit validation, automated version bumps, or release notes.

## Core workflow

1. Find the active configuration file in this order: `.cz.toml`, `cz.toml`, `.cz.json`, `cz.json`, `.cz.yaml`, `cz.yaml`, then `pyproject.toml` under `[tool.commitizen]`.
2. Read the effective settings before acting, especially `name`, `version`, `version_provider`, `version_scheme`, `version_files`, `tag_format`, `update_changelog_on_bump`, `annotated_tag`, `bump_message`, `pre_bump_hooks`, and `post_bump_hooks`.
3. Match the command to the task:
   - `cz commit` for interactive commit authoring
   - `cz check` for validating commit messages or git ranges
   - `cz init` for bootstrapping configuration
   - `cz bump` for calculating or applying release versions
   - `cz changelog` for generating or updating `CHANGELOG.md`
   - `cz ls` for listing available commit rules
   - `cz version` for showing the current version
4. Prefer read-only inspection first. Safe discovery commands include `cz version`, `cz ls`, `cz check`, `cz bump --get-next`, and `cz bump --dry-run`.
5. Treat `cz bump` as stateful: it can update version files, create a bump commit, and create a git tag. Verify the version provider, version scheme, tag format, and changelog settings before running it for real.
6. When automating in CI, check whether the workflow should ignore specific exit codes with `--no-raise` and whether `bump_message` should include skip-CI text.
7. After making changes, validate the resulting configuration, commands, and automation against the repository's actual version scheme and provider.

## Important domain details

- Commitizen supports both global installation (recommended for the `cz` CLI) and project-local installation; see the installation section in `docs/README.md` for the full matrix of supported tools.
- The default version scheme is PEP 440; `semver` and `semver2` are also supported.
- Common version providers include `commitizen`, `pep621`, `poetry`, `cargo`, `npm`, `composer`, `uv`, and `scm`.
- `cz changelog` generates Markdown changelogs.
- `cz commit` supports `--dry-run` and `--write-message-to-file`.
- `cz check` can validate a literal message, a commit-msg file, or a git revision range.

## Examples

- Validate one message: `cz check --message "feat(cli): add release command"`
- Validate branch history: `cz check --rev-range master..HEAD`
- Preview the next version: `cz bump --get-next`
- Preview bump details: `cz bump --dry-run`
- Preview changelog output: `cz changelog --dry-run`
- Initialize configuration: `cz init`
