Git create pr
45 production-grade AI agent skills for real dev workflows. Code review, shipping, docs, git. Works with any skill-compatible agent.
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.
One thing 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.
What its author says it does
Copied from the file, not written here
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.
SKILL.md
5.5 KB, 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.