/ca-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.
$ npx -y skills add arbiterForge/codeArbiter --skill ca-pr --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/ca-pr
Context preview
The summary Claude sees to decide when to auto-load this skill.
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.
SKILL.md
ca-pr.SKILL.mdname: ca-pr
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)
$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:
1. **Confirm the commit gate cleared** this session (`commit-gate` green, or `$ca-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 `$ca-commit`, then `$ca-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 `${CLAUDE_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):
python3 "${CLAUDE_PLUGIN_ROOT}/hooks/babysit.py" --root "<project-root>" || python "${CLAUDE_PLUGIN_ROOT}/hooks/babysit.py" --root "<project-root>"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 `$ca-watch <new-PR>`. When `enabled` is false, do nothing here — the user can still run `$ca-watch` ad-hoc. Never enable the flag on the user's behalf.
Routes to
`finishing-a-development-branch` (`${CLAUDE_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.
Read more
name: ca-pr 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)
$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:
1. **Confirm the commit gate cleared** this session (`commit-gate` green, or `$ca-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 `$ca-commit`, then `$ca-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 `${CLAUDE_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):
python3 "${CLAUDE_PLUGIN_ROOT}/hooks/babysit.py" --root "<project-root>" || python "${CLAUDE_PLUGIN_ROOT}/hooks/babysit.py" --root "<project-root>"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 `$ca-watch <new-PR>`. When `enabled` is false, do nothing here — the user can still run `$ca-watch` ad-hoc. Never enable the flag on the user's behalf.
Routes to
`finishing-a-development-branch` (`${CLAUDE_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.
When you can't trust yourself with your code base, trust Arbiter.
Repo: arbiterForge/codeArbiter
Other skills on codearbiter.
- /brainstorming
The Socratic spec-refinement front of /feature, and the planning front of /sprint. Routed to BEFORE any code — it takes a one-line idea and drives it to an approved, concrete spec with testable acceptance criteria. Four gated phases — frame, refine, write, approve. No
Open skill - /commit-gate
The only path to a commit. Routed to when the user invokes /commit or otherwise instructs codeArbiter to persist staged changes. Nine gated phases — permission, branch, classification, verification (test/lint/secrets), behavioral proof, diff review, selective stage, message,
Open skill - /context-check
Optional manual drift audit — report stale provenance-tracked docs (via _provenancelib drift detection across .codearbiter/.provenance/), then per stale doc offer re-scout / re-baseline / defer. Not the daily loop; commit-gate auto-heal owns routine maintenance.
Open skill - /context-creation
The brownfield back-fill. Routed to by /create-context, and by startup when .codearbiter/CONTEXT.md lacks the <!--INITIALIZED--> body marker but source code exists. Six gated phases — pre-flight, scout dispatch, synthesis, gap interview, write, lock. Reads the existing codebase
Open skill - /crypto-compliance
The banned-primitive gate. Routed to when changed code hashes, signs, encrypts, derives keys, generates security-relevant randomness, configures TLS, or imports a crypto library. Rejects broken primitives, disabled TLS verification, and home-rolled crypto; the approved-primitive
Open skill - /debug
Investigate-then-decide root-cause analysis for a defect whose cause is unknown (distinct from /fix, which assumes a known bug). Five gated phases: capture, hypothesize, gather, decide, hand off. Investigation only, no code changes; exits to /fix, /adr, or a no-action close.
Open skill

