--- name: github description: "GitHub CLI for issues, PRs, CI/check logs, comments, reviews, releases, repos, and gh api queries." metadata: { "openclaw": { "emoji": "🐙", "requires": { "bins": ["gh"] }, "install": [ { "id": "brew", "kind": "brew", "formula": "gh", "bins": ["gh"], "label": "Install GitHub CLI (brew)", }, { "id": "apt", "kind": "apt", "package": "gh", "bins": ["gh"], "label": "Install GitHub CLI (apt)", }, ], }, } --- # GitHub Use `gh` for GitHub. Use `git` for local commits/branches/push/pull. Use code-reading tools for deep reviews. ## Auth ```bash gh auth status gh auth login ``` Gateway HOME can differ from operator HOME. If `gh` auth exists elsewhere, set `GH_CONFIG_DIR` in the gateway service env and restart. ## PRs ```bash gh pr list --repo owner/repo --json number,title,state,author,url gh pr view 55 --repo owner/repo --json title,body,author,files,commits,reviews,reviewDecision gh pr checks 55 --repo owner/repo gh pr diff 55 --repo owner/repo gh pr create --repo owner/repo --title "feat: title" --body-file /tmp/pr.md gh pr merge 55 --repo owner/repo --squash ``` URLs work directly: `gh pr view https://github.com/owner/repo/pull/55`. ## Issues ```bash gh issue list --repo owner/repo --state open --json number,title,labels,url gh issue view 42 --repo owner/repo --json title,body,comments,labels,state gh issue create --repo owner/repo --title "Bug: ..." --body-file /tmp/issue.md gh issue comment 42 --repo owner/repo --body-file /tmp/comment.md gh issue close 42 --repo owner/repo --comment "Fixed in ..." ``` ## CI/runs ```bash gh run list --repo owner/repo --limit 10 gh run view --repo owner/repo --json status,conclusion,headSha,url gh run view --repo owner/repo --log-failed gh run rerun --repo owner/repo --failed ``` ## API ```bash gh api repos/owner/repo/pulls/55 --jq '.title, .state, .user.login' gh api repos/owner/repo/labels --jq '.[].name' gh api --cache 1h repos/owner/repo --jq '{stars: .stargazers_count, forks: .forks_count}' ``` Use `--json` + `--jq` for structured output. Use `--body-file` for comments/bodies containing backticks, shell snippets, env names, or user text.