← ClaudeAtlas

manage-versionslisted

Cross-repo version management for a-novel / a-novel-kit. Load it whenever a change spans repos that must stay version-compatible to merge — an unreleased `golib` or `pkg/go` dependency, a proto or REST contract change, a breaking change to a published symbol. Covers git-tag semver, exact `go.mod` pins, commit-SHA pseudo-versions, the dependency-releases-FIRST merge order (the consumer re-pins to the released tag), and staged rollouts. Pairs with `git-conventions`, `implement-feature`, `open-pull-request`, `write-*`.
a-novel-kit/stack · ★ 1 · Code & Development · score 67
Install: claude install-skill a-novel-kit/stack
# Cross-repo version management Every repo in `a-novel` and `a-novel-kit` is independently versioned, and the repos depend on each other (services pin `golib`, `jwt`, each other's `pkg/go`; deployments pin each other's Docker images; clients pin published packages). When a change touches more than one repo, the versions must line up before anything merges to production. This skill governs that. Load it with whichever repo-kind skill applies (`write-go-kit` for a `kit/` change, `write-go-service` for a service change), with `git-conventions` (the breaking-change commit footer) and `implement-feature` (the layered-branch workflow these cross-repo plans extend). --- ## How things are versioned - **Each repo is git-tag semver.** A release is a `vX.Y.Z` git tag pushed on a `master` commit; the next version comes from the commit history since the last tag (`fix:`/`chore:` → patch, `feat:` or an absorbable breaking change → minor). A `!` does **not** force a major here: a major is a planned `vX`-line initiative, never derived from a commit range — `prepare-release` owns that policy and the sizing. The tag push triggers the `release` workflow (`a-novel-kit/workflows/publish-actions/auto-release`), which cuts the GitHub Release and, for service repos, builds and publishes the Docker images / npm packages tagged with that version. - **`go.mod` pins exact released tags.** `github.com/a-novel-kit/golib v0.20.31`, not a range, not a branch. **No `replace` directives**