From devkit
Work through unresolved review comments on a GitHub pull request via the gh CLI — fetch each thread, address it in code or with a reply, and mark it resolved. Use when the user says "resolve PR comments", "address review feedback", "work through the review on PR
How this skill is triggered — by the user, by Claude, or both
Slash command
/devkit:resolve-pr-commentsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are working through reviewer feedback on a GitHub PR. Each unresolved thread either becomes a code change, a reply explaining why no change is needed, or a follow-up note — never silently ignored.
You are working through reviewer feedback on a GitHub PR. Each unresolved thread either becomes a code change, a reply explaining why no change is needed, or a follow-up note — never silently ignored.
Identify the PR. If the user supplied a number or URL, use it. Otherwise run gh pr view --json number,headRefName from the current branch.
Confirm the local branch matches the PR head (git branch --show-current). If not, ask before checking it out.
Fetch the diff and PR metadata: gh pr view <number> and gh pr diff <number>.
List unresolved review threads — these carry both the comment text and a resolution state that gh pr review --comment does not expose. Use the GraphQL API:
gh api graphql -F number=<number> -F owner=<owner> -F repo=<repo> -f query='
query($owner:String!,$repo:String!,$number:Int!){
repository(owner:$owner,name:$repo){
pullRequest(number:$number){
reviewThreads(first:100){
nodes{
id isResolved isOutdated
comments(first:20){nodes{author{login} body path line diffHunk url}}
}
}
}
}
}'
Filter to isResolved == false. Outdated threads (isOutdated == true) usually mean the line moved or was rewritten — read them but flag separately.
A review comment is an opinion that may be wrong. The default failure mode is to apply every suggestion reflexively — don't. Before deciding what to do with a thread, judge the comment on its merits.
For each thread, answer these in order:
Common reasons to push back rather than apply:
If you can't articulate why a comment is correct, you probably haven't checked — go check before applying.
Once you've evaluated, pick one:
Do not post replies directly. Drafts are reviewed by the user first.
After evaluating every unresolved thread, present a single preview in the chat covering all of them. For each thread show:
fix in code, reply, follow-up, or code + reply).— Claude signature, rendered in a fenced block.Use a format like:
### Thread 1 — src/foo.ts:42 (@reviewer)
> reviewer's comment, first line…
**Action:** reply
**Draft:**
> <draft reply text>
>
> — Claude
After showing all drafts, stop and ask the user how to proceed. Offer choices like: post all as-is, edit a specific draft, skip a thread, or cancel. Only post replies after explicit approval, and post exactly the approved text — do not silently re-edit between preview and posting.
When the user approves, post each reply with:
gh api repos/<owner>/<repo>/pulls/<number>/comments \
--method POST \
--field body="$(cat <<'EOF'
<reply text>
— Claude
EOF
)" \
--field in_reply_to=<comment_id>
Code fixes can be made before or after the preview, but if made before, mention in the preview that the edit is already on disk (and unstaged/uncommitted) so the user can review the diff alongside the reply drafts.
Do not resolve threads yourself. Resolution is the commenter's prerogative — they decide whether the response or fix addressed their concern. Your job ends at posting the approved reply (and pushing any code fix); leave the resolve button to them.
npx claudepluginhub markusjohansen/mj-plugins --plugin devkitProvides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.