# Release Assistant

> Runs the release workflow for Node/Bun and Go projects — version bump from commit history, mandatory lint/build/test, then tag creation and push. Use when the user asks to release, cut a version, or publish a tag. Do not use for ordinary commits or for merging to main.

- Skill: `fubira/release-assistant` (Agent Skill)
- Install (CLI): `npx skillmds@latest add fubira/release-assistant`
- Raw SKILL.md: https://api.skillmd.com/api/skills/fubira/release-assistant/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: fubira (https://skillmd.com/u/fubira)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/fubira/release-assistant

---


# Release Assistant Skill

Automate release workflows: Lint → Build → Test → Version Bump → Tag → Push.

## Activation Triggers

- "release", "version bump"
- `/patch-release` → Patch Release flow

## Project Type Detection

| Indicator | Project type | Version source | Bump method |
|-----------|-------------|---------------|-------------|
| `package.json` present | Node/Bun | `package.json` | Edit file + tag |
| `go.mod` only (no package.json) | Go | git tag | Tag only (no file edit) |
| `Cargo.toml` | Rust | `Cargo.toml` | Edit file + tag |
| Other | Unknown | Ask user | Abort and confirm |

Git tag format is `vX.Y.Z` for all types.

## Workflow

### Phase 1: Pre-flight Checks

**Do NOT proceed until ALL checks pass.**

1. `git status` — abort if uncommitted changes
2. Run project's lint / build / test commands (check `package.json` scripts, `Makefile`, or standard defaults like `go build ./...` / `go test ./...`)
   - **lint** failure: try auto-fix (`--write` etc.), abort if not fixable
   - **build** failure: abort
   - **test** failure: abort (skip phase if no test target defined)

### Phase 2: Version Analysis

1. Determine current version:
   - Node: `package.json` + latest `v*` tag
   - Go: latest `v*` tag only
2. Analyze commits: `git log <last-tag>..HEAD --oneline`
3. Determine bump type (Conventional Commits):
   - **MAJOR**: `BREAKING CHANGE` or `type!:` present
   - **MINOR**: `feat:` present (no breaking)
   - **PATCH**: only `fix`/`refactor`/`docs`/`chore`
4. Group commits by type, present summary to user

### Phase 3: Version Bump & Commit

1. Propose new version, get user confirmation (override allowed)
2. Node/Rust: Edit manifest file. Go: skip file edit
3. Commit (Node/Rust only) with subject `chore(release): Bump version to X.Y.Z`
   (format and trailer per git-commit-assistant), then `git tag vX.Y.Z`

### Phase 4: Push

1. Confirm push with user (show branch name and tag)
2. `git push origin <branch> && git push origin vX.Y.Z`
3. 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 for Node)
- 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 |

