plugins/versioning/skills/version-check/SKILL.md
Validate version consistency across all project files, check semver format, git tag alignment, and changelog synchronization per https://semver.org/
npx skillsauth add jason-hchsieh/marketplace version-checkInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are performing a comprehensive semantic version validation across all project files. This skill ensures compliance with Semantic Versioning standards.
Search for all known version files using Glob. Check the project root for:
package.jsonCargo.tomlpyproject.tomlCMakeLists.txt.claude-plugin/plugin.jsonbuild.gradlebuild.gradle.ktspom.xmlsetup.cfgversion.txtVERSIONmix.exspubspec.yamlChart.yamlFor each file found, read it and extract the version string using the appropriate pattern:
| File | Version Pattern |
|------|----------------|
| package.json | "version": "X.Y.Z" |
| Cargo.toml | version = "X.Y.Z" (under [package], not dependencies) |
| pyproject.toml | version = "X.Y.Z" |
| CMakeLists.txt | project(... VERSION X.Y.Z) |
| .claude-plugin/plugin.json | "version": "X.Y.Z" |
| build.gradle | version = 'X.Y.Z' or version "X.Y.Z" |
| build.gradle.kts | version = "X.Y.Z" |
| pom.xml | <version>X.Y.Z</version> (top-level only) |
| setup.cfg | version = X.Y.Z |
| version.txt | Raw X.Y.Z |
| VERSION | Raw X.Y.Z |
| mix.exs | version: "X.Y.Z" |
| pubspec.yaml | version: X.Y.Z |
| Chart.yaml | version: X.Y.Z |
For each extracted version, validate it matches semver format:
MAJOR.MINOR.PATCH (e.g., 1.2.3)MAJOR.MINOR.PATCH-prerelease (e.g., 1.2.3-beta.1)MAJOR.MINOR.PATCH+build (e.g., 1.2.3+build.123)^\d+\.\d+\.\d+(-[a-zA-Z0-9.]+)?(\+[a-zA-Z0-9.]+)?$Compare all extracted versions. They should all agree. Flag any mismatches.
git tag -l 'v*' --sort=-v:refname | head -1
Compare the latest git tag version with the version in project files. Report if they differ (this may be expected if a release is in progress).
If CHANGELOG.md exists, extract the top-most version heading (typically ## [X.Y.Z] or ## X.Y.Z). Compare with the current project version.
Generate a comprehensive report:
## Version Check Report
### Version Files Found
| File | Version | Status |
|------|---------|--------|
| package.json | 1.2.3 | valid |
| Cargo.toml | 1.2.3 | valid |
| setup.cfg | 1.2 | INVALID (not semver) |
### Consistency Check
- All files agree: YES / NO
- Mismatches: [list any disagreements]
### Git Tag Check
- Latest tag: v1.2.2
- Project version: 1.2.3
- Status: Version ahead of latest tag (expected pre-release)
### CHANGELOG.md Check
- Top version: 1.2.2
- Project version: 1.2.3
- Status: CHANGELOG needs update (run /changelog)
### Issues Found
1. [ISSUE] setup.cfg has invalid semver: "1.2"
2. [WARN] CHANGELOG.md behind project version
### Recommended Actions
1. Fix setup.cfg version to "1.2.0"
2. Run /changelog to update CHANGELOG.md
3. Run /bump to align all files after fixing
If the project is a monorepo (e.g., this marketplace with multiple plugins), scan for version files recursively and group by subdirectory. Report version consistency within each sub-project separately.
tools
Bootstrap versioning for a project - detect project type, initialize git-cliff config, and generate initial CHANGELOG.md using semantic versioning
tools
Generate or update CHANGELOG.md using git-cliff from conventional commit history - see https://git-cliff.org/docs/category/usage
tools
Bump the project version following semver, update all version files per https://semver.org/
tools
Enable or disable a registered runbook by name - disabled runbooks skip automatic trigger execution