By emmax86
Workspace management for Claude Code — group repos and git worktrees into named workspaces
Run a standard command (setup, format, test, test:file, test:match, check) in a repo
Manage repos registered in a grove workspace (add, list, remove)
Show status overview for the current grove workspace (repos and worktrees)
Manage grove workspaces (add, list, remove, status, path, sync)
Manage git worktrees inside a grove workspace (add, list, remove, prune)
Create a new git worktree in a grove workspace using the grove CLI. Use when asked to start work on a new branch, create a worktree, or work in isolation from other branches.
Orient yourself inside a grove workspace. Discovers the active workspace, registered repos (each with its source path), and all available worktrees with their branches and path template ({workspace}/trees/{repo}/{slug}/). Use at the start of any task when working in a grove-managed workspace, or when you need to know which worktree to work in.
Executes bash commands
Hook triggers when Bash tool is used
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
CLI tool for managing named workspaces that group git repos and worktrees, with auto-generated Claude Code and VS Code configuration.
~/grove-workspaces/ (configurable via GROVE_ROOT)CLAUDE.md, .claude/trees.md, and {workspace}.code-workspace VS Code workspace files~/grove-workspaces/
repos/
my-api -> /path/to/my-api # global repo symlinks
worktrees/
my-api/
feat-auth/ # shared git worktree
myproject/
workspace.json
CLAUDE.md # auto-generated
.claude/trees.md # auto-generated @-references
myproject.code-workspace # auto-generated
trees/
my-api/
main -> ../../../repos/my-api # linked (default branch)
feat-auth -> ../../../worktrees/my-api/feat-auth # pool
Prerequisite: Bun
git clone <repo-url> && cd grove
bun install && bun run build && bun link
grove ws add myproject
grove ws repo add myproject ~/code/my-api
grove ws repo add myproject ~/code/web-client
cd ~/grove-workspaces/myproject # worktree commands infer workspace from CWD
grove ws worktree add my-api feat-auth --new
grove ws status
Note:
worktree addinfers the workspace from CWD — run it from inside the workspace directory, or pass--workspace myprojectexplicitly.
grove ws status outputs a JSON snapshot:
{
"ok": true,
"data": {
"name": "myproject",
"path": "<GROVE_ROOT>/myproject",
"repos": [
{
"name": "my-api",
"path": "/path/to/my-api",
"status": "ok",
"worktrees": [
{
"repo": "my-api",
"slug": "feat-auth",
"branch": "feat-auth",
"type": "worktree"
}
]
}
]
}
}
grove ws <command>| Command | Description |
|---|---|
add <name> | Create a workspace |
list | List workspaces |
remove [name] [--force] | Remove a workspace |
status [workspace] | Repos + worktrees overview |
path [workspace] | Print workspace path |
sync [workspace] | Repair symlinks, prune dangling entries |
grove ws repo <command>| Command | Description |
|---|---|
add [workspace] <path> [--name N] | Register a git repo |
list [workspace] | List registered repos |
remove [workspace] <name> [--force] | Unregister a repo |
grove ws worktree <command>| Command | Description |
|---|---|
add [repo] <branch> [--new] [--from base] [--no-setup] | Create a worktree (shared pool) |
list [repo] | List worktrees |
remove [repo] <slug> [--force] | Remove a worktree |
prune | Clean up dangling symlinks |
grove ws exec <command>Run standard commands against a repo without needing to know its toolchain:
| Command | Description |
|---|---|
setup | Install dependencies |
format | Format and lint code |
test | Run the full test suite |
test:file <file> | Run tests for a single file |
test:match [file] [--match <pattern>] | Run tests matching a pattern |
check | Typecheck the project |
setup, format, and test are auto-detected from lockfiles (bun.lock → bun, pnpm-lock.yaml → pnpm, package-lock.json → npm, uv.lock → uv). test:file, test:match, and check require a per-repo .grove/commands.json entry.
Options: --repo <name> (required when no file is given, otherwise inferred from file path), --match <pattern> (filter pattern for test:match), --dry-run (print resolved command without running).
npx claudepluginhub emmax86/grove --plugin groveGit worktree management for parallel development workflows
Git worktree management expert for @desplega.ai/wts
Create virtual workspaces that unify AI coding assistant configs (agents, commands, skills, hooks) across multiple sibling git repos. Works with Claude Code and Codex. Supports worktrees for synchronized multi-repo feature development.
Multi-model consensus engine integrating OpenAI Codex CLI, Gemini CLI, and Claude CLI for collaborative code review and problem-solving.
Ultra-compressed communication mode. Cuts ~75% of tokens while keeping full technical accuracy by speaking like a caveman.
Comprehensive UI/UX design plugin for mobile (iOS, Android, React Native) and web applications with design systems, accessibility, and modern patterns