Composer
I want you to act as a composer. I will provide the lyrics to a song and you will create music for it. This could include using various instruments or tools, such as synthesizers or samplers, in order...
Manage git worktrees for parallel branch development using custom git scripts (git-newtree, git-killtree, git-maingulp). Use when creating new worktrees, listing active worktrees, or closing/merging worktrees back to main. All worktrees are stored in .tree/ subdirectories of the repository.
Sign in to like and favorite skills
I want you to act as a composer. I will provide the lyrics to a song and you will create music for it. This could include using various instruments or tools, such as synthesizers or samplers, in order...
I want you to act as a philosopher. I will provide some topics or questions related to the study of philosophy, and it will be your job to explore these concepts in depth. This could involve conductin...
I want you to act as a personal trainer. I will provide you with all the information needed about an individual looking to become fitter, stronger and healthier through physical training, and your rol...
This skill helps manage git worktrees using a customized workflow with scripts stored in
~/bin/. Worktrees enable working on multiple branches simultaneously by creating separate working directories that share the same git repository. All worktrees are stored in .tree/ subdirectories.
The typical worktree lifecycle:
git newtreeCRITICAL INSTRUCTION: After completing any worktree operation (create, merge, delete, archive), you MUST always run
git worktree list and display the current state of all worktrees before yielding control back to the user.
This helps the user maintain awareness of their worktree state and verify that operations completed successfully.
Example output format:
**Current worktrees (N total):** - `/path/to/repo` - detached HEAD (commit-hash) - `/path/to/repo.bare` - detached HEAD (commit-hash) - `feature-name` - branch: feature-name - `maincomp` - branch: main
To create a new worktree for a branch:
git newtree <tree-name> [branch-name]
Behavior:
.tree/<tree-name>.env, .envrc, and .claude/ to the new worktree if presentExamples:
git newtree feature-x # Creates .tree/feature-x with branch 'feature-x' git newtree fix check/lint-graphql # Creates .tree/fix with existing branch 'check/lint-graphql'
When to use: User asks to create a new worktree, start work on a new branch, or work on a branch in parallel.
To show all active worktrees with status:
git worktree list
Output format:
/path/to/repo commit-hash (detached HEAD) /path/to/repo/.tree/feature-x commit-hash [feature-x] /path/to/repo/.tree/maincomp commit-hash [main]
Interactive selection with fzf: When closing or switching worktrees, use fzf for interactive selection of worktrees from the list.
When to use: User asks to see active worktrees, list branches being worked on, or needs to select a worktree to close.
When closing a worktree, always ask the user whether to merge back to main or just remove the worktree.
Use
git maingulp to merge changes back to main and cleanup:
cd .tree/maincomp # or wherever main branch worktree is git maingulp <branch-name> <worktree-path>
Requirements:
Example:
cd .tree/maincomp git maingulp feature-x .tree/feature-x
When to use: Work is complete and ready to be merged into main.
Use
git killtree to remove worktree without merging:
git killtree <worktree-path> [--force]
Behavior:
Examples:
git killtree .tree/feature-x # Remove worktree, delete if merged git killtree .tree/experiment --force # Force remove unmerged work
When to use: Work is abandoned, experimental, or will be merged manually later.
When the user asks to close a worktree without specifying which one, use fzf for interactive selection:
# First list worktrees git worktree list # Parse the output and use fzf to let user select # Then confirm merge vs. remove decision
Example interaction:
git worktree list outputSee
references/git-scripts-reference.md for detailed documentation of all git scripts including git-archivebranch and git-substat.
origin/main
git checkout --detach origin/main.tree/ subdirectory.tree/maincomp or similar.tree/<name> directoryStarting new feature work:
git newtree my-feature cd .tree/my-feature # work on feature
Completing and merging feature:
cd .tree/maincomp git maingulp my-feature .tree/my-feature
Abandoning experimental work:
git killtree .tree/experiment --force