pr

Installation
SKILL.md

Invoking this skill IS the request. Your task is fully specified here. Never ask what to do.

Your first Bash call is cd "$(git rev-parse --show-toplevel)", alone, once. The working directory persists across Bash calls, so run every later command bare, exactly as written below. A cd ... && or $() prefix stops a command matching allowed-tools, and the merge then hits the permission gate.

The user invoked this skill with: "$ARGUMENTS"

Mode comes from the arguments first: create means create mode, update means update mode, merge means merge mode. With none of those three words, including an empty argument, run gh pr view --json state --jq .state 2>/dev/null and let its result decide: a non-zero exit (no PR for this branch) means create mode, OPEN means update mode, any other state means report that state and stop. Merge mode only ever comes from the argument.

PR material

Create mode and update mode run these steps where they say "gather PR material":

  1. git log --format='%n%s' --name-only main..HEAD (fall back to master..HEAD). Each commit is a block: its subject, then the files it touched. A flat log next to a branch-wide diff stat lets the writer guess which commit touched which file.

  2. The PR describes the net change of the branch. A commit whose subject starts with Revert " and the commit it names cancel each other when both sit in the log, as does a later commit that restores what an earlier one removed, and a subject starting with build: bump describes no change. Remove those blocks from the log before passing it on.

  3. git log --format=%b main..HEAD (same fallback). Collect every issue number written as #N or as a GitHub issue URL. Each one becomes a Fix #N line at the end of the body, one per line, no duplicates.

  4. Invoke the write-like-me skill. Pass as argument: "Write a GitHub PR title and body from the material below. Shape the draft as the title on the first line, a blank line, then the body, and nothing else: the caller splits on the first line, so a label or heading would land in the title. The draft goes straight into the caller's next gh command in the same response, never into a reply: a reply with no tool call ends the caller before the PR exists.

Installs
14
Repository
vinta/hal-9000
GitHub Stars
139
First Seen
Sep 9, 2026