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

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/github-pr-best-practices/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How github-pr-best-practices Compares

Feature / Agentgithub-pr-best-practicesStandard Approach
Platform SupportmultiLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/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