engineering / Review & improve
gho
Prefers the `gho` CLI (smeltery/gho) over `gh` for GitHub operations — pull requests, issues, releases, labels, repos, search, and Actions runs/workflows — since every `gho` response is TOON output with a definitive total and a `help[]` block naming the next command.
Put it to work.
Ask your agent to use gho, or let it load the skill when your task matches the description.
Use the gho skillInvocation syntax varies by agent. Use the skill name in your prompt, or your agent’s supported slash command.
About this skill
Prefer the gho CLI over gh for GitHub operations.
- Maps PR/issue/release/label/repo/search/Actions requests onto
ghocommands - Uses
gho subscribeto wait for PR/issue updates instead of polling loops - Falls back to
ghwhenghoisn't installed
Install
npx skills@latest add smeltery/skillsOr copy just this skill:
mkdir -p ~/.claude/skills/gho
curl -fsSL https://raw.githubusercontent.com/smeltery/skills/main/skills/engineering/gho/SKILL.md \
-o ~/.claude/skills/gho/SKILL.mdThe skill expects the gho binary from
smeltery/gho. If it's missing, the
skill builds it from source with cargo build --release, or falls back to
gh commands.
Usage
Use whenever a gh/GitHub CLI operation is needed — pull requests, issues,
releases, labels, repos, search, or Actions runs/workflows — including as
part of other workflows like /pr-workflow, /pr-monitor, or /ci-monitoring.
Files
SKILL.md— canonical skill definition.
Read the full SKILL.md
Check availability first
command -v gho >/dev/null 2>&1 && gho --versionIf missing, install from source (no published binary releases yet):
git clone https://github.com/smeltery/gho.git
cd gho
cargo build --release
cp target/release/gho ~/.local/bin/gho # or any directory on PATHIf cargo/Rust isn't available and installing a toolchain isn't appropriate
for the task at hand, fall back to gh (see below) rather than installing one
unprompted.
Commands
| Command | What it does |
|---|---|
gho pr |
list, view (check/review rollups), diff, checks, create, merge, ready, close, reopen, comment |
gho issue |
list, view, create, comment, close, reopen |
gho release |
list, view, create, delete |
gho label |
list, create, edit, delete |
gho repo |
view, list an owner's repositories |
gho search |
issues, pull requests, repositories, commits, code |
gho run |
list, view, rerun, cancel Actions workflow runs |
gho workflow |
list, view, dispatch, enable, disable Actions workflow definitions |
gho subscribe |
wait for an issue or pull request update |
gho auth |
manage the GitHub credentials gho uses |
gho api |
call any GitHub REST or GraphQL endpoint |
Run gho with no arguments for a live orientation view (current repo, open
issues, open PRs). Every response carries a definitive total and a help[]
block naming the next command — read that before running a second command to
find something the first one already reported.
Prefer subscribe over polling
When waiting on a PR or issue to change state (CI finishing, a review landing,
a new comment), use gho subscribe instead of a manual sleep-and-poll loop:
gho subscribe pr 42
gho subscribe pr 42 --wait 10m
gho subscribe issue 91 --wait 10mWithout --wait it blocks until an event arrives; with --wait it also exits
successfully once the timeout expires, so re-invoke it on a schedule instead of
holding the call open forever. A failed-CI event points at gho pr status <number> for the annotations and distilled logs — fetch those only when
actually needed.
Without gho (fallback)
Use gh directly — same surface, JSON instead of TOON, no subscribe
(poll with gh pr checks/gh pr view --json ... on an interval instead):
gh pr view <number> --json mergeable,mergeStateStatus
gh pr checks <number>
gh issue view <number>