|
| 1 | +name: Claude Code Review |
| 2 | + |
| 3 | +on: |
| 4 | + pull_request: |
| 5 | + types: [opened, synchronize] |
| 6 | + # Optional: Only run on specific file changes |
| 7 | + # paths: |
| 8 | + # - "src/**/*.ts" |
| 9 | + # - "src/**/*.tsx" |
| 10 | + # - "src/**/*.js" |
| 11 | + # - "src/**/*.jsx" |
| 12 | + |
| 13 | +jobs: |
| 14 | + claude-review: |
| 15 | + # Optional: Filter by PR author |
| 16 | + # if: | |
| 17 | + # github.event.pull_request.user.login == 'external-contributor' || |
| 18 | + # github.event.pull_request.user.login == 'new-developer' || |
| 19 | + # github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR' |
| 20 | + |
| 21 | + runs-on: ubuntu-latest |
| 22 | + permissions: |
| 23 | + contents: read |
| 24 | + pull-requests: read |
| 25 | + issues: read |
| 26 | + id-token: write |
| 27 | + |
| 28 | + steps: |
| 29 | + - name: Checkout repository |
| 30 | + uses: actions/checkout@v4 |
| 31 | + with: |
| 32 | + fetch-depth: 1 |
| 33 | + |
| 34 | + - name: Run Claude Code Review |
| 35 | + id: claude-review |
| 36 | + uses: anthropics/claude-code-action@beta |
| 37 | + with: |
| 38 | + anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} |
| 39 | + |
| 40 | + # Optional: Specify model (defaults to Claude Sonnet 4, uncomment for Claude Opus 4) |
| 41 | + # model: "claude-opus-4-20250514" |
| 42 | + |
| 43 | + # Direct prompt for automated review (no @claude mention needed) |
| 44 | + direct_prompt: | |
| 45 | + Please review this pull request and provide feedback on: |
| 46 | + - Code quality and best practices |
| 47 | + - Potential bugs or issues |
| 48 | + - Performance considerations |
| 49 | + - Security concerns |
| 50 | + - Test coverage |
| 51 | + |
| 52 | + Be constructive and helpful in your feedback. |
| 53 | + |
| 54 | + # Optional: Customize review based on file types |
| 55 | + # direct_prompt: | |
| 56 | + # Review this PR focusing on: |
| 57 | + # - For TypeScript files: Type safety and proper interface usage |
| 58 | + # - For API endpoints: Security, input validation, and error handling |
| 59 | + # - For React components: Performance, accessibility, and best practices |
| 60 | + # - For tests: Coverage, edge cases, and test quality |
| 61 | + |
| 62 | + # Optional: Different prompts for different authors |
| 63 | + # direct_prompt: | |
| 64 | + # ${{ github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR' && |
| 65 | + # 'Welcome! Please review this PR from a first-time contributor. Be encouraging and provide detailed explanations for any suggestions.' || |
| 66 | + # 'Please provide a thorough code review focusing on our coding standards and best practices.' }} |
| 67 | + |
| 68 | + # Optional: Add specific tools for running tests or linting |
| 69 | + # allowed_tools: "Bash(npm run test),Bash(npm run lint),Bash(npm run typecheck)" |
| 70 | + |
| 71 | + # Optional: Skip review for certain conditions |
| 72 | + # if: | |
| 73 | + # !contains(github.event.pull_request.title, '[skip-review]') && |
| 74 | + # !contains(github.event.pull_request.title, '[WIP]') |
| 75 | + |
0 commit comments