Wiring commit-driven releases so the version number actually means something — the misconfiguration that made every release a minor bump for months, the separation between version calculator and changelog generator, and the CI permissions that block every first attempt
What happened when I pointed a shared AI merge-request reviewer at an architecture repository containing no code — separating the mechanical gates from the judgement checks, forbidding fabrication, and the style rule that would have broken the build
How I standardised commit messages and changelogs across a polyglot workspace — Conventional Commits enforced by a shared shell hook, Lefthook to manage the hooks, Keep a Changelog as the format, and git-cliff to generate the changelog from history and keep it current in CI
A follow-up to the Conventional Commits post — rolling out automated semantic versioning, changelog updates and GitHub Releases with git-cliff in GitHub Actions across ten repositories, and the gotchas found on the way: release commits polluting the changelog, GITHUB_TOKEN loop protection, and a branch-protected main