create-new-release
Create and push a new semver release tag. Asks for release type (patch/minor/major), validates commit exists on remote, bumps version, and pushes the tag.
npx skills add https://github.com/clickhouse/pg_stat_ch --skill create-new-releaseCreate New Release
Create and push a new semantic version release tag.
Steps
-
Ask release type: Use AskUserQuestion to ask if this is a patch, minor, or major release.
-
Fetch latest tags from remote:
git fetch --tags origin -
Get the latest semver tag (assumes
vprefix likev1.2.3):git tag --sort=-version:refname -l 'v*' | head -1 -
Parse and bump version based on user selection:
- patch:
v1.2.3→v1.2.4 - minor:
v1.2.3→v1.3.0 - major:
v1.2.3→v2.0.0
- patch:
-
Verify META.json version matches the new tag: Read
META.jsonand check that bothversionandprovides.pg_stat_ch.versionmatch the new version (without thevprefix). If they don't match, abort and tell the user to updateMETA.jsonfirst — PGXN uses this file for the release version. -
Validate current commit exists on remote:
git fetch origin git branch -r --contains HEADIf no remote branch contains HEAD, abort with an error asking the user to push their commits first.
-
Create and push the tag:
git tag -a <new_version> -m "Release <new_version>" git push origin <new_version> -
Report success with the new tag name.
Version Parsing
Parse version from tag like v1.2.3:
- Extract numbers after
vprefix - Split by
.to get major, minor, patch components - Handle edge case: if no tags exist, start at
v0.1.0
Error Handling
- If current commit is not on remote: "Current commit is not pushed to remote. Please push your changes first."
- If tag already exists: "Tag already exists. Please check existing tags."
- If git operations fail: Report the specific error.