pull-request-creator
Creates and updates well-formatted pull requests using GitHub CLI. Use when creating PRs, pull requests, submitting code for review, or when the user mentions "pr", "pull request", "create pr", or wants to open a code review. Analyzes all commits since branch divergence and handles existing PRs gracefully.
When & Why to Use This Skill
The Pull Request Creator is a high-efficiency Claude skill designed to automate the generation and management of GitHub pull requests via the GitHub CLI. It streamlines the development lifecycle by performing automated commit analysis, smart base branch detection, and template-based formatting, ensuring that every submission is comprehensive, well-structured, and ready for professional peer review.
Use Cases
- Automating feature submissions: Automatically detects the correct base branch (develop or main) and generates detailed PR descriptions based on all commits since divergence.
- Updating existing PRs: Gracefully handles updates to active pull requests by refreshing titles and descriptions as the code evolves, preventing duplicate PR creation.
- Standardizing documentation: Automatically identifies and populates repository-specific PR templates (.github/pull_request_template.md) to maintain consistent team standards.
- Accelerating hotfixes: Quickly creates urgent PRs targeting the main branch with specific labels, reviewers, and priority tags via CLI automation.
- Early feedback cycles: Programmatically creates draft pull requests for work-in-progress features to facilitate early architectural discussions without triggering final CI/CD gates.
| name | Pull Request Creator |
|---|---|
| description | Creates and updates well-formatted pull requests using GitHub CLI. Use when creating PRs, pull requests, submitting code for review, or when the user mentions "pr", "pull request", "create pr", or wants to open a code review. Analyzes all commits since branch divergence and handles existing PRs gracefully. |
Pull Request Creator
Helps create comprehensive, well-formatted pull requests following best practices. Automatically analyzes branch commits, detects base branches, and handles existing PRs by updating them instead of failing.
Core Responsibilities
- Prerequisite validation - Ensure all changes are committed and pushed
- Parallel git operations - Run status checks and branch analysis concurrently
- Smart base branch detection - Automatically determine target branch (develop vs main)
- Comprehensive commit analysis - Review ALL commits since branch divergence
- PR template support - Use
.github/pull_request_template.mdif available - Graceful existing PR handling - Update existing PRs instead of failing
- GitHub CLI integration - Use
ghcommands for PR management
When to Use PR Creation vs Manual GitHub UI
Use this skill when:
- Need to create PRs quickly from the command line
- Want automated analysis of all commits in the branch
- Need consistent PR formatting across team
- Working with PR templates that should be auto-populated
- Creating multiple PRs in succession
- Integrating PR creation into automated workflows
Use GitHub UI when:
- Need to attach screenshots or complex media
- Prefer visual drag-and-drop interface
- Want to browse and compare files visually
- Need to edit PR description with rich formatting
- First time creating a PR in a new repository (to learn the process)
Installation Check
Verify GitHub CLI is installed and authenticated:
gh auth status # Check authentication
# If not installed: brew install gh (macOS) or sudo apt install gh (Linux)
# Then authenticate: gh auth login
Workflow Steps
Step 1: Validate Prerequisites (Parallel Operations)
Run these commands in parallel using Bash tool:
# Check for uncommitted changes
git status
# Check if branch is pushed to remote
git branch -vv
# Fetch latest changes from origin
git fetch origin
Stop conditions:
- If uncommitted changes exist: Prompt user to commit first
- If branch not pushed: Auto-push with
git push -u origin <branch>
Step 2: Determine Base Branch
Smart base branch detection following Git Flow patterns:
Feature branches (e.g., feature/auth, fix/bug-123):
- Check if
developbranch exists - If yes → target
develop - If no → target
main
Develop branch:
- Target
main
Other branches:
- Target
main
Override: User can specify --base <branch> to override detection
Step 3: Analyze Commits
Use git diff and git log to understand all changes:
# Get commit history since divergence
git log --oneline <base-branch>...HEAD
# Get detailed diff for analysis
git diff --stat <base-branch>...HEAD
git diff <base-branch>...HEAD
Important: Analyze ALL commits in the branch, not just the latest one!
Step 4: Check for PR Template
Look for .github/pull_request_template.md:
# Check if template exists
ls .github/pull_request_template.md
If template exists:
- Use template structure
- Fill in relevant sections based on commit analysis
If no template:
- Use default PR format
Step 5: Generate PR Content
Title: Brief, descriptive summary of main change
- Use conventional commit style when appropriate
- Focus on the primary purpose of the PR
Body structure (default format):
## Description
[Describe the changes made and why they were made]
## Related Issue(s)
[Link or list issues this PR addresses, e.g., Closes #123]
## Type of change
- [ ] Bug fix
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation update
## How has this been tested?
[Describe testing performed to ensure changes work as expected]
## Checklist for Reviewers
- [ ] Code follows project style guidelines
- [ ] Tests cover the new functionality or bug fixes
- [ ] Documentation is updated if necessary
- [ ] Changes do not introduce new security vulnerabilities
Generated with [Claude Code](https://claude.ai/code)
Step 6: Create or Update PR
Check if PR exists:
# Check for existing PR for current branch
gh pr view
If no PR exists:
# Create new PR using HEREDOC for body
gh pr create --title "<title>" --body "$(cat <<'EOF'
<PR body content>
EOF
)"
If PR already exists:
# First read existing PR to understand current state
gh pr view
# Update existing PR with new title and body
gh pr edit --title "<updated-title>" --body "$(cat <<'EOF'
<updated PR body content>
EOF
)"
Step 7: Handle Options and Flags
Support common gh pr create flags:
--draft: Create as draft PR--base <branch>: Override base branch detection--reviewer <users>: Request specific reviewers--assignee <users>: Assign PR to users--label <labels>: Add labels to PR
Example:
gh pr create --draft --base develop --title "<title>" --body "..."
Step 8: Return PR URL
After successful creation/update, provide the PR URL to user.
Base Branch Detection Logic
Current Branch Pattern → Target Base
======================== ===========
feature/* → develop (if exists), else main
fix/* → develop (if exists), else main
hotfix/* → main
develop → main
release/* → main
Other → main
--base flag → Override with specified branch
Common Use Cases
Feature Branch → Develop/Main
# Analyze commits and create PR
git log --oneline develop...HEAD
gh pr create --base develop --title "feat: implement user authentication" --body "..."
Hotfix → Main (Urgent)
gh pr create --base main \
--title "fix: critical security vulnerability" \
--label security,priority-critical \
--reviewer @security-team
Update Existing PR
gh pr view # Check existing PR
gh pr edit --body "$(cat <<'EOF'
## Summary
[Updated content]
## Changes from Review
- Fixed issues mentioned in review
🤖 Updated with [Claude Code](https://claude.com/claude-code)
EOF
)"
Draft PR for Early Feedback
gh pr create --draft --title "WIP: Refactor database layer" --body "..."
gh pr ready # Mark as ready when done
Cross-Repository PR (Fork)
git remote add upstream https://github.com/original/repo.git
git push -u origin fix/typo
gh pr create --repo original/repo --base main --head username:fix/typo
Error Handling
PR Already Exists
# Error: GraphQL: A pull request already exists
gh pr view # Check existing PR
gh pr edit --title "New title" --body "Updated description"
Uncommitted Changes / Branch Not Pushed
git status # Check for uncommitted changes
git push -u origin <branch> # Push if needed
Authentication Failed
gh auth login # Re-authenticate
gh auth status # Check status
Merge Conflicts
git fetch origin
git merge origin/main # Resolve conflicts
git push # PR auto-updates
Best Practices
- Clear titles: Use conventional commit style (feat:, fix:, docs:)
- Comprehensive summaries: Explain WHY, not just WHAT; link to issues
- Test plans: Include steps for reviewers to verify changes
- Atomic PRs: Keep focused; split large changes into multiple PRs
Security Checks
Never include in PRs:
- API keys, tokens, passwords, certificates
- Database credentials,
.envfiles credentials.json,*.pem,*.keyfiles
# Pre-PR security scan
git secrets --scan || gitleaks detect --source .
Quick Reference
# Create PR
gh pr create --title "feat: feature" --body "Description"
gh pr create --draft # Draft PR
gh pr create --base develop --reviewer @alice --label bug
# Manage PR
gh pr view # View current PR
gh pr view --web # Open in browser
gh pr edit --title "New title" --body "New description"
gh pr comment --body "Comment"
gh pr ready # Mark draft as ready
# Checks & Merge
gh pr checks # View CI checks
gh pr checks --watch # Watch checks
gh pr merge --squash # Merge with squash
gh pr merge --auto --squash # Auto-merge when ready
# Analysis
git status # Check for uncommitted changes
git log --oneline main...HEAD # View commits
git diff --stat main...HEAD # View file changes
# List PRs
gh pr list # All PRs
gh pr list --label bug --author @me # Filtered
Resources
- GitHub CLI: https://cli.github.com/manual/
- Conventional commits: https://www.conventionalcommits.org/