Formats drift
v1.2.3, release-1.2.3, and final end up together. Soon nobody knows which tag is a real release.
Tagsmith helps repository maintainers inspect existing tags, make the team convention clear, and validate a proposed tag against the known local history before creating it.
Try it safely
npx @carllee1983/tagsmith list
Run inside a Git repository · Requires Node.js 22+
The first run may download the package. Without JavaScript, the command remains visible and selectable.
Manual names, mixed formats, and an unclear tag history leave CI, release notes, and collaborators without a common source of truth.
v1.2.3, release-1.2.3, and final end up together. Soon nobody knows which tag is a real release.
Backfilling history or working in parallel can create a tag below an existing version and break automation.
Without local inspection and validation, an invalid tag may be discovered only by CI or another developer after it is shared.
Start with list to sort tags semantically and flag mismatches, unparseable versions, and duplicates. Tagsmith never rewrites history automatically.
A clear SemVer history can continue. For mixed, ambiguous, or non-SemVer history, use init to define the team convention first.
Inspect again, then use next to calculate the next version. This step does not change the repository.
Creation validates the convention and known local history. Pushing to a remote is a separate, deliberate action controlled by the team workflow and off by default.
SemVer is the default zero-configuration evaluation path. Once the convention is explicit, choose CalVer or a monotonically increasing build number when it fits the team better.
Start with one tag line and one shared rule. Add multiple tag lines only when app, release, or other independent sequences truly need separation.
--json gives CI and scripts Tagsmith's convention-evaluation result; surrounding automation remains responsible for what happens next.
Merge policy can help enforce repository conventions in local git workflows. It is not remote branch protection or server-side policy enforcement.
A tag line can check its package.json version, while an inspectable commit policy explains patch, minor, or major recommendations. When needed, creation can enforce the same checks.
When the inspection matches your intent, use tagsmith init and commit the generated .tagsmith.json. The convention then belongs to the team, not one maintainer's habit.
Adoption step
$ npx @carllee1983/tagsmith init