github
Execute GitHub operations (PRs, issues, labels, comments, merges) using PowerShell scripts with structured output and error handling. Use when working with pull requests, issues, review comments, or CI checks instead of raw gh commands.
$ 安裝
git clone https://github.com/rjmurillo/ai-agents /tmp/ai-agents && cp -r /tmp/ai-agents/.claude/skills/github ~/.claude/skills/ai-agents// tip: Run this command in your terminal to install the skill
name: github version: 3.0.0 description: Execute GitHub operations (PRs, issues, labels, comments, merges) using PowerShell scripts with structured output and error handling. Use when working with pull requests, issues, review comments, or CI checks instead of raw gh commands. license: MIT model: claude-opus-4-5 metadata: domains:
- github
- pr
- issue
- labels
- milestones
- comments
- reactions
type: integration
complexity: intermediate
generator:
keep_headings:
- Decision Tree
- Script Reference
- Output Format
- See Also
GitHub Skill
Use these scripts instead of raw gh commands for consistent error handling and structured output.
Triggers
| Phrase | Operation |
|---|---|
get PR context for #123 | Get-PRContext.ps1 |
respond to review comments | Post-PRCommentReply.ps1 |
add label to issue #456 | Set-IssueLabels.ps1 |
merge this PR | Merge-PR.ps1 |
Decision Tree
Need GitHub data?
├─ List PRs (filtered) → Get-PullRequests.ps1
├─ PR info/diff → Get-PRContext.ps1
├─ CI check status → Get-PRChecks.ps1
├─ Review comments → Get-PRReviewComments.ps1
├─ Review threads → Get-PRReviewThreads.ps1
├─ Unique reviewers → Get-PRReviewers.ps1
├─ Unaddressed bot comments → Get-UnaddressedComments.ps1
├─ PR merged check → Test-PRMerged.ps1
├─ Copilot follow-up PRs → Detect-CopilotFollowUpPR.ps1
├─ Issue info → Get-IssueContext.ps1
├─ Merge readiness check → Test-PRMergeReady.ps1
└─ Need to take action?
├─ Create issue → New-Issue.ps1
├─ Create PR → New-PR.ps1
├─ Reply to review → Post-PRCommentReply.ps1
├─ Reply to thread (GraphQL) → Add-PRReviewThreadReply.ps1
├─ Comment on issue → Post-IssueComment.ps1
├─ Add reaction → Add-CommentReaction.ps1
├─ Apply labels → Set-IssueLabels.ps1
├─ Set milestone → Set-IssueMilestone.ps1
├─ Resolve threads → Resolve-PRReviewThread.ps1
├─ Process AI triage → Invoke-PRCommentProcessing.ps1
├─ Assign Copilot → Invoke-CopilotAssignment.ps1
├─ Enable/disable auto-merge → Set-PRAutoMerge.ps1
├─ Close PR → Close-PR.ps1
└─ Merge PR → Merge-PR.ps1
Script Reference
PR Operations (scripts/pr/)
| Script | Purpose | Key Parameters |
|---|---|---|
Get-PullRequests.ps1 | List PRs with filters | -State, -Label, -Author, -Base, -Head, -Limit |
Get-PRContext.ps1 | PR metadata, diff, files | -PullRequest, -IncludeChangedFiles, -IncludeDiff |
Get-PRChecks.ps1 | CI check status, polling | -PullRequest, -Wait, -TimeoutSeconds, -RequiredOnly |
Get-PRReviewComments.ps1 | Paginated review comments | -PullRequest, -IncludeIssueComments |
Get-PRReviewThreads.ps1 | Thread-level review data | -PullRequest, -UnresolvedOnly |
Get-PRReviewers.ps1 | Enumerate unique reviewers | -PullRequest, -ExcludeBots |
Get-UnaddressedComments.ps1 | Bot comments needing attention | -PullRequest |
Get-UnresolvedReviewThreads.ps1 | Unresolved thread IDs | -PullRequest |
Test-PRMerged.ps1 | Check if PR is merged | -PullRequest |
Detect-CopilotFollowUpPR.ps1 | Detect Copilot follow-up PRs | -PRNumber, -Owner, -Repo |
Post-PRCommentReply.ps1 | Thread-preserving replies | -PullRequest, -CommentId, -Body |
Add-PRReviewThreadReply.ps1 | Reply to thread by ID (GraphQL) | -ThreadId, -Body, -Resolve |
Resolve-PRReviewThread.ps1 | Mark threads resolved | -ThreadId or -PullRequest -All |
Unresolve-PRReviewThread.ps1 | Mark threads unresolved | -ThreadId or -PullRequest -All |
Get-ThreadById.ps1 | Get single thread by ID | -ThreadId |
Get-ThreadConversationHistory.ps1 | Full thread comment history | -ThreadId, -IncludeMinimized |
Test-PRMergeReady.ps1 | Check merge readiness | -PullRequest, -IgnoreCI, -IgnoreThreads |
Set-PRAutoMerge.ps1 | Enable/disable auto-merge | -PullRequest, -Enable/-Disable, -MergeMethod |
Invoke-PRCommentProcessing.ps1 | Process AI triage output | -PRNumber, -Verdict, -FindingsJson |
New-PR.ps1 | Create PR with validation | -Title, -Body, -Base |
Close-PR.ps1 | Close PR with comment | -PullRequest, -Comment |
Merge-PR.ps1 | Merge with strategy | -PullRequest, -Strategy, -DeleteBranch, -Auto |
Issue Operations (scripts/issue/)
| Script | Purpose | Key Parameters |
|---|---|---|
Get-IssueContext.ps1 | Issue metadata | -Issue |
New-Issue.ps1 | Create new issue | -Title, -Body, -Labels |
Set-IssueLabels.ps1 | Apply labels (auto-create) | -Issue, -Labels, -Priority |
Set-IssueMilestone.ps1 | Assign milestone | -Issue, -Milestone |
Post-IssueComment.ps1 | Comments with idempotency | -Issue, -Body, -Marker |
Invoke-CopilotAssignment.ps1 | Synthesize context for Copilot | -IssueNumber, -WhatIf |
Reactions (scripts/reactions/)
| Script | Purpose | Key Parameters |
|---|---|---|
Add-CommentReaction.ps1 | Add emoji reactions (batch support) | -CommentId[], -Reaction, -CommentType |
Output Format
All scripts output structured JSON with Success boolean:
$result = pwsh -NoProfile scripts/pr/Get-PRContext.ps1 -PullRequest 50 | ConvertFrom-Json
if ($result.Success) { ... }
Anti-Patterns
| Avoid | Why | Instead |
|---|---|---|
Raw gh pr view commands | No structured output | Use Get-PRContext.ps1 |
Raw gh api for comments | Doesn't preserve threading | Use Post-PRCommentReply.ps1 |
| Inline issue creation | Missing validation | Use New-Issue.ps1 |
| Multiple individual reactions | 88% slower | Use batch mode in Add-CommentReaction.ps1 |
| Hardcoding owner/repo | Breaks in forks | Let scripts infer from git remote |
| Ignoring exit codes | Missing error handling | Check $LASTEXITCODE |
| Skipping idempotency markers | Duplicate comments | Use -Marker parameter |
See Also
| Document | Content |
|---|---|
| examples.md | Complete script examples |
| patterns.md | Reusable workflow patterns |
| copilot-prompts.md | Creating @copilot directives |
| copilot-synthesis-guide.md | Copilot context synthesis |
| api-reference.md | Exit codes, API endpoints, troubleshooting |
modules/GitHubCore.psm1 | Shared helper functions |
Verification
Before completing a GitHub operation:
- Correct script selected from Decision Tree
- Required parameters provided (PR/issue number)
- Response JSON parsed successfully
-
Success: truein response - State change verified (for mutating operations)
Repository
