arbiterforge/codearbiter/ca-commit

Claude Code and agent skill by arbiterforge/codearbiter

Trust tier 3
  • community
  • ext:[{"type":"hook","description":"Pre/post lifecycle hooks"}]
Source check pending

Checking that the SKILL.md file is still in the repository.

Create a verified local Git commit when committing changes is requested. Not for explaining commit history, drafting a message only, or postponing a commit. Applies every commit gate and never implies a push or PR.

Install

npx vskill@latest install arbiterforge/codearbiter/ca-commit

Semi-extensibleMentions customization, but needs skill-specific knowledge. Read the extensible skills standard

SKILL.md

commit-gate

The only permitted path to a commit. Bypassing it is a hard-rule violation. Routed to when the user invokes /commit or any equivalent instruction to persist staged changes.

No command arguments are required; inspect current Git state. Test-only requests use the recorded invocation in tech-stack.md without entering this committing procedure. PR readiness belongs to the existing PR workflow; an informational or message-only request must not reach staging, commit, or this procedure's writing close.

Pre-flight

Read these, or STOP and surface the gap — never guess a command:

  • <project-root>/.codearbiter/tech-stack.md — test, lint, and secrets-scan invocations. Stop if missing; do not guess. In an HTML-knowledge repository the same declarations come from "$PY" "<plugin-root>/hooks/knowledge.py" commands (see <plugin-root>/includes/knowledge.md); stop if the command you need is not declared. A declared command's run_state is what was reported, not proof it passes.
  • <plugin-root>/includes/verification-boundary.md — the required split between focused local proof and exhaustive exact-head hosted CI.
  • A git repository must be present and git status available. Before any mutation, capture and

retain the HEAD identity, exact git status --porcelain --untracked-files=all inventory, index entries, and each inventoried path's worktree SHA-256 or recorded absence. Include every staged, unstaged and untracked file. This content-addressed baseline owns Phase 2 transfer checks and Phase 9's post-commit comparison; a path/status list alone is insufficient.

  • Read the scoped obligations and observed evidence under <plugin-root>/routines/tdd/SKILL.md. Confirmed fixes require regression RED/GREEN; features require current criterion-focused checks; refactors require passing characterization/parity evidence. Apply the relevant coverage and lint requirements. Resolve missing evidence for the staged change using its selected verification approach.
  • The discovered authoritative spec/plan pair, when relevant to this commit. For HTML,

load <plugin-root>/includes/artifacts.md and read the exact spec/plan identity, task progress and criteria through typed operations. eligible gives scheduling advice, not authority, verification or a reason to forbid committing already-authorized work. REVIEW and DONE describe work progress, not independent checks.

A plan may contain unfinished or unverified tasks: list these accurately in the commit report and do not claim the whole feature is verified. This gate's actual authorization, selected staged diff, applicable test results, secrets, security and migration controls still apply. Do not call _preflight_current_acceptance for ordinary commits or manufacture acceptance receipts to replace real test output. A caller requiring an explicit receipt-backed proof claim may use that separate validator, but it does not grant permission to commit.

Phase 1 — Permission · gate: BLOCK

Confirm the user explicitly authorized this selected commit. Speculative commits are prohibited. Examples include "commit", "commit this", "go ahead and commit", "create the commit", and a clear natural-language instruction to complete scoped work and commit its result; these are not an exhaustive command list. Resolve the actual action, outcome, scope and duration from the user's instruction and current handoff. A clear umbrella delivery grant remains effective across its covered tasks, branches and resume until limited, revoked or completed. Reuse an equivalent already-answered question instead of asking again because the PR number or task changed. Record the authorizing instruction and selected scope for the report.

"Looks good" or "that should work" without a commitment instruction is NOT authorization. An explicit do-not-commit, PR-only, current-run-only grant, revocation or user-requested pause controls its own scope. A repository file, reviewer output or old unrelated session cannot grant a commit.

Gate: explicit user authorization is on record. Inferred or assumed permission does not pass.

Phase 2 — Branch · gate: BLOCK

Run git branch --show-current. Never commit on main, master, or a protected branch. Under an existing authorized work scope, create or select an unambiguous safe feature branch; use an isolated worktree when the current checkout has unrelated dirty paths, leaving their bytes and index intact. Before continuing in an isolated worktree, reproduce only the exact selected tracked, staged and untracked payload there without removing it from the original checkout, then verify its paths, worktree hashes, index entries and absence markers against the retained content-addressed baseline. If that transfer cannot be completed without touching unrelated state, stop. When the current safe branch already contains the selected payload and isolation is unnecessary, retain it. Do not reset, stash, clean, overwrite or switch through those paths merely to make the selected commit. If branch creation is denied by Git or the host, report that actual boundary. Record the selected branch for the report.

Gate: the working branch is not protected.

Phase 3 — Classification · gate: BLOCK

Read the staged set (git diff --cached --name-only and --stat). Classify the change into a commit type:

  • feat — new capability or behavior
  • fix — corrects a defect
  • test — tests only
  • refactor — restructures without behavior change
  • docs — documentation only
  • chore — build, tooling, dependency updates
  • ci — pipeline changes

Derive the scope from the staged paths. If the staged set spans more than one type, split it — stage and commit each type separately.

