Conventional Commits Tooling
Also Known As
commitizen
commitlint
semantic-release
standard-version
TL;DR
Automating semantic versioning and changelog generation from commit messages using commitizen, commitlint, standard-version, and semantic-release.
Explanation
Conventional Commits (feat:, fix:, chore:, BREAKING CHANGE:) enable automated tooling. commitizen: interactive CLI for writing conventional commits. commitlint: lints commit messages in CI and pre-commit hooks. standard-version: bumps version (major/minor/patch) and generates CHANGELOG.md based on commit history. semantic-release: full automation — analyses commits, bumps version, generates changelog, and publishes to npm/Packagist/GitHub Releases. PHP projects: use semantic-release with @semantic-release/changelog and @semantic-release/github. The workflow: write conventional commits → merge to main → CI auto-bumps version → CHANGELOG generated → release tagged.
Common Misconception
✗ Conventional commits are just a style preference — they enable fully automated semantic versioning and changelog generation, removing manual release management entirely from the workflow.
Why It Matters
Manual changelog maintenance is error-prone and time-consuming — conventional commits + semantic-release automates the entire release process: correct version bump, accurate changelog, and tagged release.
Common Mistakes
- feat: in patch releases — feat: bumps the minor version, not patch.
- Forgetting BREAKING CHANGE in commit footer — must be in footer for major version bump.
- Not enforcing conventions with commitlint — conventions only work if everyone follows them.
- Running semantic-release manually — it should run only in CI to prevent manual tampering.
Code Examples
✗ Vulnerable
# Manual release process — error-prone:
# 1. Grep through commits to find what changed
# 2. Manually decide if it is major/minor/patch
# 3. Edit CHANGELOG.md by hand
# 4. Edit composer.json version by hand
# 5. Commit, tag, push
# Mistakes: wrong version, missed entries, stale changelog
✓ Fixed
# .commitlintrc.json:
{"extends": ["@commitlint/config-conventional"]}
# .releaserc.json (semantic-release):
{"branches": ["main"],
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"@semantic-release/changelog",
"@semantic-release/github"
]}
# Developer writes:
# git commit -m 'feat(auth): add WebAuthn support'
# Merged to main → CI runs semantic-release:
# Detects 'feat' → bumps 1.5.0 → 1.6.0
# Generates CHANGELOG entry
# Creates GitHub Release
# Publishes to Packagist
Tags
🤝 Adopt this term
£79/year · your link shown here
Added
16 Mar 2026
Edited
22 Mar 2026
Views
28
🤖 AI Guestbook educational data only
|
|
Last 30 days
Agents 0
No pings yet today
No pings yesterday
Amazonbot 14
Perplexity 5
Google 2
Ahrefs 2
ChatGPT 1
Also referenced
How they use it
crawler 23
crawler_json 1
⚡
DEV INTEL
Tools & Severity
🟢 Low
⚙ Fix effort: Medium
⚡ Quick Fix
Review the Conventional Commits Tooling documentation and apply to your PHP project context
📦 Applies To
git
web
cli
🔍 Detection Hints
Absence or misuse of Conventional Commits Tooling patterns
Auto-detectable:
✗ No
⚠ Related Problems
🤖 AI Agent
Confidence: Medium
False Positives: Medium
✓ Auto-fixable
Fix: Low
Context: File