Git create pr
Create a GitHub Pull Request from the current branch, following conventional commit format and pre-filling the repo's PR template. Activates on "create a PR", "open a pull request", "push this for review", or similar. Use after commits are made and pushed is not yet done; for the commits themselves use git-commit, for release/hotfix branch PRs use gitflow, and for the full review-then-commit-then-PR pipeline in one go use ship.From its SKILL.md
npx -y skills add mgiovani/cc-arsenal --skill git-create-prAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 6 stars6 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 8 commands, including `git status --porcelain` and 7 more.
SKILL.md
5.5 KB, ~1.3k tokens by cl100k_base, as published. Nobody here has run it
Create 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
- 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.
What ships with it: 2 files
6.7 KB alongside SKILL.md
evals/
- evals.json4.7 KB
- trigger-eval.json1.9 KB