| name | create-pr |
| description | Create a pull request or update an existing one following project conventions. |
Context
- Current branch: !
git branch --show-current 2>/dev/null
- Commits on branch: !
git log origin/main..HEAD --oneline 2>/dev/null | head -20
Create Pull Request
Create a pull request or update an existing one following project conventions.
Usage
/git:create-pr - Create PR to main
/git:create-pr <base-branch> - Create PR to specified base branch
Reference Files (conditional — read when creating PR)
- pr-body-template.md - PR body structure template
Reference Files (conditional — read only when needed)
- @~/.claude/skill-references/platform-detection.md - Platform detection for GitHub/GitLab
Pre-PR Checklist
Before creating the PR, verify these items are complete:
Instructions
-
Detect platform — follow @~/.claude/skill-references/platform-detection.md to determine GitHub vs GitLab. Set CLI, REVIEW_UNIT, and API command patterns accordingly. All commands below use GitHub (gh) syntax; substitute GitLab equivalents if on GitLab.
-
Gather context (run in parallel):
git status - Check for uncommitted changes
git branch --show-current - Get current branch name
git log origin/main..HEAD --oneline - See commits to include (adjust base as needed)
git diff origin/main..HEAD --stat - See files changed
-
Check for uncommitted changes:
- If there are uncommitted changes, ask user if they want to commit first
- Do not proceed with PR creation if there are uncommitted changes
-
Run formatter on changed files:
- Detect project formatter: check for
.prettierrc*, biome.json, or formatter config in package.json
- Run the formatter in check mode on changed files: e.g.,
npx prettier --check $(git diff --name-only origin/main -- '*.ts' '*.tsx' '*.js' '*.json' '*.css')
- If formatting issues found, fix them (
npx prettier --write <files>), stage, and commit before proceeding
- If no formatter config found, skip this step
-
Check for existing PR:
gh pr list --head <current-branch>
- If a PR already exists, ask user: "PR #N already exists for this branch. Update its description instead of creating new?"
- If yes, use
gh pr edit <number> --body "..." instead of gh pr create
-
Infer Jira ticket (if applicable):
- Extract Jira ticket ID from the branch name (common patterns:
feature/PROJ-123, bugfix/PROJ-456, PROJ-789-description)
- Look for Jira ticket references in commit messages
- If no ticket can be inferred, leave the URL incomplete for the user to fill in
-
Determine base branch:
- If
$ARGUMENTS provided, use that as base
- If branch name suggests a parent (e.g.,
feature/foo-part2 might be based on feature/foo), ask user
- Default to
main
-
Check if push needed:
- If local is ahead of remote, push first:
git push -u origin <branch>
-
Create or update PR using the template from pr-body-template.md
-
Run the gh command:
For new PR:
gh pr create --base <base-branch> --title "<title>" --body "$(cat <<'EOF'
<body content>
EOF
)"
For existing PR:
gh pr edit <number> --body "$(cat <<'EOF'
<body content>
EOF
)"
- Return the PR URL to the user.