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.1.2.tar.gz (12.6 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.2-py3-none-any.whl (17.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pr_prompt-1.1.2.tar.gz
  • Upload date:
  • Size: 12.6 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.2.tar.gz
Algorithm Hash digest
SHA256 e2cea4fc4911b3ad4839a9ff74700431c952bb8ce6a723d0a5d95b4697598871
MD5 16c6d82c724f76e42e4df2b457ef8d48
BLAKE2b-256 9c6df30530a8348e3b04c7c605b60c11a1f583ada80877ba3e2e4143ba839d2c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pr_prompt-1.1.2-py3-none-any.whl
  • Upload date:
  • Size: 17.6 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 37b2c6b8f9de94e18d684740adbd6cbf7134bdd2d3bfcd25ff77e8b233284150
MD5 c5aee91e89f1231395de3c387a736ecd
BLAKE2b-256 f282804d385ff3237860f82d6c0b1f30b7f7a9508a1d0d2c31bd7426f0cf7edc

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