Modelibr git and release conventions — version-branch naming and protection, PR targeting, conventional commits (never an AI co-author trailer), and the version-branch→main release cadence. Use when branching, committing, opening PRs, cutting a release, or configuring branch protection.
Installation
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Modelibr git and release conventions — version-branch naming and protection, PR targeting, conventional commits (never an AI co-author trailer), and the version-branch→main release cadence. Use when branching, committing, opening PRs, cutting a release, or configuring branch protection.
Release & git workflow
Branches
main represents released versions only. Installed desktop apps auto-update
via electron-updater from GitHub Releases, so keep the release cadence low —
users shouldn't be prompted to update every few days.
Active development lands on a version branch named version/<major>.<minor>
(e.g. version/0.1). Feature/fix branches PR into the current version
branch, never directly into main.
A version branch is done once its release ships. Post-release fixes stage
on a new patch branchversion/<major>.<minor>.<patch> (e.g.
version/0.3.1, version/0.4.1), created from the released tip — never
retarget more work at the already-released version/X.Y branch.
main only advances when cutting a release: merge the version branch → main,
then publish a GitHub Release.
Version-branch protection
A classic branch-protection rule matches the glob version/*, so every
current and future version branch is protected automatically (no per-branch
setup).
The rule: require a PR before merging (0 approvals), block force-pushes and
branch deletion, and require these CI checks — Backend Unit Tests,
Frontend Unit Tests, Asset Processor Tests. They run on every PR via
ci-and-deploy.yml (no path filter, no job-level skip), so requiring them
never deadlocks a PR.
Code Quality Status is intentionally not required: its workflow
(code-quality.yml) is path-filtered to src/frontend|asset-processor|desktop,
so on an unrelated PR the check never reports and would block merge forever.
Why protect at all: CodeQL default setup only scans pull requests that
target the default branch or a protected branch. An unprotected version
branch means version-branch PRs are never scanned. Keep version/* protected
so security scanning runs on every PR (and so fixed alerts can actually clear).
Never add an AI co-author trailer. No Co-Authored-By: line for
Claude/the assistant on any commit. This is a hard rule.
PRs
Target the current version branch, not main.
Features ship with tests (xUnit / Jest / Vitest / Gherkin scenario) following
the testing rules in CLAUDE.md and the test-triage skill.
Releases
Cutting a release = merge the version branch (version/X.Y or patch branch
version/X.Y.Z) → main, then publish a GitHub Release. electron-updater feeds (latest*.yml + .blockmap) are attached as
release assets; the desktop client publishes to its own client update
channel so its feed never collides with the host's.