A CLI agent to assist with PR creation and management
Project description
PR Assistant CLI
PR Assistant is an AI-powered CLI tool designed to help developers streamline their workflow. It understands your codebase and automatically generates Pull Requests based on high-level instructions.
Features
- AI-Powered PR Creation: Generate PRs with code changes, titles, and descriptions from simple prompts.
- Codebase Understanding: Analyzes your project structure to provide context-aware suggestions.
- GitHub Integration: Automatically creates branches and opens PRs in your repository.
- Rate Limiting: Built-in client-side rate limiter to prevent API abuse.
- Gemini Integration: Uses Google's Gemini models for intelligent code generation.
Installation
You can install the package directly from the source:
git clone https://github.com/yourusername/pr-assistant.git
cd pr-assistant
pip install -e .
Configuration
Before using the tool, you need to initialize the configuration with your API keys.
- GitHub Token: A Personal Access Token (PAT) with
reposcope. - Gemini API Key: Your Google Gemini API key.
- Bot Token (Optional): A separate GitHub PAT for a bot account to post reviews.
Run the init command:
pr-assistant init
Follow the interactive prompts to save your credentials.
Project-Level Configuration
You can configure the tool for specific projects to avoid re-entering the repository name.
- Run
pr-assistant initinside your project directory. - When prompted "Do you want to configure this directory as a project?", answer
y. - The repository name will be saved to a local
.pr-assistant.jsonfile.
Note: Your API keys are always stored securely in your global configuration (home directory) and are never saved to the local project file.
Usage
Global Options
--verbose: Enable detailed debug logging.
pr-assistant --verbose create 1
Create a PR
To create a PR, use the create command. You can specify the number of PRs to generate and a specific instruction.
pr-assistant create 1 --instruction "Add a hello world function to main.py"
List PRs
To list active PRs in your repository:
pr-assistant list-prs
Review a PR
To review a PR using AI:
pr-assistant review-pr <pr_number> --persona "Senior Software Engineer"
The AI will analyze the diff and post a comment on the PR with its findings.
Development & Testing
This project includes a comprehensive test suite using pytest.
Running Tests
To run the tests, ensure you have the dev dependencies installed:
pip install -e ".[dev]"
python3 -m pytest tests/
Test Coverage
- Unit Tests: Config, Rate Limiter, Codebase Reader.
- Mocked Tests: GitHub Client, Agent (LLM).
- Integration Tests: CLI Commands.
- Security Tests: Key handling.
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pr_assistant_cli-0.1.4.tar.gz.
File metadata
- Download URL: pr_assistant_cli-0.1.4.tar.gz
- Upload date:
- Size: 16.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
af3672d66d89eb332c857ad8de0a8e8bf17e365845bd9273ec87e87dd4d97c4c
|
|
| MD5 |
8d0efe200eebba2740b394339cb6cb33
|
|
| BLAKE2b-256 |
5f5f716fb9c859c88c3bf3a654ecd89837788863abaa3933788f9ffc46cfb430
|
File details
Details for the file pr_assistant_cli-0.1.4-py3-none-any.whl.
File metadata
- Download URL: pr_assistant_cli-0.1.4-py3-none-any.whl
- Upload date:
- Size: 13.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e58f2d11920ebe13a8591b2169cee878e9f6453891cff5175738cc01556a1bb
|
|
| MD5 |
c2a39a6a8e2eb7ae4136f346a29692e7
|
|
| BLAKE2b-256 |
4d39518e1a0360b62546958f5b3bdcf23831a8f781eb41c84a647b0f85637ae2
|