arbiterforge/ca-release
Cut a release the only sanctioned way — SemVer bump from the commit log, a CHANGELOG section, an annotated tag. Takes the declared target's name as its only argument. The only path to a version tag.
npx skills add https://github.com/arbiterForge/codeArbiter --skill ca-release
The only permitted path to a version tag. A release is a deployment-readiness assertion: the codebase at this SHA satisfies the bar for shipping. $ca-release aggregates existing compliance — it does not duplicate it.
Routes to the release skill, which resolves everything about the release from the project's declared target file, <project-root>/.codearbiter/release-targets.md — the tag prefix, the manifests, the changelog, the payload scope, and the optional checks. Nothing about any target is written here.
$ca-release takes the target's name as its only argument. When the declared file names exactly one target, a bare $ca-release uses it; when it names more, the argument is required and the skill STOPs rather than guessing. A project with no declared file at all enters the skill's own back-fill lane, which proposes a row and writes nothing without explicit confirmation.
[CONFIRM-NN] open. Resolve LAST_TAG within that target's own tag series and scope the commit window to the row's declared payload, so a sibling target's commit never bumps this one or lands in its changelog.CHANGELOG: footer; a missing one BLOCKs and is never auto-filled.pre-tag checks. Those checks are check-only: one that mutates the tree BLOCKs.[target] — the name of a row in the declared target file (e.g. the name in [ca]). Optional only when exactly one target is declared. An unrecognised name STOPs; it is never resolved to a guess.There are no version, --auto, or --dry-run arguments. The version is always derived from the commit log and the declared manifests — supplying one by hand is the thing this lane exists to prevent.
release (${CLAUDE_PLUGIN_ROOT}/routines/release/SKILL.md), which is authoritative for the phase contents and gates summarized above.
$ca-feature / $ca-fix.context-creation's job, or the skill's back-fill lane at release time.MUST NOT compose a tag on a red suite. MUST NOT guess the version — it is derived from the commit log and the declared manifests. MUST NOT auto-fill a missing CHANGELOG: footer. MUST NOT resolve an unrecognised or ambiguous target to a guess. MUST NOT write to the default branch or force-push. MUST NOT push the tag or publish a Release without explicit user authorization. Any BLOCK may be bypassed only via $ca-override.
Take arbiterforge/ca-release 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.