Back to skills
Gh Cli
This skill should be used when the user asks to "create a pull request", "manage GitHub issues", "view repository info", "trigger workflows", "create a release", "search GitHub", "manage codespaces", or mentions GitHub CLI, gh command, or GitHub automation from the command line.
58 stars
0 votes
0 copies
0 views
Added 12/19/2025
data-aipythongoshellbashkubernetesgitapici/cddocumentation
Works with
terminalcliapi
Install via CLI
$
openskills install PaulRBerg/dot-claudeFiles
SKILL.md
---
name: gh-cli
description: This skill should be used when the user asks to "create a pull request", "manage GitHub issues", "view repository info", "trigger workflows", "create a release", "search GitHub", "manage codespaces", or mentions GitHub CLI, gh command, or GitHub automation from the command line.
version: 0.1.0
---
# GitHub CLI (gh)
## Overview
Expert guidance for GitHub CLI (gh) operations and workflows. Use this skill for command-line GitHub operations including pull request management, issue tracking, repository operations, workflow automation, and codespace management.
**Key capabilities:**
- Create and manage pull requests from the terminal
- Track and organize issues efficiently
- Search across all of GitHub (repos, issues, PRs)
- Manage labels and project organization
- Trigger and monitor GitHub Actions workflows
- Work with codespaces
- Automate repository operations and releases
## Safety Rules
**CRITICAL: This skill NEVER uses destructive gh CLI operations.**
This skill focuses exclusively on safe, read-only, or reversible GitHub operations. The following commands are **PROHIBITED** and must **NEVER** be used:
**Permanently destructive commands:**
- `gh repo delete` - Repository deletion
- `gh repo archive` - Repository archival
- `gh release delete` - Release deletion
- `gh release delete-asset` - Asset deletion
- `gh run delete` - Workflow run deletion
- `gh cache delete` - Cache deletion
- `gh secret delete` - Secret deletion
- `gh variable delete` - Variable deletion
- `gh label delete` - Label deletion
- `gh ssh-key delete` - SSH key deletion (can lock out users)
- `gh gpg-key delete` - GPG key deletion
- `gh codespace delete` - Codespace deletion
- `gh extension remove` - Extension removal
- `gh gist delete` - Gist deletion
- Bulk deletion operations using `xargs` with any destructive commands
- Shell commands: `rm -rf` (except for temporary file cleanup)
**Allowed operations:**
- Creating resources (PRs, issues, releases, labels, repos)
- Viewing and listing (status, logs, information, searches)
- Updating and editing existing resources
- Closing PRs/issues (reversible - can be reopened)
- Canceling workflow runs (stops execution without deleting data)
- Merging pull requests (after proper review)
- Read-only git operations (`git status`, `git log`, `git diff`)
## Installation & Setup
```bash
# Login to GitHub
gh auth login
# Check authentication status
gh auth status
# Configure git to use gh as credential helper
gh auth setup-git
```
## Pull Requests
### Creating PRs
```bash
# Create PR interactively
gh pr create
# Create PR with title and body
gh pr create --title "Add feature" --body "Description"
# Create PR to specific branch
gh pr create --base main --head feature-branch
# Create draft PR
gh pr create --draft
# Create PR from current branch
gh pr create --fill # Uses commit messages
```
### Viewing PRs
```bash
# List PRs
gh pr list
# List my PRs
gh pr list --author @me
# View PR details
gh pr view 123
# View PR in browser
gh pr view 123 --web
# View PR diff
gh pr diff 123
# Check PR status
gh pr status
```
### Managing PRs
```bash
# Checkout PR locally
gh pr checkout 123
# Review PR
gh pr review 123 --approve
gh pr review 123 --comment --body "Looks good!"
gh pr review 123 --request-changes --body "Please fix X"
# Merge PR
gh pr merge 123
gh pr merge 123 --squash
gh pr merge 123 --rebase
gh pr merge 123 --merge
# Close PR
gh pr close 123
# Reopen PR
gh pr reopen 123
# Ready draft PR
gh pr ready 123
# Update PR branch with base branch
gh pr update-branch 123
```
### PR Checks
```bash
# View PR checks
gh pr checks 123
# Watch PR checks
gh pr checks 123 --watch
```
## Issues
### Creating Issues
```bash
# Create issue interactively
gh issue create
# Create issue with title and body
gh issue create --title "Bug report" --body "Description"
# Create issue with labels
gh issue create --title "Bug" --label bug,critical
# Assign issue
gh issue create --title "Task" --assignee @me
```
### Viewing Issues
```bash
# List issues
gh issue list
# List my issues
gh issue list --assignee @me
# List by label
gh issue list --label bug
# View issue details
gh issue view 456
# View in browser
gh issue view 456 --web
```
### Managing Issues
```bash
# Close issue
gh issue close 456
# Reopen issue
gh issue reopen 456
# Edit issue
gh issue edit 456 --title "New title"
gh issue edit 456 --add-label bug
gh issue edit 456 --add-assignee @user
# Comment on issue
gh issue comment 456 --body "Update"
# Create branch to work on issue
gh issue develop 456 --checkout
```
## Repository Operations
### Repository Info
```bash
# View repository
gh repo view
# View in browser
gh repo view --web
# Clone repository
gh repo clone owner/repo
# Fork repository
gh repo fork owner/repo
# List repositories
gh repo list owner
```
### Repository Management
```bash
# Create repository
gh repo create my-repo --public
gh repo create my-repo --private
# Sync fork
gh repo sync owner/repo
# Set default repository
gh repo set-default
```
## Search
Search across all of GitHub for repositories, issues, and pull requests.
### Search Repositories
```bash
# Search for repositories
gh search repos "machine learning" --language=python
# Search with filters
gh search repos --stars=">1000" --topic=kubernetes
```
### Search Issues
```bash
# Search issues across GitHub
gh search issues "bug" --label=critical --state=open
# Exclude results (note the -- to prevent flag interpretation)
gh search issues -- "memory leak -label:wontfix"
```
### Search Pull Requests
```bash
# Search PRs
gh search prs --author=@me --state=open
# Search with date filters
gh search prs "refactor" --created=">2024-01-01"
```
## Labels
Manage repository labels for issue and PR organization.
### List and View Labels
```bash
# List all labels in repository
gh label list
```
### Create and Edit Labels
```bash
# Create new label
gh label create "priority: high" --color FF0000 --description "High priority items"
# Edit existing label
gh label edit "bug" --color FFAA00 --description "Something isn't working"
```
### Clone Labels Between Repos
```bash
# Clone labels from another repository
gh label clone owner/source-repo
```
## Codespaces
Manage GitHub Codespaces directly from the terminal.
### List and Create Codespaces
```bash
# List codespaces
gh codespace list
# Create new codespace
gh codespace create --repo owner/repo
```
### Connect to Codespaces
```bash
# SSH into codespace
gh codespace ssh
# Open in VS Code
gh codespace code
# Open in JupyterLab
gh codespace jupyter
```
### Manage Codespace Files
```bash
# Copy files to/from codespace
gh codespace cp local-file.txt remote:~/path/
gh codespace cp remote:~/path/file.txt ./local-dir/
# View logs
gh codespace logs
```
## Releases
### Creating Releases
```bash
# Create release
gh release create v1.0.0
# Create release with notes
gh release create v1.0.0 --notes "Release notes"
# Create release with files
gh release create v1.0.0 dist/*.tar.gz
# Create draft release
gh release create v1.0.0 --draft
# Generate release notes automatically
gh release create v1.0.0 --generate-notes
```
### Managing Releases
```bash
# List releases
gh release list
# View release
gh release view v1.0.0
# Download release assets
gh release download v1.0.0
```
## Gists
```bash
# Create gist
gh gist create file.txt
# Create gist from stdin
echo "content" | gh gist create -
# List gists
gh gist list
# View gist
gh gist view <gist-id>
# Edit gist
gh gist edit <gist-id>
```
## Configuration
```bash
# Set default editor
gh config set editor vim
# Set default git protocol
gh config set git_protocol ssh
# View configuration
gh config list
# Set browser
gh config set browser firefox
```
## Quick Reference
Common gh operations at a glance:
| Operation | Command | Common Flags |
| ---------------- | ------------------------- | ----------------------------------------- |
| Create PR | `gh pr create` | `--draft`, `--fill`, `--base`, `--title` |
| List PRs | `gh pr list` | `--author @me`, `--label`, `--state` |
| View PR | `gh pr view <number>` | `--web`, `--comments` |
| Merge PR | `gh pr merge <number>` | `--squash`, `--rebase`, `--delete-branch` |
| Create issue | `gh issue create` | `--title`, `--body`, `--label` |
| List issues | `gh issue list` | `--assignee @me`, `--label`, `--state` |
| View issue | `gh issue view <number>` | `--web`, `--comments` |
| Clone repo | `gh repo clone <repo>` | `--` (to pass git flags) |
| Fork repo | `gh repo fork` | `--clone`, `--remote` |
| View repo | `gh repo view` | `--web` |
| Create release | `gh release create <tag>` | `--title`, `--notes`, `--draft` |
| Run workflow | `gh workflow run <name>` | `--ref`, `--field` |
| Watch run | `gh run watch <id>` | `--exit-status` |
| Search repos | `gh search repos <query>` | `--language`, `--stars` |
| Create label | `gh label create <name>` | `--color`, `--description` |
| Create codespace | `gh codespace create` | `--repo`, `--branch` |
| SSH to codespace | `gh codespace ssh` | `--codespace` |
## Additional Resources
### Reference Guides
For detailed patterns and advanced usage, see:
- **[Workflows & Actions](references/workflows-actions.md)** - GitHub Actions workflows, runs, cache management, and CI/CD integration patterns
- **[Advanced Features](references/advanced-features.md)** - Aliases, API access, extensions, secrets, SSH/GPG keys, organizations, projects, and advanced scripting
- **[Automation Workflows](references/automation-workflows.md)** - Common automation patterns, daily reports, release automation, and team collaboration workflows
- **[Troubleshooting](references/troubleshooting.md)** - Solutions for authentication, permissions, rate limiting, and common errors
### Example Scripts
Practical automation scripts (see `examples/` directory):
- `auto-pr-create.sh` - Automated PR creation workflow
- `issue-triage.sh` - Bulk issue labeling and assignment
- `workflow-monitor.sh` - Watch and notify on workflow completion
- `release-automation.sh` - Complete release workflow automation
### External Documentation
- **Official Manual**: https://cli.github.com/manual
- **GitHub Community**: https://github.com/cli/cli/discussions
- **API Documentation**: https://docs.github.com/en/rest
- **Extension Marketplace**: https://github.com/topics/gh-extension
## JSON Output
Use `--json` flag for structured output. **Always verify field names with `--help`** as they differ from GitHub API names.
```bash
# Check available JSON fields for any command
gh repo view --help | grep -A 50 "JSON FIELDS"
gh pr list --help | grep -A 50 "JSON FIELDS"
```
### Common JSON Field Corrections
| Wrong (API-style) | Correct (gh CLI) |
| ----------------- | ---------------- |
| `stargazersCount` | `stargazerCount` |
| `forksCount` | `forkCount` |
| `watchersCount` | `watchers` |
| `openIssuesCount` | `issues` |
### Repository View Fields
```bash
# Common fields for gh repo view --json
gh repo view owner/repo --json name,description,stargazerCount,forkCount,updatedAt,url,readme
```
## Tips
1. Use `--web` flag to open items in browser for detailed view
1. Leverage interactive prompts by omitting parameters - most commands support interactive mode
1. Apply filters with `--author`, `--label`, `--state` to narrow down lists efficiently
1. Add `--json` flag to enable scriptable output for automation
1. **Always check `--help` for valid JSON field names** - they differ from GitHub API
1. Use `gh repo create --template` to scaffold from template repositories
1. Enable auto-merge with `gh pr merge --auto` for PRs that pass checks
Attribution
Comments (0)
No comments yet. Be the first to comment!
