github-pull-request
GitHub Pull Request
Default Action: Create PR on GitHub
CRITICAL: By default, always create the pull request directly on GitHub using available GitHub API tools.
Only generate PR content as text for chat when:
- User explicitly requests it ("show me the PR", "send PR to chat", "generate PR description for me to copy", etc.)
- GitHub API is unavailable or authentication fails
- User specifically asks NOT to create the PR yet
Workflow for Creating Pull Requests
Follow this workflow systematically when creating PRs:
Step 1: Determine the Scenario
Which scenario applies?
-
Scenario A: Creating PR for existing branch with commits
- Branch exists with commits that differ from base branch
- Need to analyze ALL commits in the branch
- → Use git diff/log or branch comparison tools
-
Scenario B: User has uncommitted/unstaged local changes
- Changes not yet committed
- User wants to commit and create PR
- → First help commit changes, then proceed with Scenario A
IMPORTANT: Most PR requests are Scenario A - analyzing an existing feature branch!
Step 2: Identify Current Branch and Base Branch
First, determine what branch you're working with:
# Get current branch name
git branch --show-current
# Identify base branch (usually main/master)
git remote show origin | grep "HEAD branch"
Common base branches: master, main, develop
Step 3: Get Complete Branch Changes
CRITICAL: Analyze ALL changes in the entire branch that will be merged, not just:
- ❌ The last commit
- ❌ Previous chat context
- ❌ Individual file changes mentioned earlier
What you need to obtain:
- Complete diff between current branch and base branch
- List of all modified files
- All commit messages in the branch
- Full context of what changed
How to get this information:
Primary approach - Git commands (universal):
# Get full diff between branches
git diff <base-branch>...<current-branch>
# Example:
git diff main...feature-branch
# List changed files only:
git diff --name-status main...feature-branch
# See all commits in branch:
git log <base-branch>..<current-branch> --oneline
Alternative - Use available tools in your environment:
Depending on your environment, you may have access to:
- IDE diff viewers or change tracking features
- Version control UI showing branch comparisons
- File comparison tools
- Any method that shows complete changeset between branches
The key is obtaining the complete changeset, regardless of the method.
For uncommitted changes: If changes are not yet committed, first check what's uncommitted using:
git statusandgit diff(for git environments)- Your IDE's change tracker or source control panel
- Any tool showing unstaged/uncommitted modifications
Troubleshooting "No Changes" Issue:
If you get empty diff or "no changes":
- ✅ Verify you're comparing correct branches (current vs base)
- ✅ Check if current branch IS the base branch (can't PR main to main!)
- ✅ Ensure commits exist in branch:
git log --oneline -10 - ✅ Try:
git log <base-branch>..<current-branch>to see commits - ❌ If truly no changes, inform user PR cannot be created without changes
Step 4: Analyze Changes Comprehensively
- Review every modified file in the branch
- Understand the cumulative impact of all commits
- Identify affected packages/modules (important for monorepos)
- Note any breaking changes or migration requirements
Step 5: Generate PR Content
Based on complete analysis, create:
- Title that reflects the main purpose of ALL changes
- Summary listing all significant modifications
- Motivation explaining why these changes were needed
- Related issues with proper linking
This workflow ensures PR descriptions accurately reflect the total scope of changes being merged.
Step 6: Create the Pull Request on GitHub
Default action - execute unless explicitly told otherwise:
- Create PR using available GitHub API tools with:
- After successful creation, provide user with:
- PR URL
- Brief confirmation message
Only skip this step if:
- User explicitly requested text output only
- Authentication/API errors occur (then fallback to text output)
Language Requirement
CRITICAL: Always write all PR content (title, description, comments) in English only, regardless of the chat language or user's preferred language. This is a strict requirement for all generated PR content.
Fallback: Output Format for Chat
Use this format ONLY when:
- User explicitly requests text output ("send PR to chat", "show me the PR", "generate PR description")
- Cannot create PR due to API/authentication issues
- User specifically asks not to create the PR yet
When outputting PR content to chat instead of creating it on GitHub:
ALWAYS wrap the complete PR content in a markdown code block:
[PR Title Here]
[Full PR Description Here]
This allows user to easily copy the entire PR content with proper formatting preserved.
DO NOT output PR content as rendered markdown in chat - it must be in a copyable code block.
PR Title
- ≤50 characters, imperative mood ("Add feature" not "Added" or "Adds")
- Accurately reflect main purpose of changes
- No issue numbers in title (use description)
- For monorepos, consider a scoped title (e.g.,
feat(scope): description)
Examples:
- Add dark mode support to theme package
- Fix input validation in text field component
- Refactor build configuration for better performance
PR Description
Required sections:
- Summary - What changed (bullet points, mention affected packages/modules)
- Motivation - Why these changes were necessary, impact on project
- Related Issues -
Fixes #123,Closes #456,Related to #789
Optional sections:
- Testing Notes
- Breaking Changes (with migration guide)
- Performance Impact
Example:
## Summary
Adds dark mode support to the theme package:
- Added dark color palette with semantic tokens
- Updated CSS variables for theme switching
- Added theme toggle component
## Motivation
Users requested dark mode to reduce eye strain and improve accessibility.
## Related Issues
Fixes #42
Writing Style
Style Reference:
- Always write using a similar style as this example: "This is a community for chill dudes😎👍 who love to puff on a hookah🌬 with double apple🍎🍏, know their way around bowl packs💨, aren’t fans of vapers🤣, and respect their ladies👩🦳🙏."
- Use emojis as frequently as shown in the example
- Do not include the example message itself in PR descriptions, just use it as a style reference
See references/pr-examples.md for more examples.
Edge Cases
- Large changesets: Group changes by component in summary
- Updating existing PR: Preserve metadata, add update comment
- Breaking changes: Mark clearly, provide migration guide
- Monorepo: Clearly indicate affected packages