| name | gh-cli |
| description | GitHub CLI operations for issues and pull requests. Use when creating, reading, updating, or closing issues and PRs. Always verify operations after execution. |
GitHub CLI Skill
Manage GitHub issues and pull requests using gh CLI.
Capability
- Issues: Create, List, View, Update, Close, Reopen
- Pull Requests: Create, List, View, Update, Merge, Close
- Verification: Always verify operations after execution
When to Use
- Create or update GitHub issues
- Create or manage pull requests
- Query repository status
- Interact with GitHub from EUE
Prerequisites
gh --version
gh auth status
gh auth login
Issues
Create Issue
gh issue create --title "Bug: Something broken" --body "Description here" --repo owner/repo
gh issue create --title "Feature request" --body "Description" --label "enhancement" --repo owner/repo
gh issue create --title "Task" --body "Description" --assignee @me --repo owner/repo
⚠️ MUST VERIFY:
gh issue view <number> --repo owner/repo
List Issues
gh issue list --repo owner/repo
gh issue list --repo owner/repo --state all
gh issue list --repo owner/repo --label "bug"
gh issue list --repo owner/repo --assignee @me
View Issue
gh issue view <number> --repo owner/repo
gh issue view <number> --repo owner/repo --json number,title,state,url
Update Issue
gh issue comment <number> --repo owner/repo --body "Comment text"
gh issue edit <number> --repo owner/repo --add-label "bug,help wanted"
gh issue edit <number> --repo owner/repo --remove-label "enhancement"
gh issue edit <number> --repo owner/repo --title "New title"
gh issue edit <number> --repo owner/repo --add-assignee @me
⚠️ MUST VERIFY:
gh issue view <number> --repo owner/repo
Close Issue
gh issue close <number> --repo owner/repo --comment "Fixed in #123"
gh issue close <number> --repo owner/repo
⚠️ MUST VERIFY:
gh issue view <number> --repo owner/repo --json state
Reopen Issue
gh issue reopen <number> --repo owner/repo
Pull Requests
Create PR
gh pr create --title "Feature: Add new functionality" --body "Description here" --repo owner/repo
gh pr create --base main --head feature-branch --title "Title" --body "Body" --repo owner/repo
gh pr create --draft --title "WIP: Feature" --body "Work in progress" --repo owner/repo
⚠️ MUST VERIFY:
gh pr view <number> --repo owner/repo
List PRs
gh pr list --repo owner/repo
gh pr list --repo owner/repo --state all
gh pr list --repo owner/repo --author @me
gh pr list --repo owner/repo --label "review needed"
View PR
gh pr view <number> --repo owner/repo
gh pr view <number> --repo owner/repo --json number,title,state,url,headRefName,baseRefName
Update PR
gh pr comment <number> --repo owner/repo --body "Looks good to me!"
gh pr edit <number> --repo owner/repo --add-reviewer username
gh pr edit <number> --repo owner/repo --add-label "review needed"
gh pr ready <number> --repo owner/repo --undo
gh pr ready <number> --repo owner/repo
⚠️ MUST VERIFY:
gh pr view <number> --repo owner/repo
Merge PR
gh pr merge <number> --repo owner/repo --merge
gh pr merge <number> --repo owner/repo --squash
gh pr merge <number> --repo owner/repo --rebase
gh pr merge <number> --repo owner/repo --delete-branch
⚠️ MUST VERIFY:
gh pr view <number> --repo owner/repo --json state,mergedAt
Close PR
gh pr close <number> --repo owner/repo --comment "Closing this PR"
gh pr close <number> --repo owner/repo
⚠️ MUST VERIFY:
gh pr view <number> --repo owner/repo --json state
Verification Pattern
CRITICAL: After every create/update/close operation, MUST verify:
gh issue view <number> --repo owner/repo --json number,title,state,url
gh pr view <number> --repo owner/repo --json number,title,state,url
Common Workflows
Report Bug Workflow
ISSUE_URL=$(gh issue create --title "Bug: ..." --body "..." --repo owner/repo)
ISSUE_NUM=$(echo "$ISSUE_URL" | grep -o '[0-9]*$')
gh issue view "$ISSUE_NUM" --repo owner/repo
echo "✅ Issue #$ISSUE_NUM created: $ISSUE_URL"
Feature PR Workflow
git checkout -b feature/new-feature
git add . && git commit -m "feat: add new feature"
git push -u origin feature/new-feature
PR_URL=$(gh pr create --title "Feature: ..." --body "..." --repo owner/repo)
PR_NUM=$(echo "$PR_URL" | grep -o '[0-9]*$')
gh pr view "$PR_NUM" --repo owner/repo
echo "✅ PR #$PR_NUM created: $PR_URL"
Error Handling
gh repo view owner/repo --json name
gh issue view <number> --repo owner/repo 2>&1 || echo "Issue not found"
gh repo view owner/repo --json viewerPermission
Testing Repository
Use https://github.com/ThaddeusJiang/skills for testing.
⚠️ IMPORTANT:
- Test only on your own repositories
- Do not affect other users' issues/PRs
- Clean up test issues/PRs after testing
- Use
--repo ThaddeusJiang/skills explicitly
Examples
Example: Create and Verify Issue
OUTPUT=$(gh issue create \
--title "Test: gh-cli skill" \
--body "Testing gh-cli skill functionality" \
--repo ThaddeusJiang/skills)
echo "Output: $OUTPUT"
ISSUE_NUM=$(echo "$OUTPUT" | grep -oE '[0-9]+$')
echo "Issue number: $ISSUE_NUM"
gh issue view "$ISSUE_NUM" --repo ThaddeusJiang/skills --json number,title,state,url
gh issue close "$ISSUE_NUM" --repo ThaddeusJiang/skills --comment "Test completed"
gh issue view "$ISSUE_NUM" --repo ThaddeusJiang/skills --json state
Files
SKILL.md - This file (skill definition)
Notes
- Always use
--repo owner/repo to be explicit about target repository
- Always verify after create/update/close operations
- Report both success and failure honestly to user
- Clean up test data after testing
- Parse JSON output for reliable data extraction:
--json field1,field2