Skip to main content
ClaudeWave
Skill2.5k estrellas del repoactualizado 2mo ago

git-worktrees

The git-worktrees skill provides commands and guidance for creating isolated git worktrees that allow simultaneous work on multiple branches within a single repository without switching contexts. Use this when developing features in parallel, reviewing pull requests separately from main work, or experimenting with risky changes while keeping the primary workspace stable.

Instalar en Claude Code
Copiar
git clone --depth 1 https://github.com/heyitsnoah/claudesidian /tmp/git-worktrees && cp -r /tmp/git-worktrees/.agents/skills/git-worktrees ~/.claude/skills/git-worktrees
Después abre una sesión nueva de Claude Code; el skill carga automáticamente.

SKILL.md

# Git Worktrees

## Overview

Git worktrees create isolated workspaces sharing the same repository, allowing
work on multiple branches simultaneously without switching. Each worktree is a
separate directory with its own working tree, but they share the same `.git`
history.

## When to Use Worktrees

- **Parallel development**: Work on feature A while feature B builds/tests
- **Code review**: Check out PR branch without disrupting current work
- **Experiments**: Try something risky without affecting main workspace
- **Long-running tasks**: Keep main branch available while feature develops

## Quick Reference

| Action | Command |
|--------|---------|
| List worktrees | `git worktree list` |
| Create worktree | `git worktree add <path> -b <branch>` |
| Create from existing branch | `git worktree add <path> <branch>` |
| Remove worktree | `git worktree remove <path>` |
| Prune stale worktrees | `git worktree prune` |

## Creating Worktrees

### New Feature Branch

```bash
# Create worktree with new branch
git worktree add .worktrees/my-feature -b feat/my-feature

# Or specify base branch
git worktree add .worktrees/my-feature -b feat/my-feature main
```

### From Existing Branch

```bash
# Check out existing remote branch
git worktree add .worktrees/pr-review origin/fix-bug

# Check out existing local branch
git worktree add .worktrees/hotfix hotfix/urgent-fix
```

## Directory Structure

```
project/
├── .git/                    # Shared git history
├── .worktrees/              # Convention: keep worktrees here
│   ├── feature-a/           # First worktree
│   └── feature-b/           # Second worktree
└── src/                     # Main worktree files
```

## Setup After Creating Worktree

After creating a worktree, you typically need to:

```bash
cd .worktrees/my-feature

# Install dependencies
npm install  # or pnpm install, yarn, etc.

# Copy any required env files
cp ../.env .env.local

# Verify setup
npm test
```

## Safety Rules

**NEVER remove a worktree with uncommitted changes without confirmation.**

```bash
# Check for uncommitted changes first
git -C .worktrees/my-feature status --porcelain

# If empty, safe to remove
git worktree remove .worktrees/my-feature

# Delete the branch after merge (-d is safe, fails if not merged)
git branch -d feat/my-feature
```

### Removal Decision Matrix

| PR Merged? | Uncommitted Changes? | Action |
|------------|---------------------|--------|
| Yes | No | Safe to remove |
| Yes | Yes | Ask user - changes will be lost |
| No | No | Do NOT remove - work not preserved |
| No | Yes | Do NOT remove - active work |

## Cleaning Up Worktrees

### Manual Cleanup

```bash
# 1. Check if work is merged (if using GitHub)
gh pr list --head feat/my-feature --state merged

# 2. Check for uncommitted changes
git -C .worktrees/my-feature status --porcelain

# 3. Remove worktree (only if merged or confirmed with user)
git worktree remove .worktrees/my-feature

# 4. Delete branch
git branch -d feat/my-feature
```

### Prune Stale Worktrees

If a worktree directory was deleted manually:

```bash
git worktree prune
```

## Common Patterns

### Review a PR

```bash
# Create worktree from PR branch
git fetch origin pull/123/head:pr-123
git worktree add .worktrees/pr-123 pr-123

# Review, test, then clean up
git worktree remove .worktrees/pr-123
git branch -D pr-123
```

### Parallel Feature Development

```bash
# Main work continues in project root
# Start new feature in worktree
git worktree add .worktrees/new-api -b feat/new-api

# Work on both simultaneously
code .worktrees/new-api  # Opens new VS Code window
```

## Troubleshooting

### "Branch already checked out"

A branch can only be checked out in one worktree at a time:

```bash
# Find where branch is checked out
git worktree list

# Remove that worktree first, or use different branch
```

### "Worktree directory not empty"

```bash
# Force add if directory exists but isn't a worktree
git worktree add --force <path> <branch>
```

### Locked Worktree

If a worktree is locked (prevents accidental removal):

```bash
# Unlock it
git worktree unlock <path>

# Then remove
git worktree remove <path>
```
add-frontmatterSkill

Add or update YAML frontmatter properties to enhance Obsidian note organization. Use when the user asks to add, fix, normalize, or improve frontmatter, properties, metadata, tags, or YAML on a note or folder of notes.

daily-reviewSkill

Conduct an end-of-day review to capture progress and set up tomorrow. Use when the user asks for a daily review, end of day wrap-up, EOD note, what they did today, or wants to reflect on the day and plan tomorrow.

de-ai-ifySkill

Remove AI-generated jargon and restore human voice to text. Use when the user asks to de-AI-ify, humanize, remove AI tone, or make text sound less machine-generated.

download-attachmentSkill

Download files from URLs to the Obsidian attachments folder and organize them with descriptive names. Use when the user provides URLs to download, asks to save files from the web, or wants to add web content as attachments.

inbox-processorSkill

Help organize and process items in the 00_Inbox folder according to the PARA method. Use when the user asks to process, clear, sort, triage, or organize their inbox.

init-bootstrapSkill

Interactive setup wizard that helps new users create a personalized CLAUDE.md file based on their Obsidian workflow preferences. Use when the user wants to set up claudesidian, onboard a new vault, or run the bootstrap/init/setup wizard.

install-claudesidian-commandSkill

Install claudesidian shell command to launch Claude Code from anywhere. Use when the user wants to install a shell alias/launcher for their vault, or asks to set up the claudesidian command.

json-canvasSkill

Create and edit JSON Canvas files (.canvas) with nodes, edges, groups, and connections. Use when working with .canvas files, creating visual canvases, mind maps, flowcharts, or when the user mentions Canvas files in Obsidian.