/ca-arbiter
Exit maintainer dev mode — restore orchestration, remove the dev marker, log the exit.
$ npx -y skills add arbiterForge/codeArbiter --skill ca-arbiter --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-arbiter
Context preview
The summary Claude sees to decide when to auto-load this skill.
Exit maintainer dev mode — restore orchestration, remove the dev marker, log the exit.
SKILL.md
ca-arbiter.SKILL.mdname: ca-arbiter
description: Exit maintainer dev mode — restore orchestration, remove the dev marker, log the exit.
argument-hint: (none)
$ca-arbiter — restore orchestration
The exit door for `$ca-dev`. No-op if dev mode is not active.
Flow
1. **Log exit** — append to `<project-root>/.codearbiter/overrides.log` (append-only, `>>`):
[ISO-8601 timestamp] | BY: <email> | DEV: exit
2. **Marker** — remove `<project-root>/.codearbiter/.markers/dev-active`. 3. **Resume** — re-present the startup state (stage, blocking `CONFIRM-NN`, in-flight tasks) and await a slash command. Orchestration, routing, and all gates are back in force.
Hard gate
MUST write the `DEV: exit` line to `overrides.log` and remove the `dev-active` marker before resuming orchestration — the exit is on the audit trail like the entry. MUST NOT rewrite or truncate `overrides.log` — the append-only rule has no dev exception, on entry or exit. If a prior session ended mid-dev, SessionStart has already appended the synthetic `BY: session-cleanup | DEV: exit` close line and cleared the marker (`session-start.py`, observability-001). In that case MUST NOT write a second `DEV: exit` for that orphaned entry — the close is already on the trail.
Session-scoped clearing (#271): SessionStart's synthetic close is now conditional on the marker plausibly being abandoned rather than owned by a different, still-live session — it will NOT clobber another concurrently-running session's live `/dev` marker or write a false `DEV: exit` for it. `$ca-arbiter` remains the ONLY way to cleanly close your OWN `/dev` session's audit pair; do not rely on a future SessionStart to do it for you.
Read more
name: ca-arbiter description: Exit maintainer dev mode — restore orchestration, remove the dev marker, log the exit. argument-hint: (none)
$ca-arbiter — restore orchestration
The exit door for `$ca-dev`. No-op if dev mode is not active.
Flow
1. **Log exit** — append to `<project-root>/.codearbiter/overrides.log` (append-only, `>>`):
[ISO-8601 timestamp] | BY: <email> | DEV: exit
2. **Marker** — remove `<project-root>/.codearbiter/.markers/dev-active`. 3. **Resume** — re-present the startup state (stage, blocking `CONFIRM-NN`, in-flight tasks) and await a slash command. Orchestration, routing, and all gates are back in force.
Hard gate
MUST write the `DEV: exit` line to `overrides.log` and remove the `dev-active` marker before resuming orchestration — the exit is on the audit trail like the entry. MUST NOT rewrite or truncate `overrides.log` — the append-only rule has no dev exception, on entry or exit. If a prior session ended mid-dev, SessionStart has already appended the synthetic `BY: session-cleanup | DEV: exit` close line and cleared the marker (`session-start.py`, observability-001). In that case MUST NOT write a second `DEV: exit` for that orphaned entry — the close is already on the trail.
Session-scoped clearing (#271): SessionStart's synthetic close is now conditional on the marker plausibly being abandoned rather than owned by a different, still-live session — it will NOT clobber another concurrently-running session's live `/dev` marker or write a false `DEV: exit` for it. `$ca-arbiter` remains the ONLY way to cleanly close your OWN `/dev` session's audit pair; do not rely on a future SessionStart to do it for you.
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

