Agent skill
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.
Install this agent skill to your Project
npx add-skill https://github.com/aiskillstore/marketplace/tree/main/skills/1natsu172/github-pr-best-practices
SKILL.md
GitHub 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
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, no logic change)refactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks, dependencies
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
--draftflag for work in progress - Use
cat <<'EOF'(with quotes) to prevent variable expansion gh pr createautomatically pushes the branch (no manual push needed)
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 - ✅
gh pr create(handles push automatically)
- ❌
-
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
git-analysis: Use to gather commit and branch information- 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
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
perigon-backend
Perigon ASP.NET Core + EF Core + Aspire conventions
perigon-agent
Pointers for Copilot/agents to apply Perigon conventions
perigon-angular
Angular 21+ standalone/Material/signal conventions for Perigon WebApp
fastapi-mastery
Comprehensive FastAPI development skill covering REST API creation, routing, request/response handling, validation, authentication, database integration, middleware, and deployment. Use when working with FastAPI projects, building APIs, implementing CRUD operations, setting up authentication/authorization, integrating databases (SQL/NoSQL), adding middleware, handling WebSockets, or deploying FastAPI applications. Triggered by requests involving .py files with FastAPI code, API endpoint creation, Pydantic models, or FastAPI-specific features.
context7-efficient
Token-efficient library documentation fetcher using Context7 MCP with 86.8% token savings through intelligent shell pipeline filtering. Fetches code examples, API references, and best practices for JavaScript, Python, Go, Rust, and other libraries. Use when users ask about library documentation, need code examples, want API usage patterns, are learning a new framework, need syntax reference, or troubleshooting with library-specific information. Triggers include questions like "Show me React hooks", "How do I use Prisma", "What's the Next.js routing syntax", or any request for library/framework documentation.
browser-use
Browser automation using Playwright MCP. Navigate websites, fill forms, click elements, take screenshots, and extract data. Use when tasks require web browsing, form submission, web scraping, UI testing, or any browser interaction.
Didn't find tool you were looking for?