Stop writing PR descriptions. Let AI do it.
pr-pilot is a GitHub Action + CLI that analyzes your diff and commit history, then automatically writes a clear, structured PR description — with a summary, change list, test plan, and labels.
# .github/workflows/pr-description.yml
- uses: albertusreza/pr-pilot@main
with:
openai-api-key: ${{ secrets.OPENAI_API_KEY }}That's it. Every new PR gets a description like this:
Add rate limiting to upload endpoint
Adds per-IP rate limiting to
/api/uploadusing a sliding window algorithm. Without this, a single client could saturate the server with concurrent uploads.
- Add
RateLimitermiddleware with configurable window and max requests- Apply limiter to
/api/uploadroute (100 req/min default)- Return
429 Too Many RequestswithRetry-Afterheader- Add unit tests for edge cases (burst, reset, concurrent)
- Run
pytest tests/test_rate_limiter.py- Send 101 rapid requests to
/api/upload— 101st should return 429- Wait 60 seconds — requests should succeed again
Labels:
feature,security
name: PR Pilot
on:
pull_request:
types: [opened, reopened]
jobs:
describe:
runs-on: ubuntu-latest
permissions:
pull-requests: write
contents: read
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: albertusreza/pr-pilot@main
with:
openai-api-key: ${{ secrets.OPENAI_API_KEY }}Add OPENAI_API_KEY to your repo secrets and you're done. Works with any language, any repo size.
pip install pullwise
export OPENAI_API_KEY=sk-...
# Generate a description for your current branch
pr-pilot describe
# Diff against a different base
pr-pilot describe --base develop
# Get a quick code review
pr-pilot review
# Save description as markdown
pr-pilot describe --markdown pr_description.md| Command | What it does |
|---|---|
pr-pilot describe |
Generate a structured PR description from your diff |
pr-pilot review |
Get a senior-engineer-style code review in the terminal |
pr-pilot comment |
Post an AI review as a GitHub PR comment (updates on re-run, no spam) |
pr-pilot changelog |
Generate a CHANGELOG.md entry from commits since last tag |
# Generate PR description (terminal)
pr-pilot describe --base main
# Get a quick code review in the terminal
pr-pilot review --base main
# Post review as a GitHub PR comment
pr-pilot comment --repo owner/repo --pr 42
# Generate CHANGELOG entry (print to stdout)
pr-pilot changelog
# Write directly into CHANGELOG.md
pr-pilot changelog --output CHANGELOG.md# .github/workflows/pr-review.yml
- uses: actions/checkout@v4
with:
fetch-depth: 0
- run: pip install pullwise
- run: pr-pilot comment --repo ${{ github.repository }} --pr ${{ github.event.pull_request.number }}
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
GITHUB_TOKEN: ${{ github.token }}The comment updates itself on every new push — no duplicate comments.
| Input | Default | Description |
|---|---|---|
openai-api-key |
— | Required. Your OpenAI API key |
model |
gpt-4o |
OpenAI model to use |
skip-labels |
false |
Skip adding labels to the PR |
update-title |
false |
Also rewrite the PR title |
- On PR open, checks out the branch with full history
- Runs
git diff <base>...HEADto get the full diff - Collects commit messages with
git log --oneline - Sends both to GPT-4o with a structured prompt
- Parses the JSON response and updates the PR body + labels via GitHub API
- Skips update if the PR already has a substantial description (>100 chars)
Over 60% of PRs are merged with descriptions like "fix bug", "WIP", or nothing at all. This makes code review harder, changelogs meaningless, and git history useless for future maintainers.
pr-pilot takes 30 seconds to set up and runs on every PR automatically — no discipline required.
Each PR description costs roughly $0.01–0.03 with gpt-4o depending on diff size. For a team of 5 opening ~20 PRs/week, that's about $1–3/month.
Works with private repos. Just add the secret and the workflow file — no data leaves your GitHub Actions runner except the diff sent to OpenAI.
git clone https://github.com/albertusreza/pr-pilot
cd pr-pilot
pip install -e ".[dev]"
pytestMIT