🐙

GitHub

Verified

by steipete

Use gh issue, gh pr, gh run, and gh api for issues, PRs, CI runs, and advanced queries. Instruction-only guide for the GitHub CLI.

githubghcliprissuesci
View on GitHub

GitHub Skill

Use the gh CLI to interact with GitHub. Always specify --repo owner/repo when not in a git directory, or use URLs directly.

Container Auth (Read First)

The gh CLI needs a one-time login per container. Follow this pattern:

  1. gh auth login is the ONLY interactive gh command. It shows an

arrow-key menu and waits for the user to paste a one-time code.

Your chat exec is non-interactive, so running gh auth login from

chat will hang forever. DO NOT attempt it from chat.

  1. Tell the user to run gh auth login in the dashboard Terminal

(Instance card → Terminal button) once — that's a real PTY where

the device-code flow works. After that single login, every other

gh command (gh repo create, gh repo clone, gh pr list, etc.)

is non-interactive and you can run them from chat normally.

  1. After the user finishes gh auth login in the Terminal, the

credential file ~/.config/gh/hosts.yml is written with a brief

delay. If your first gh auth status from chat returns "not

authenticated", wait 10–15 seconds and retry once. The state will

then be visible.

  1. If after retrying gh auth still fails (rare — usually means the

user's chat exec runs as a different user with a different HOME

from the Terminal), fall back to PAT-based git: ask the user for

a fine-grained PAT and use https://<pat>@github.com/... in clone

URLs. The PAT path is fully chat-driven and consistent.

Pull Requests

Check CI status on a PR:

gh pr checks 55 --repo owner/repo

List recent workflow runs:

gh run list --repo owner/repo --limit 10

View a run and see which steps failed:

gh run view <run-id> --repo owner/repo

View logs for failed steps only:

gh run view <run-id> --repo owner/repo --log-failed

API for Advanced Queries

The gh api command is useful for accessing data not available through other subcommands.

Get PR with specific fields:

gh api repos/owner/repo/pulls/55 --jq '.title, .state, .user.login'

JSON Output

Most commands support --json for structured output. You can use --jq to filter:

gh issue list --repo owner/repo --json number,title --jq '.[] | "\(.number): \(.title)"'