From 620788bee15e72074d7bfe2e3a4f5067f9fefb71 Mon Sep 17 00:00:00 2001 From: Jon Saad-Falcon <41205309+jonsaadfalcon@users.noreply.github.com> Date: Tue, 24 Mar 2026 16:53:26 -0700 Subject: [PATCH] ci: add Claude PR review workflow --- .github/workflows/claude-review.yml | 50 +++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 .github/workflows/claude-review.yml diff --git a/.github/workflows/claude-review.yml b/.github/workflows/claude-review.yml new file mode 100644 index 00000000..42732cc9 --- /dev/null +++ b/.github/workflows/claude-review.yml @@ -0,0 +1,50 @@ +name: Claude PR Review + +on: + pull_request: + types: [opened, synchronize] + issue_comment: + types: [created] + pull_request_review_comment: + types: [created] + workflow_dispatch: + +concurrency: + group: claude-review-${{ github.event.pull_request.number || github.event.issue.number || github.run_id }} + cancel-in-progress: true + +permissions: + contents: read + pull-requests: write + issues: write + +jobs: + review: + runs-on: ubuntu-latest + timeout-minutes: 30 + if: | + github.event_name == 'pull_request' || + github.event_name == 'workflow_dispatch' || + (github.event_name == 'issue_comment' && + github.event.issue.pull_request && + contains(github.event.comment.body, '@claude') && + github.actor != 'claude[bot]') || + (github.event_name == 'pull_request_review_comment' && + contains(github.event.comment.body, '@claude') && + github.actor != 'claude[bot]') + steps: + - uses: actions/checkout@v4 + + - name: Read review instructions + id: review + run: | + EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) + echo "instructions<<$EOF" >> "$GITHUB_OUTPUT" + cat REVIEW.md >> "$GITHUB_OUTPUT" + echo "$EOF" >> "$GITHUB_OUTPUT" + + - uses: anthropics/claude-code-action@v1 + with: + anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} + model: claude-sonnet-4-6 + review_instructions: ${{ steps.review.outputs.instructions }}