| name | git-release |
| version | 1.0.0 |
| description | Automate semver releases — bump version, generate changelog, tag, and publish GitHub Release. |
| author | ZeptoClaw |
| license | MIT |
| tags | ["git","release","devops","changelog","semver"] |
| env_needed | [{"name":"GITHUB_TOKEN","description":"Personal access token with repo scope (for creating GitHub Releases)","required":true},{"name":"GH_REPO","description":"Repository in owner/repo format (e.g. myorg/myapp)","required":true}] |
| metadata | {"zeptoclaw":{"emoji":"🚀","requires":{"anyBins":["git","gh","jq"]}}} |
Git Release Skill
Automate the full release workflow: semver bump → changelog → git tag → GitHub Release.
Setup
export GITHUB_TOKEN="ghp_xxx..."
export GH_REPO="myorg/myapp"
Or if already logged in with gh auth login, skip GITHUB_TOKEN — the gh CLI uses its own token.
Check What Changed Since Last Release
git describe --tags --abbrev=0
git log $(git describe --tags --abbrev=0)..HEAD --oneline
git log $(git describe --tags --abbrev=0)..HEAD --oneline | grep -c "^.*feat"
git log $(git describe --tags --abbrev=0)..HEAD --oneline | grep -c "^.*fix"
Determine Next Version (Semver)
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.0.0")
MAJOR=$(echo $LAST_TAG | sed 's/v//' | cut -d. -f1)
MINOR=$(echo $LAST_TAG | sed 's/v//' | cut -d. -f2)
PATCH=$(echo $LAST_TAG | sed 's/v//' | cut -d. -f3)
NEXT="v${MAJOR}.${MINOR}.$((PATCH + 1))"
NEXT="v${MAJOR}.$((MINOR + 1)).0"
NEXT="v).0.0"