Configure these rules in GitHub Settings > Branches > Branch protection rules.
| Setting |
Value |
| Require a pull request before merging |
Yes |
| Required approvals |
1 |
| Dismiss stale PR approvals when new commits are pushed |
Yes |
| Require status checks to pass before merging |
Yes |
| Required status checks |
Build, TypeScript Check, Tests |
| Require branches to be up to date before merging |
Yes |
| Restrict who can push to matching branches |
Only admins / release bot |
| Allow force pushes |
No |
| Allow deletions |
No |
| Setting |
Value |
| Require a pull request before merging |
Yes |
| Required approvals |
1 |
| Require status checks to pass before merging |
Yes |
| Required status checks |
Build, TypeScript Check, Tests |
| Require branches to be up to date before merging |
Yes |
| Allow force pushes |
No |
| Allow deletions |
No |
feature/* ──> develop ──> main ──> tag v*.*.* ──> npm publish
hotfix/* ──> main (direct, for urgent fixes)
hotfix/* ──> develop (backport after merge to main)
- Create
feature/my-feature from develop
- Open PR to
develop
- CI runs: build + typecheck + tests
- Merge after review + CI passes
- Open PR from
develop to main
- CI runs on the PR
- Merge to
main
- Create a tag
v0.X.Y on main
- Publish workflow triggers automatically -> all packages published to npm
- Create
hotfix/fix-description from main
- Open PR to
main
- Merge after review + CI
- Tag + release as needed
- Backport: cherry-pick or merge
main back into develop