Same approach as the duplicate issue detector — uses opencode run with gh pr commands to find potentially duplicate open PRs when external contributors open new PRs. Skips core team and bots.
59 lines
2.1 KiB
YAML
59 lines
2.1 KiB
YAML
name: Check Duplicate PRs
|
|
|
|
on:
|
|
pull_request_target:
|
|
types: [opened]
|
|
|
|
jobs:
|
|
check-duplicates:
|
|
if: |
|
|
github.event.pull_request.user.login != 'ishaan-jaff' &&
|
|
github.event.pull_request.user.login != 'krrishdholakia' &&
|
|
github.event.pull_request.user.login != 'actions-user' &&
|
|
!endsWith(github.event.pull_request.user.login, '[bot]')
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: read
|
|
pull-requests: write
|
|
steps:
|
|
- name: Install opencode
|
|
run: curl -fsSL https://opencode.ai/install | bash
|
|
|
|
- name: Check duplicates
|
|
env:
|
|
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
OPENCODE_PERMISSION: |
|
|
{
|
|
"bash": {
|
|
"*": "deny",
|
|
"gh pr*": "allow"
|
|
},
|
|
"webfetch": "deny"
|
|
}
|
|
run: |
|
|
opencode run -m anthropic/claude-sonnet-4-6 "A new PR has been opened:
|
|
|
|
PR number: ${{ github.event.pull_request.number }}
|
|
|
|
Lookup this PR with gh pr view ${{ github.event.pull_request.number }}.
|
|
|
|
Search through existing open PRs (excluding #${{ github.event.pull_request.number }}) to find potential duplicates.
|
|
|
|
Use gh pr list with relevant search terms from the new PR's title and description. Try multiple keyword combinations to search broadly. Check both open and recently closed PRs.
|
|
|
|
Consider:
|
|
1. Similar titles or descriptions
|
|
2. Same bug fix or feature being implemented
|
|
3. Related functionality or components
|
|
4. Overlapping code changes (same files or areas)
|
|
|
|
If you find potential duplicates, post a SINGLE comment on PR #${{ github.event.pull_request.number }} using gh pr comment with this format:
|
|
|
|
_This comment was generated by an LLM and may be inaccurate._
|
|
|
|
This PR might be a duplicate of existing PRs. Please check:
|
|
- #[pr_number]: [brief description of similarity]
|
|
|
|
If you find NO duplicates, do NOT post any comment. Stay silent."
|