Run an iterative review loop on an implementation, fixing and replying to self-review threads on GitHub each pass.
This skill pushes commits and posts/resolves GitHub PR comments autonomously across passes — same posture as atk-pr-autofix. Invoking it is the opt-in; it won't ask before each push or comment.
Workflow
-
Ensure the PR is up to date.
- Commit any staged changes, then push:
git push(first run on a new branch:git push -u origin HEAD). - Check for an existing PR:
gh pr view --json number -q .number 2>/dev/null. - If none:
gh pr create --draft. - The PR is now the change set —
atk-code-reviewreviews it directly, no separate diff-scoping step needed here.
- Commit any staged changes, then push:
-
Subagent review. Spawn a subagent against the PR from step 1 and the plan (if available), using the
atk-code-reviewskill. It gathers PR context, dedups against existing threads (any author), and posts a single batched self-review to the PR — returning the new thread IDs it created (empty if nothing new was found). -
If no new threads: done — go to step 6 (report).
-
Triage and fix. For each thread ID returned by step 2:
- Triage using
atk-pr-autofix's categories: must fix / should fix / won't fix / needs discussion. - Apply must-fix and should-fix changes — one commit per item.
- Reply to the thread via GraphQL
addPullRequestReviewThreadReply(takesthreadId+bodydirectly, no comment-id lookup needed): quote the finding, state the action taken and commit hash (or the reason for not fixing). - Resolve fixed and won't-fix threads:
bash <SKILL_DIR>/scripts/resolve-review-threads.sh [number] --thread-id <id>[,<id>...] - Leave "needs discussion" threads open — that's a signal for the human reviewer, not something to resolve automatically.
- Never touch a thread not returned by step 2 — those belong to a human or Copilot, and are
atk-pr-autofix's job to handle later.
- Triage using
-
Push, then return to step 2. Repeat up to 10 passes.
-
Report.
Notes:
- If using Claude Code: use general-purpose subagent with model=Opus
- If oracle type is available: for Agent tool, use subagent_type=oracle max_turns=35
Reporting:
- Summarise fixes applied and threads left open for discussion (link them).
- If the pass cap (10) was hit and new threads were still appearing, recommend another
$polish-implementationrun — there may be more to find.