release
Skill: Release ButterCut
Guides through the complete release process: version bump, changelog, git operations, gem publishing, and GitHub release creation.
When to Use
- Publishing a new version of ButterCut
- After merging features or fixes that should be released
- Creating the first v0.1.0 release
Workflow
1. Run Tests First
CRITICAL: Always run tests before releasing. Never release if tests fail.
bundle exec rspec
If any tests fail, STOP immediately and ask user to fix before proceeding with release.
2. Check Current State
# Read current version
cat lib/buttercut/version.rb
# Check git status (must be clean)
git status
# Check existing tags
git tag -l
If git status is not clean, stop and ask user to commit or stash changes before proceeding.
3. Determine New Version
Ask user what type of release following Semantic Versioning:
- MAJOR (1.0.0): Breaking changes
- MINOR (0.2.0): New features, backward compatible
- PATCH (0.1.1): Bug fixes, backward compatible
Calculate new version number based on current version and release type.
4. Update Version File
Edit lib/buttercut/version.rb with the new version:
class ButterCut
VERSION = "0.2.0" # Update this
end
5. Update Gemfile.lock
Run bundle install so Gemfile.lock reflects the new version:
bundle install
Verify the version updated in Gemfile.lock before proceeding.
6. Gather Changelog Notes
Ask user for release notes. Prompt with:
- What changed in this release?
- Any new features?
- Any bug fixes?
- Any breaking changes?
7. Update or Create CHANGELOG.md
If CHANGELOG.md exists, prepend new entry. Otherwise create it:
# Changelog
All notable changes to ButterCut will be documented in this file.
## [0.2.0] - 2025-01-21
### Added
- Feature X
- Support for Y
### Fixed
- Bug in Z
### Changed
- Improved W
8. Commit Version Bump
git add lib/buttercut/version.rb Gemfile.lock CHANGELOG.md
git commit -m "Bump version to 0.2.0"
9. Create and Push Git Tag
git tag v0.2.0
git push origin main
git push origin v0.2.0
10. Build Gem
gem build buttercut.gemspec
This creates buttercut-0.2.0.gem file.
11. Publish to RubyGems
First time setup check:
If this is the first release, verify RubyGems authentication:
gem signin
If not authenticated, provide instructions:
- Sign up at https://rubygems.org
- Run
gem signinand follow prompts - Store credentials for future releases
Publish the gem:
gem push buttercut-0.2.0.gem
This makes the gem available for gem install buttercut worldwide.
12. Create GitHub Release
Using GitHub CLI:
gh release create v0.2.0 \
--title "v0.2.0" \
--notes "[Release notes from changelog]" \
buttercut-0.2.0.gem
If gh CLI not available:
Guide user through manual release creation:
- Go to https://github.com/andrewford/buttercut/releases/new
- Choose tag: v0.2.0
- Set title: v0.2.0
- Paste changelog notes in description
- Attach buttercut-0.2.0.gem file
- Click "Publish release"
Then wait for user confirmation that release is created before proceeding to cleanup.
13. Cleanup
# Remove local gem file (it's on RubyGems and GitHub now)
rm buttercut-0.2.0.gem
14. Verify Release
Check that everything worked:
- RubyGems page: https://rubygems.org/gems/buttercut
- GitHub releases: https://github.com/andrewford/buttercut/releases
- Git tags:
git tag -l
15. Return Success Response
Provide summary:
✓ ButterCut 0.2.0 released successfully
Version: 0.2.0
Git tag: v0.2.0
RubyGems: Published at https://rubygems.org/gems/buttercut
GitHub Release: https://github.com/andrewford/buttercut/releases/tag/v0.2.0
Installation:
gem install buttercut
Upgrade:
gem update buttercut
Critical Principles
Always run tests first - Never release if tests fail Git must be clean - No uncommitted changes before release Push before publish - Tags must be pushed before creating GitHub release Semantic versioning - Follow semver strictly for version numbers Changelog required - Every release needs documented changes
Common Issues
Tests failing: Ask user to fix tests before proceeding
Git not clean: Ask user to commit or stash changes first
Tag already exists: Verify this isn't a duplicate release
RubyGems authentication: Guide through gem signin process
GitHub CLI not installed: Provide manual release instructions
More from barefootford/buttercut
analyze-video
Adds visual descriptions to transcripts by extracting and analyzing video frames with ffmpeg. Creates visual transcript with periodic visual descriptions of the video clip. Use when all files have audio transcripts present (transcript) but don't yet have visual transcripts created (visual_transcript).
68transcribe-audio
Transcribes video audio using WhisperX, preserving original timestamps. Creates JSON transcript with word-level timing. Use when you need to generate audio transcripts for videos.
46setup
Sets up a Mac for ButterCut. Installs all required dependencies (Homebrew, Ruby, Python, FFmpeg, WhisperX). Use when user says "install buttercut", "set up my mac", "get started", "first time setup", "install dependencies" or "check my installation".
37update-buttercut
A skill to automatically download and install the latest ButterCut version from GitHub while preserving libraries. Use when user wants to check for updates or update their installation for new features.
35backup-library
Backs up user libraries and all their contents (external video excluded). This skill can also be useful when you need to restore a library.
34roughcut
Builds a roughcut YAML and exported XML (Final Cut, Premiere, or Resolve) from an approved plan markdown file produced by `cut-planner`. Spins up a sub-agent that reads the library directly, builds the cut iteratively, reviews against format conventions, then returns paths plus conversational editorial notes. If the user asks for a "roughcut", "sequence", or "scene" and no plan exists yet, run `cut-planner` first.
28