Comprehensive guide for using GitHub CLI (gh) to interact with GitHub from the command line. Use when (1) Managing GitHub repositories, issues, pull requests, or releases from terminal, (2) Automating GitHub workflows in scripts, (3) Creating or managing pull requests, (4) Working with GitHub issues, (5) Creating releases or managing repository operations, (6) Integrating GitHub operations into development workflows, (7) Using GitHub CLI commands in automation scripts
Resources
1Install
npx skillscat add trotsky1997/my-claude-agent-skills/github-cli Install via the SkillsCat registry.
GitHub CLI (gh)
GitHub CLI (gh) enables terminal-based interaction with GitHub for managing repositories, issues, pull requests, and releases.
Quick Start
Authentication:
gh auth login # First-time setup
gh auth status # Check authenticationBasic operations:
gh repo view # View current repository
gh pr list # List pull requests
gh issue list # List issues
gh pr create # Create pull requestCore Workflows
Repository Operations
View repository:
gh repo view OWNER/REPO
gh repo view --web # Open in browserClone and create:
gh repo clone OWNER/REPO
gh repo create my-repo --public
gh repo create my-repo --private --cloneList repositories:
gh repo list # Your repos
gh repo list USERNAME # User's repos
gh repo list --limit 10Pull Request Workflow
Create PR:
# Interactive
gh pr create
# Direct
gh pr create --title "feat: feature" --body "description"
gh pr create --draft # Draft PR
gh pr create --base main --head feature-branchManage PRs:
gh pr list # List PRs
gh pr view PR_NUMBER # View PR
gh pr checkout PR_NUMBER # Checkout locally
gh pr merge PR_NUMBER # Merge PR
gh pr close PR_NUMBER # Close PR
gh pr review PR_NUMBER --approve # ReviewPR status and diff:
gh pr checks PR_NUMBER # Check status
gh pr diff PR_NUMBER # View diff
gh pr view PR_NUMBER --web # Open in browserIssue Management
Create and list:
gh issue create --title "Bug: title" --body "description"
gh issue list # List open issues
gh issue list --state all # All issues
gh issue list --label "bug" # Filter by labelManage issues:
gh issue view ISSUE_NUMBER
gh issue close ISSUE_NUMBER --comment "Fixed"
gh issue reopen ISSUE_NUMBER
gh issue edit ISSUE_NUMBER --title "New title"Release Management
Create release:
gh release create v1.0.0 --title "v1.0.0" --notes "Release notes"
gh release create v1.0.0 --notes-file CHANGELOG.md
gh release create v1.0.0 --prerelease # Pre-release
gh release create v1.0.0 dist/*.zip # With assetsManage releases:
gh release list
gh release view TAG_NAME
gh release download TAG_NAME
gh release delete TAG_NAMEConfiguration
Set editor:
gh config set editor "code -w" # VS Code
gh config set editor "vim"Create aliases:
gh alias set prl "pr list"
gh alias set prd "pr create --draft"
gh alias set il "issue list"
gh alias list # View aliasesGit credentials:
gh auth setup-gitAdvanced Usage
JSON Output and Filtering
JSON output:
gh pr list --json number,title,author
gh repo view --json name,stargazerCount,url
gh issue view ISSUE_NUMBER --json title,body,commentsWith jq filtering:
gh pr list --json number,title,author --jq '.[] | select(.author.login == "username")'Automation Scripts
Create PR script:
#!/bin/bash
BRANCH=$(git branch --show-current)
gh pr create --title "feat: feature" --body "Description" --base main --head "$BRANCH"Check PR status:
#!/bin/bash
STATUS=$(gh pr view $1 --json state --jq '.state')
echo "PR #$1 status: $STATUS"Search
gh search repos "language:python stars:>1000"
gh search issues "is:open label:bug"
gh search code "function_name"Common Patterns
Daily development:
git checkout -b feature/new-feature
git push -u origin feature/new-feature
gh pr create --title "feat: new feature" --body "Description"
# After merge:
git checkout main && git pull && git branch -d feature/new-featureReview PR:
gh pr list
gh pr view PR_NUMBER
gh pr checkout PR_NUMBER # Test locally
gh pr review PR_NUMBER --approveBatch operations:
# Close all open issues (use with caution)
gh issue list --state open --json number --jq '.[].number' | xargs -I {} gh issue close {}Troubleshooting
Authentication:
gh auth status # Check status
gh auth login # Re-authenticate
gh auth logout # Clear authEnvironment variables:
export GITHUB_TOKEN=your_token # Linux/Mac
$env:GITHUB_TOKEN="token" # Windows PowerShellReferences
For detailed command reference and advanced workflows, see:
- commands.md - Complete command reference
- workflows.md - Common workflow scenarios