wise-pr-add-reviewers · git:20261010.292836f · 2026-10-10 · sha256 94696e59ce61d169
wise-pr-add-reviewers git:20261010.292836fA
Immutable. This exact content never changes and is served at /api/v1/blob/94696e59ce61d169.
---
name: wise-pr-add-reviewers
description: >-
Request human reviewers on the PR for the current branch: ask
whether to add reviewers, then propose candidates (CODEOWNERS,
recent authors, org members) as picks plus free-text logins. Never
requests a review bot (Copilot code review, CodeRabbit). Idempotent
- already-requested reviewers are detected and not re-requested.
This skill runs just the reviewer attach step on an existing PR.
Fails with a
clear message if the current branch has no open PR — run
`/wise-pr-create` first. Invoked as `/wise-pr-add-reviewers` (bare
alias) or `/wise:wise-pr-add-reviewers` (canonical). Use when the
user says "add reviewers", "request review", or types
`/wise-pr-add-reviewers`.
argument-hint: ""
allowed-tools: Read, Bash(git:*), Bash(gh:*), Bash(cd:*), Bash(bash:*), AskUserQuestion
---
# /wise-pr-add-reviewers — attach reviewers to the current branch's PR
Before executing, follow [model fallback](../../references/workflow-host-control.md#model-fallback)
for unavailable models or delegation routes, including in autonomous procedures.
At every skill start, identify your main/child role and the current client
and GUI/TUI question tools, then read and follow the
[question lifecycle](../../references/workflow-host-control.md#keep-asynchronous-questions-open).
Keep asynchronous prompts open until answered; this rule does not authorize
questions in autonomous or otherwise prompt-free procedures.
## Why this skill exists
Most PRs end up requesting 0-N individuals picked from CODEOWNERS or
the org. This skill is the narrowed surface - just the human reviewer
attach step, on a PR that already exists (`/wise-pr-create` makes the
PR; `/wise-pr-watch` drives CI and runs the local review). Review bots
are never requested: a bot configured on the repo reviews on its own.
Single source of truth for the reviewer logic:
`plugins/wise/references/pr/ensure-reviewers.md`. This skill reads it
at run time and follows it.
## Invocation
```
/wise-pr-add-reviewers
/wise:wise-pr-add-reviewers # canonical namespaced form
```
No positionals, no flags. Anything the user types beyond the skill
name is ignored.
## Procedure
This skill does NOT probe dependencies up-front. If `gh` / `git`
is missing or `gh` is unauthenticated, the first command below
fails with a clean error (`command not found`, or `gh: auth status:
not logged in`) and Claude surfaces that to the user with a
pointer at `/wise-init`.
### 0. GitHub remote check
Read `${CLAUDE_PLUGIN_ROOT}/references/pr/github-remote.md` and run its
check first. If the outcome is `none` or `other`, print the single
reviewers-variant line from its table and stop successfully; never call
`gh pr`. Only continue when the outcome is `github`.
### 1. Verify a PR exists for this branch
```bash
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
PR_JSON="$(gh pr view --json number,url 2>/dev/null)"
```
If `PR_JSON` is empty (gh returned non-zero — no PR for this
branch), STOP with:
```
No open PR found for branch <BRANCH>.
Create one first:
/wise-pr-create
```
Do NOT attempt to create a PR here — that's `/wise-pr-create`'s
responsibility. This skill operates only on existing PRs.
Otherwise parse the JSON:
- `pr_number = .number`
- `pr_url = .url`
### 2. Detect the project path
```bash
PROJECT_PATH="$(git rev-parse --show-toplevel)"
```
### 3. Read and run ensure-reviewers.md (current reviewers + ask about extras)
Read the fragment:
```
Read: ${CLAUDE_PLUGIN_ROOT}/references/pr/ensure-reviewers.md
```
Follow its procedure with the context:
- `pr_number = <number>`
- `pr_url = <url>`
- `project.path = <PROJECT_PATH>`
The fragment reads the reviewers already requested and asks via
`AskUserQuestion` whether to add human reviewers. It attaches
nothing. Capture its final line and parse `ALREADY_REQUESTED` /
`EXTRAS_CHOICE`:
```
REVIEWERS: attached=<slugs-or-NONE> extras=<no|yes>
```
### 4. If extras_choice is `yes`, run propose-reviewers.md
Conditional on `EXTRAS_CHOICE == 'yes'`. Read:
```
Read: ${CLAUDE_PLUGIN_ROOT}/references/pr/propose-reviewers.md
```
Follow its procedure with the context:
- `pr_number = <number>`
- `pr_url = <url>`
- `pr_base = <gh pr view --json baseRefName --jq .baseRefName>`
- `project.path = <PROJECT_PATH>`
- `already_requested = <ALREADY_REQUESTED>`
The fragment ranks reviewer candidates (changed files, CODEOWNERS,
recent authors ∩ org members) and surfaces them as **multi-select**
`AskUserQuestion` picks (plus an Other freetext field), then attaches
the chosen logins via `gh pr edit --add-reviewer`. Capture its final
line and parse `EXTRAS_ATTACHED`:
```
EXTRAS: attached=<comma-separated-logins-or-NONE>
```
When `EXTRAS_CHOICE` is `no`, skip this step - there are no
extras to propose.
### 5. Summarise
Print the final list of reviewers on the PR. Two cases:
- `EXTRAS_CHOICE == 'yes'` → concatenate already-requested + extras:
`Reviewers on <pr_url>: <ALREADY_REQUESTED>, <EXTRAS_ATTACHED>`
- Else → just the already-requested ones:
`Reviewers on <pr_url>: <ALREADY_REQUESTED>`
(or `no reviewers requested` when both are `NONE`)
If the user wants to watch pipelines next, point them at:
```
Watch pipelines + comments with:
/wise-pr-watch
```
## Guardrails
- This is a **standalone slash-command skill**, independent of the
`/wise` natural-language helper. It reads a shared prompt fragment
but does NOT invoke other wise action skills.
- Without a GitHub remote, print the one-line notice from
`references/pr/github-remote.md` and stop; never call `gh pr`.
- Never create a PR here — bail with the pointer at
`/wise-pr-create` if the branch has no open PR.
- Never remove a reviewer.
- Never re-request a reviewer who's already on the PR — noisy on
the PR's activity log.
- Never request a review bot (Copilot code review, CodeRabbit): no
`--add-reviewer copilot-pull-request-reviewer`, no GraphQL
`requestReviews` for a bot, no `@coderabbitai review` comment.
Humans only.