aiskillstore/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.
This is a copy. The original lives at comeonoliver/github-pr-best-practices.
npx skills add https://github.com/aiskillstore/marketplace --skill github-pr-best-practices
This Skill provides comprehensive guidance for creating high-quality pull requests following industry best practices and conventional commit standards.
Use this Skill when you need to:
PR titles must follow Conventional Commits format:
<type>(<scope>): <description>
Important: NO emojis in PR titles or descriptions.
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, no logic change)refactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks, dependenciesThe scope should indicate what part of the codebase is affected:
feat(auth): add OAuth2 supportfix(button): resolve click handler issuedocs(api): update endpoint documentationGood:
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)
## 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)
- [ ])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)
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
Use Japanese when language is ja:
## 概要
- OAuth2によるユーザー認証を追加
- トークンリフレッシュ機能を実装
- 包括的なエラーハンドリングを追加
## テスト計画
- [ ] OAuth2ログインフローのテスト
- [ ] トークンリフレッシュのテスト
- [ ] エラーシナリオのテスト
If the project has a PR template at .github/pull_request_template.md:
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:
--draft flag for work in progresscat <<'EOF' (with quotes) to prevent variable expansiongh pr create automatically pushes the branch (no manual push needed)Start as draft when:
Convert to ready when:
gh pr ready <PR-NUMBER>
git push -u origin branch && gh pr creategh pr create (handles push automatically)✨ feat: add new featurefeat: add new featureAdd new featurefeat: add new feature## Summary\n- Updated stuff## Summary\n- Add OAuth2 authentication supportWhen 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:
# 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
Before creating a PR, verify:
git-analysis: Use to gather commit and branch information.github/pull_request_template.mdSee REFERENCE.md for:
Take aiskillstore/github-pr-best-practices from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.