Git Conventions
Branch Naming
All branches must include a Jira ticket key and follow this pattern:
<type>/<TICKET-KEY>[-<description>]
Allowed types: feature, fix, docs, chore, refactor
Examples
- ✅
feature/PTSB-123-add-team-invitations - ✅
fix/PTSB-456-login-redirect - ✅
chore/PTSB-789-update-deps - ✅
docs/PTSB-101 - ❌
feature/add-team-invitations(missing ticket key) - ❌
Feature/PTSB-123(wrong case) - ❌
PTSB-123-add-feature(missing type prefix)
Exempt branches
The following branch patterns are exempt from the naming convention:
release/*— Release brancheshotfix/*— Urgent production fixesrenovate/*/dependabot/*— Automated dependency updatesrevert-*— GitHub revert branches
CI enforcement
A non-blocking CI check validates the branch name on every PR targeting main. If the branch name does not match the convention, an informational comment is posted on the PR.
Commit Messages
We use Conventional Commits format for standardized commit messages.
Format
<type>(scope): <description>
[optional body]
[optional footer(s)]
Types
feat: A new featurefix: A bug fixdocs: Documentation only changesstyle: Changes that do not affect the meaning of the coderefactor: A code change that neither fixes a bug nor adds a featureperf: A code change that improves performancetest: Adding missing tests or correcting existing testsbuild: Changes that affect the build system or external dependenciesci: Changes to CI configuration files and scriptschore: Other changes that don't modify src or test filesrevert: Reverts a previous commit
Scopes
web: Web applicationdev-tool: Development toolse2e: End-to-end testsui: UI componentssupabase: Database/backendauth: Authenticationbilling: Billing systemadmin: Admin featuresi18n: Internationalizationshared: Shared packagesconfig: Configurationdeps: Dependenciesrepo: Repository-wide changestooling: Development tooling
Examples
- ✅
feat(auth): add two-factor authentication - ✅
fix(billing): resolve subscription update issue - ✅
docs(repo): update installation instructions - ✅
chore(deps): update dependencies - ❌
Added new feature(missing type and scope)
Quick Start
- Create branch:
pnpm branch:create - Make changes and stage them:
git add . - Commit:
git commit -m "type(scope): message" - Push:
git push
CI Validation
The CI pipeline automatically validates:
- Branch names — a non-blocking informational check posts a comment on the PR if the name doesn't match the convention (it does not prevent merging)
- Commit messages — must follow conventional commit format
- PR titles — must follow conventional commit format
Make sure all commits in your PR follow the conventional commit format before creating the pull request.