Raise pr
Drop-in skills and plugins for your AI development workflows
npx -y skills add hiteshbandhu/skills-i-use --skill raise-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
- 1 stars1 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
Take a ready change from working tree to merged PR — branch, commit, push, open PR with a body drafted from the diff, watch CI, and squash-merge when green. General and portable: follows each repo's own commit/branch convention rather than imposing one. Never commits, pushes, or merges without explicit confirmation. Triggers on "raise a PR", "open a PR", "pr this", "push and pr", "ship this PR", "merge when green", "commit and open a pr".
SKILL.md
7.8 KB, ~1.9k tokens by cl100k_base, as published. Nobody here has run it
Raise PR — change → merged PR, cleanly
Drives the whole path from a ready working tree to a squash-merged PR, following
each repo's own conventions. General and portable — no project-specific assumptions.
Optionally pairs with ship-check for the pre-PR quality gate when a repo has it
set up; this skill owns the git/GitHub mechanics either way.
This skill performs outward-facing actions (push, open PR, merge). Confirm before each: committing, pushing/opening the PR, and merging. Never merge on red or unverified CI.
Works with any coding agent that has git + gh (GitHub CLI, authenticated).
Supporting files:
- pr-body-template.md — the PR description structure
Output: {SKILL_OUTPUT_DIR}/raise-pr/ (optional run log) — see ../OUTPUT.md
Conventions — detect per repo, then match
This is a general, portable skill — it works on any repo and must not impose a
personal style. First read the repo's recent git log --oneline -15 (and a merged
PR or two) and follow whatever convention it already uses: commit format, scope
style, trailer presence, branch naming, merge strategy. The repo's own history wins.
Only when the repo gives no clear signal, fall back to these sensible defaults:
| Thing | Fallback (used only if the repo has no clear convention) |
|---|---|
| Commit format | Conventional + scoped — type(scope): summary (feat, fix, chore, refactor, docs, test) |
| Subject | Specific; multiple changes → comma-separated, never "various fixes" |
| Body | What + why, plain prose, 1–3 sentences |
| Co-author trailer | Match the repo — include one only if its history already uses one |
| Branch | type/kebab-descriptive, derived from the change |
| Merge | Squash, delete branch, gated on green CI |
Ask the user when unsure — don't guess
Confirmations before commit / push / merge are always required. Beyond those, stop and ask (a short, specific question — offer a recommended default) whenever:
- Scope is mixed — the diff spans unrelated concerns. Ask whether to split into separate commits/PRs, and which to include now.
- Type/scope is genuinely ambiguous — e.g.
featvsfix, or no obvious scope. Propose your best guess and confirm rather than silently picking. - Base branch isn't obvious — repo uses
develop/releasebranches, or the default isn't clearly the right target. Ask which base to PR against. - No clear repo convention and it matters (commit style, trailer, squash vs merge). Ask which to follow instead of imposing a default.
- Merge intent is unstated — "raise a PR" doesn't say whether to merge. Default to opening and holding; ask before merging unless they said "merge when green."
- CI is red — ask whether to fix now, hold, or abandon. Never merge around it.
- Branch protection blocks the merge — never
--admin-bypass without asking; confirm the user owns the repo and wants the policy overridden. - Anything destructive or irreversible — force-push, history rewrite, deleting a shared branch.
Ask once, batch related questions, and proceed on the answer — don't re-litigate.
Step 0 — Preconditions (hard gates)
Refuse to proceed and explain if any fail:
- Quality gate — the repo's tests/lint/typecheck should be green before opening a
PR. Run them however this repo does it. (
ship-checkis one repo-aware way to run that gate if it's set up here — but it's optional, not a dependency of this skill.) Don't open a PR on a known-broken tree. - Not on the default branch — never commit straight to
main/master. If on it, Step 1 creates a branch. - Clean of artifacts — no screenshots,
skill-outputs/, build output,.env, or stray binaries staged. If present, offer to gitignore them; do not commit them. ghauthenticated —gh auth statussucceeds; remote is GitHub.
Step 1 — Branch
- Read
git log --oneline -8to learn the repo's actual commit/branch convention. - If on the default branch, create
type/kebab-descriptivewheretypematches the change and the slug summarizes it (fix/task-dropdowns-doc-edits). - If already on a feature branch, reuse it.
Step 2 — Commit
- Derive
type+scopefrom the diff:type:feat(new capability),fix(bug),refactor,docs,test,chore.scope: the dominant top-level area touched (e.g.tasks,matters,mcp). Multiple areas → slash-joined (tasks/mcp/docs) or the umbrella scope.
- Subject: imperative, specific. If the change does several things, list them comma-separated rather than going vague.
- Body: 1–3 sentences — what changed and why. Add a co-author trailer only if the repo's history uses one.
- Show the proposed message and the
git statusand confirm before committing.
Step 3 — Push + open PR
- Push the branch (
git push -u origin <branch>). - Draft the PR body from pr-body-template.md, filled from the actual diff and the verification you ran (test counts, Playwright, etc.) — not boilerplate. Title = the commit subject (or an umbrella summary for multi-commit).
gh pr create --base <default> --head <branch>. Show the URL.
Step 4 — Watch CI
- Start
gh pr checks <n> --watch(background it for long runs). - On red: stop, surface the failing job + log link, do not merge. Offer to fix.
- On green: confirm
gh pr view <n> --json mergeStateStatusisCLEANbefore Step 5.
Step 5 — Merge (only on explicit go + green CI)
- Squash-merge + delete branch:
gh pr merge <n> --squash --delete-branch. - If branch protection blocks (required review / pending check): surface exactly why.
Only use
--adminwhen the user owns the repo and explicitly approves bypassing. - After merge:
git checkout <default> && git pull --ff-only; report the squash commit.
Step 6 — Report
PR URL · CI result · squash commit on default · branch deleted · default synced. If anything was skipped (e.g. merge held for review), say so plainly.
Why this beats the ad-hoc flow
- No direct-to-main, no artifact commits, no red merges — they're hard gates, not vibes.
- Conventional scope + branch name derived from the diff — consistent history without thinking about it.
- PR body written from the real diff + verification — reviewers get signal, not a template.
- CI-gated squash-merge — one clean commit per PR on
main, every time.
Edge cases
- No
gh— do branch + commit + push; print the PR "create" URL for the user to open manually. - Multiple logical changes — suggest splitting into separate commits/PRs; don't bundle unrelated work.
- Already-open PR for this branch — update it (push), don't open a duplicate.
- Non-GitHub remote — handle commit/push; PR/merge steps are GitHub-specific, note the limitation.
- User says "just commit, don't PR" — stop after Step 2.
Invocation examples
raise a PR for this
@raise-pr — squash-merge when CI is green
commit and open a pr, then merge once green
pr this but hold the merge for me
Pair with
ship-check— run first for the lint/typecheck/test/secret-scan gate.ui-ux— for UI changes, verify before raising the PR.