diff --git a/.github/workflows/claude.yml b/.github/workflows/claude.yml index 2910e4f3..8b33001e 100644 --- a/.github/workflows/claude.yml +++ b/.github/workflows/claude.yml @@ -27,10 +27,44 @@ jobs: id-token: write actions: read steps: - - name: Checkout repository + - name: Get PR details + if: | + (github.event_name == 'issue_comment' && github.event.issue.pull_request) || + github.event_name == 'pull_request_review_comment' || + github.event_name == 'pull_request_review' + id: pr + uses: actions/github-script@v7 + with: + script: | + let prNumber; + if (context.eventName === 'issue_comment') { + prNumber = context.issue.number; + } else { + prNumber = context.payload.pull_request.number; + } + + const pr = await github.rest.pulls.get({ + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: prNumber + }); + + core.setOutput('sha', pr.data.head.sha); + core.setOutput('repo', pr.data.head.repo.full_name); + + - name: Checkout PR branch + if: steps.pr.outcome == 'success' uses: actions/checkout@v4 with: - fetch-depth: 1 + ref: ${{ steps.pr.outputs.sha }} + repository: ${{ steps.pr.outputs.repo }} + fetch-depth: 0 + + - name: Checkout repository + if: steps.pr.outcome != 'success' + uses: actions/checkout@v4 + with: + fetch-depth: 0 - name: Run Claude Code id: claude diff --git a/.github/workflows/claude_pr_review.yml b/.github/workflows/claude_pr_review.yml deleted file mode 100644 index f24e2653..00000000 --- a/.github/workflows/claude_pr_review.yml +++ /dev/null @@ -1,46 +0,0 @@ -name: Claude Code Review - -on: - pull_request: - types: [opened, synchronize, reopened] - -permissions: - contents: read - pull-requests: write - -jobs: - claude-review: - runs-on: ubuntu-latest - - steps: - - name: Checkout PR branch from fork - uses: actions/checkout@v4 - with: - ref: ${{ github.event.pull_request.head.ref }} - repository: ${{ github.event.pull_request.head.repo.full_name }} - fetch-depth: 0 - - - name: Run Claude Code Review - id: claude-review - uses: anthropics/claude-code-action@v1 - with: - anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} - github_token: ${{ secrets.GITHUB_TOKEN }} - prompt: | - Please review this PR focusing on: - - TypeScript type safety - - MCP protocol compliance - - Security vulnerabilities - - Performance implications - - - name: Comment on failure - if: failure() - uses: actions/github-script@v7 - with: - script: | - github.rest.issues.createComment({ - issue_number: context.issue.number, - owner: context.repo.owner, - repo: context.repo.repo, - body: '❌ Claude Code review failed. Please check the [action logs](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) for details.' - })