Finishing a Development Branch
obra/superpowers
Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.
A skill your agent uses when the user explicitly asks to push the current branch and open a PR, rewrite an open PR's body from its commits, or wait for CI and merge it
$ npx skills add vinta/hal-9000 --skill pr -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install vinta/hal-9000 pr --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/vinta/hal-9000.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/pr .claude/skills/pr && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "pr" agent skill from https://github.com/vinta/hal-9000/tree/main/skills/pr into .claude/skills/pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pr", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/vinta/hal-9000/tree/main/skills/prType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add vinta/hal-9000 --skill pr -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install vinta/hal-9000 pr --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vinta/hal-9000.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/pr .agents/skills/pr && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "pr" agent skill from https://github.com/vinta/hal-9000/tree/main/skills/pr into .agents/skills/pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pr", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add vinta/hal-9000 --skill pr -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install vinta/hal-9000 pr --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vinta/hal-9000.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/pr .cursor/skills/pr && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "pr" agent skill from https://github.com/vinta/hal-9000/tree/main/skills/pr into .cursor/skills/pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pr", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/vinta/hal-9000.git --path skills/pr--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add vinta/hal-9000 --skill pr -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install vinta/hal-9000 pr --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vinta/hal-9000.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/pr .gemini/skills/pr && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "pr" agent skill from https://github.com/vinta/hal-9000/tree/main/skills/pr into .gemini/skills/pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pr", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install vinta/hal-9000 prInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add vinta/hal-9000 --skill pr -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/vinta/hal-9000.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/pr .github/skills/pr && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "pr" agent skill from https://github.com/vinta/hal-9000/tree/main/skills/pr into .github/skills/pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pr", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add vinta/hal-9000 --skill pr -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install vinta/hal-9000 pr --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vinta/hal-9000.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/pr .opencode/skills/pr && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "pr" agent skill from https://github.com/vinta/hal-9000/tree/main/skills/pr into .opencode/skills/pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pr", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
prA skill your agent uses when the user explicitly asks to push the current branch and open a PR, rewrite an open PR's body from its commits, or wait for CI and merge it
PR is an agent skill from vinta/hal-9000. Use when the user explicitly asks to push the current branch and open a PR, rewrite an open PR's body from its commits, or wait for CI and merge it
Its SKILL.md is about 1.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Pull requests. It works with Git. The repository describes itself as: Opinionated AI coding agent and dev environment automation for macOS. The licence is MIT.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 23243bf. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
Bash(git push:*)Bash(gh pr:*)From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitghFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git and gh, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
PR loads about 1.4k tokens when it runs. Until then it costs about 38 tokens; SKILL.md has 909 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from vinta/hal-9000 at commit 23243bf, republished under its MIT licence (© vinta). 909 words, ~1,421 tokens.
.claude/skills/pr/SKILL.md (or your agent's skills folder).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.
Create mode and update mode run these steps where they say "gather PR material":
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.
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.
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.
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.
Title: one plain-English line under 72 chars that names the change itself, with no fix: or feat: type prefix. GitHub shows titles as plain text, so write file names bare, without backticks. Body: GitHub renders it as markdown, so wrap every file path, command, flag, and identifier in backticks, at every occurrence. Leave out changes a reviewer would not miss, such as ignore files, asset moves, and personal config tweaks, unless the branch holds nothing else. Body shape depends on how many separate changes are left.
One change: 1-3 sentences of prose, what changed and why, no list.
<example>
Add pr skill for pushing branches and opening PRs
Adds a pr skill that pushes the current branch, drafts a PR title and body with write-like-me, and opens the PR with gh. Wires it into the plugin manifest and marketplace so it ships with hal-skills.
</example>
Two or more changes: one - item per change, each item 1-3 short sentences stating the change and one before/after example when the change has a visible input and output. Give every item its example, not only the first.
<example>
Move name-suffix into core rules and protect URLs and slashes
name-suffix from AI spacing into the core rules.http:// or https:// is hidden from the rules, so %E4%B8%AD and /wiki/CJK#CJK survive./ next to CJK never gets spaces anymore. CJK/CJK stays CJK/CJK, same as _. File paths still work: CJK/homeCJK becomes CJK /home CJK.</example>
<material>" followed by the log from step 2, then a closing "</material>" line.
write-like-me's output, take the first line as title, the rest as body. Append a blank line and the Fix #N lines from step 3 to the body.git rev-parse --abbrev-ref HEAD — abort if main or master.gh pr view --json url 2>/dev/null — if a PR already exists, report its URL and stop.git push -u origin HEAD.gh pr create --title "<title>" --body "<body>".gh pr view --json url,state 2>/dev/null — abort if no PR or not open.git log --oneline @{u}..HEAD — if it lists commits, git push so the PR shows them.gh pr edit --body "<body>" — the title stays as it is.gh pr view --json url,number,state — abort if no PR or not open.git log --oneline @{u}..HEAD — if it lists commits, git push so CI and the merge see them.gh pr checks --watch — blocks until all checks complete. Use a 10-minute Bash timeout. If you pushed and it reports no checks yet, the push just queued them: wait 15 seconds and run it again once.gh pr merge --merge --delete-branch. It also switches to the base branch, pulls it, and deletes the local branch.gh pr checks once more to list failed checks and their URLs.© vinta, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/pr of vinta/hal-9000.
Open the folder on GitHubat commit 23243bf
PR next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| PR this skillvinta/hal-9000 | 138 | — | ~1.4k | Automated safety check: Pass | MIT | |
| Finishing a Development Branchobra/superpowers | 296k | 5 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Understand Diff AnalysisEgonex-AI/Understand-Anything | 86k | 1 repos | ~1.4k | Automated safety check: Pass | MIT | |
| Contributor-First PR MergeHKUDS/OpenHarness | 16k | 1 repos | ~847 | Automated safety check: Pass | MIT | |
| Open Code Review CLIalibaba/open-code-review | 44k | — | ~3.1k | Automated safety check: Pass | Apache-2.0 | |
| Create Pull Requestcline/cline | 70k | 1 repos | ~1.6k | Automated safety check: Pass | Apache-2.0 |
obra/superpowers
Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.
Egonex-AI/Understand-Anything
Reads your git changes or a pull request against a prebuilt knowledge graph of the project to explain what changed, which components are affected and what is risky.
HKUDS/OpenHarness
Merges external GitHub pull requests while keeping the original author credited, and fixes conflicts after the merge instead of rewriting the contribution.
alibaba/open-code-review
Runs the ocr command-line tool to review Git changes, a commit or a branch comparison with an AI model, returning line-level comments and optionally applying fixes.
cline/cline
Opens a GitHub pull request from your current branch with the gh CLI, after reviewing the commits and diff and gathering the details the PR needs.
openinterpreter/openinterpreter
Rewrites the title and body of one or more pull requests with gh, leading with why the change was made, then what changed, and describing only the net result.
vinta/hal-9000
Finds which plugins in the repository changed, bumps only the ones not already bumped since origin/main, and checks that each plugin's two manifests stay in sync.
vinta/hal-9000
Audits your Claude Code settings and environment variables against the current official docs and returns a ranked list of changes tied to how you actually work.
vinta/hal-9000
Commits everything in the working tree as one logical change per commit, splitting files by hunk, with bodies that say what was wrong before and never an invented reason.
vinta/hal-9000
Keeps Ansible install tasks in line with upstream docs by fixing version, install-method and link drift one tool at a time, with a commit for each.
vinta/hal-9000
Rewrites docs, READMEs, issues, comments or UI text in plain Global English that translates well and still sounds native, keeping every fact intact.
vinta/hal-9000
A skill your agent uses when about to choose, configure, or refine a tool, library, config format, API pattern, or project setup, or before proposing a design of your own — research current…
Works with
Categories
A skill your agent uses when the user explicitly asks to push the current branch and open a PR, rewrite an open PR's body from its commits, or wait for CI and merge it. PR is an agent skill from vinta/hal-9000.
PR fits situations like: the user explicitly asks to push the current branch and open a PR; rewrite an open PRs body from its commits; wait for CI and merge it.
Run `npx skills add vinta/hal-9000 --skill pr -a claude-code`. Or copy the skill folder (skills/pr in vinta/hal-9000) into .claude/skills/pr in your project. Claude Code loads it when a task matches its description.
Run `npx skills add vinta/hal-9000 --skill pr -a codex`. Or copy the skill folder (skills/pr in vinta/hal-9000) into .agents/skills/pr in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add vinta/hal-9000 --skill pr -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pr, .gemini/skills/pr, .github/skills/pr and .opencode/skills/pr in your project.
Going by SKILL.md and its folder, PR needs the command-line tools its instructions call (git and gh). Its frontmatter pre-approves these tools: Bash(git push:*), Bash(gh pr:*).
SKILL.md contains no URLs. Its commands use git and gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
PR is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.4k tokens (SKILL.md is roughly 5.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with PR: Finishing a Development Branch (obra/superpowers, 296k stars), Understand Diff Analysis (Egonex-AI/Understand-Anything, 86k stars), Contributor-First PR Merge (HKUDS/OpenHarness, 16k stars) and Open Code Review CLI (alibaba/open-code-review, 44k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
vinta (a GitHub user) maintains it in vinta/hal-9000, which has 138 GitHub stars. The repository holds 15 skills in this directory. The repository was last updated on October 7, 2026.
Source: vinta/hal-9000 on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.