/ca-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:
- Confirm the commit gate cleared this session (
commit-gategreen, or/ca-commitcompleted). - 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
- auth / crypto / middleware paths →
- Run reviewers in parallel where there are no dependencies.
- BLOCK check — any CRITICAL or HIGH finding STOPs the flow; present it and do not draft the PR.
The user resolves, re-runs
/ca-commit, then/ca-pr. - 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.mdand themedium-documentsleaf, and apply at least the §3.A em-dash ban and the §3.B copy self-audit to the prose. Thengh pr create; return the URL. - Auto-attach the babysitter — resolve the flag with the canonical resolver, never by eyeballing
the env var (so the accepted
on|true|1spellings and the dormancy gate can't drift):
It prints one JSON line, e.g.python3 "<plugin-root>/hooks/babysit.py" --root "<project-root>" || python "<plugin-root>/hooks/babysit.py" --root "<project-root>"{"enabled": true, "on_red": "propose"}. Only whenenabledis true (the global flagCODEARBITER_BABYSITis on — default off, mirrorsCODEARBITER_PRUNE— and the repo is arbiter-active), attach a CI watcher to the PR just opened, equivalent to/ca-watch <new-PR>. Whenenabledis false, do nothing here — the user can still run/ca-watchad-hoc. Never enable the flag on the user's behalf.
Routes to
finishing-a-development-branch (<plugin-root>/routines/finishing-a-development-branch/SKILL.md),
open-PR path.
When NOT to use
- Staged changes not yet committed →
/ca-commit. - Review a diff without opening a PR →
/ca-review. - A pre-implementation security pass →
/ca-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.