Skip to main content

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

🤖 Pull Request Prompt

  • 📝 Prompt Instructions: review, description, and custom.
  • 🔍 Diff - Show difference between current and base branch.
  • 📚 Context Patterns - Include any file in prompt for context.
  • 🚫 Blacklist Patterns - Exclude noisy files like *.lock.

🛠️ 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 origin/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 / -b base branch or commit
  • --blacklist repeatable pattern exclusion
  • --context repeatable pattern inclusion
  • --write save to .pr_prompt/<type>.md instead 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: 999999
  • include_commit_messages (bool) Include commit messages in prompt. Default: True
  • repo_path (str | None) Target repo path. Default: cwd
  • remote (str) Git remote name. Default: origin
  • default_base_branch (str | None) Used when base_ref not passed. Inferred if omitted.
  • custom_instructions (str | None) Used when instructions are not provided in generate_custom.
  • fetch_base (bool) Fetch base ref before generating diff. Default: True

📜 Parameter Precedence Order

Highest wins (later overrides earlier):

  1. Internal defaults (dataclass field defaults)
  2. pyproject.toml / pr_prompt.toml [tool.pr-prompt] values
  3. Explicit constructor args / CLI flags (mapped to generator args)
  4. 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 instructions arg 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=... in generate_custom, OR
  • Set custom_instructions in 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` -> `origin/main`
**Commits:** Bumped minor
## Changed Files
   src/
   └── pr_prompt/
M      └── __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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pr_prompt-1.1.0.tar.gz (12.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pr_prompt-1.1.0-py3-none-any.whl (17.5 kB view details)

Uploaded Python 3

File details

Details for the file pr_prompt-1.1.0.tar.gz.

File metadata

  • Download URL: pr_prompt-1.1.0.tar.gz
  • Upload date:
  • Size: 12.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pr_prompt-1.1.0.tar.gz
Algorithm Hash digest
SHA256 8cde298ae21695a59a2606adf83285a6266ba956dae18a98550f7c2b77eb86f5
MD5 4564153108dff20163af2e6a07e2b1e9
BLAKE2b-256 d33d75225d41b565a68f685c8087f63f946ee5fd36f0c4b0eb55f7b1022b0992

See more details on using hashes here.

File details

Details for the file pr_prompt-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: pr_prompt-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 17.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pr_prompt-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4dfcbe610e06a770612b7ccbe49392a7eca06498eb3448df0c3b200580e61134
MD5 b53a103904546ddcb2a2f347f5fbbf63
BLAKE2b-256 218b09d9ab24b4871a21b6b12b41cbcf303810c7f993af976e03dcea520008f2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page