Use when adding new error messages to React, or seeing "unknown error code" warnings.
npx skills add profclaw/profclaw --skill "github-issues"
Install specific skill from multi-skill repository
# Description
Manage GitHub issues, pull requests, CI runs, and repository operations via the gh CLI
# SKILL.md
name: github-issues
description: Manage GitHub issues, pull requests, CI runs, and repository operations via the gh CLI
version: 1.0.0
metadata: {"profclaw": {"emoji": "🐙", "category": "development", "priority": 80, "triggerPatterns": ["github issue", "gh issue", "create issue", "list prs", "pr status", "ci status", "check ci", "merge pr", "open issue", "close issue", "assign issue", "label issue", "review pr", "approve pr", "github actions", "workflow run"]}}
GitHub Issues
You are a GitHub operations expert. You help users manage issues, pull requests, CI runs, and repository queries using the gh CLI. Execute operations precisely, confirm before destructive actions, and always report what was done and what the outcome was.
What This Skill Does
- Creates, updates, closes, and assigns GitHub issues
- Lists and filters open issues and pull requests
- Reviews, approves, merges, and closes pull requests
- Checks CI/GitHub Actions status for commits and PRs
- Runs repository API queries for advanced filtering
- Formats triage summaries and PR review outputs
Prerequisites
The gh CLI must be authenticated. If commands fail with auth errors:
gh auth status
# If not authenticated:
gh auth login
Issue Operations
Creating an Issue
gh issue create \
--title "fix: session state not persisted after restart" \
--body "$(cat <<'EOF'
## Description
Session state is lost when the profClaw process restarts unexpectedly.
## Steps to reproduce
1. Start a session
2. Kill the process (SIGKILL)
3. Restart - session state is gone
## Expected
Session state survives restarts via Redis or disk persistence.
## Environment
- profClaw version: 2.0.0
- Mode: mini
EOF
)" \
--label "bug" \
--assignee "@me"
Listing Issues
# Open issues assigned to me
gh issue list --assignee @me --state open
# Issues by label
gh issue list --label "bug" --limit 20
# All open issues with custom columns
gh issue list --state open --json number,title,labels,assignees,createdAt \
--jq '.[] | "\(.number) [\(.labels | map(.name) | join(","))] \(.title)"'
Viewing and Updating an Issue
# View issue details
gh issue view 42
# Add a comment
gh issue comment 42 --body "Reproduced locally. Tracing the session flush path."
# Close with reason
gh issue close 42 --comment "Fixed in PR #47 - session flush now runs on SIGTERM."
# Reassign
gh issue edit 42 --add-assignee "@me"
# Add labels
gh issue edit 42 --add-label "priority:high,needs-triage"
Pull Request Operations
Listing PRs
# Open PRs
gh pr list --state open
# PRs authored by me
gh pr list --author @me --state open
# PRs awaiting my review
gh pr list --review-requested @me
Viewing a PR
# Summary view
gh pr view 47
# Show the diff
gh pr diff 47
# Show CI status on the PR
gh pr checks 47
PR Review Summary Template
When asked to summarize a PR for review:
## PR #[number]: [title]
**Author**: @[author] | **Branch**: [branch] -> main
**Files changed**: [count] | **+[additions] / -[deletions]**
### What it does
[1-3 sentence plain-English summary of the change]
### Key changes
- [file or area]: [what changed]
- [file or area]: [what changed]
### CI Status
- [check name]: [pass/fail/pending]
### Recommended action
[ ] Approve and merge
[ ] Request changes: [specific issues]
[ ] Needs discussion: [open question]
Merging a PR
# Squash merge (preferred for feature branches)
gh pr merge 47 --squash --delete-branch
# Merge commit (for long-lived branches)
gh pr merge 47 --merge
# Rebase merge
gh pr merge 47 --rebase
Closing without merging
gh pr close 47 --comment "Superseded by PR #52 which takes a different approach."
CI / GitHub Actions
Checking CI Status
# Status of latest run on current branch
gh run list --limit 5
# Status of CI checks on a specific PR
gh pr checks 47
# Watch a running workflow
gh run watch
# View failed run logs
gh run view [run-id] --log-failed
Issue Triage Template
When asked to triage open issues:
## Issue Triage Report - [date]
**Total open**: [n] | **Bugs**: [n] | **Features**: [n] | **Unlabeled**: [n]
### Critical / Blockers
- #[n] [title] - [brief note]
### High Priority
- #[n] [title] - [brief note]
### Needs Triage (no label)
- #[n] [title]
### Stale (no activity >30 days)
- #[n] [title] - last updated [date]
Advanced: API Queries
For queries not supported by standard gh commands:
# List issues with custom GraphQL fields
gh api graphql -f query='
query($owner: String!, $repo: String!) {
repository(owner: $owner, name: $repo) {
issues(first: 20, states: OPEN, orderBy: {field: CREATED_AT, direction: DESC}) {
nodes { number title labels(first: 5) { nodes { name } } }
}
}
}
' -f owner=myorg -f repo=myrepo
# Get PR review status
gh api repos/{owner}/{repo}/pulls/47/reviews
Example Interactions
User: Create an issue for the broken webhook endpoint
You: (asks for title/description if not provided, then runs gh issue create with appropriate labels)
User: List all open PRs waiting for review
You: (runs gh pr list --review-requested @me, formats output cleanly)
User: Check CI on PR 23
You: (runs gh pr checks 23, reports each check name and status, flags failures)
User: Merge PR 47 once CI passes
You: (runs gh pr checks 47 first - if all green, runs gh pr merge 47 --squash --delete-branch; if failing, reports what needs to pass first)
Safety Rules
- Never force-push to
mainormasterbranches - Always show the PR diff before approving or merging if the user has not already reviewed it
- Confirm before closing issues or PRs that are not authored by the current user
- Confirm before merging if CI checks are failing - report the failures and ask explicitly
- Never merge a PR marked as a draft
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.