diff --git a/.claude/commands/dedupe.md b/.claude/commands/dedupe.md deleted file mode 100644 index ab44887c6..000000000 --- a/.claude/commands/dedupe.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -allowed-tools: Bash(gh issue view:*), Bash(gh search:*), Bash(gh issue list:*), Bash(gh api:*), Bash(gh issue comment:*), Task -description: Find duplicate GitHub issues ---- - -Find up to 3 likely duplicate issues for a given GitHub issue. - -To do this, follow these steps precisely: - -1. Use an agent to check if the Github issue (a) is closed, (b) does not need to be deduped (eg. because it is broad product feedback without a specific solution, or positive feedback), or (c) already has a duplicates comment that you made earlier. If so, do not proceed. - -2. Use an agent to view a Github issue, and ask the agent to return a summary of the issue - -3. Then, launch 3 parallel agents to search Github for duplicates of this issue, using diverse keywords and search approaches, using the summary from #1 - -4. Next, feed the results from #1 and #2 into another agent, so that it can filter out false positives, that are likely not actually duplicates of the original issue. If there are no duplicates remaining, do not proceed. - -5. Finally, comment back on the issue with a list of up to three duplicate issues (or zero, if there are no likely duplicates) - -Notes (be sure to tell this to your agents, too): - -- Use `gh` to interact with Github, rather than web fetch -- Do not use other tools, beyond `gh` (eg. don't use other MCP servers, file edit, etc.) -- Make a todo list first -- For your comment, follow the following format precisely (assuming for this example that you found 3 suspected duplicates): - ---- -Found 3 possible duplicate issues: - -1. #123: Issue title here -2. #456: Another issue title -3. #789: Third issue title - -This issue will be automatically closed as a duplicate in 3 days. - -- If your issue is a duplicate, please close it and 👍 the existing issue instead -- To prevent auto-closure, add a comment or 👎 this comment - ---- diff --git a/.github/workflows/marvin-dedupe-issues.yml b/.github/workflows/marvin-dedupe-issues.yml index a4f863e8b..3f584478d 100644 --- a/.github/workflows/marvin-dedupe-issues.yml +++ b/.github/workflows/marvin-dedupe-issues.yml @@ -29,10 +29,51 @@ jobs: app-id: ${{ secrets.MARVIN_APP_ID }} private-key: ${{ secrets.MARVIN_APP_PRIVATE_KEY }} + - name: Create dedupe prompt + run: | + mkdir -p /tmp/claude-prompts + cat > /tmp/claude-prompts/dedupe-prompt.txt << 'EOF' + Find up to 3 likely duplicate issues for GitHub issue ${{ github.repository }}/issues/${{ github.event.issue.number || inputs.issue_number }}. + + Follow these steps precisely: + + 1. Use the Task tool to check if the GitHub issue (a) is closed, (b) does not need to be deduped (eg. because it is broad product feedback without a specific solution, or positive feedback), or (c) already has a duplicates comment that you made earlier. If so, do not proceed. + + 2. Use the Task tool to view the GitHub issue, and ask the agent to return a summary of the issue + + 3. Then, launch 3 parallel agents using the Task tool to search GitHub for duplicates of this issue, using diverse keywords and search approaches, using the summary from step 2 + + 4. Next, feed the results from steps 2 and 3 into another agent using the Task tool, so that it can filter out false positives that are likely not actually duplicates of the original issue. If there are no duplicates remaining, do not proceed. + + 5. Finally, comment back on the issue with a list of up to three duplicate issues (or zero, if there are no likely duplicates) + + Notes for your agents: + - Use `gh` to interact with GitHub, rather than web fetch + - Do not use other tools, beyond `gh` and Task (eg. don't use other MCP servers, file edit, etc.) + - Make a todo list first + + For your comment, follow this format precisely (example with 3 suspected duplicates): + + --- + Found 3 possible duplicate issues: + + 1. #123: Issue title here + 2. #456: Another issue title + 3. #789: Third issue title + + This issue will be automatically closed as a duplicate in 3 days. + + - If your issue is a duplicate, please close it and 👍 the existing issue instead + - To prevent auto-closure, add a comment or 👎 this comment + + --- + EOF + - name: Run Marvin dedupe command uses: anthropics/claude-code-base-action@beta with: - prompt: "/dedupe ${{ github.repository }}/issues/${{ github.event.issue.number || inputs.issue_number }}" + prompt_file: /tmp/claude-prompts/dedupe-prompt.txt + allowed_tools: "Bash(gh issue view:*),Bash(gh search:*),Bash(gh issue list:*),Bash(gh api:*),Bash(gh issue comment:*),Task" anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} claude_env: | GH_TOKEN: ${{ steps.marvin-token.outputs.token }} diff --git a/.github/workflows/marvin-label-triage.yml b/.github/workflows/marvin-label-triage.yml index f092b243b..8ec4bc9e4 100644 --- a/.github/workflows/marvin-label-triage.yml +++ b/.github/workflows/marvin-label-triage.yml @@ -12,6 +12,10 @@ on: required: true type: string +concurrency: + group: triage-${{ github.event.issue.number || github.event.pull_request.number || inputs.issue_number }} + cancel-in-progress: false + jobs: triage-issue: runs-on: ubuntu-latest @@ -136,7 +140,7 @@ jobs: uses: anthropics/claude-code-base-action@beta with: prompt_file: /tmp/claude-prompts/triage-prompt.txt - allowed_tools: "Bash(gh label list),mcp__github__get_issue,mcp__github__get_issue_comments,mcp__github__update_issue" + allowed_tools: "Bash(gh label list),mcp__github__get_issue,mcp__github__get_issue_comments,mcp__github__update_issue,mcp__github__get_pull_request_files" timeout_minutes: "5" anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} mcp_config: /tmp/mcp-config/mcp-servers.json