multiAI Summary Pending
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.
231 stars
Installation
Claude Code / Cursor / Codex
$curl -o ~/.claude/skills/github-pr-best-practices/SKILL.md --create-dirs "https://raw.githubusercontent.com/aiskillstore/marketplace/main/skills/1natsu172/github-pr-best-practices/SKILL.md"
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/github-pr-best-practices/SKILL.mdinside your project - Restart your AI agent ā it will auto-discover the skill
How github-pr-best-practices Compares
| Feature / Agent | github-pr-best-practices | Standard Approach |
|---|---|---|
| Platform Support | multi | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
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.
Which AI agents support this skill?
This skill is compatible with multi.
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
# 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](https://www.conventionalcommits.org/) format:
```
<type>(<scope>): <description>
```
**Important**: NO emojis in PR titles or descriptions.
### Common Types
- `feat`: New feature
- `fix`: Bug fix
- `docs`: Documentation changes
- `style`: Code style changes (formatting, no logic change)
- `refactor`: Code refactoring
- `test`: Adding or updating tests
- `chore`: 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
```markdown
## 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
1. **Summary Section**
- 1-3 bullet points maximum
- Explain what changed and why
- Avoid implementation details (those are in the code)
- Use present tense
2. **Test Plan Section**
- Use checkbox format (`- [ ]`)
- List specific test scenarios
- Include regression testing
- Be specific and actionable
3. **Signature**
- Always include the Claude Code signature
- Placed at the bottom
### Detailed Explanation (When Needed)
For complex PRs, add additional sections before the signature:
```markdown
## 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`:
```markdown
## 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`:
```markdown
## ę¦č¦
- 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`:
1. Read the template file
2. Follow its structure exactly
3. Don't modify section headers
4. Don't add custom sections
5. 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**:
```bash
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**:
1. Use HEREDOC format for multi-line descriptions
2. Start with `--draft` flag for work in progress
3. Use `cat <<'EOF'` (with quotes) to prevent variable expansion
4. `gh pr create` automatically 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**:
```bash
gh pr ready <PR-NUMBER>
```
### Common Mistakes to Avoid
1. **Manual Push Before PR Creation**
- ā `git push -u origin branch && gh pr create`
- ā
`gh pr create` (handles push automatically)
2. **Including Emojis**
- ā `⨠feat: add new feature`
- ā
`feat: add new feature`
3. **Incorrect Conventional Commit Format**
- ā `Add new feature`
- ā
`feat: add new feature`
4. **Vague Descriptions**
- ā `## Summary\n- Updated stuff`
- ā
`## Summary\n- Add OAuth2 authentication support`
5. **Ignoring Language Argument**
- ā Always using English
- ā
Using specified language (en/ja)
6. **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:
```bash
# 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
```bash
# 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](REFERENCE.md) for:
- Detailed conventional commits specification
- Language-specific examples
- Advanced PR patterns
- GitHub CLI command reference