name: "PR: Claude Review" description: "AI-powered code review triggered by adding the 'claude-review' label to a PR" permissions: contents: read pull-requests: write issues: write id-token: write statuses: write on: pull_request: types: [labeled] concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: claude-review: runs-on: ubuntu-latest if: github.event.label.name == 'claude-review' timeout-minutes: 30 steps: - name: Checkout repository uses: actions/checkout@v5 with: fetch-depth: 0 ref: refs/pull/${{ github.event.pull_request.number }}/head - name: Install pnpm uses: pnpm/action-setup@v4 with: version: 10 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' cache: 'pnpm' - name: Install dependencies for analysis tools run: | pnpm install -g typescript @vue/compiler-sfc - name: Run Claude PR Review uses: anthropics/claude-code-action@v1.0.6 with: label_trigger: "claude-review" prompt: | Read the file .claude/commands/comprehensive-pr-review.md and follow ALL the instructions exactly. CRITICAL: You must post individual inline comments using the gh api commands shown in the file. DO NOT create a summary comment. Each issue must be posted as a separate inline comment on the specific line of code. anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} claude_args: "--max-turns 256 --allowedTools 'Bash(git:*),Bash(gh api:*),Bash(gh pr:*),Bash(gh repo:*),Bash(jq:*),Bash(echo:*),Read,Write,Edit,Glob,Grep,WebFetch'" env: PR_NUMBER: ${{ github.event.pull_request.number }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} COMMIT_SHA: ${{ github.event.pull_request.head.sha }} BASE_SHA: ${{ github.event.pull_request.base.sha }} REPOSITORY: ${{ github.repository }} - name: Remove claude-review label if: always() run: gh pr edit ${{ github.event.pull_request.number }} --remove-label "claude-review" env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}