create-pr
Create a GitHub PR with a well-formatted description matching the repository PR template (flat Changes by default; optional Added/Changed/Removed/Fixed grouping)
Best use case
create-pr is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Create a GitHub PR with a well-formatted description matching the repository PR template (flat Changes by default; optional Added/Changed/Removed/Fixed grouping)
Teams using create-pr should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/create-pr/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How create-pr Compares
| Feature / Agent | create-pr | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Create a GitHub PR with a well-formatted description matching the repository PR template (flat Changes by default; optional Added/Changed/Removed/Fixed grouping)
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Create Pull Request Create a well-formatted GitHub pull request for the current branch. The PR description must conform to the repository's PR template (`.github/PULL_REQUEST_TEMPLATE.md`). ## Arguments `$ARGUMENTS` can be used for special instructions, such as: - Specifying a base branch: "use base branch: develop" - Guiding the summary: "emphasize the performance improvements in the summary" - Adding context: "this is part of the auth refactor epic" - Any other guidance for PR creation Default base branch: `main` (unless specified in arguments) ## Step 1: Gather Information Run these commands in parallel to understand the changes: 1. **Current branch**: `git branch --show-current` 2. **Uncommitted changes**: `git status --porcelain` 3. **Commits on branch**: `git log origin/main..HEAD --oneline` 4. **File changes summary**: `git diff --stat origin/main..HEAD` 5. **Full diff**: `git diff origin/main..HEAD` 6. **Recent commit style**: `git log -5 --oneline` (to match PR title convention) 7. **Repo info**: `gh repo view --json nameWithOwner -q '.nameWithOwner'` (for constructing file URLs) **Important checks:** - If uncommitted changes exist, warn the user and ask if they want to commit first - If no commits ahead of main, inform the user there's nothing to PR - If branch isn't pushed, you'll push it in Step 4 ## Step 2: Analyze and Categorize Changes Use change types below to **decide** how to write the Changes section (flat vs grouped). You still describe testing under **Testing**, not under these buckets. ### By change type (internal checklist) - ✨ **Added**: New files, features, capabilities - 🔧 **Changed**: Modified existing functionality - 🗑️ **Removed**: Deleted files or features - 🐛 **Fixed**: Bug fixes - 📚 **Docs**: Documentation updates - 🧪 **Tests**: Test additions/modifications ### When to use optional grouping in **Changes** - **Flat bullet list** (default): Small PRs, single theme, or when categories would be sparse or redundant. - **Grouped subheadings** (`### ✨ Added`, `### 🔧 Changed`, `### 🗑️ Removed`, `### 🐛 Fixed`): Large PRs, release-note-style summaries, or clearly distinct fix + feature mixes. **Omit any empty section** — do not leave placeholder headings. ### Identify attention areas Flag for special reviewer attention: - Files with significant changes (>100 lines) - Changes to base classes, interfaces, or public API - New dependencies (`pyproject.toml`, `requirements.txt`) - Configuration schema changes - Security-related changes ## Step 3: Generate PR Title Use conventional commit format matching the repo style: - `feat:` for new features - `fix:` for bug fixes - `docs:` for documentation - `refactor:` for refactoring - `chore:` for maintenance - `test:` for test changes If commits have mixed types, use the primary/most significant type. ## Step 4: Create the PR 1. **Push branch** (if needed): ```bash git push -u origin <branch-name> ``` 2. **Build the PR body** using the repository's template structure. **Default — flat Changes** (remove the HTML comment block from the template when filling in, or replace with your bullets only): ```markdown ## 📋 Summary [1-3 sentences: what this PR does and why. Focus on the "why".] ## 🔗 Related Issue [Fixes #NNN or Closes #NNN — link to the issue this addresses] ## 🔄 Changes - [Bullet list of key changes] - [Link to key files when helpful for reviewers] - [Reference commits for specific changes in multi-commit PRs] ## 🧪 Testing - [x] `make test` passes - [x] Unit tests added/updated (or: N/A — no testable logic) - [ ] E2E tests added/updated (if applicable) ## ✅ Checklist - [x] Follows commit message conventions - [x] Commits are signed off (DCO) - [ ] Architecture docs updated (if applicable) ``` **Optional — grouped Changes** (only when Step 2 criteria apply; omit empty sections): ```markdown ## 🔄 Changes ### ✨ Added - [...] ### 🔧 Changed - [...] ### 🐛 Fixed - [...] ``` (Include `### 🗑️ Removed` only when something was deleted.) If there are genuinely important attention areas for reviewers, add an **Attention Areas** section after Changes: ```markdown ## 🔍 Attention Areas > ⚠️ **Reviewers:** Please pay special attention to the following: - [`path/to/critical/file.py`](https://github.com/<owner>/<repo>/blob/<branch>/path/to/critical/file.py) — [Why this needs attention] ``` 3. **Execute**: ```bash gh pr create --title "<title>" --body "$(cat <<'EOF' <body> EOF )" ``` 4. **Return the PR URL** to the user. ## Section Guidelines - **Summary**: Always include — be concise and focus on the "why", not just the "what" - **Related Issue**: Always include if an issue exists. Use `Fixes #NNN` for bugs, `Closes #NNN` for features/tasks - **Changes**: Default to a flat list. Use Added/Changed/Removed/Fixed subheadings only for large or mixed PRs; never emit empty subsection headings - **Testing**: Check off items that apply. Mark N/A items explicitly rather than leaving them unchecked without explanation - **Checklist**: Check off items that are true. Leave unchecked with a note if something doesn't apply - **Attention Areas**: Only include if there are genuinely important items; omit for simple PRs - **Links**: Include links to code and commits where helpful for reviewers: - **File links require full URLs** — relative paths don't work in PR descriptions - Link to a file: `[filename](https://github.com/<owner>/<repo>/blob/<branch>/path/to/file.py)` - Link to specific lines: `[description](https://github.com/<owner>/<repo>/blob/<branch>/path/to/file.py#L42-L50)` - Use the branch name (from Step 1) in the URL so links point to the PR's version of files - Reference commits: `abc1234` — GitHub auto-links short commit SHAs in PR descriptions - For multi-commit PRs, reference individual commits when describing specific changes ## Edge Cases - **No changes**: Inform user there's nothing to create a PR for - **Uncommitted work**: Warn and ask before proceeding - **Large PRs** (>20 files): Summarize by directory/module; grouped Changes often helps here - **Single commit**: PR title can match commit message - **No related issue**: Note "N/A" in the Related Issue section rather than omitting it
Related Skills
data-designer
Use when the user wants to create a dataset, generate synthetic data, or build a data generation pipeline.
update-pr
Update an existing GitHub PR description to reflect current changes after incorporating feedback
search-github
Search GitHub issues, discussions, and PRs for content related to a topic
search-docs
Search local documentation in the docs/ folder for content related to a topic
review-code
Perform a thorough code review of the current branch or a GitHub PR by number.
commit
Commit current changes with a clear, descriptive message
create-pr
Alias for sentry-skills:pr-writer. Use when users explicitly ask for "create-pr" or reference the legacy skill name. Redirects to the canonical PR writing workflow.
create-issue-gate
Use when starting a new implementation task and an issue must be created with strict acceptance criteria gating before execution.
create-branch
Create a git branch following Sentry naming conventions. Use when asked to "create a branch", "new branch", "start a branch", "make a branch", "switch to a new branch", or when starting new work on the default branch.
create-tldr-page
Create a tldr page from documentation URLs and command examples, requiring both URL and command name.
create-spring-boot-kotlin-project
Create Spring Boot Kotlin Project Skeleton
create-specification
Create a new specification file for the solution, optimized for Generative AI consumption.