Add dupe issue bot (#1120)

<!-- This is an auto-generated description by cubic. -->

## Summary by cubic
Adds a GitHub Action to detect and comment on potential duplicate issues
when a new issue is opened. This reduces triage time and keeps issue
lists clean.

- **New Features**
- Adds .github/workflows/duplicate-issues.yml triggered on issues:
opened.
- Uses opencode with Anthropic Claude Sonnet 4 to scan existing issues
and comment with links if duplicates are likely; stays silent otherwise.
- Runs with minimal permissions; allows gh issue commands and denies
webfetch.

- **Migration**
- Create the ai-bots environment and add the ANTHROPIC_API_KEY secret
(GITHUB_TOKEN is provided by GitHub).

<!-- End of auto-generated description by cubic. -->
This commit is contained in:
Will Chen
2025-08-28 22:07:45 -07:00
committed by GitHub
parent 3d6e683f5e
commit c6342350b4

63
.github/workflows/duplicate-issues.yml vendored Normal file
View File

@@ -0,0 +1,63 @@
# This was copied from https://github.com/sst/opencode/blob/d7a9f343c53d481802c134ce25691a8c150d59d2/.github/workflows/duplicate-issues.yml
# MIT License
# Copyright (c) 2025 opencode
name: Duplicate Issue Detection
on:
issues:
types: [opened]
jobs:
check-duplicates:
environment: ai-bots
runs-on: ubuntu-latest
permissions:
contents: read
issues: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Install opencode
run: curl -fsSL https://opencode.ai/install | bash
- name: Check for duplicate issues
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
OPENCODE_PERMISSION: |
{
"bash": {
"gh issue*": "allow",
"*": "deny"
},
"webfetch": "deny"
}
run: |
opencode run -m anthropic/claude-sonnet-4-20250514 "A new issue has been created:'
Issue number:
${{ github.event.issue.number }}
Lookup this issue and search through existing issues (excluding #${{ github.event.issue.number }}) in this repository to find any potential duplicates of this new issue.
Consider:
1. Similar titles or descriptions
2. Same error messages or symptoms
3. Related functionality or components
4. Similar feature requests
If you find any potential duplicates, please comment on the new issue with:
- A brief explanation of why it might be a duplicate
- Links to the potentially duplicate issues
- A suggestion to check those issues first
Use this format for the comment:
'This issue might be a duplicate of existing issues. Please check:
- #[issue_number]: [brief description of similarity]
Feel free to ignore if none of these address your specific case.'
If no clear duplicates are found, do not comment."