Release Assistant Skill
Automate release workflows: Lint → Build → Test → Version Bump → Tag → Push.
Activation Triggers
- "release", "version bump"
/patch-release→ Patch Release flow
Workflow
Phase 1: Pre-flight Checks
Do NOT proceed until ALL checks pass.
git statusto verify clean working tree (abort if uncommitted changes)- Check
package.jsonscripts, run with project's package manager:- lint: On failure, try auto-fix (
--writeetc.), abort if not fixable - build: Abort on failure (includes
tsc -btype checking) - test: Abort on failure (skip if no test script defined)
- lint: On failure, try auto-fix (
Phase 2: Version Analysis
- Determine current version from
package.jsonversion and latest git tag (v*) - Analyze commits with
git log <last-tag>..HEAD --oneline - Determine version bump type based on Conventional Commits:
- MAJOR:
BREAKING CHANGEpresent - MINOR:
featpresent (no breaking) - PATCH: Only
fix,refactor,docs,chore, etc.
- MAJOR:
- Group commits by type, present change summary to user
Phase 3: Version Bump & Commit
- Propose new version, get user confirmation (override allowed)
- Update
package.jsonwith Edit tool - Commit and create tag:
chore(release): Bump version to X.Y.Z 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>git tag vX.Y.Z
Phase 4: Push
- Confirm push with user (show branch name and tag)
git push origin <branch> && git push origin vX.Y.Z- Show release summary, prompt to check CI/CD pipeline
Patch Release (/patch-release)
Simplified flow for bug-fix-only releases (no feat commits).
- Skip version analysis (always PATCH)
- Tests optional (build includes type checking)
- Skip changelog, minimize confirmation steps
Error Handling
| Error | Action |
|-------|--------|
| Lint failure | Auto-fix with --write → abort if not fixable |
| Test/Build failure | Abort, prompt to fix |
| Uncommitted changes | Suggest commit/stash, abort |
| Tag already exists | Abort, suggest delete or different version |
| Push failure | Suggest solution based on error message |