home / skills / gentleman-programming / gentleman-skills / github-pr

github-pr skill

/curated/github-pr

This skill helps you craft conventional-commit compliant PRs with clear descriptions, streamlined gh pr create usage, and structured review-ready summaries.

npx playbooks add skill gentleman-programming/gentleman-skills --skill github-pr

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
3.4 KB
---
name: github-pr
description: >
  Create high-quality Pull Requests with conventional commits and proper descriptions.
  Trigger: When creating PRs, writing PR descriptions, or using gh CLI for pull requests.
metadata:
  author: gentleman-programming
  version: "1.0"
---

## When to Use

- Creating a new Pull Request
- Writing PR titles and descriptions
- Preparing commits for review
- Using `gh pr create` command

---

## Critical Patterns

### PR Title = Conventional Commit

```
<type>(<scope>): <short description>

feat     New feature
fix      Bug fix  
docs     Documentation
refactor Code refactoring
test     Adding tests
chore    Maintenance
```

### PR Description Structure

```markdown
## Summary
- 1-3 bullet points explaining WHAT and WHY

## Changes
- List main changes

## Testing
- [ ] Tests added/updated
- [ ] Manual testing done

Closes #123
```

### Atomic Commits

```bash
# Good: One thing per commit
git commit -m "feat(user): add User model"
git commit -m "feat(user): add UserService"
git commit -m "test(user): add UserService tests"

# Bad: Everything in one commit
git commit -m "add user feature"
```

---

## Code Examples

### Basic PR Creation

```bash
gh pr create \
  --title "feat(auth): add OAuth2 login" \
  --body "## Summary
- Add Google OAuth2 authentication

## Changes
- Added AuthProvider component
- Created useAuth hook

Closes #42"
```

### PR with HEREDOC (Complex Description)

```bash
gh pr create --title "feat(dashboard): add analytics" --body "$(cat <<'EOF'
## Summary
- Add real-time analytics dashboard

## Changes
- Created AnalyticsProvider
- Added LineChart, BarChart components

## Testing
- [x] Unit tests for components
- [x] Manual testing complete

## Screenshots
![Dashboard](url)

Closes #123
EOF
)"
```

### Draft PR

```bash
gh pr create --draft \
  --title "wip: refactor auth" \
  --body "Work in progress"
```

### PR with Reviewers and Labels

```bash
gh pr create \
  --title "feat(api): add rate limiting" \
  --body "Adds rate limiting to API" \
  --reviewer "user1,user2" \
  --label "enhancement,api"
```

---

## Commands

```bash
# Create PR
gh pr create --title "type(scope): desc" --body "..."

# Create with web editor
gh pr create --web

# View PR status
gh pr status

# View diff
gh pr diff

# Check CI status
gh pr checks

# Merge with squash
gh pr merge --squash

# Add reviewer
gh pr edit --add-reviewer username
```

---

## Anti-Patterns

### Don't: Vague Titles

```bash
# Bad
gh pr create --title "fix bug"
gh pr create --title "update"

# Good
gh pr create --title "fix(auth): prevent session timeout"
```

### Don't: Giant PRs

```bash
# Bad: 50 files, 2000+ lines in one PR

# Good: Split into logical PRs
# PR 1: feat(models): add User model
# PR 2: feat(api): add user endpoints
# PR 3: feat(ui): add user pages
```

### Don't: Empty Descriptions

```bash
# Bad
--body "Added feature"

# Good
--body "## Summary
- What you did and why

## Changes  
- Specific changes

Closes #123"
```

---

## Quick Reference

| Task | Command |
|------|---------|
| Create PR | `gh pr create -t "type: desc" -b "body"` |
| Draft PR | `gh pr create --draft` |
| Web editor | `gh pr create --web` |
| Add reviewer | `--reviewer user1,user2` |
| Add label | `--label bug,high-priority` |
| Link issue | `Closes #123` in body |
| View status | `gh pr status` |
| Merge squash | `gh pr merge --squash` |

## Resources

- [Conventional Commits](https://www.conventionalcommits.org/)
- [GitHub CLI Manual](https://cli.github.com/manual/gh_pr_create)

Overview

This skill helps you create high-quality GitHub Pull Requests with conventional commit titles, clear descriptions, and appropriate metadata. It guides PR creation via the gh CLI, templates PR bodies, and enforces atomic commits and useful review context. Use it to speed up PR authoring, improve reviewability, and link changes to issues.

How this skill works

The skill inspects your proposed commit messages and PR title and suggests a conventional-commit formatted title (type(scope): short description). It generates a structured PR description with Summary, Changes, Testing checkboxes, and issue-closing lines. It offers gh CLI command examples and patterns for draft PRs, reviewers, labels, and merge strategies like squash.

When to use it

  • When creating a new Pull Request from local branches or the CLI
  • When writing or improving a PR title and description
  • When preparing commits to ensure they are atomic and scoped
  • Before running gh pr create or gh pr edit to add reviewers/labels
  • When splitting large work into smaller, reviewable PRs

Best practices

  • Follow Conventional Commits for PR titles: type(scope): short description (feat, fix, docs, refactor, test, chore).
  • Keep commits atomic: one logical change per commit with clear messages and tests where applicable.
  • Use the PR description template: Summary, Changes, Testing, and Closes #issue to link work to issues.
  • Avoid giant PRs—split by feature, API, model, UI where possible to simplify review.
  • Include reviewers, labels, and CI status checks in the PR metadata; prefer draft PRs for in-progress work.

Example use cases

  • Open a draft refactor: gh pr create --draft --title "wip: refactor auth" --body "Work in progress" for early feedback.
  • Submit a small focused fix: commit as git commit -m "fix(session): prevent session timeout" then gh pr create with testing checklist.
  • Create a rich PR body via HEREDOC for screenshots and long descriptions when using gh in scripts.
  • Add reviewers and labels in one command: gh pr create --title "feat(api): add rate limiting" --body "..." --reviewer "alice,bob" --label "enhancement,api"

FAQ

What makes a good PR title?

Use Conventional Commits: type(scope): short description. Be specific about the change and scope, e.g., "fix(auth): prevent session timeout."

How do I link an issue to a PR?

Include a closing keyword in the PR body such as "Closes #123" to automatically link and close the issue when merged.