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

🤖 Prompt Generation

  • 🔍 Diff - Show difference between current and base branch.
  • 📝 Multiple Prompt Types: review, description, and custom.
  • 📁 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 review.md
pr-prompt

# Review prompt to stdout
pr-prompt review --stdout

# Description prompt to description.md
pr-prompt description -b main

# Custom prompt (requires custom_instructions in TOML config)
pr-prompt custom

Writes <type>.md unless --stdout is used.

Flags:

  • --base-ref / -b base branch or commit
  • --blacklist repeatable pattern exclusion
  • --context repeatable pattern inclusion
  • --stdout print instead of file

⚙️ 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 title/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


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-0.5.0.tar.gz (12.3 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-0.5.0-py3-none-any.whl (16.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pr_prompt-0.5.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

Hashes for pr_prompt-0.5.0.tar.gz
Algorithm Hash digest
SHA256 72dbfe87e40396e223921d67d3e2b186827b61ad5c07371eb7bbedbefa554cd0
MD5 0b2fb64d8e6865eecdb43a4a56cd7036
BLAKE2b-256 a3b4643def8c3aebbe84b1a7101f2df4ec99a71f556557411274ad6e7914c923

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pr_prompt-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 16.8 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-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 443c17b4196757e4c53102c4c85cc585c84e79759f52b4769e18a46dd98da214
MD5 83c5fa2c2e4609727e7694a55a059d27
BLAKE2b-256 dc1c7c75750439ebd2e562eb9577a508bf6af0e129bb5ba5bd75f70db812065c

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