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: Generate review or description prompts, or supply custom instructions.
  • Diff: Display differences between the current and base branches.
  • Context Patterns: Include matched files in the prompt for additional context.
  • Blacklist Patterns: Exclude noisy files (e.g., *.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

# Description prompt to stdout
pr-prompt description

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

# Copy review prompt to clipboard
pr-prompt review | xclip -selection clipboard

Options:

  • --base-ref / -b base branch or commit
  • --write save to .pr_prompt/<type>_<timestamp>.md instead of stdout
  • --blacklist repeatable pattern exclusion
  • --context repeatable pattern inclusion
  • --fetch / --no-fetch fetch the base ref before diff. Default: False

🔗 Shell Aliases

Add to your shell config (e.g., ~/.bashrc or ~/.zshrc):

alias review='uvx pr-prompt review | xclip -selection clipboard'
alias desc='uvx pr-prompt description | xclip -selection clipboard'

⚙️ Configuration

🔧 Parameters Reference

PrPromptGenerator / CLI / TOML shared parameters:

  • blacklist_patterns (list[str]) File patterns to exclude from diffs and context file inclusion. Default: ["*.lock"]
  • context_patterns (list[str]) File patterns to include in prompt (after blacklist filtering). Default: ["AGENTS.md"]
  • fetch_base (bool) Fetch base ref before generating diff. Default: False
  • 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.

📜 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 Example

## Instructions
You are a senior software engineer...

## Pull Request Details
Repository: pr-prompt
Branch: `feature` -> `origin/main`
Commits: Bumped minor

## Context Files
File: `README.md`...

## 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"]
fetch_base = false
diff_context_lines = 999999
include_commit_messages = true
# repo_path =
remote = "origin"
# default_base_branch =
# custom_instructions =

🤝 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.2.0.tar.gz (12.1 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.2.0-py3-none-any.whl (17.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pr_prompt-1.2.0.tar.gz
  • Upload date:
  • Size: 12.1 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.2.0.tar.gz
Algorithm Hash digest
SHA256 d57b744bcfce3cdc576db69beb90735ab038e0a33b5f89e3f0687390449a0698
MD5 1b52fb4e58763609c9f9be79dd87ff8d
BLAKE2b-256 521579f4aaf5c80f206592dc6e63ff6ed26eb9a814542b9dcfc209a5bf9fca32

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pr_prompt-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 17.2 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.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 155494bd27aa5fa9a4f849bddd70fe9b7c188ba0fa9194912968b307f023f3b1
MD5 9a81a0e18cb2447b8bbb8129e12962fd
BLAKE2b-256 d9e2719285463ebc4698c63aa59f35677922b946bb07bf4a6f6edeb1857acb26

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