git-create-pr skill
Creates a GitHub Pull Request from the current branch using conventional commit formats and pre-filled templates.
- GitHub stars
- 8
- Files
- 3
- Last commit
- Oct 28, 2026
- License
- MIT
- Allowed tools
- —
What does the git-create-pr skill do?
git-create-pr creates a GitHub Pull Request from the current branch using conventional commit formats and pre-filled templates.
Summary generated from the skill's SKILL.md.
About the git-create-pr skill
Opening a GitHub pull request from a feature branch using standardized formats is what this skill enables. It is designed for developers who have already made commits and want to automate the creation of a pull request that follows conventional commit patterns and utilizes existing repository templates. An agent should load this tool after commits are made but before the final push is completed.
The process relies on the GitHub CLI (gh) and standard git commands to analyze the difference between the current branch and the base branch. It performs several safety checks, such as ensuring the working tree is clean and that the user is not currently on the main or master branch. The skill produces a formatted pull request title and body, which it then presents to the user for confirmation. Once approved, it pushes the branch and opens the pull request in a web browser for final adjustments like adding reviewers or labels.
What an agent can do with it
- 1Create a standard pull requestOpen a pull request for the current branch using the default repository settings.
- 2Target a specific base branchCreate a pull request that targets a development branch instead of the default branch.
- 3Submit a draft pull requestOpen a pull request in draft mode to indicate work is still in progress.
Written from the skill's SKILL.md. Every use case is checked against a quote from it.
How to install the git-create-pr skill
Each command copies the skill folder into the client's skills directory. Restart the client or start a new session to load it.Install the git-create-pr skill in Plugin
/plugin marketplace add mgiovani/cc-arsenal /plugin install cc-arsenal@cc-arsenal-marketplace
Install the git-create-pr skill in Claude Code
~/.claude/skills/git-create-pr/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-create-pr ~/.claude/skills/git-create-prInstall the git-create-pr skill in Claude Code (project)
.claude/skills/git-create-pr/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-create-pr .claude/skills/git-create-prInstall the git-create-pr skill in Codex
~/.agents/skills/git-create-pr/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-create-pr ~/.agents/skills/git-create-prInstall the git-create-pr skill in Gemini CLI
~/.gemini/skills/git-create-pr/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-create-pr ~/.gemini/skills/git-create-prInstall the git-create-pr skill in Claude.ai
npx degit mgiovani/cc-arsenal/skills/git-create-pr git-create-pr && zip -r git-create-pr.zip git-create-pr # claude.ai → Customize → Skills → + → Create skill → Upload a skill → git-create-pr.zip
SKILL.md
View on GitHubCreate Pull Request
Create a GitHub Pull Request following conventional commits, pre-filled with the repo's PR template, and opened in the browser for final review.
Every PR bullet must map to an actual commit or diff hunk: drop claims you can't back with evidence in git log or git diff.
Invariant: never mutate the user's files to satisfy a precondition. If a check in step 1 fails, report it and stop. Do not run git checkout, git restore, git reset, git stash, or git clean against the user's tracked files to "fix" a dirty tree, and do not switch branches to route around a main/master check, those are the user's decisions, not this skill's. The only git commands this skill runs against the working tree are read-only until step 7's git push.
Workflow
-
Validate preconditions (run this before anything else, including branch analysis)
- Check working tree is clean:
git status --porcelain. Any output means it's dirty.- If dirty: stop immediately. Show the
git status --porcelainoutput and tell the user to commit or stash their changes first, e.g.Working tree has uncommitted changes: M README.md. Commit or stash before opening a PR.Do not proceed to step 2, and do not touch the listed files.
- If dirty: stop immediately. Show the
- Requires
gh(brew install gh): confirmgh auth statussucceeds, else stop and tell the user to rungh auth login. - Get current branch:
git branch --show-current.- If it's
mainormaster: stop immediately. Tell the user there's no feature branch to open a PR from, e.g.Currently on main — check out a feature branch first.Do not proceed.
- If it's
- Check commits exist:
git log origin/<base>..HEAD --oneline. If empty, stop and say there's nothing to open a PR for. - Extract ticket ID from branch name (e.g.,
ABC-123fromfeature/ABC-123_description)
- Check working tree is clean:
-
Determine base branch
- Use
--base/-bargument if provided - Otherwise:
gh repo view --json defaultBranchRef -q .defaultBranchRef.name - Fall back to
mainif detection fails
- Use
-
Analyze changes
git log origin/<base>..HEAD --format="%h %s"for commitsgit diff origin/<base>...HEAD --statfor file changes- Synthesize these directly in the main thread: a subagent fan-out is overkill for what one
git log+ onediff --statalready summarizes. Only reach for a subagent if the diff is too large to fit in context.
-
Generate PR title (conventional commit format, max 72 chars)
type(scope): [TICKET-123] descriptionortype(scope): descriptionif no ticket- Types:
feat,fix,docs,style,refactor,perf,test,build,ci,chore - Examples:
feat(auth): [ABC-123] add OAuth2 login support,fix(api): resolve null pointer in user endpoint
-
Fill PR template
- Look for
.github/pull_request_template.mdand fill it without changing its structure - If none exists, use:
## Summary [Brief description] ## Changes - [Bullet points from commits] ## Testing - [ ] Tests added/updated - [ ] Manual testing completed - Save to
BODY_FILE="/tmp/pr-body-$(date +%s).md"
- Look for
-
Ask for confirmation
- Show a compact summary: ticket, commit count, authors (keep lines under 60 chars)
- Preview the generated title and body
- If the repo has CI configured (
.github/workflows/*.yml) and tests haven't been verified locally this session, suggest running thecc-arsenal:ci-localskill first (via theSkilltool where available, otherwise run the workflow's gating steps locally by hand): cheaper to catch a failure now than after the PR is open - Ask:
Create PR? (y/n/e to edit):(accepty/yes/n/no/e/edit) - On
e, ask for custom title/body
-
Push and create PR (after confirmation)
# Push first — required before gh pr create can reference the branch git push -u origin $(git branch --show-current) # BODY_FILE is the file written in step 5 gh pr create \ --title "type(scope): [TICKET] description" \ --body-file "$BODY_FILE" \ --base <determined-base-branch> \ --web- Do not combine
--reviewer,--assignee, or--labelwith--web: they conflict. The user adds those in the web UI.
- Do not combine
Argument Parsing
--base branch/-b branch: target branch, defaults to repo default--draft/-d: adds--drafttogh pr create
Examples
git-create-pr # uses repo default base branch
git-create-pr --base develop # target a specific base branch
git-create-pr --draft # create as draft PR
git-create-pr -b develop -d # both
After pushing, the PR opens in the browser pre-filled with title and body. Add reviewers/labels there.
Precondition failure (dirty tree, stop before any analysis):
Working tree has uncommitted changes:
M README.md
Commit or stash before opening a PR. Not proceeding.
No git checkout, git push, or gh pr create runs after this: the turn ends here.
Files in this skill
3git-create-pr skill questions
How do I install the git-create-pr skill in Claude Code?
Run npx degit mgiovani/cc-arsenal/skills/git-create-pr ~/.claude/skills/git-create-pr. Claude Code loads skills from ~/.claude/skills (all projects) or .claude/skills (one project) and uses a skill when its description matches the task.
Which clients can use the git-create-pr skill?
Any client that reads the Agent Skills format: Claude Code, Codex, Gemini CLI and claude.ai (upload as a ZIP). Scripts in the skill run only where the client allows code execution.
What happens if my working tree has uncommitted changes?
The skill will stop immediately, show the uncommitted changes, and instruct you to commit or stash them before proceeding.