From github
Manage GitHub pull requests using the `gh` CLI. Parse `$ARGUMENTS` to determine the requested operation and execute it.
npx claudepluginhub filipowm/claude-plugins --plugin githubThis skill uses the workspace's default tool permissions.
Manage GitHub pull requests using the `gh` CLI. Parse `$ARGUMENTS` to determine the requested operation and execute it.
Retrieves texts, DMs, one-time codes, and inspects threads in ECC workflows. Provides evidence of exact sources checked for verification before replies.
Delivers expertise for HS tariff classification, customs documentation, duty optimization, restricted party screening, and trade compliance across jurisdictions.
Process documents with Nutrient API: convert formats (PDF, DOCX, XLSX, images), OCR scans (100+ languages), extract text/tables, redact PII, sign, fill forms.
Manage GitHub pull requests using the gh CLI. Parse $ARGUMENTS to determine the requested operation and execute it.
IMPORTANT: This skill handles PR lifecycle management. For code review (reviewing code changes, leaving review comments,
approving/requesting changes), defer to the code-review skill.
Parse $ARGUMENTS to identify the operation. Match against these patterns:
| Intent | Trigger words |
|---|---|
| Create | create, new, open, make |
| Modify | edit, update, change, modify, set |
| Close | close |
| Reopen | reopen, re-open |
| Merge | merge, land, ship |
| Status | status, summary, summarize, info, details, show, view |
| List | list, ls, show all, my prs |
| Diff | diff, changes, what changed |
| Checkout | checkout, check out, switch to, test locally |
| Draft | draft, ready, mark ready, mark draft |
| Comment | comment, note, add comment |
| Reply | reply, respond, answer |
| Review Summary | review summary, reviews, review status, feedback |
| Update branch | update branch, rebase, sync |
| Actions/Checks | checks, actions, ci, pipeline, workflows |
If no clear match, treat $ARGUMENTS as a free-form PR request and use best judgment to determine the appropriate gh
commands.
If $ARGUMENTS is empty, run gh pr status to show current PR context, then ask what the user wants to do.
gh repo view --json defaultBranchRef -q .defaultBranchRef.name)git push -u origin HEADgit log $(git merge-base HEAD <base>)..HEAD --oneline.github/PULL_REQUEST_TEMPLATE.md or .github/pull_request_template.mdgh pr create --base <base> --title "<title>" --body "<body>"$ARGUMENTSUse sensible defaults — do NOT ask for title/body/branch unless the user explicitly provides them. Infer from commits.
Parse what to modify from $ARGUMENTS. Use appropriate gh pr edit flags:
gh pr edit <number> --title "<title>"gh pr edit <number> --body "<body>"gh pr edit <number> --add-reviewer <user>gh pr edit <number> --add-label <label>gh pr edit <number> --add-assignee <user>gh pr edit <number> --base <branch>gh pr edit <number> --milestone "<name>"Multiple edits can be combined in a single gh pr edit call.
gh pr view <number> --json title,state,comments,reviewsgh pr close <number>gh pr close <number> --delete-branchReopen: gh pr reopen <number>
gh pr view <number> --json title,state,mergeable,mergeStateStatus,statusCheckRollup,reviews,reviewDecision$ARGUMENTS:
gh pr merge <number> --merge|--squash|--rebase--delete-branch if user requestsGather comprehensive PR information and present it clearly:
gh pr view <number> --json number,title,state,author,baseRefName,headRefName,body,createdAt,updatedAt,mergeable,mergeStateStatus,isDraft,labels,assignees,milestone,reviewRequests,reviewDecision,additions,deletions,changedFiles
2. gh pr checks <number> — CI/actions status
3.
gh api repos/{owner}/{repo}/pulls/<number>/comments --jq '.[] | {user: .user.login, body: .body, created_at: .created_at, path: .path}' —
review comments
4. gh pr view <number> --comments — conversation comments
Present as structured summary:
## PR #<number>: <title>
**Status:** <state> | **Draft:** <yes/no> | **Mergeable:** <status>
**Author:** <author> | **Branch:** <head> → <base>
**Created:** <date> | **Updated:** <date>
**Changes:** +<additions> -<deletions> across <files> files
**Labels:** <labels> | **Assignees:** <assignees> | **Milestone:** <milestone>
### Review Status
<review decision and pending reviewers>
### CI/Checks
<table of check names and statuses>
### Comments Summary
<summary of conversation and review comments>
List PRs with optional filters from $ARGUMENTS:
gh pr listgh pr list --author <user>gh pr list --state <open|closed|merged|all>gh pr list --label <label>gh pr list --assignee <user>gh pr list --author @megh pr list --search "<query>"Show PR changes: gh pr diff <number>
If no number given, show diff for current branch PR: gh pr diff
Checkout PR locally: gh pr checkout <number>
gh pr ready <number>gh pr ready <number> --undoIMPORTANT: Confirm before marking as ready — this notifies reviewers.
Add a conversation comment (top-level PR comment):
gh pr comment <number> --body "<comment>"
Add an inline review comment on a specific file/line using gh api:
gh api repos/{owner}/{repo}/pulls/<number>/reviews \
-X POST \
-f event=COMMENT \
-f body="" \
--jq '.id' \
# Then add individual file comments:
gh api repos/{owner}/{repo}/pulls/<number>/comments \
-X POST \
-f body="<comment>" \
-f path="<file-path>" \
-F line=<line-number> \
-f side=RIGHT \
-f commit_id="$(gh pr view <number> --json headRefOid -q .headRefOid)"
If the user specifies a file and line, use the inline comment approach. Otherwise, default to conversation comment.
If comment body not provided in $ARGUMENTS, ask the user what to comment.
Reply to an existing PR review comment:
gh api repos/{owner}/{repo}/pulls/<number>/comments \
--jq '.[] | {id: .id, user: .user.login, body: .body[:80], path: .path, line: .line, created_at: .created_at}'
gh api repos/{owner}/{repo}/pulls/<number>/comments/<comment-id>/replies \
-X POST \
-f body="<reply>"
For replying to a conversation comment (non-review, top-level), use:
gh pr comment <number> --body "<reply>"
since conversation comments are linear — a new comment serves as a reply.
Summarize all reviews and review feedback on a PR:
gh api repos/{owner}/{repo}/pulls/<number>/reviews \
--jq '.[] | {id: .id, user: .user.login, state: .state, body: .body, submitted_at: .submitted_at}'
gh api repos/{owner}/{repo}/pulls/<number>/comments \
--jq '.[] | {id: .id, user: .user.login, body: .body, path: .path, line: .line, in_reply_to_id: .in_reply_to_id, created_at: .created_at}'
gh pr view <number> --comments
Present as structured summary:
## Review Summary for PR #<number>
### Reviews
| Reviewer | Decision | Summary | Date |
|----------|----------|---------|------|
| @user | APPROVED / CHANGES_REQUESTED / COMMENTED | brief summary | date |
### Inline Code Comments (<count> total)
Group by file, then show:
- **<file-path>** (line <N>): @user — <comment summary>
- Reply: @user2 — <reply summary>
### Unresolved Threads
List threads that still have open CHANGES_REQUESTED or unanswered questions.
### Conversation Comments (<count>)
Brief chronological summary of top-level PR comments.
IMPORTANT: Distinguish between review decisions (APPROVED, CHANGES_REQUESTED) and individual review comments. Group inline comments by file for readability. Highlight unresolved threads prominently.
Update PR branch with base:
gh pr view <number> --json mergeStateStatusgh api repos/{owner}/{repo}/pulls/<number>/update-branch -X PUTShow detailed CI/actions status:
gh pr checks <number> — check statusesgh run list --branch <head-branch> — recent workflow runsgh run view <run-id> --log-failedgh CLI — never construct raw URLs unless gh api is needed for features not in gh prgh pr view --json number -q .number for current branchgh command fails, explain what went wrong and suggest fixes (e.g., "not
authenticated" → gh auth login)