Identify the correct semver version for pending changes and execute a full release for go-sigil. Use this skill when the user asks "what version should this be", "bump the version", "release vX.Y.Z", "tag a release", "create a new release", "what semver bump is this", or "prepare a release". Also use proactively after a bug fix or feature is committed and the user wants to publish it. This skill uses `sigil diff --since <last-tag>` to enumerate changed symbols, infers the semver bump, updates version constants, updates PROGRESS.md and RELEASES.md, commits, tags, pushes, and creates the GitHub release via `gh`.
Determine the correct semver version for pending changes and publish a GitHub release.
By the end of this workflow:
sigil indexed and synced: sigil sync .gh authenticated: gh auth statusgit describe --tags --abbrev=0
Store the result as <last-tag> (e.g. ).
v0.1.1sigil diff --since <last-tag>
Read the output:
| Symbol diff output | Semver signal |
|---|---|
Only ~ (modified) lines | patch |
Any + (added) functions / methods / types | minor |
Any - (deleted) exported symbols or changed interfaces | major |
| Only test files or internal unexported symbols changed | patch |
Given current version vMAJOR.MINOR.PATCH:
vMAJOR.MINOR.(PATCH+1)vMAJOR.(MINOR+1).0v(MAJOR+1).0.0State the version and the reason before proceeding. Ask the user to confirm if the bump type is ambiguous.
Two files always require updating:
internal/constants/constants.go → AppVersion = "MAJOR.MINOR.PATCH"
internal/mcpserver/server.go → serverVersion = "vMAJOR.MINOR.PATCH"
Use the Edit tool to change both.
Insert a new row at the top of the Release History table (just after the header row):
| vX.Y.Z | YYYY-MM-DD | <one-line summary of changes> |
The summary should be derived from the sigil diff output — name the key symbols or
areas that changed, not raw symbol IDs.
Insert the same row at the top of the Release History table in RELEASES.md.
Stage only the relevant files — never stage .claude/settings.local.json:
git add internal/constants/constants.go \
internal/mcpserver/server.go \
PROGRESS.md \
RELEASES.md \
<any other changed source files>
git commit -m "Release vX.Y.Z — <short description>
- <bullet 1>
- <bullet 2>"
No Co-Authored-By trailer.
git tag vX.Y.Z
git push origin main
git push origin vX.Y.Z
gh release create vX.Y.Z \
--title "vX.Y.Z" \
--notes "## What's Changed
- <change 1>
- <change 2>
**Full Changelog**: https://github.com/teocci/go-sigil/compare/<last-tag>...vX.Y.Z"
sigil version # → sigil X.Y.Z
gh release view vX.Y.Z # → release exists with correct notes
| Change type | Bump |
|---|---|
| Bug fix, test addition, doc update | patch |
| New CLI flag or command (backward-compatible) | minor |
| New MCP tool or sigil query service | minor |
| Removed/renamed exported symbol or interface change | major |
| SQLite schema version bump | major |