| name | worktree-guide |
| description | Interactive guide for parallel development with Ghostty, git worktrees, and Lazygit. Use when setting up multi-task workflows or learning the worktree system. |
| license | MIT |
| metadata | {"author":"claude-code-templates","version":"1.0"} |
Guide the user through parallel development workflows using Ghostty terminal panels, git worktrees, and Lazygit. This is both a teaching experience and a practical reference.
Preflight
Before starting, detect the user's environment:
git rev-parse --is-inside-work-tree 2>&1 && echo "GIT_OK" || echo "NOT_GIT"
If not a git repo:
This isn't a git repository. Navigate to a git project first, then come back to /worktree-guide.
Check if we're in a worktree or main repo:
git worktree list
pwd
Note the context for later guidance.
Phase 1: Welcome & Context Detection
Display based on environment:
If in main repo:
## Worktree Parallel Development Guide
Welcome! I'll guide you through setting up and using parallel worktrees for multi-task development.
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Ghostty Terminal โ
โ โโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ โ โ
โ โ Claude (Task 1) โ Claude (Task 2) โ โ
โ โ claude/login-page โ claude/fix-auth-bug โ โ
โ โ โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโค โ
โ โ Lazygit (monitoring) โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
**Your workflow:**
1. Create worktrees โ `/worktree-init`
2. Open Ghostty panels โ `Cmd+D` / `Cmd+Shift+D`
3. Run Claude in each panel โ `cd <worktree> && claude`
4. Deliver when done โ `/worktree-deliver`
5. Clean up โ `/worktree-cleanup`
What would you like to do?
Use AskUserQuestion:
- "Learn the full workflow" โ Start from Phase 2
- "Just show keybindings" โ Jump to Quick Reference
- "Create worktrees now" โ Suggest
/worktree-init
- "Something else" โ Ask what they need
If already in a worktree:
## Worktree Status
You're already inside a worktree! Let me check your status.
Then run the equivalent of /worktree-check and provide contextual guidance.
Phase 2: Ghostty Essentials
EXPLAIN:
## Ghostty Panel Management
Ghostty's panel system is perfect for parallel development. Here are the essential keybindings:
SHOW:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ GHOSTTY KEYBINDINGS โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ SPLITTING โ
โ โโโโโโโโโ โ
โ Cmd+D Split panel to the right โ
โ Cmd+Shift+D Split panel below โ
โ โ
โ NAVIGATION โ
โ โโโโโโโโโ โ
โ Cmd+Alt+โ/โ/โ/โ Move focus between panels โ
โ Cmd+[/] Cycle through panels โ
โ โ
โ SIZING โ
โ โโโโโโโโโ โ
โ Cmd+Shift+E Equalize all panel sizes โ
โ Cmd+Shift+F Toggle zoom (fullscreen current panel) โ
โ โ
โ CLOSING โ
โ โโโโโโโโโ โ
โ Cmd+W Close current panel โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
**Pro tip:** Use Cmd+Shift+F to zoom into a panel when you need focus, then press it again to return to the multi-panel view.
PAUSE - "Ready to learn about Lazygit? (Or skip to workflow)"
Phase 3: Lazygit Essentials
EXPLAIN:
## Lazygit for Monitoring Worktrees
Lazygit gives you a visual overview of all your worktrees and their changes. Run it from your main repo to monitor everything.
SHOW:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ LAZYGIT KEYBINDINGS โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ WORKTREES (navigate to Worktrees panel) โ
โ โโโโโโโโโ โ
โ w Switch to worktree panel (or create new) โ
โ Enter Switch to selected worktree โ
โ n Create new worktree โ
โ d Delete worktree (with confirmation) โ
โ โ
โ FILES & STAGING โ
โ โโโโโโโโโ โ
โ Space Stage/unstage file โ
โ a Stage all files โ
โ Enter View file diff (with Delta highlighting) โ
โ โ
โ COMMITS โ
โ โโโโโโโโโ โ
โ c Commit staged changes โ
โ C Commit with editor โ
โ A Amend last commit โ
โ โ
โ SYNC โ
โ โโโโโโโโโ โ
โ P Push โ
โ p Pull โ
โ f Fetch โ
โ โ
โ GENERAL โ
โ โโโโโโโโโ โ
โ ? Help (context-sensitive) โ
โ q Quit / go back โ
โ Tab Switch panels โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
**Monitoring workflow:**
1. Open lazygit in the main repo (or a dedicated Ghostty panel)
2. Press `w` to see all worktrees
3. Use Enter to dive into any worktree's changes
4. Press `q` to go back to the worktree list
PAUSE - "Ready for the full workflow walkthrough?"
Phase 4: Complete Workflow (Guided)
EXPLAIN:
## Full Parallel Development Workflow
Let me walk you through the complete cycle. We'll go step by step.
Step 4.1: Create Worktrees
EXPLAIN:
### Step 1: Create Worktrees
First, define the tasks you want to work on in parallel. The `/worktree-init` command creates a worktree for each task.
DO: Show example command:
Example usage:
/worktree-init add user authentication | fix login bug | improve dashboard performance
This creates:
โโโ ../worktrees/<repo>/claude-add-user-authentication/
โโโ ../worktrees/<repo>/claude-fix-login-bug/
โโโ ../worktrees/<repo>/claude-improve-dashboard-performance/
Step 4.2: Open Ghostty Panels
EXPLAIN:
### Step 2: Open Ghostty Panels
Now split your terminal into panelsโone for each task, plus optionally one for Lazygit monitoring.
DO:
1. Press Cmd+D to split right (first worktree)
2. Press Cmd+D again (second worktree)
3. Optionally press Cmd+Shift+D on any panel for Lazygit below
Resulting layout:
โโโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโ
โ Task 1 โ Task 2 โ Task 3 โ
โ claude โ claude โ claude โ
โโโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโค
โ lazygit โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Step 4.3: Work in Each Panel
EXPLAIN:
### Step 3: Work Independently
In each panel:
1. cd to the worktree path (from the commands output)
2. Run `claude` to start a Claude session
3. Use `/worktree-check` anytime to verify which task you're working on
4. Work normallyโClaude doesn't know about other panels
Step 4.4: Deliver Completed Work
EXPLAIN:
### Step 4: Deliver When Done
When you finish a task in any panel, use `/worktree-deliver` to:
1. Review your changes
2. Create a commit
3. Push to remote
4. Create a pull request
Step 4.5: Clean Up
EXPLAIN:
### Step 5: Clean Up After Merging
After your PRs are merged on GitHub:
1. Go back to the main repo (not a worktree)
2. Run `/worktree-cleanup --all`
3. It removes merged worktrees and branches
Phase 5: Troubleshooting
SHOW:
## Troubleshooting
### "I'm not sure which worktree I'm in"
Run `/worktree-check` โ it shows your branch, task, and status.
Alternatively:
$ git branch --show-current # Shows claude/<name>
$ pwd # Shows the worktree path
---
### "I have uncommitted changes and want to switch tasks"
**Option 1:** Commit work-in-progress
$ git add . && git commit -m "wip: progress on feature"
**Option 2:** Stash changes (temporary)
$ git stash push -m "wip: parking changes"
Then in the other panel, continue working. Come back later with:
$ git stash pop
---
### "I accidentally started working in the wrong worktree"
1. Stash your changes: `git stash push -m "work done in wrong place"`
2. Navigate to the correct worktree
3. Apply the stash: `git stash pop`
---
### "My worktree has merge conflicts"
1. Run `git fetch origin` to get latest
2. Run `git rebase origin/main` (or merge if you prefer)
3. Resolve conflicts in your editor
4. `git add .` then `git rebase --continue`
---
### "I want to abandon a worktree"
From the main repo:
$ git worktree remove ../worktrees/repo/claude-<name> --force
$ git branch -D claude/<name>
Note: Force is needed if there are uncommitted changes.
---
### "/worktree-deliver failed on push"
Usually means the remote branch doesn't exist yet or there's a conflict.
Try:
$ git push -u origin HEAD
If there's a conflict with remote, pull first:
$ git pull --rebase origin claude/<name>
---
### "The worktree path doesn't exist anymore"
The worktree was probably deleted manually. Clean up the git state:
$ git worktree prune
Phase 6: Quick Reference Card
SHOW:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ WORKTREE QUICK REFERENCE โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ COMMANDS โ
โ โโโโโโโโโ โ
โ /worktree-init <task1> | <task2> Create worktrees for parallel tasks โ
โ /worktree-check Show current worktree status & task โ
โ /worktree-deliver Commit, push, and create PR โ
โ /worktree-cleanup --all Remove merged worktrees and branches โ
โ /worktree-cleanup --dry-run Preview what would be cleaned up โ
โ โ
โ GHOSTTY โ
โ โโโโโโโโโ โ
โ Cmd+D Split right โ Cmd+Shift+E Equalize panels โ
โ Cmd+Shift+D Split down โ Cmd+Shift+F Zoom toggle โ
โ Cmd+Alt+Arrows Navigate โ Cmd+W Close panel โ
โ โ
โ LAZYGIT โ
โ โโโโโโโโโ โ
โ w Worktrees panel โ Space Stage/unstage โ
โ Enter View diff โ c Commit โ
โ P Push โ ? Help โ
โ โ
โ GIT (manual) โ
โ โโโโโโโโโ โ
โ git worktree list List all worktrees โ
โ git worktree add -b claude/name path Create worktree manually โ
โ git worktree remove path Remove a worktree โ
โ git worktree prune Clean up stale worktree refs โ
โ โ
โ WORKFLOW โ
โ โโโโโโโโโ โ
โ 1. /worktree-init tasks... Create worktrees โ
โ 2. Cmd+D (split panels) Open Ghostty panels โ
โ 3. cd <path> && claude Start Claude in each โ
โ 4. /worktree-deliver PR when done โ
โ 5. /worktree-cleanup Clean up after merge โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Guardrails
- Never execute destructive commands without confirmation (worktree remove, branch delete)
- Always verify location before suggesting worktree operations
- If user seems lost, offer
/worktree-check first
- Never force-delete branches that aren't merged
- Don't assume tools are installed โ check for lazygit availability if suggesting it
- Respect user's pace โ don't rush through sections if they want to practice
- Keep the reference card available โ offer to show it whenever relevant