diff --git a/.github/workflows/claude-pr-reactions.yml b/.github/workflows/claude-pr-reactions.yml new file mode 100644 index 00000000000..5e687aefeb8 --- /dev/null +++ b/.github/workflows/claude-pr-reactions.yml @@ -0,0 +1,50 @@ +name: "Claude PR Reactions" + +on: + issue_comment: + types: [created] + pull_request_review: + types: [submitted] + pull_request_review_comment: + types: [created] + +permissions: + contents: write + pull-requests: write + issues: write + actions: read + +concurrency: + group: claude-pr-reactions-${{ github.event.pull_request.number || github.event.issue.number }} + cancel-in-progress: true + +jobs: + react: + name: "React to PR feedback" + runs-on: blacksmith-4vcpu-ubuntu-2404 + timeout-minutes: 60 + + steps: + - name: "Checkout" + uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.PHPSTAN_BOT_TOKEN }} + + - name: "Install PHP" + uses: "shivammathur/setup-php@v2" + with: + coverage: "none" + php-version: "8.4" + ini-file: development + extensions: mbstring + + - uses: "ramsey/composer-install@v3" + + - name: "React to feedback" + uses: anthropics/claude-code-action@v1 + with: + claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }} + github_token: ${{ secrets.PHPSTAN_BOT_TOKEN }} + trigger_phrase: "@phpstan-bot" + claude_args: "--model claude-opus-4-6 --max-turns 50"