| name | release-prep |
| description | Bump patch version, update CHANGELOG, commit, tag, push and create GitHub release |
| disable-model-invocation | true |
| user-invocable | true |
| argument-hint | [patch|minor|major] |
| allowed-tools | ["Read","Edit","Bash(npm version *)","Bash(git add *)","Bash(git commit *)","Bash(git tag *)","Bash(git push *)","Bash(gh release create *)","Bash(git status *)","Bash(git log *)","Bash(git diff *)"] |
Run from inside oikos/. Argument selects the semver bump (default: patch).
- Pre-flight — run
git status and git diff --staged. Abort if the tree is dirty with unrelated files. Summarise the pending changes.
- CHANGELOG — open
oikos/CHANGELOG.md. Insert a new ## [X.Y.Z] - YYYY-MM-DD block immediately below ## [Unreleased]. Use today's date from the currentDate context. Only use Keep-a-Changelog sections: ### Added, ### Changed, ### Fixed, ### Removed, ### Security. One bullet per user-facing change in English. Never invent entries that aren't in the diff.
- Version bump — run
npm version ${1:-patch} --no-git-tag-version. Read the new version from oikos/package.json.
- Stage —
git add oikos/CHANGELOG.md oikos/package.json oikos/package-lock.json plus any other files from the task. Never use git add -A or git add ..
- Commit —
git commit -m "chore: release vX.Y.Z". Do not pass --no-verify. If a hook fails, fix the cause and create a new commit.
- Tag —
git tag vX.Y.Z.
- Push —
git push && git push --tags.
- GitHub Release —
gh release create vX.Y.Z --repo ulsklyc/oikos --title "vX.Y.Z" --notes "<CHANGELOG block body>". Paste the new CHANGELOG section verbatim as notes.
Guardrails
- Never
--force, never --no-verify, never --no-gpg-sign.
- The
GH_TOKEN must come from the shell environment, never from a hard-coded literal in this file or in commit messages.
- If
gh release create fails with a 401/403, stop and report — do not paste a token inline.
- If
git status shows uncommitted work unrelated to the release, stop and ask the user.