Marketplace github-pr-best-practices
Best practices for creating GitHub pull requests including conventional commits, PR formatting, and multi-language support (en/ja). Use when creating PRs, writing PR descriptions, or formatting commit messages.
git clone https://github.com/aiskillstore/marketplace
T=$(mktemp -d) && git clone --depth=1 https://github.com/aiskillstore/marketplace "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/1natsu172/github-pr-best-practices" ~/.claude/skills/aiskillstore-marketplace-github-pr-best-practices && rm -rf "$T"
skills/1natsu172/github-pr-best-practices/SKILL.mdGitHub Pull Request Best Practices
This Skill provides comprehensive guidance for creating high-quality pull requests following industry best practices and conventional commit standards.
Capabilities
- Generate conventional commit formatted PR titles
- Structure PR descriptions with proper sections
- Support multiple languages (English/Japanese)
- Follow GitHub PR template conventions
- Avoid common PR mistakes
When to Use
Use this Skill when you need to:
- Create a new pull request
- Write PR titles and descriptions
- Format commit messages
- Follow conventional commit standards
- Generate PR content in English or Japanese
PR Title Format
Conventional Commits Standard
PR titles must follow Conventional Commits format:
<type>(<scope>): <description>
Important: NO emojis in PR titles or descriptions.
Common Types
: New featurefeat
: Bug fixfix
: Documentation changesdocs
: Code style changes (formatting, no logic change)style
: Code refactoringrefactor
: Adding or updating teststest
: Maintenance tasks, dependencieschore
Scope (Optional but Recommended)
The scope should indicate what part of the codebase is affected:
- Module name:
feat(auth): add OAuth2 support - Component name:
fix(button): resolve click handler issue - Area of code:
docs(api): update endpoint documentation
Description
- Use imperative mood ("add" not "added" or "adds")
- No capitalization of first letter
- No period at the end
- Clear and concise (under 50 characters when possible)
Examples
Good:
feat(auth): add OAuth2 authentication fix(api): resolve timeout on large requests docs(readme): update installation instructions refactor(database): optimize query performance test(auth): add integration tests for login flow chore(deps): update dependencies to latest versions
Bad:
✨ Add new feature (has emoji) Fixed bug (not following format, wrong tense) Update. (vague, has period) FEAT: NEW STUFF (all caps, vague)
PR Description Structure
Standard Template
## Summary - Brief description of changes (1-3 bullet points) - Focus on what and why, not how - Keep each point concise ## Test plan - [ ] Test case 1 - [ ] Test case 2 - [ ] Verified no regressions 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Key Principles
-
Summary Section
- 1-3 bullet points maximum
- Explain what changed and why
- Avoid implementation details (those are in the code)
- Use present tense
-
Test Plan Section
- Use checkbox format (
)- [ ] - List specific test scenarios
- Include regression testing
- Be specific and actionable
- Use checkbox format (
-
Signature
- Always include the Claude Code signature
- Placed at the bottom
Detailed Explanation (When Needed)
For complex PRs, add additional sections before the signature:
## Summary - Main changes ## Background Context or motivation for changes ## Implementation Details High-level overview of approach ## Test plan - [ ] Tests 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Multi-Language Support
English (Default)
Use English when no language is specified or when language is
en:
## Summary - Add user authentication with OAuth2 - Implement token refresh mechanism - Add comprehensive error handling ## Test plan - [ ] Test OAuth2 login flow - [ ] Test token refresh - [ ] Test error scenarios
Japanese
Use Japanese when language is
ja:
## 概要 - OAuth2によるユーザー認証を追加 - トークンリフレッシュ機能を実装 - 包括的なエラーハンドリングを追加 ## テスト計画 - [ ] OAuth2ログインフローのテスト - [ ] トークンリフレッシュのテスト - [ ] エラーシナリオのテスト
Language Selection Guidelines
- Default to English if no language specified
- Use the language specified by the caller
- Be consistent throughout the entire PR
- Don't mix languages within a single PR
PR Template Integration
Using Project Templates
If the project has a PR template at
.github/pull_request_template.md:
- Read the template file
- Follow its structure exactly
- Don't modify section headers
- Don't add custom sections
- Fill in all required sections (use "N/A" if not applicable)
Template Best Practices
- Preserve section headers: Keep them exactly as in template
- Complete all sections: Even if marking as "N/A"
- Follow order: Maintain the template's section order
- Don't improvise: Stick to template structure
GitHub CLI Best Practices
Creating PRs with gh
Basic command structure:
gh pr create --draft --title "feat(scope): description" --body "$(cat <<'EOF' ## Summary - Changes ## Test plan - [ ] Tests 🤖 Generated with [Claude Code](https://claude.com/claude-code) EOF )"
Important notes:
- Use HEREDOC format for multi-line descriptions
- Start with
flag for work in progress--draft - Use
(with quotes) to prevent variable expansioncat <<'EOF'
automatically pushes the branch (no manual push needed)gh pr create
Draft vs Ready
Start as draft when:
- Work is still in progress
- Tests are not complete
- Need early feedback
Convert to ready when:
gh pr ready <PR-NUMBER>
Common Mistakes to Avoid
-
Manual Push Before PR Creation
- ❌
git push -u origin branch && gh pr create - ✅
(handles push automatically)gh pr create
- ❌
-
Including Emojis
- ❌
✨ feat: add new feature - ✅
feat: add new feature
- ❌
-
Incorrect Conventional Commit Format
- ❌
Add new feature - ✅
feat: add new feature
- ❌
-
Vague Descriptions
- ❌
## Summary\n- Updated stuff - ✅
## Summary\n- Add OAuth2 authentication support
- ❌
-
Ignoring Language Argument
- ❌ Always using English
- ✅ Using specified language (en/ja)
-
Modifying Template Structure
- ❌ Adding custom sections to template
- ✅ Following template structure exactly
Analyzing Commits for PR
Use All Commits, Not Just Latest
When creating a PR, analyze ALL commits from the merge base:
# Get merge base MERGE_BASE=$(git merge-base origin/main HEAD) # Get ALL commits from merge base git log $MERGE_BASE..HEAD
Why this matters:
- PR should represent all work on the branch
- Latest commit might not capture full scope
- Users expect PR to reflect entire branch
Extracting PR Content from Commits
# Get commit messages for summary git log --format="- %s" $MERGE_BASE..HEAD # Get changed files for context git diff --name-only $MERGE_BASE..HEAD # Get commit count git log --oneline $MERGE_BASE..HEAD | wc -l
Quality Checklist
Before creating a PR, verify:
- Title follows conventional commit format
- No emojis in title or description
- Summary is clear and concise (1-3 points)
- Test plan is specific and actionable
- Language matches specified preference
- Template structure is followed (if exists)
- All commits are analyzed (not just latest)
- Claude Code signature is included
Related Skills
: Use to gather commit and branch informationgit-analysis- Project-specific templates: Check
.github/pull_request_template.md
Additional Resources
See REFERENCE.md for:
- Detailed conventional commits specification
- Language-specific examples
- Advanced PR patterns
- GitHub CLI command reference