agentsclimarketplace

Raise pr

Skill hiteshbandhu/skills-i-use/skills/raise-pr

Drop-in skills and plugins for your AI development workflows

Install
npx -y skills add hiteshbandhu/skills-i-use --skill raise-pr

Assembled 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:

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:

ThingFallback (used only if the repo has no clear convention)
Commit formatConventional + scoped — type(scope): summary (feat, fix, chore, refactor, docs, test)
SubjectSpecific; multiple changes → comma-separated, never "various fixes"
BodyWhat + why, plain prose, 1–3 sentences
Co-author trailerMatch the repo — include one only if its history already uses one
Branchtype/kebab-descriptive, derived from the change
MergeSquash, 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. feat vs fix, or no obvious scope. Propose your best guess and confirm rather than silently picking.
  • Base branch isn't obvious — repo uses develop/release branches, 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:

  1. Quality gate — the repo's tests/lint/typecheck should be green before opening a PR. Run them however this repo does it. (ship-check is 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.
  2. Not on the default branch — never commit straight to main/master. If on it, Step 1 creates a branch.
  3. Clean of artifacts — no screenshots, skill-outputs/, build output, .env, or stray binaries staged. If present, offer to gitignore them; do not commit them.
  4. gh authenticatedgh auth status succeeds; remote is GitHub.

Step 1 — Branch

  • Read git log --oneline -8 to learn the repo's actual commit/branch convention.
  • If on the default branch, create type/kebab-descriptive where type matches the change and the slug summarizes it (fix/task-dropdowns-doc-edits).
  • If already on a feature branch, reuse it.

Step 2 — Commit

  1. Derive type + scope from 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.
  2. Subject: imperative, specific. If the change does several things, list them comma-separated rather than going vague.
  3. Body: 1–3 sentences — what changed and why. Add a co-author trailer only if the repo's history uses one.
  4. Show the proposed message and the git status and confirm before committing.

Step 3 — Push + open PR

  1. Push the branch (git push -u origin <branch>).
  2. 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).
  3. 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 mergeStateStatus is CLEAN before 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 --admin when 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.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.