Files
gitlore/.claude/skills/release/SKILL.md
Taylor Eernisse 754efa4369 chore: add /release skill for automated SemVer version bumps
Adds a Claude Code skill that automates the release workflow:
parse bump type (major/minor/patch), update Cargo.toml + Cargo.lock,
commit, and tag. Intentionally does not auto-push so the user
retains control over when releases go to the remote.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 14:33:02 -05:00

107 lines
2.3 KiB
Markdown

---
name: release
description: Bump version, tag, and prepare for next development cycle
version: 1.0.0
author: Taylor Eernisse
category: automation
tags: ["release", "versioning", "semver", "git"]
---
# Release
Automate SemVer version bumps for the `lore` CLI.
## Invocation
```
/release <type>
```
Where `<type>` is one of:
- **major** — breaking changes (0.5.0 -> 1.0.0)
- **minor** — new features (0.5.0 -> 0.6.0)
- **patch** / **hotfix** — bug fixes (0.5.0 -> 0.5.1)
If no type is provided, ask the user.
## Procedure
Follow these steps exactly. Do NOT skip any step.
### 1. Determine bump type
Parse the argument. Accept these aliases:
- `major`, `breaking` -> MAJOR
- `minor`, `feature`, `feat` -> MINOR
- `patch`, `hotfix`, `fix` -> PATCH
If the argument doesn't match, ask the user to clarify.
### 2. Read current version
Read `Cargo.toml` and extract the `version = "X.Y.Z"` line. Parse into major, minor, patch integers.
### 3. Compute new version
- MAJOR: `(major+1).0.0`
- MINOR: `major.(minor+1).0`
- PATCH: `major.minor.(patch+1)`
### 4. Check preconditions
Run `git status` and `git log --oneline -5`. Show the user:
- Current version: X.Y.Z
- New version: A.B.C
- Bump type: major/minor/patch
- Working tree status (clean or dirty)
- Last 5 commits (so they can confirm scope)
If the working tree is dirty, warn: "You have uncommitted changes. They will NOT be included in the release tag. Continue?"
Ask the user to confirm before proceeding.
### 5. Update Cargo.toml
Edit the `version = "..."` line in Cargo.toml to the new version.
### 6. Update Cargo.lock
Run `cargo check` to update Cargo.lock with the new version. This also verifies the project compiles.
### 7. Commit the version bump
```bash
git add Cargo.toml Cargo.lock
git commit -m "release: v{NEW_VERSION}"
```
### 8. Tag the release
```bash
git tag v{NEW_VERSION}
```
### 9. Report
Print a summary:
```
Release v{NEW_VERSION} created.
Previous: v{OLD_VERSION}
Bump: {type}
Tag: v{NEW_VERSION}
Commit: {short hash}
To push: git push && git push --tags
```
Do NOT push automatically. The user decides when to push.
## Examples
```
/release minor -> 0.5.0 -> 0.6.0
/release hotfix -> 0.5.0 -> 0.5.1
/release patch -> 0.5.0 -> 0.5.1
/release major -> 0.5.0 -> 1.0.0
```