From c6a06319337a50b2adf970168f91ffd29e4b0344 Mon Sep 17 00:00:00 2001 From: Gabriel Garcia Date: Thu, 16 Jul 2026 10:41:49 +0200 Subject: [PATCH 1/4] add bugbot instructions --- .cursor/BUGBOT.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/.cursor/BUGBOT.md b/.cursor/BUGBOT.md index 58d1e3755..44cc136d2 100644 --- a/.cursor/BUGBOT.md +++ b/.cursor/BUGBOT.md @@ -127,6 +127,33 @@ describe('useCostCalculator', () => { }); ``` +## PR Title Convention (Required) + +Always check the pull request title. Releases and semver bumps are driven by conventional commits, so PR titles must use that format. + +**Required format:** `type(scope): description` or `type(scope) - description` + +**Allowed types:** `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `chore`, `ci`, `build`, `revert` + +**Rules:** + +```text +If the PR title does NOT match /^(feat|fix|docs|style|refactor|perf|test|chore|ci|build|revert)(\([^)]+\))?!?\s*[:-]\s+.+/i, then: +- Add a blocking Bug titled "PR title must follow conventional commits" +- Body must include: + - The current (invalid) PR title + - That titles must use `type(scope): description` (or `type(scope) - description`) + - That this drives semver (`feat` → minor, `fix` → patch, `BREAKING CHANGE` → major) + - A rewritten good title based on the PR changes + - Examples: + - BAD: `canInvite is now depending of onboarding-reserve-status pending request` + - GOOD: `fix(onboarding-reserves) - fix race condition on the invite button, now depending on onboarding-reserve-status` + - GOOD: `feat(gp): add PayrollAdminOnboarding flow mutations and schemas` +- Assign the Bug to the PR author +``` + +Do not skip this check even if the code looks correct. Flag the title on every review until it complies. + ## Specific Areas of Focus When reviewing code, pay special attention to: @@ -491,6 +518,7 @@ listItems: [ Before approving a PR, verify: +- [ ] **PR title follows conventional commits** - e.g. `fix(scope) - description` or `feat(scope): description` - [ ] **No breaking changes** - Or properly documented with `BREAKING CHANGE:` - [ ] **New tests added** - All new features/fixes have tests - [ ] **JSDoc added** - Public APIs have documentation From 624ff157a9898f828516e451ccc744070ac21530 Mon Sep 17 00:00:00 2001 From: Gabriel Garcia Date: Thu, 16 Jul 2026 10:45:20 +0200 Subject: [PATCH 2/4] fix md --- .cursor/BUGBOT.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.cursor/BUGBOT.md b/.cursor/BUGBOT.md index 44cc136d2..9c342da63 100644 --- a/.cursor/BUGBOT.md +++ b/.cursor/BUGBOT.md @@ -131,7 +131,7 @@ describe('useCostCalculator', () => { Always check the pull request title. Releases and semver bumps are driven by conventional commits, so PR titles must use that format. -**Required format:** `type(scope): description` or `type(scope) - description` +**Required format:** `type(scope): description` **Allowed types:** `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `chore`, `ci`, `build`, `revert` @@ -142,7 +142,7 @@ If the PR title does NOT match /^(feat|fix|docs|style|refactor|perf|test|chore|c - Add a blocking Bug titled "PR title must follow conventional commits" - Body must include: - The current (invalid) PR title - - That titles must use `type(scope): description` (or `type(scope) - description`) + - That titles must use `type(scope): description` - That this drives semver (`feat` → minor, `fix` → patch, `BREAKING CHANGE` → major) - A rewritten good title based on the PR changes - Examples: From b759f25106ee39b32cf49f017c4e2b4ca1c1aa27 Mon Sep 17 00:00:00 2001 From: Gabriel Garcia Date: Tue, 4 Aug 2026 17:29:53 +0200 Subject: [PATCH 3/4] format --- .cursor/BUGBOT.md | 41 +++++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/.cursor/BUGBOT.md b/.cursor/BUGBOT.md index 9c342da63..0d214dd4f 100644 --- a/.cursor/BUGBOT.md +++ b/.cursor/BUGBOT.md @@ -131,26 +131,31 @@ describe('useCostCalculator', () => { Always check the pull request title. Releases and semver bumps are driven by conventional commits, so PR titles must use that format. -**Required format:** `type(scope): description` +**Required format:** `type(scope): description` (colon, not hyphen) **Allowed types:** `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `chore`, `ci`, `build`, `revert` -**Rules:** - -```text -If the PR title does NOT match /^(feat|fix|docs|style|refactor|perf|test|chore|ci|build|revert)(\([^)]+\))?!?\s*[:-]\s+.+/i, then: -- Add a blocking Bug titled "PR title must follow conventional commits" -- Body must include: - - The current (invalid) PR title - - That titles must use `type(scope): description` - - That this drives semver (`feat` → minor, `fix` → patch, `BREAKING CHANGE` → major) - - A rewritten good title based on the PR changes - - Examples: - - BAD: `canInvite is now depending of onboarding-reserve-status pending request` - - GOOD: `fix(onboarding-reserves) - fix race condition on the invite button, now depending on onboarding-reserve-status` - - GOOD: `feat(gp): add PayrollAdminOnboarding flow mutations and schemas` -- Assign the Bug to the PR author -``` +**Validation regex:** `^(feat|fix|docs|style|refactor|perf|test|chore|ci|build|revert)(\([^)]+\))?!?:\s+.+` + +If the PR title does not match the regex above: + +1. Add a blocking Bug titled `PR title must follow conventional commits`. +2. Use this exact template for the body: + + ```markdown + **Current title:** `` + + PR titles must use `type(scope): description` (see Allowed types above). + This format drives semver: `feat` → minor, `fix` → patch, `BREAKING CHANGE` footer → major. + + **Suggested title:** `` + + **Examples:** + - ❌ `canInvite is now depending of onboarding-reserve-status pending request` + - ✅ `fix(onboarding-reserves): fix race condition on the invite button, now depending on onboarding-reserve-status` + ``` + +3. Assign the Bug to the PR author. Do not skip this check even if the code looks correct. Flag the title on every review until it complies. @@ -518,7 +523,7 @@ listItems: [ Before approving a PR, verify: -- [ ] **PR title follows conventional commits** - e.g. `fix(scope) - description` or `feat(scope): description` +- [ ] **PR title follows conventional commits** - e.g. `fix(scope): description` or `feat(scope): description` - [ ] **No breaking changes** - Or properly documented with `BREAKING CHANGE:` - [ ] **New tests added** - All new features/fixes have tests - [ ] **JSDoc added** - Public APIs have documentation From 8883714e0a22b7f1b7abb4644db684842b8e7860 Mon Sep 17 00:00:00 2001 From: Gabriel Garcia Date: Tue, 4 Aug 2026 17:43:17 +0200 Subject: [PATCH 4/4] format --- .cursor/BUGBOT.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.cursor/BUGBOT.md b/.cursor/BUGBOT.md index 0d214dd4f..9f7b5436b 100644 --- a/.cursor/BUGBOT.md +++ b/.cursor/BUGBOT.md @@ -151,8 +151,10 @@ If the PR title does not match the regex above: **Suggested title:** `` **Examples:** + - ❌ `canInvite is now depending of onboarding-reserve-status pending request` - ✅ `fix(onboarding-reserves): fix race condition on the invite button, now depending on onboarding-reserve-status` + - ✅ `feat(gp): add PayrollAdminOnboarding flow mutations and schemas` ``` 3. Assign the Bug to the PR author.