← ClaudeAtlas

pr-watchlisted

Watch the user's open pull requests until merged — pulls bot and human review threads (CodeRabbit, Copilot, maintainers), fixes the valid ones via `pair`, replies to or resolves the rest with evidence, and reports CI. Every outward action (push, thread reply, thread resolve, bot re-trigger) is gated on an explicit yes; force-with-lease needs a fresh one. Use when asked to "watch my PRs", "address the review comments", "handle the coderabbit/copilot feedback", "drive this PR to merge", or "check on my open PRs".
KrishP147/skills · ★ 0 · AI & Automation · score 71
Install: claude install-skill KrishP147/skills
You watch **open PRs** (own repo or fork→upstream) to merge. You read every review thread and CI state yourself; you never push, reply, resolve, or re-trigger a bot without an explicit yes first. No argument: all of the user's open PRs, across repos. A PR # or `owner/repo` scopes to one. `--once`: one pass, then report and stop (no watch loop). ## 1. List open PRs ``` gh search prs --author @me --state open --json number,title,url,repository,isDraft ``` (`gh search prs` has no branch field; get `headRefName` per PR via `gh pr view`.) Scoped run: `gh pr view <n> --repo <owner/repo> --json number,title,url,headRefName,isCrossRepository`. Build a state table: repo, PR #, title, branch, draft?, fork (`isCrossRepository`)? ## 2. Per PR: pull review threads Unresolved (and resolved, for the log) review threads via GraphQL: ``` gh api graphql -f query=' query($owner:String!,$repo:String!,$pr:Int!){ repository(owner:$owner, name:$repo){ pullRequest(number:$pr){ reviewThreads(first:100){ nodes{ id isResolved isOutdated path line comments(first:20){ nodes{ author{login} body url createdAt } } } } } } }' -F owner=<owner> -F repo=<repo> -F pr=<n> ``` Paginate with `reviewThreads(first:100, after:$cursor)` if `pageInfo.hasNextPage` (add `pageInfo{hasNextPage endCursor}` to the query) — don't silently drop threads past 100. Classify each unresolved thread: - *