UNPKG

@diekotto/ai-pull-review-cli

Version:

A GitHub Action that leverages Anthropic's Claude AI to provide intelligent analysis and review of pull requests.

206 lines (156 loc) 6.44 kB
# AI Pull Request Analysis A powerful tool for automated code review powered by Anthropic's Claude AI. Available both as a GitHub Action and as an NPM package for CLI usage. [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![NPM Version](https://img.shields.io/npm/v/@diekotto/ai-pull-review-cli.svg)](https://www.npmjs.com/package/@diekotto/ai-pull-review-cli) [![Node Version](https://img.shields.io/node/v/@diekotto/ai-pull-review-cli.svg)](https://www.npmjs.com/package/@diekotto/ai-pull-review-cli) ## Features - Automated code review using Claude AI - Detection of potential bugs and vulnerabilities - Style and consistency checking - Documentation assessment - Performance impact analysis - Security best practices verification - Cost estimation and tracking - Flexible file filtering - Supports multiple analysis levels - Available as both GitHub Action and CLI tool ## Usage Options ### 1. GitHub Action #### Prerequisites 1. Anthropic API key (obtain from [Anthropic's website](https://anthropic.com)) 2. GitHub repository with pull request workflows enabled #### Installation 1. Create `.github/workflows/pr-analysis.yml`: ```yaml name: PR Analysis on: pull_request: types: [opened, synchronize, reopened] jobs: analyze: runs-on: ubuntu-latest permissions: contents: read pull-requests: write steps: - uses: actions/checkout@v4 - name: AI Pull Request Analysis uses: diekotto/ai-pull-review@v2 with: anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} github_token: ${{ secrets.GITHUB_TOKEN }} ``` 2. Add your Anthropic API key to repository secrets: - Repository settings Secrets and Variables Actions - Create new secret: `ANTHROPIC_API_KEY` - Add your API key as the value ### 2. CLI Usage The tool is also available as an NPM package for command-line usage. #### Installation ```bash # Global installation npm install -g @diekotto/ai-pull-review-cli # Or run directly with npx npx @diekotto/ai-pull-review-cli ``` #### CLI Options ```bash Usage: ai-pull-review-cli [options] Options: -V, --version output the version number -p, --pr <number> Pull request number (required) -r, --repo <owner/repo> Repository (required) -t, --token <token> GitHub token (default: GITHUB_TOKEN env) -k, --key <key> Anthropic API key (default: ANTHROPIC_API_KEY env) -l, --level <level> Analysis level (basic, standard, deep) (default: "basic") -m, --model <model> Claude model to use (default: "claude-3-5-haiku-20241022") --file-patterns <patterns> File patterns to include (comma-separated) --exclude-patterns <patterns> File patterns to exclude (default: "**/node_modules/**, **/dist/**, **/build/**, **/bin/**, **/artifacts/**") --max-files <number> Maximum files to analyze (default: "10") --max-size <number> Maximum file size in KB (default: "100") --threshold <number> Comment confidence threshold (default: "0.6") --write-pull-request Write the analysis to the pull request as a comment -o, --output <folder> Output folder for results (default: "results") -h, --help display help for command ``` #### Example Usage ```bash # Using environment variables export GITHUB_TOKEN=your_github_token export ANTHROPIC_API_KEY=your_anthropic_key # Analyze a specific PR ai-pull-review-cli -p 123 -r owner/repo -l deep # Or with npx npx ai-pull-review-cli -p 123 -r owner/repo -l deep ``` ## Configuration ### Analysis Levels - `basic`: Quick analysis focusing on bugs and style issues - `standard`: Comprehensive analysis including performance and security - `deep`: In-depth analysis including architecture, testing, and broader implications ### Available Models The tool supports various Claude models with different capabilities and pricing: - `claude-3-5-sonnet-20241022` (Default for accuracy) - `claude-3-5-haiku-20241022` (Default for speed) - `claude-3-opus-20240229` (Most capable) ### GitHub Action Configuration Complete configuration options for your workflow file: ```yaml - uses: diekotto/ai-pull-review@v2 with: # Required anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} github_token: ${{ secrets.GITHUB_TOKEN }} # Optional file_patterns: '**/*.js,**/*.jsx,**/*.ts,**/*.tsx,**/*.py,**/*.java,**/*.rb,**/*.go,**/*.rs' # Files to analyze exclude_patterns: '**/node_modules/**,**/dist/**,**/bin/**' # Files to exclude max_files: '10' # Maximum files to analyze max_size: '100' # Maximum file size in KB comment_threshold: '0.7' # Minimum confidence for comments analysis_level: 'basic' # basic, standard, or deep model: 'claude-3-5-haiku-20241022' # Claude model to use ``` ### Advanced Example Configuration focusing on JavaScript analysis with deep inspection: ```yaml name: Deep JS Analysis on: pull_request: paths: - '**.js' - '**.jsx' - '**.ts' - '**.tsx' jobs: analyze: runs-on: ubuntu-latest permissions: contents: read pull-requests: write steps: - uses: actions/checkout@v4 - name: AI Pull Request Analysis uses: diekotto/ai-pull-review@v2 with: anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} github_token: ${{ secrets.GITHUB_TOKEN }} file_patterns: '**/*.js,**/*.jsx,**/*.ts,**/*.tsx' exclude_patterns: '**/node_modules/**,**/dist/**,**/*.test.js' analysis_level: 'deep' max_files: '15' comment_threshold: '0.6' model: 'claude-3-5-sonnet-20241022' ``` ## Error Handling and Limitations - Files exceeding size or complexity limits are automatically skipped - Warnings are logged for problematic files - Analysis continues with remaining files when encountering issues - Detailed error reporting in GitHub Actions log - Cost tracking and estimation for API usage ## Requirements - Node.js >= 22.0.0 - NPM >= 10.0.0 ## License MIT License - see the [LICENSE](LICENSE) file for details. ## Contributing Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.