Workbloom
A Git worktree management tool written in Rust that automates worktree setup and file copying.
Features
- 🌲 Easy worktree setup - Create git worktrees with a single command
- 📦 Automatic file copying - Copies essential files (.env, .envrc, etc.) to new worktrees
- 🧹 Smart cleanup - Remove merged worktrees automatically or interactively
- 🎨 Beautiful output - Colored terminal output with progress indicators
- 💬 Claude Comment Management - Automatically minimize old Claude PR review comments
Installation
From crates.io (Recommended)
From GitHub
From source
Shell Integration (Recommended)
Alias for shorter commands
Add this alias to your .bashrc or .zshrc for shorter commands:
With this alias and the built-in short aliases, you can use:
wb s feature/my-featureinstead ofworkbloom setup feature/my-featurewb cinstead ofworkbloom cleanup
Auto-change directory after setup
By default, workbloom setup prints only the worktree path to stdout (logs go to stderr).
The CLI cannot change the parent shell's working directory, so use command substitution (or a shell function) to cd.
Use --print-path if you want to force path-only output explicitly.
To automatically change to the worktree directory after setup, add this function to your .bashrc or .zshrc:
# Or with the alias:
# Then use: workbloom-setup feature/my-feature
# Or: wb-setup feature/my-feature
Usage
Setup a new worktree
# Setup and print the worktree path (default)
# Or using short alias: wb s feature/my-new-feature
# Setup and start a new shell in the worktree directory
# Or using short alias: wb s feature/my-new-feature --shell
# Legacy: setup without starting a shell, with human-friendly output
# Or using short alias: wb s feature/my-new-feature --no-shell
This will:
- Create a new worktree for the branch (creating the branch if it doesn't exist)
- Copy required files from the main repository (.env, .envrc, etc.)
- Setup direnv if available
- Start a new shell in the worktree directory (when --shell is used)
Clean up worktrees
# Remove merged worktrees (default)
# Or using short alias: wb c
# Force removal of merged worktrees (skip remote branch checks)
# Or using short alias: wb c --merged --force
# Remove worktrees matching a pattern
# Or using short alias: wb c --pattern "feature/old-"
# Interactive cleanup
# Or using short alias: wb c --interactive
# Show merge status of all worktrees
# Or using short alias: wb c --status
Cleanup Options
- Default: Removes only merged worktrees that exist on the remote repository
--force: Skips remote branch checks and removes all merged worktrees (use with caution)- Useful when remote branches have been deleted after merging
- Still protects recently created worktrees (within 24 hours)
--pattern: Removes worktrees matching the specified pattern--interactive: Prompts for confirmation before removing each worktree--status: Shows the merge status of all branches without removing anything
Configuration
Default Files
By default, Workbloom copies the following files to new worktrees:
.envrc.env.claude/settings.json.claude/settings.local.json
Custom File Copying
You can specify additional files and directories to copy by creating a .workbloom file in your repository root:
# .workbloom - List of files and directories to copy to git worktrees
# One file or directory per line
# Lines starting with # are comments
# Directories should end with /
# Example:
See .workbloom.example for a complete example.
Development
# Run tests
# Build debug version
# Build release version
# Run with debug output
RUST_LOG=debug
Claude Comment Management
古いClaudeのPRレビューコメントが蓄積することを防ぐため、自動的に最小化する機能を提供します。
自動実行
GitHub Actionsが以下の場合に自動実行されます:
- PR作成・更新時
- PRコメント作成時
手動実行
# PR #123の古いClaudeコメントを最小化
# 詳細な使用方法
詳細については scripts/README.md を参照してください。
License
MIT