azure/github
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
npx skills add https://github.com/Azure/azure-sdk-for-java --skill github
Use the gh CLI to interact with GitHub. Always pass --repo owner/repo when not inside a cloned git directory.
List open PRs:
gh pr list --repo owner/repo
View a specific PR (summary, checks, comments):
gh pr view 55 --repo owner/repo
Check CI status on a PR:
gh pr checks 55 --repo owner/repo
List recent runs:
gh run list --repo owner/repo --limit 10
View a run summary (steps, status):
gh run view <run-id> --repo owner/repo
View logs for failed steps only:
gh run view <run-id> --repo owner/repo --log-failed
Re-run failed jobs:
gh run rerun <run-id> --repo owner/repo --failed
List open issues (optionally filter by label):
gh issue list --repo owner/repo
gh issue list --repo owner/repo --label bug
View a specific issue:
gh issue view 42 --repo owner/repo
Create an issue:
gh issue create --repo owner/repo --title "Title" --body "Description" --label bug
Most commands support --json with --jq for structured output:
# List PR numbers and titles
gh pr list --repo owner/repo --json number,title --jq '.[] | "\(.number): \(.title)"'
# List issues with assignees
gh issue list --repo owner/repo --json number,title,assignees \
--jq '.[] | "\(.number): \(.title) → \(.assignees[].login // "unassigned")"'
gh apiUse gh api for data or actions not covered by other subcommands.
Fetch a PR with specific fields:
gh api repos/owner/repo/pulls/55 --jq '.title, .state, .user.login'
List check runs for a commit:
gh api repos/owner/repo/commits/<sha>/check-runs \
--jq '.check_runs[] | "\(.name): \(.conclusion)"'
Paginate results (e.g., all issues):
gh api --paginate repos/owner/repo/issues --jq '.[].title'
gh is installed by running gh --version.gh is authenticated by running gh auth status.gh auth login.owner/repo is not provided, check if there is a .git directory and infer the remote via gh repo view --json nameWithOwner. Otherwise ask the user for the repo.pr, issue, run, api) based on the user's request.gh pr, gh issue, gh run) over raw gh api when they cover the use case.--json + --jq when the user needs specific fields or wants to pipe output into further processing.gh pr checks for a quick overview, then gh run view --log-failed for detailed output.If gh is missing, install it using the recommended method for the current OS.
Detect the OS first, then run the matching command.
winget install --id GitHub.cli
> Note: open a new terminal window after installation for PATH changes to take effect.
brew install gh
(type -p wget >/dev/null || (sudo apt update && sudo apt install wget -y)) \
&& sudo mkdir -p -m 755 /etc/apt/keyrings \
&& out=$(mktemp) && wget -nv -O$out https://cli.github.com/packages/githubcli-archive-keyring.gpg \
&& cat $out | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \
&& sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
&& sudo mkdir -p -m 755 /etc/apt/sources.list.d \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
&& sudo apt update \
&& sudo apt install gh -y
sudo dnf install 'dnf-command(config-manager)'
sudo dnf config-manager --add-repo https://cli.github.com/packages/rpm/gh-cli.repo
sudo dnf install gh --repo gh-cli
After installation, verify with gh --version, then authenticate with gh auth login if needed.
gh must be authenticated (gh auth status). If not, run gh auth login first.--repo accepts both owner/repo shorthand and full HTTPS URLs.gh api, use --method POST/PATCH/DELETE for write operations and pass body fields with -f field=value or -F field=<int>.gh run list defaults to the current branch when run inside a git repo; pass --branch <name> to target a specific branch.Take azure/github from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference brew.
Without those the skill loads but fails at the first command.