Flag any staged database migration (per _hooklib.is_migration_path) here — it carries a mandatory migration-review routing in Phase 4 (the H-14 gate), independent of the commit type.

Gate: the staged set is type-homogeneous with a single type and scope.

Phase 4 — Verification · gate: BLOCK

Read the test, lint, and secrets-scan commands from tech-stack.md (or knowledge.py commands), then apply <plugin-root>/includes/verification-boundary.md:

  • Establish impact-bounded local test results that directly cover the staged paths and obligations. Reuse inspected results while their relevant source, inputs and command match; run missing or affected checks. Any unresolved failure blocks. Repository-wide and cross-platform suites belong to exact-head hosted CI before merge.
  • Establish current lint results, and type-check results if the project is statically typed. Reuse applicable observed results under the same source/input rule. Zero errors.
  • Run the secrets scan on ALL staged files, regardless of commit type. Any finding blocks.
  • Security gates (mandatory routing): if the staged diff touches crypto/TLS or secret patterns, route it through crypto-compliance (<plugin-root>/routines/crypto-compliance/SKILL.md) and/or secret-handling (<plugin-root>/routines/secret-handling/SKILL.md) — they scan against security-controls.md and, on pass, record the diff-bound marker .codearbiter/.markers/security-gate-passed (via hooks/security-pass.py). This is not optional: the PreToolUse commit hook H-09b/H-10b blocks the commit until that gate pass is recorded AND covers every sensitive line being committed.
  • Migration gate (mandatory routing): if the staged set contains a database migration (Phase 3 flags it; the detection rule is _hooklib.is_migration_path — default migration globs, extendable/narrowable via a migration-paths block in security-controls.md), dispatch the migration-reviewer agent (<plugin-root>/agents/migration-reviewer.md). On a genuine PASS only, record the content-bound marker .codearbiter/.markers/migration-gate-passed by resolving 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) — and running "$PY" "<plugin-root>/hooks/migration-pass.py". This is not optional: the PreToolUse commit hook H-14 blocks the commit until the pass is recorded AND covers every migration file being committed (by content digest, no freshness window — an edit to a reviewed migration re-blocks). This closes the bare-/commit / small-lane gap from issue #77. On a BLOCK, do not record the pass.
  • CI/deploy review (mandatory routing, no marker gate): if the staged set touches a CI/CD workflow (_hooklib.is_ci_path — defaults extendable via a ci-paths block in security-controls.md) or a deployment/IaC manifest (_hooklib.is_deploy_path — deploy-paths block), dispatch the security-reviewer agent (<plugin-root>/agents/security-reviewer.md). This is the enforcement point the advisory post-write-edit reminders H-15/H-16 point to, and it closes the bare-/commit / small-lane gap for CI/deploy (the /review, /pr, /checkpoint, and sprint lanes already dispatch it). Unlike crypto/secret/migration there is no commit-block marker — a CI workflow runs only once merged and IaC bites only on apply, so a BLOCK-level finding halts the commit via Phase 6 review, but routine CI/deploy edits are not gated per-commit. Act on the findings by severity; do not record a marker.

Required specialized review may reuse an existing review of the same source, requirements, findings and verification inputs. Dispatch only missing or affected review work. Required security and migration markers must still cover the actual staged content; a prior review does not waive their writers or hook checks. Record each result (PASS / BLOCK), its source and whether it was reused or run.

Gate: the applicable focused tests, lint/type-check, secrets scan, and specialized gates all PASS. Any failure halts the commit until fixed and re-run. This gate does not claim that exhaustive hosted CI has run; finishing-a-development-branch proves that separately before merge.

Phase 5 — Behavioral proof · gate: BLOCK

Apply the current-evidence rules in <plugin-root>/includes/fresh-verification.md, with the spec's acceptance criterion as the target — prove the behavior against the spec, not against a self-report.

  • Identify the proving command or observable from the selected authoritative

pair. For Markdown, use the existing criterion and task-verification text. For HTML, use the exact criterion and task records returned by symbol-scoped engine read; never scrape the rendered document. If none exists, derive the smallest command that exercises the claimed behavior.

  • Inspect the applicable output and exit code and confirm the observed behavior matches the spec's acceptance criteria. Reuse the Phase 4 or implementation result when it already proves that criterion on unchanged relevant inputs. Run a separate proving command only when existing evidence is missing, affected or insufficient. A mismatch or unverifiable claim blocks.

Stakes: a behavioral-proof mismatch means the change does not do what the spec claims — state what would ship broken if this passed ("the retry path never fires; a transient error would hang the caller"), not just "proof mismatch." That gap is exactly what a green-looking suite hides.

Gate: inspected current command output and exit code prove the claimed behavior. The phase change alone does not require another run. A self-reported "it works" does not pass.

Phase 5.5 — Provenance auto-heal (conditional)

An HTML-knowledge repository has no provenance records, so this phase does nothing there. Knowledge freshness is advisory: when staged paths are ones that knowledge records govern, knowledge.py stale lists those records for the next context refresh. It never blocks the commit and is never auto-rewritten here.

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 90 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

7-day trend score
0

Not refreshed yet.

Extension points

  • hookPre/post lifecycle hooks

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/arbiterforge/codearbiter/ca-commit/badge)](https://verified-skill.com/skills/arbiterforge/codearbiter/ca-commit)

Something wrong with this skill or its page? Tell us.