원클릭으로
review-prs
Assess open PRs and generate a parallel review script — produces manifest.json and let-it-rip.sh for team-review-request execution.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Assess open PRs and generate a parallel review script — produces manifest.json and let-it-rip.sh for team-review-request execution.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Capture session learnings and save to skills, guidelines, or reference docs under ~/.claude/.
Orchestrate parallel claude -p sessions — bootstrap, launch, monitor, and converge. Works with any skill that produces manifest.json, item directories, and a runner script.
Create a request (pull request or merge request) or update an existing one following project conventions.
Resolve merge or rebase conflicts between branches.
Assess open PRs with unaddressed review comments and generate a parallel addressing script — produces manifest.json and let-it-rip.sh for address-request-comments execution.
Assess open work items and generate a parallel execution script — produces manifest.json and let-it-rip.sh for implement/clarify execution.
| name | review-prs |
| description | Assess open PRs and generate a parallel review script — produces manifest.json and let-it-rip.sh for team-review-request execution. |
| argument-hint | [#47 #46] [--max=20] [--concurrency=3] [--include-drafts] |
git rev-parse --show-toplevel 2>/dev/nullgit branch --show-current 2>/dev/nullgit remote get-url origin 2>/dev/nullAssess open PRs, then generate let-it-rip.sh — a bash script that launches parallel claude -p sessions, each invoking /git:team-review-request.
bash let-it-rip.sh from terminal, repeatedly if neededlet-it-rip.sh is the loop target, not this skill. Each claude -p session invokes team-review-request, which has re-review and quick-exit detection built in — if no changes since the last review, the session exits cleanly with status=skipped.
/sweep:review-prs — all open PRs (up to 20)/sweep:review-prs #47 #46 — specific PRs/sweep:review-prs --max=10 --concurrency=2 --include-draftsclaude -p sessions are top-level and cannot prompt for permissions. All patterns below must exist in ~/.claude/settings.json permissions.allow. Stop immediately if any are missing.
Detect platform first (see Phase 2), then check the matching CLI patterns:
GitHub patterns:
"Bash(gh pr view:*)", "Bash(gh pr diff:*)", "Bash(gh pr list:*)",
"Bash(gh api:*)", "Bash(gh pr review:*)"
GitLab patterns:
"Bash(glab mr view:*)", "Bash(glab mr diff:*)", "Bash(glab mr list:*)",
"Bash(glab api:*)", "Bash(glab mr note:*)"
Shared patterns (both platforms):
"Bash(git status:*)", "Bash(git diff:*)", "Bash(git log:*)", "Bash(mkdir:*)",
"Bash(jq *)",
"Bash(cp ~/.claude/skill-references/**)",
"Bash(bash ~/.claude/skill-references/**)",
"Read(~/.claude/commands/**)", "Read(~/.claude/learnings*/**)",
"Read(~/.claude/learnings-providers.json)", "Read(~/.claude/skill-references/**)",
"Read(~/.claude/commands/set-persona/**)",
"Read(~/**/tmp/claude-artifacts/**)",
"Read(tmp/claude-artifacts/**)",
"Write(~/**/tmp/claude-artifacts/**)",
"Edit(~/**/tmp/claude-artifacts/**)"
If missing, report with BLOCKED: prefix listing each missing pattern. Do not continue until resolved.
~/.claude/skill-references/parallel-claude-runner-template.sh — Bash template for let-it-rip.sh generation~/.claude/skill-references/fill-template.sh — Bash assembly for prompt generation (replaces LLM string substitution)reviewer-prompt.md — Prompt template for review agents (assembled by fill-template.sh)Read ~/.claude/settings.json, check every required pattern is present (exact string match). Also verify Write/Edit parity: every Write(...) pattern in the prerequisites that targets files the claude -p session will update (not just create) must have a matching Edit(...) pattern. Stop if any missing.
#(\d+) → PR_NUMBERS[]--max=<N> → MAX_PRS (default 20)--concurrency=<N> → CONCURRENCY (default 3)--include-drafts → INCLUDE_DRAFTS (default false)Fetch open PRs — platform-specific commands are inlined below via ! preprocessing:
isDraft,reviews,comments fields):
!`cat ~/.claude/platform-commands/fetch-review-details.sh 2>/dev/null || echo "UNCONFIGURED: run setup-claude.sh to set up platform-commands"`
isDraft field):
!`cat ~/.claude/platform-commands/list-open-prs.sh 2>/dev/null || echo "UNCONFIGURED: run setup-claude.sh to set up platform-commands"`
Then fetch reviews,comments per PR separately.Explicit selection bypasses skip filtering — all specified PRs are eligible (still detect review mode for prompt generation).
When no specific PRs are given (all-open mode), apply skip filtering per PR:
a. isDraft && !INCLUDE_DRAFTS → SKIP(Draft)
b. Scan reviews for Role:.*Team-Reviewer. If found, store LAST_REVIEW_TS. Check for activity since:
LAST_REVIEW_TSLAST_REVIEW_TSNo activity → SKIP(Reviewed, no activity since <ts>)
New activity → RE-REVIEW (eligible)
c. No prior team review → FIRST-REVIEW (eligible)
Check if any PR's baseRefName matches another's headRefName. Record stacked_on / stacked_by in manifest. All stacked PRs are still reviewed independently.
Assessed N PRs. M eligible, K skipped:
| # | Title | Mode | Stack | Skip Reason |
|---|-------|------|-------|-------------|
| 47 | Add auth middleware | First review | -- | -- |
| 46 | Fix race condition | Re-review | -- | -- |
| 45 | Update deps | Skip | -- | No activity since review |
| 43 | Auth tokens | First review | -> #47 | -- |
Generating let-it-rip.sh for M PRs (concurrency: CONCURRENCY)...
Proceed directly to artifact generation — do not wait for confirmation.
Create run directory: tmp/claude-artifacts/sweep-reviews/<YYYY-MM-DD-HHMM> with a pr-<N>/ subdirectory per eligible PR. Compute the timestamp in a separate Bash call first (date +%Y-%m-%d-%H%M), then use the literal value — $() subshells in Bash commands break permission pattern matching. Initialize the run dir + per-PR subdirs + copy shared preflight in a single call:
bash ~/.claude/skill-references/init-sweep-pr-dir.sh <RUN_DIR> <pr-numbers...>
This matches the Bash(bash ~/.claude/skill-references/**) allow pattern — no per-invocation permission prompt. Follow Artifact Structure in sweep-scaffold.md.
{
"created_at": "<ISO>",
"run_dir": "<RUN_DIR>",
"concurrency": <N>,
"owner_repo": "<owner/repo>",
"eligible": [
{"number": 47, "title": "...", "mode": "first-review", "url": "...", "stacked_on": null, "stacked_by": [43]}
],
"skipped": [
{"number": 45, "reason": "Reviewed, no activity since 2026-03-27T10:00:00Z"}
]
}
Write data files for template assembly, then call fill-template.sh:
Per-PR files in pr-<N>/:
metadata.json:
{
"PR_NUMBER": "<number>",
"PR_TITLE": "<title>",
"PR_URL": "<url>",
"OWNER_REPO": "<owner/repo>",
"MODE": "first-review or re-review",
"RUN_DIR": "<absolute path>",
"PR_DIR": "<absolute path>",
"STACKING_CONTEXT": "<stacking description or 'This PR is not part of a stack.'>",
"LAST_SHA_FIELD": "last_reviewed_sha",
"FETCH_LATEST_INLINE_COMMENT_ID_CMD": "<literal command — see below>",
"FETCH_PR_WATERMARK_CMD": "<literal command — see below>"
}
Platform command injection: The following keys inject literal platform commands into runtime templates via fill-template.sh:
FETCH_LATEST_INLINE_COMMENT_ID_CMD — literal value of:
!`cat ~/.claude/platform-commands/fetch-latest-inline-comment-id.sh 2>/dev/null || echo "UNCONFIGURED: run setup-claude.sh to set up platform-commands"`
FETCH_PR_WATERMARK_CMD — literal value of:
!`cat ~/.claude/platform-commands/fetch-pr-watermark.sh 2>/dev/null || echo "UNCONFIGURED: run setup-claude.sh to set up platform-commands"`
Assemble prompt:
bash ~/.claude/skill-references/fill-template.sh reviewer-prompt.md <RUN_DIR>/pr-<N> > <RUN_DIR>/pr-<N>/prompt.txt
Follow let-it-rip.sh Generation in sweep-scaffold.md. Write <RUN_DIR>/metadata.json using the runner schema from sweep-scaffold.md with these review-mode overrides:
MODE → "review", MODE_LABEL → "Review"MODEL → "claude-sonnet-4-6" (orchestrator — heavy work is in git:team-review-request's subagents)BRANCHES → "", WORKTREES → "" (review mode doesn't use worktrees)Entity type keys for PRs:
{"ENTITY_PREFIX": "pr", "ENTITY_LABEL": "PR", "STATE_FIELD": "pr_state",
"TERMINAL_STATES": "MERGED CLOSED"}
FETCH_ITEM_STATE_CMD is set separately from platform detection (see sweep-scaffold.md → "FETCH_ITEM_STATE_CMD" examples for GitHub gh pr view ... and GitLab glab api ... | jq ... | tr ... forms).
All other keys (CONCURRENCY, RUN_DIR, TIMESTAMP) follow the schema defaults. Then assemble via fill-template.sh.
Follow the corresponding sections in sweep-scaffold.md. Retro table includes stacked PR relationships. Mode-specific retro table columns:
| PR | Title | Rounds | Latest Mode | Personas | Findings | Status |
|---|
Follow Auto-Launch in sweep-scaffold.md. Use the relative path bash tmp/claude-artifacts/sweep-reviews/<TIMESTAMP>/let-it-rip.sh so the existing Bash(bash tmp/claude-artifacts/**) permission matches. Skip if 0 eligible or --no-launch was passed.
sweep-scaffold.md for rerunnable, rate limits, crash recovery, and cleanup.