Agent Skills

Version Bumper — semantic version from Conventional Commits

Load this skill when you need to compute the next semantic version and a suggested release tag from the commit history of a git repository that follows Conventional Commits. It is the release-pipeline counterpart of commit-message-writer (writes the commits) and changelog-generator (renders the changelog): this skill decides what version number the changelog and the release tag should carry.

The tool is read-only and offline: it never creates tags, never writes files, and makes no network calls. It reads git log subjects, classifies each commit by type, and prints the current version, the next version and a suggested tag. For testability the commit list can be fed from the COMMITS environment variable or a file (--commits FILE, one subject per line) — no git repository required.


The bumper script

scripts/bumper.py — pure Python 3 stdlib (no dependencies).

Source of commits Command
Git repository (default) python3 bumper.py --path /path/to/repo
Explicit current version python3 bumper.py --path . --current 1.2.3
Latest semver tag python3 bumper.py --path . --from-tags
File (no git needed) python3 bumper.py --commits commits.txt --current 1.2.3
Environment (no git needed) COMMITS='feat: a\nfix: b' python3 bumper.py --current 1.2.3

Bump rules (Conventional Commits v1.0.0)

Signal Bump Example
Breaking (! or BREAKING CHANGE: footer) MAJOR feat!: drop python 3.7
feat MINOR feat: add widget
fix, perf, refactor PATCH fix: repair crash
docs, style, test, chore, build, ci, revert, unknown no bump docs: readme

Type matching is case-insensitive (Feat: counts as feat). Unknown types are counted as other and never trigger a bump.

Output

latest_tag: v1.0.0
current_version: 1.0.0
next_version: 1.5.0
suggested_tag: v1.5.0
bump: minor
commits_analyzed: 14
counts: feat=1, fix=8, perf=2, refactor=1, docs=1, style=1, test=2, chore=1, build=0, ci=0, revert=0, breaking=1, other=0

Flags

Usage example (typical)

# Before a release: what version should the next tag carry?
python3 skills/version-bumper/scripts/bumper.py --path . --from-tags

# Pin the baseline explicitly (no tag lookup)
python3 skills/version-bumper/scripts/bumper.py --path . --current 1.2.3

# Deterministic output for CI / release pipeline
python3 skills/version-bumper/scripts/bumper.py --path . --from-tags -s

# Test the classifier without a git repo
python3 skills/version-bumper/scripts/bumper.py --commits commits.txt --current 1.2.3

Interpretation guidance

Do NOT use

Canonical analogues

Full source depth — in references/canonical-patterns.md. Backbone:

AnalogWhat we borrow
Conventional Commits specType taxonomy, `!` marker, `BREAKING CHANGE:` footer, bump semantics
python-semantic-releaseVersion-from-tags, bump-level resolution, deterministic output
semantic-releaseCommit-driven release decision, no-release-when-no-release-commits
bump-my-versionStrict semver parsing, tag prefix handling
commitizenCommit classification, changelog+version coupling
git-cliffConventional-Commits parsing, tag-range analysis

Installation

# For opencode
cp -r skills/version-bumper ~/.config/opencode/skills/

# For other agents
# Copy the skill folder to your skills directory; requires Python 3.
# git is optional — --commits FILE mode works without it.

Note: the tool suggests a version; it never tags, never commits and never pushes. Wire it into the release pipeline as the version source for changelog-generator, then create the tag yourself.

Boundaries

Evidence and completion gate

Run the documented command against the user’s actual input. Report the command, exit status, files changed or produced, and relevant stdout/stderr. Separate blocked or pre-existing failures from failures introduced by the current work. Do not call the result complete when the script was only described or when an artifact was not reopened and checked.