A tool to generate pull request prompts using git cli commands.
Project description
pr-prompt
Generate pull request prompts (review, description, or custom) from git diffs, commits, and context files.
🚀 Features
🤖 Prompt Generation
- 🔍 Diff - Show difference between current and base branch.
- 📝 Multiple Prompt Types:
review,description, andcustom. - 📁 Files Tree - Displays a tree of changed files.
- 🚫 Blacklist Patterns - Exclude noisy files like
*.lock. - 📚 Context Patterns - Include any file in prompt for context.
🛠️ Usage & Integration
- 🐍 Python API: Usable as a library in your own tools.
- 🖥️ CLI Interface: Simple command-line for quick use.
- ⚙️ TOML Configuration: Configure via
pyproject.toml. - 👤 Vendor Agnostic: Works with any LLM.
📥 Installation
pip install pr-prompt
📚 Requirements
- Python 3.9+
- git installed and on PATH (or set GIT_PYTHON_GIT_EXECUTABLE)
⚡ Quick Start
🐍 Python API (PrPromptGenerator)
from pr_prompt import PrPromptGenerator
generator = PrPromptGenerator.from_toml() # uses defaults + any TOML config
prompt = generator.generate_review() # compares current HEAD to default base branch
print(prompt)
🖥️ CLI Usage
# Review prompt (default type) to stdout
pr-prompt
# Review prompt saved to .pr_prompt/review.md
pr-prompt review --write
# Description prompt to stdout
pr-prompt description -b main
# Custom prompt (requires custom_instructions in TOML config)
pr-prompt custom
Outputs to stdout by default. Use --write to save to .pr_prompt/<type>.md.
Flags:
--base-ref / -bbase branch or commit--blacklistrepeatable pattern exclusion--contextrepeatable pattern inclusion--writesave to.pr_prompt/<type>.mdinstead of stdout
⚙️ Configuration
🔧 Parameters Reference
PrPromptGenerator / CLI / TOML shared parameters:
blacklist_patterns(list[str])File patterns to exclude from diff. Default:["*.lock"]context_patterns(list[str])File patterns to include in prompt. Used for including documentation that provides context. Default:["AGENTS.md"]diff_context_lines(int)Number of context lines around changes in diffs. Default:999999include_commit_messages(bool)Include commit messages in prompt. Default:Truerepo_path(str | None)Target repo path. Default:cwdremote(str)Git remote name. Default:origindefault_base_branch(str | None)Used when base_ref not passed. Inferred if omitted.custom_instructions(str | None)Used wheninstructionsare not provided in generate_custom.fetch_base(bool)Fetch base ref before generating diff. Default:True
📜 Parameter Precedence Order
Highest wins (later overrides earlier):
- Internal defaults (dataclass field defaults)
- pyproject.toml / pr_prompt.toml [tool.pr-prompt] values
- Explicit constructor args / CLI flags (mapped to generator args)
- Per-call method arguments (e.g., base_ref passed to generate_review) Notes:
- If you call
generate_review(base_ref=...), that overrides both default_base_branch and any TOML value. - For CUSTOM prompts: if
instructionsarg omitted,custom_instructions(TOML or constructor) must be set or an error is raised.
🎯 Prompt Types
🔍 Review
Guides the LLM to write a code review (quality, correctness, security, performance, clarity).
📝 Description
Guides the LLM to write a clear PR description (summary, rationale, impact).
🛠️ Custom
Arbitrary instructions. Requires:
- Pass
instructions=...ingenerate_custom, OR - Set
custom_instructionsin constructor/TOML (used when CLI type=custom)
📋 Prompt Structure
Generated Markdown sections:
- Instructions: Role plus review / description / custom goals.
- Pull Request Details: Repository name, base -> head branch, optional description, commit list.
- Context Files: Inline content from context_patterns for architectural / design background.
- Changed Files Tree: Condensed tree view of modified paths.
- File Diffs: Diffs filtered by blacklist_patterns with configured context lines.
📄 Prompt Example
(Review excerpt)
## Instructions
You are a senior software engineer...
## Pull Request Details
**Repository:** pr-prompt
**Branch:** `feature` -> `main`
**Commits:** Bumped minor
## Changed Files
src/
└── pr_prompt/
└── __init__.py
## File diffs
### Modified `src/pr_prompt/__init__.py`
```diff
-__version__ = "0.3.0"
+__version__ = "0.4.0"
```
⚙️ Using pyproject.toml / pr_prompt.toml
🔧 Default Configuration
[tool.pr-prompt]
blacklist_patterns = ["*.lock"]
context_patterns = ["AGENTS.md"]
diff_context_lines = 999999
include_commit_messages = true
# repo_path =
remote = "origin"
# default_base_branch =
# custom_instructions =
fetch_base = true
🤝 Contributing
Contributions welcome. Please open issues / PRs.
📜 License
MIT License (see LICENSE).
Project details
Release history Release notifications | RSS feed
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_prompt-1.0.0.tar.gz.
File metadata
- Download URL: pr_prompt-1.0.0.tar.gz
- Upload date:
- Size: 12.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
184937f9caaa5e8e462c38ced04c8c7f865c3f9cbdcf5e9ed4b51ca8ada74b40
|
|
| MD5 |
539825a4b4f5f9bb0a7d2760b0f90d87
|
|
| BLAKE2b-256 |
a9676f9617c95ffd3215aeafefc8d5cbe1ffaaded09f82ea980f95ac0277ed07
|
File details
Details for the file pr_prompt-1.0.0-py3-none-any.whl.
File metadata
- Download URL: pr_prompt-1.0.0-py3-none-any.whl
- Upload date:
- Size: 16.9 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 |
bf4b9f7b574f175e0bbac998a1cdb395ba65b59d7e5d320b8f0b49dce9d96bfe
|
|
| MD5 |
d1bbf6ab8e8615bff5fd6305a45853f9
|
|
| BLAKE2b-256 |
cbc067084dc0adca6c6de1eabbc657ede949dd6af4424c90b472ef8f634600e4
|