arbiterforge/codearbiter-ca-preview
Zero-onboarding, read-only dry-run of the reviewer fleet against the current uncommitted diff. Predicts reviewers, runs the state-free secret scan, writes nothing.
npx skills add https://github.com/arbiterForge/codeArbiter --skill ca-preview
See what codeArbiter would do to your real code before paying any onboarding cost. This is a
read-only dry-run against the current uncommitted diff: it predicts which reviewers the change
would dispatch, runs the checks that need no project rules, and reports. It never writes state.
It requires no /ca-init, no .codearbiter/ directory, and no decompose or create-context
interview. It functions in a repo that never opted in, and it modifies nothing: not the worktree,
not the index, not .codearbiter/. git status is unchanged by a run.
preview.py in diff mode, which wrapscollect_diff from <plugin-root>/hooks/_previewlib.py. It unions HEAD-vs-worktree
changes, staged changes, and untracked files (forward-slash paths). Run it from the project
root so _previewlib/_hooklib resolve on the same sys.path:
python3 "<plugin-root>/hooks/preview.py" diff || python "<plugin-root>/hooks/preview.py" diff
If the result is empty (clean tree, or not a git repo), print a friendly **"Nothing to
preview"** line and STOP. This is a clean exit, not an error: no stack trace, no failure.
<plugin-root>/includes/review-matrix.md. That include is the single source of truth
for which reviewer is dispatched when scope touches a given path: do NOT restate, fork, or
inline a second copy of the table here. For each changed path, list the reviewers that WOULD
dispatch and name the triggering path for each. This is the same mapping /ca-review uses, so
the predicted set matches what a real review would dispatch.
preview.py in secrets mode,which wraps scan_secrets from <plugin-root>/hooks/_previewlib.py. It reads each
changed file's current content and returns SecretFinding(path, line_no, snippet) for every
credential line, with the secret VALUE already masked to in snippet:
python3 "<plugin-root>/hooks/preview.py" secrets || python "<plugin-root>/hooks/preview.py" secrets
Report each finding by path:line_no with its redacted snippet. The snippet arrives already
masked: never reconstruct or print a raw secret value.
Emit one clear report with these parts:
staged, untracked).
for each. These are predicted (would-dispatch), not run here.
path:line_no with theredacted snippet, marked as found (ran locally), at BLOCK severity. State "none found" when the
scan is clean.
/ca-init then/ca-review.
This reports reviewer and gate behavior on the current diff. It makes NO hook-probe claims and says
nothing about wrapper wiring or the active-dispatch coverage gap: that is /ca-doctor.
Do not blend the two.
/ca-init then /ca-review./ca-doctor./ca-btw..codearbiter/;MUST NOT stage or commit. git status MUST be unchanged after a run.
/ca-init, .codearbiter/ state, or thedecompose / create-context interview.
carries only that masked form.
exit, never a stack trace.
(ran locally): it MUST NOT attribute fabricated findings to any predicted reviewer.
Take arbiterforge/codearbiter-ca-preview from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.