# Contributing
Thank you for your interest in contributing to this project!
## Semantic Releases
This project uses [Release Please](https://github.com/googleapis/release-please) to automate releases based on [Conventional Commits](https://www.conventionalcommits.org/).
### How It Works
1. When PRs are merged to `main`, Release Please analyzes the commit messages
2. It automatically creates/updates a release PR with version bumps and changelog entries
3. When the release PR is merged, a GitHub release is created and the package is published to crates.io
### Commit Message Format
Your commit messages determine the version bump:
| `fix:` | Bug fixes | Patch (0.0.X) |
| `feat:` | New features | Minor (0.X.0) |
| `feat!:` or `fix!:` | Breaking changes | Major (X.0.0) |
You can also indicate a breaking change by adding a `BREAKING CHANGE:` footer in the commit body:
```
feat: change SSN parsing rules
BREAKING CHANGE: existing callers may see different validation behavior
```
Other common types (no version bump):
- `docs:` - Documentation changes
- `chore:` - Maintenance tasks
- `ci:` - CI/CD changes
- `refactor:` - Code refactoring
- `test:` - Test changes
- `perf:` - Performance improvements
### Examples
```
fix: handle edge case in SSN validation
feat: add support for ITIN parsing
feat!: rename Ssn::new to Ssn::try_new
docs: improve API documentation
```
### Pull Request Guidelines
1. Use conventional commit format for your PR title (it becomes the merge commit message)
2. Keep commits focused and atomic
3. Ensure all CI checks pass before requesting review