Skip to content

Commit 9d03da0

Browse files
micaelawclaude
authored andcommitted
docs: add conventional commits guidance to Contributing section
Explains how commit message format drives release-please automation and ultimately PyPI publishing. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent df04ae7 commit 9d03da0

1 file changed

Lines changed: 21 additions & 0 deletions

File tree

README.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,3 +136,24 @@ You can run the `linting environment` in **Tox** using this command:
136136
```bash
137137
poetry tox -e lint
138138
```
139+
140+
## Commit Messages
141+
142+
This project uses [release-please](https://github.com/googleapis/release-please) to automate releases. When a PR is merged, release-please reads the commit history to determine the next version and open a release PR. When that release PR is merged, the package is automatically published to [PyPI](https://pypi.org/project/shipengine/).
143+
144+
**This only works if commit messages follow the [Conventional Commits](https://www.conventionalcommits.org/) format:**
145+
146+
```
147+
<type>: <short description>
148+
```
149+
150+
Common types and their effect on versioning:
151+
152+
| Type | Version bump | Example |
153+
|------|-------------|---------|
154+
| `feat` | minor (`1.0.0``1.1.0`) | `feat: add label void endpoint` |
155+
| `fix` | patch (`1.0.0``1.0.1`) | `fix: correct timeout default` |
156+
| `chore`, `docs`, `refactor` | none (no release) | `chore: update dev tooling` |
157+
| `feat!` or `fix!` (breaking) | major (`1.0.0``2.0.0`) | `feat!: remove deprecated method` |
158+
159+
PRs with non-conforming titles will cause release-please to skip that commit silently, potentially blocking future releases.

0 commit comments

Comments
 (0)