Skip to content
Development
Command

/pr

Open a pull request the only sanctioned way — clear every BLOCK-level review finding, then stage the PR. Never a direct write to the default branch.

From plugin
codearbiter
13944 skills28 agents44 commands
Install
$ npx -y skills add arbiterForge/codeArbiter --agent claude-code

How it fires

How this command gets triggered: by you, by Claude, or both.

  • Fires itselfClaude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/pr

Context preview

What this command does when you run it.

Open a pull request the only sanctioned way — clear every BLOCK-level review finding, then stage the PR. Never a direct write to the default branch.

Command definition

pr.md
description: Open a pull request the only sanctioned way — clear every BLOCK-level review finding, then stage the PR. Never a direct write to the default branch.
argument-hint: (none)

{{CMD:pr}} — open a pull request

The only permitted path to a pull request. Every change lands through a PR — never a direct write or force-push to the default branch. No PR is drafted while any BLOCK-level review finding stands.

Flow

Routes to the `finishing-a-development-branch` skill, open-PR path. The orchestrator reads the current branch, its diff against the base, and the commit log to determine what changed and which reviewers apply, then:

1. **Confirm the commit gate cleared** this session (`commit-gate` green, or `{{CMD:commit}}` completed). 2. **Path matrix** — inspect the diff and dispatch the reviewer agents the change demands:

  • auth / crypto / middleware paths → `auth-crypto-reviewer` + `security-reviewer`
  • migration files → `migration-reviewer`
  • dependency manifests → `dependency-reviewer`
  • all paths → `coverage-auditor`

3. **Run reviewers** in parallel where there are no dependencies. 4. **BLOCK check** — any CRITICAL or HIGH finding STOPs the flow; present it and do not draft the PR. The user resolves, re-runs `{{CMD:commit}}`, then `{{CMD:pr}}`. 5. **Stage the PR** once all BLOCK findings clear: concise title; summary of what changed and why; a bulleted test plan; a conflict-hierarchy tradeoff citation for any non-obvious tradeoff; a link to any ADR the change implements or contradicts. The PR body is a user-facing deliverable: before composing it, load `{{PLUGIN_ROOT}}/includes/anti-slop-design/core.md` and the `medium-documents` leaf, and apply at least the §3.A em-dash ban and the §3.B copy self-audit to the prose. Then `gh pr create`; return the URL. 6. **Auto-attach the babysitter** — resolve the flag with the canonical resolver, never by eyeballing the env var (so the accepted `on|true|1` spellings and the dormancy gate can't drift). Resolve the interpreter once by presence — `PY=python3; { command -v python3 >/dev/null 2>&1 && python3 --version >/dev/null 2>&1; } || PY=python` — never `python3 X || python X`, which reruns X on any nonzero exit (#577):

   "$PY" "{{PLUGIN_ROOT}}/hooks/babysit.py" --root "{{PROJECT_DIR}}"

It prints one JSON line, e.g. `{"enabled": true, "on_red": "propose"}`. Only when `enabled` is true (the global flag `CODEARBITER_BABYSIT` is on — default off, mirrors `CODEARBITER_PRUNE` — and the repo is arbiter-active), attach a CI watcher to the PR just opened, equivalent to `{{CMD:watch}} <new-PR>`. When `enabled` is false, do nothing here — the user can still run `{{CMD:watch}}` ad-hoc. Never enable the flag on the user's behalf.

Routes to

`finishing-a-development-branch` (`{{PLUGIN_ROOT}}/skills/finishing-a-development-branch/SKILL.md`), open-PR path.

When NOT to use

  • Staged changes not yet committed → `{{CMD:commit}}`.
  • Review a diff without opening a PR → `{{CMD:review}}`.
  • A pre-implementation security pass → `{{CMD:threat-model}}`.

Hard gate

MUST NOT open a PR while any BLOCK-level (CRITICAL or HIGH) finding is unresolved. MUST NOT skip a reviewer the path matrix requires. MUST NOT open a PR before the commit gate ran this session. MUST NOT open a PR, write, or force-push directly to the default branch. MUST NOT auto-attach a CI watcher unless `CODEARBITER_BABYSIT` is on, and MUST NOT enable that flag on the user's behalf.

Read more
Ships withcodearbiter

When you can't trust yourself with your code base, trust Arbiter.

Get the whole plugin, auto-invoked
Stats
139
Stars
1
Views
7
Forks
Active
Maintenance
Python
Language
AGPL-3.0
License
1m ago
Last commit
3mo ago
Created

Repo: arbiterForge/codeArbiter