name: PR Title Validation on: pull_request: types: [opened, edited, synchronize] jobs: validate-title: if: | github.event.pull_request.user.login != 'actions-user' && github.event.pull_request.user.login != 'opencode' && github.event.pull_request.user.login != 'rekram1-node' && github.event.pull_request.user.login != 'thdxr' && github.event.pull_request.user.login != 'kommander' && github.event.pull_request.user.login != 'jayair' && github.event.pull_request.user.login != 'fwang' && github.event.pull_request.user.login != 'adamdotdevin' && github.event.pull_request.user.login != 'iamdavidhill' && github.event.pull_request.user.login != 'opencode-agent[bot]' runs-on: ubuntu-latest permissions: pull-requests: write steps: - name: Validate PR title uses: actions/github-script@v7 with: script: | const title = context.payload.pull_request.title; const validPrefixes = ['feat:', 'fix:', 'docs:', 'chore:', 'refactor:', 'test:']; const isValid = validPrefixes.some(prefix => title.startsWith(prefix)); if (!isValid) { const body = `👋 Thanks for opening this PR! Your PR title \`${title}\` doesn't follow our conventional commit format. Please update it to start with one of these prefixes: - \`feat:\` new feature or functionality - \`fix:\` bug fix - \`docs:\` documentation or README changes - \`chore:\` maintenance tasks, dependency updates, etc. - \`refactor:\` code refactoring without changing behavior - \`test:\` adding or updating tests **Examples:** - \`docs: update contributing guidelines\` - \`fix: resolve crash on startup\` - \`feat: add dark mode support\` See [CONTRIBUTING.md](../blob/dev/CONTRIBUTING.md#pr-titles) for more details.`; await github.rest.issues.createComment({ owner: context.repo.owner, repo: context.repo.repo, issue_number: context.payload.pull_request.number, body: body }); core.setFailed('PR title does not follow conventional commit format'); } else { console.log('PR title is valid:', title); }