npx claudepluginhub kucherenko/gangsta --plugin gangstaThis skill uses the workspace's default tool permissions.
Git worktrees create isolated operational bases sharing the same repository. Work on multiple branches simultaneously without compromising the main workspace.
Creates isolated git worktrees for feature branches with directory selection, .gitignore safety checks, auto-setup for Node/Python/Rust/Go, and baseline tests. Use for isolated workspace needs.
Creates isolated git worktrees for feature branches with directory selection, gitignore safety checks, and auto-setup for Node.js, Rust, Python, Go projects. Use for workspace isolation.
Creates isolated Git worktrees for feature branches with smart directory selection, gitignore safety checks, project setup for Node.js/Python/Rust/Go, and baseline verification.
Share bugs, ideas, or general feedback.
Git worktrees create isolated operational bases sharing the same repository. Work on multiple branches simultaneously without compromising the main workspace.
Core principle: Systematic directory selection + safety verification = reliable isolation.
Announce at start: "Setting up a safehouse for isolated operations."
Follow this priority order:
# Check in priority order
ls -d .worktrees 2>/dev/null # Preferred (hidden)
ls -d worktrees 2>/dev/null # Alternative
If found: Use that directory. If both exist, .worktrees/ wins.
grep -i "worktree.*director" AGENTS.md 2>/dev/null
If preference specified: Use it without asking.
If no directory exists and no config preference:
No safehouse directory found. Where should I set up?
1. .worktrees/ (project-local, hidden)
2. ~/.config/gangsta/worktrees/<project-name>/ (global location)
Which would you prefer?
MUST verify directory is gitignored before creating safehouse:
# Check if directory is ignored (respects local, global, and system gitignore)
git check-ignore -q .worktrees 2>/dev/null || git check-ignore -q worktrees 2>/dev/null
If NOT ignored:
.gitignoreWhy critical: Prevents accidentally committing safehouse contents to repository.
No .gitignore verification needed — outside project entirely.
project=$(basename "$(git rev-parse --show-toplevel)")
# Determine full path
case $LOCATION in
.worktrees|worktrees)
path="$LOCATION/$BRANCH_NAME"
;;
~/.config/gangsta/worktrees/*)
path="~/.config/gangsta/worktrees/$project/$BRANCH_NAME"
;;
esac
# Create worktree with new branch
git worktree add "$path" -b "$BRANCH_NAME"
cd "$path"
Auto-detect and run appropriate setup:
# Node.js
if [ -f package.json ]; then npm install; fi
# Rust
if [ -f Cargo.toml ]; then cargo build; fi
# Python
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
if [ -f pyproject.toml ]; then poetry install; fi
# Go
if [ -f go.mod ]; then go mod download; fi
Run tests to ensure safehouse starts clean:
# Use project-appropriate command
npm test / cargo test / pytest / go test ./...
If tests fail: Report failures, ask the Don whether to proceed or investigate.
If tests pass: Report ready.
Safehouse ready at <full-path>
Tests passing (<N> tests, 0 failures)
Ready for operations.
| Situation | Action |
|---|---|
.worktrees/ exists | Use it (verify ignored) |
worktrees/ exists | Use it (verify ignored) |
| Both exist | Use .worktrees/ |
| Neither exists | Check AGENTS.md → Ask the Don |
| Directory not ignored | Add to .gitignore + commit |
| Tests fail during baseline | Report failures + ask the Don |
| No package.json/Cargo.toml | Skip dependency install |
git check-ignore before creating project-local safehouseNever:
Always:
Called by:
Pairs with: