| 
 | 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.1)  | 
 | 41 | +          # model: "claude-opus-4-1-20250805"  | 
 | 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: Use sticky comments to make Claude reuse the same comment on subsequent pushes to the same PR  | 
 | 55 | +          # use_sticky_comment: true  | 
 | 56 | +            | 
 | 57 | +          # Optional: Customize review based on file types  | 
 | 58 | +          # direct_prompt: |  | 
 | 59 | +          #   Review this PR focusing on:  | 
 | 60 | +          #   - For TypeScript files: Type safety and proper interface usage  | 
 | 61 | +          #   - For API endpoints: Security, input validation, and error handling  | 
 | 62 | +          #   - For React components: Performance, accessibility, and best practices  | 
 | 63 | +          #   - For tests: Coverage, edge cases, and test quality  | 
 | 64 | +            | 
 | 65 | +          # Optional: Different prompts for different authors  | 
 | 66 | +          # direct_prompt: |  | 
 | 67 | +          #   ${{ github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR' &&   | 
 | 68 | +          #   'Welcome! Please review this PR from a first-time contributor. Be encouraging and provide detailed explanations for any suggestions.' ||  | 
 | 69 | +          #   'Please provide a thorough code review focusing on our coding standards and best practices.' }}  | 
 | 70 | +            | 
 | 71 | +          # Optional: Add specific tools for running tests or linting  | 
 | 72 | +          # allowed_tools: "Bash(npm run test),Bash(npm run lint),Bash(npm run typecheck)"  | 
 | 73 | +            | 
 | 74 | +          # Optional: Skip review for certain conditions  | 
 | 75 | +          # if: |  | 
 | 76 | +          #   !contains(github.event.pull_request.title, '[skip-review]') &&  | 
 | 77 | +          #   !contains(github.event.pull_request.title, '[WIP]')  | 
 | 78 | + | 
0 commit comments