modules/programs/agents/shared/skills/release/SKILL.md
Cut a release (bump version, commit, tag, push)
npx skillsauth add MichaelVessia/nixos-config releaseInstall 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.
$ARGUMENTS - Optional: version specifier (patch, minor, major, or explicit X.Y.Z)
Parse from $ARGUMENTS:
--dry-run: Show what would happen without making changes--no-push: Commit and tag locally, don't push--force: Skip branch check--yes: Non-interactive mode (skip prompts)git rev-parse --show-toplevel
Error if not in a git repo. All operations happen from git root.
Check in order (first match wins):
package.json → .versionCargo.toml → [package].versionpyproject.toml → [project].version or [tool.poetry].versionversion.txt → entire content (strict: exactly X.Y.Z)VERSION → entire content (strict: exactly X.Y.Z)Error if multiple found. List them and abort.
Check lockfiles:
bun.lockb → bunpnpm-lock.yaml → pnpmyarn.lock → yarnpackage-lock.json → npmError if multiple lockfiles. Default to npm if none.
Abort if:
vX.Y.Z exists: "Tag vX.Y.Z already exists."--yes without --force)Parse current version (strict semver MAJOR.MINOR.PATCH):
patch: increment PATCHminor: increment MINOR, reset PATCHmajor: increment MAJOR, reset MINOR and PATCHX.Y.Z: validate greater than currentHard abort if checks fail.
| Project | Command |
|---------|---------|
| package.json | <pm> run check or <pm> run test (first found) |
| Cargo.toml | cargo test |
| pyproject.toml | pytest |
Edit version file with new version.
git add <version-file> [<lockfile-if-changed>]
git commit -m "chore: release vX.Y.Z"
git tag vX.Y.Z
git push && git push --tags
Skip push if --no-push. Use default remote for current branch.
Released vX.Y.Z
Commit: <hash>
Tag: vX.Y.Z
Previous: vX.Y.Z
If --dry-run, show:
0.1.0 → 0.2.0If push succeeds but tag push fails:
Error: Failed to push tags.
The commit was pushed but the tag was not.
To recover manually:
git push --tags
| Project | Lockfile | |---------|----------| | package.json | Detected lockfile (error if multiple) | | Cargo.toml | Cargo.lock | | pyproject.toml | poetry.lock, pdm.lock, or uv.lock (error if multiple) |
Don't run install/lock commands - just commit if changed.
development
Restate the last message in plain human language, with no jargon.
testing
Fan out a batch of work items into one PR each via isolated worktree agents, review every PR before it opens, then babysit all PRs through green CI and review feedback. Use when the user wants to fan out PRs, dispatch parallel PR agents over a list of items, or run a batch of independent changes as separate PRs.
development
Dispatch user-visible coding or research agents through Herdr with Codex-Desktop-like thread ergonomics. Use when the user asks to use Herdr to spawn, dispatch, fan out, inspect, follow up with, or monitor agent workspaces/threads.
development
Generate self-contained HTML visualizations with Plannotator theming. Use for implementation plans, PR explainers, architecture diagrams, data tables, slide decks, and any visual explanation of technical concepts. Plans and PR explainers follow Plannotator's prescriptive approach; all other visual content delegates to nicobailon/visual-explainer.