From a99c37c77ba9286815cd31e5c1895fab2a894105 Mon Sep 17 00:00:00 2001 From: Mahek Gupta Date: Wed, 18 Feb 2026 21:46:54 +0530 Subject: [PATCH] feat(ci): add duplicate issue detection workflow --- .github/workflows/duplicate-issue-check.yml | 45 +++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 .github/workflows/duplicate-issue-check.yml diff --git a/.github/workflows/duplicate-issue-check.yml b/.github/workflows/duplicate-issue-check.yml new file mode 100644 index 00000000..d8419520 --- /dev/null +++ b/.github/workflows/duplicate-issue-check.yml @@ -0,0 +1,45 @@ +name: Duplicate Issue Detection + +on: + issues: + types: [opened] + +jobs: + detect-duplicate: + runs-on: ubuntu-latest + + steps: + - name: Check for similar open issues + uses: actions/github-script@v7 + with: + script: | + const newIssue = context.payload.issue; + const newTitle = newIssue.title.toLowerCase(); + + const { data: issues } = await github.rest.issues.listForRepo({ + owner: context.repo.owner, + repo: context.repo.repo, + state: "open", + per_page: 100 + }); + + const similarIssues = issues.filter(issue => { + if (issue.number === newIssue.number) return false; + const title = issue.title.toLowerCase(); + return title.includes(newTitle.split(" ")[0]) || + newTitle.includes(title.split(" ")[0]); + }); + + if (similarIssues.length > 0) { + const message = `⚠️ Possible duplicate issues detected:\n\n` + + similarIssues.map(issue => + `- #${issue.number} ${issue.title}` + ).join("\n"); + + await github.rest.issues.createComment({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: newIssue.number, + body: message + }); + }