From bc23eb163f73c2faef44243f6f22277f6e3f82f3 Mon Sep 17 00:00:00 2001 From: Brijesh Bittu <717550+brijeshb42@users.noreply.github.com> Date: Tue, 13 Oct 2026 15:49:59 +0530 Subject: [PATCH 1/5] [ci] Integrate label-based Claude issue triage --- .github/workflows/claude-triage.yml | 30 +++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 .github/workflows/claude-triage.yml diff --git a/.github/workflows/claude-triage.yml b/.github/workflows/claude-triage.yml new file mode 100644 index 00000000000000..8f400be7ae5816 --- /dev/null +++ b/.github/workflows/claude-triage.yml @@ -0,0 +1,30 @@ +name: Claude issue triage + +on: + issues: + types: [labeled] + issue_comment: + types: [created] + +permissions: {} + +jobs: + triage: + if: >- + !github.event.issue.pull_request && + ((github.event_name == 'issues' && github.event.label.name == 'ai: needs-triage') || + (github.event_name == 'issue_comment' && github.event.comment.user.type == 'User' && + contains(github.event.issue.labels.*.name, 'ai: needs-triage'))) + # Maximum grant required by the reusable workflow; its model-running job uses read-only GitHub access. + # Automated fixes and their publisher are disabled in the pinned workflow. + permissions: + contents: write + pull-requests: write + issues: write + id-token: write + uses: mui/mui-public/.github/workflows/claude-triage.yml@6add662666ab925ab03bc9e57e870a75bd11dba2 # human replies on labeled issues + with: + issue-number: ${{ github.event.issue.number }} + mode: triage + comment-id: ${{ github.event_name == 'issue_comment' && github.event.comment.id || 0 }} + triage-comment-label: 'ai: needs-triage' From 9e41da7ad748e6e0af1b772869dd539fba7f7b19 Mon Sep 17 00:00:00 2001 From: Brijesh Bittu <717550+brijeshb42@users.noreply.github.com> Date: Tue, 13 Oct 2026 16:16:14 +0530 Subject: [PATCH 2/5] [ci] Restrict triage replies to issue authors and collaborators --- .github/workflows/claude-triage.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/claude-triage.yml b/.github/workflows/claude-triage.yml index 8f400be7ae5816..acfe43ae215cdd 100644 --- a/.github/workflows/claude-triage.yml +++ b/.github/workflows/claude-triage.yml @@ -14,7 +14,9 @@ jobs: !github.event.issue.pull_request && ((github.event_name == 'issues' && github.event.label.name == 'ai: needs-triage') || (github.event_name == 'issue_comment' && github.event.comment.user.type == 'User' && - contains(github.event.issue.labels.*.name, 'ai: needs-triage'))) + contains(github.event.issue.labels.*.name, 'ai: needs-triage') && + (github.event.comment.user.login == github.event.issue.user.login || + contains(fromJSON('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association)))) # Maximum grant required by the reusable workflow; its model-running job uses read-only GitHub access. # Automated fixes and their publisher are disabled in the pinned workflow. permissions: @@ -22,7 +24,7 @@ jobs: pull-requests: write issues: write id-token: write - uses: mui/mui-public/.github/workflows/claude-triage.yml@6add662666ab925ab03bc9e57e870a75bd11dba2 # human replies on labeled issues + uses: mui/mui-public/.github/workflows/claude-triage.yml@2b595ad8dfd4bd3f5f6801644544ea17f1ac69ec # issue author and member replies with: issue-number: ${{ github.event.issue.number }} mode: triage From c0e6b6e2b8a1e96d0767e4a127da96830b279387 Mon Sep 17 00:00:00 2001 From: Brijesh Bittu <717550+brijeshb42@users.noreply.github.com> Date: Tue, 13 Oct 2026 16:29:09 +0530 Subject: [PATCH 3/5] [ci] Retrigger authorized replies after triage completes --- .github/workflows/claude-triage.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/claude-triage.yml b/.github/workflows/claude-triage.yml index acfe43ae215cdd..c646f626eeeee4 100644 --- a/.github/workflows/claude-triage.yml +++ b/.github/workflows/claude-triage.yml @@ -14,7 +14,8 @@ jobs: !github.event.issue.pull_request && ((github.event_name == 'issues' && github.event.label.name == 'ai: needs-triage') || (github.event_name == 'issue_comment' && github.event.comment.user.type == 'User' && - contains(github.event.issue.labels.*.name, 'ai: needs-triage') && + (contains(github.event.issue.labels.*.name, 'ai: needs-triage') || + contains(github.event.issue.labels.*.name, 'ai: triaged')) && (github.event.comment.user.login == github.event.issue.user.login || contains(fromJSON('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association)))) # Maximum grant required by the reusable workflow; its model-running job uses read-only GitHub access. @@ -24,9 +25,9 @@ jobs: pull-requests: write issues: write id-token: write - uses: mui/mui-public/.github/workflows/claude-triage.yml@2b595ad8dfd4bd3f5f6801644544ea17f1ac69ec # issue author and member replies + uses: mui/mui-public/.github/workflows/claude-triage.yml@70dbc68ffe5307efd8afb657dba69069fd1d3aa6 # issue author and member replies across triage states with: issue-number: ${{ github.event.issue.number }} mode: triage comment-id: ${{ github.event_name == 'issue_comment' && github.event.comment.id || 0 }} - triage-comment-label: 'ai: needs-triage' + triage-comment-labels: '["ai: needs-triage", "ai: triaged"]' From ed46936a9afaf0c31a1965c1be013645fc8954a0 Mon Sep 17 00:00:00 2001 From: Brijesh Bittu <717550+brijeshb42@users.noreply.github.com> Date: Tue, 13 Oct 2026 21:55:38 +0530 Subject: [PATCH 4/5] [ci] Use shared triage label defaults Pin the workflow with default comment labels and remove the redundant caller setting so label configuration stays shared. --- .github/workflows/claude-triage.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/claude-triage.yml b/.github/workflows/claude-triage.yml index c646f626eeeee4..a8c96716ba7d4e 100644 --- a/.github/workflows/claude-triage.yml +++ b/.github/workflows/claude-triage.yml @@ -25,9 +25,8 @@ jobs: pull-requests: write issues: write id-token: write - uses: mui/mui-public/.github/workflows/claude-triage.yml@70dbc68ffe5307efd8afb657dba69069fd1d3aa6 # issue author and member replies across triage states + uses: mui/mui-public/.github/workflows/claude-triage.yml@84e3f5033fa47f62937c3b36900a18a73e64e76a # shared triage comment label defaults with: issue-number: ${{ github.event.issue.number }} mode: triage comment-id: ${{ github.event_name == 'issue_comment' && github.event.comment.id || 0 }} - triage-comment-labels: '["ai: needs-triage", "ai: triaged"]' From dca91e401c6315c1d9d20eaa45d34ff0894bb370 Mon Sep 17 00:00:00 2001 From: Brijesh Bittu <717550+brijeshb42@users.noreply.github.com> Date: Mon, 26 Oct 2026 21:32:28 +0530 Subject: [PATCH 5/5] [ci] Pin triage workflow to merged mui-public --- .github/workflows/claude-triage.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/claude-triage.yml b/.github/workflows/claude-triage.yml index a8c96716ba7d4e..c9d3ed2ce16b82 100644 --- a/.github/workflows/claude-triage.yml +++ b/.github/workflows/claude-triage.yml @@ -25,7 +25,7 @@ jobs: pull-requests: write issues: write id-token: write - uses: mui/mui-public/.github/workflows/claude-triage.yml@84e3f5033fa47f62937c3b36900a18a73e64e76a # shared triage comment label defaults + uses: mui/mui-public/.github/workflows/claude-triage.yml@4512ed40c3abe07e677ea66a74fd9ef89fc1e732 # master with: issue-number: ${{ github.event.issue.number }} mode: triage