.claude/skills/pr-watch/SKILL.md
Start a background loop that monitors PR for new review comments and addresses them.
npx skillsauth add elie222/inbox-zero pr-watchInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Monitor the current PR for new review comments in the background using /loop.
Parse $ARGUMENTS for options:
--interval N → loop interval (default: 5m)Confirm there's an open PR:
gh pr view --json number --jq .number
Create a loop with CronCreate using the parsed interval and this prompt:
Fetch all PR comments (code review + conversation). Use these commands:
PR_NUM=$(gh pr view --json number --jq .number) REPO=$(gh repo view --json nameWithOwner --jq .nameWithOwner) # Code review comments — get all top-level (non-reply) comments with IDs gh api "repos/$REPO/pulls/$PR_NUM/comments" --jq '[.[] | select(.in_reply_to_id == null) | {id, body: .body[0:300], author: .user.login, created_at, path: .path}]' # Check which have replies already gh api "repos/$REPO/pulls/$PR_NUM/comments" --jq '[.[] | select(.in_reply_to_id != null) | .in_reply_to_id] | unique' # Conversation comments gh pr view --json comments --jq '.comments[] | {id, body, author: .author.login}'Ignore bot accounts (vercel, dependabot, github-actions, etc.).
How to handle comments
For each top-level comment that does NOT have a reply yet:
- Evaluate the suggestion using your own judgment. AI review bots (e.g. cubic-dev-ai, coderabbit, copilot, baz-reviewer) do NOT have full project context — their suggestions may be wrong.
- If valid and worth fixing: fix the code and reply confirming the fix.
- If valid but out of scope: reply explaining why (e.g. pre-existing pattern, low priority, will address in follow-up).
- If invalid or wrong: reply explaining why you disagree.
- Always reply to every comment so there's a clear record. Do NOT auto-resolve threads — let the reviewer handle resolution.
A comment is "addressed" when it has a reply (from us). Check the replied-to IDs list to know which are done.
Exit condition — only cancel this task when ALL are true:
- Every top-level comment has a reply (compare comment IDs vs replied-to IDs).
- You did NOT push any fixes in this iteration (if you pushed, wait at least TWO more iterations — checks take time to start and complete).
- All reviewer check runs for the latest commit have completed. Do NOT use
gh pr checks(it can show stale results). Instead:If reviewer bots show no results for this SHA, they haven't started yet — wait. If any condition is false, wait for the next iteration.HEAD_SHA=$(gh pr view --json headRefOid --jq .headRefOid) # Find incomplete checks for this exact commit gh api "repos/$REPO/commits/$HEAD_SHA/check-runs" --jq '[.check_runs[] | select(.status != "completed") | {name: .name, status: .status}]' # Also verify reviewer bots ran on THIS commit (not a previous one) gh api "repos/$REPO/commits/$HEAD_SHA/check-runs" --jq '[.check_runs[] | select(.name == "Baz Reviewer" or .name == "cubic · AI code reviewer") | {name: .name, status: .status, conclusion: .conclusion}]'
Confirm to the user: "Watching PR #X every {interval}. I'll address new comments automatically and stop when everything is handled."
tools
Use the Inbox Zero API CLI to inspect the live API schema, list and manage automation rules, and read inbox analytics through the public API. Use this when a task involves Inbox Zero rules, stats, or API-driven automation and can be solved through the CLI instead of browser interaction.
tools
Write focused unit tests for backend and utility logic
testing
Pause execution for a user-specified duration
testing
Update workspace packages while respecting the repo's pinned package list in .ncurc.cjs. Use when the user asks to update dependencies or refresh package versions.