Problem
Release-please stopped creating releases after v0.31.0 because merge commits on master had non-conventional titles like Next Release or Release v0.31.0 — develop → master (#666). Release-please logs: commit could not be parsed: unexpected token.
This caused:
- No stable release for weeks (stuck at 0.31.0)
- Manual release needed for 0.33.0
- Homebrew-core stuck at old version
- User confusion about versions
Solution
Add a CI check that blocks merge if the PR title doesn't match conventional commit format:
^(feat|fix|chore|docs|ci|refactor|perf|test|build|style)(\(.+\))?!?: .+
Where to enforce
- All PRs targeting master — must be
feat:, fix:, chore:, etc.
- All PRs targeting develop — same rule (so develop → master squash merges are already compliant)
Implementation
GitHub Action using amannn/action-semantic-pull-request or similar:
name: PR Title Check
on:
pull_request:
types: [opened, edited, synchronize]
branches: [master, develop]
jobs:
check-title:
runs-on: ubuntu-latest
steps:
- uses: amannn/action-semantic-pull-request@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Also document
- develop → master must be squash merged (not merge commit)
- The squash title becomes the commit message on master
- Release-please parses this commit message to determine version bump
Context
Problem
Release-please stopped creating releases after v0.31.0 because merge commits on master had non-conventional titles like
Next ReleaseorRelease v0.31.0 — develop → master (#666). Release-please logs:commit could not be parsed: unexpected token.This caused:
Solution
Add a CI check that blocks merge if the PR title doesn't match conventional commit format:
Where to enforce
feat:,fix:,chore:, etc.Implementation
GitHub Action using
amannn/action-semantic-pull-requestor similar:Also document
Context
feat: 9-tool AI agent supportNext Release