Skip to content
Back to skills

Worktree Context

BSecurity

Provides centralized worktree handling for workflow commands, eliminating ~50 lines of inline code per command.

  • 93 stars
  • 0 votes
  • 0 copies
  • 9 views
  • Added December 21, 2025
toolsgobashgitdocumentation

Security analysis

B88/100
  • criticalSends environment variables or credentials to an external URL

Pro shows the line behind each finding and how to fix it

Scanned February 12, 2026

npx -y skills add marcusgoll/Spec-Flow --skill worktree-context --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Worktree Context?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Worktree Context
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/marcusgoll-worktree-context/badge)](https://www.skillsdirectory.com/skills/marcusgoll-worktree-context)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
# Worktree Context Skill

Provides centralized worktree handling for workflow commands, eliminating ~50 lines of inline code per command.

## Purpose

Git worktrees enable parallel development by allowing multiple branches to be checked out simultaneously. This skill provides a single source of truth for worktree detection, creation, and context generation.

## Quick Reference

```bash
# Check if in worktree
bash .spec-flow/scripts/bash/worktree-context.sh in-worktree && echo "yes" || echo "no"

# Get worktree info (JSON)
bash .spec-flow/scripts/bash/worktree-context.sh info

# Create worktree for feature
bash .spec-flow/scripts/bash/worktree-context.sh create "feature" "001-auth" "feature/001-auth"

# Generate Task() agent context block
bash .spec-flow/scripts/bash/worktree-context.sh context "/path/to/worktree"
```

## Output Format

### Info Command

Returns JSON with worktree details:

```json
{
  "is_worktree": true,
  "worktree_path": "/path/to/worktrees/feature/001-auth",
  "root_path": "/path/to/main/repo",
  "branch": "feature/001-auth",
  "worktree_type": "feature",
  "worktree_slug": "001-auth"
}
```

### Fields

| Field | Values | Description |
|-------|--------|-------------|
| `is_worktree` | boolean | Whether currently in a worktree |
| `worktree_path` | string | Absolute path to worktree |
| `root_path` | string | Absolute path to main repository |
| `branch` | string | Current git branch |
| `worktree_type` | `feature`, `epic` | Type of worktree |
| `worktree_slug` | string | Feature/epic slug |

## Compact Pattern (v11.2)

### In Command Process Section

Replace 50+ lines of inline worktree detection with this compact reference:

```markdown
### Step N: Worktree Context (Optional)

**Check worktree using centralized skill** (see `.claude/skills/worktree-context/SKILL.md`):

1. Check preference: `bash .spec-flow/scripts/utils/load-preferences.sh --key "worktrees.auto_create" --default "true"`
2. Check if already in worktree: `bash .spec-flow/scripts/bash/worktree-context.sh in-worktree`
3. If NOT in worktree AND auto_create is true:
   - Create: `bash .spec-flow/scripts/bash/worktree-context.sh create "feature" "$SLUG" "$BRANCH"`
   - Store path in state.yaml: `yq eval ".git.worktree_path = \"$PATH\"" -i state.yaml`
4. For Task() agents, generate context: `bash .spec-flow/scripts/bash/worktree-context.sh context "$PATH"`
```

### For Task() Agent Prompts

When spawning worker agents that need to operate in a worktree:

```markdown
## Worktree Context

${WORKTREE_PATH ? `
**WORKTREE MODE (CRITICAL)**

Path: ${WORKTREE_PATH}

Execute this FIRST:
\`\`\`bash
cd "${WORKTREE_PATH}"
\`\`\`

All paths are relative to worktree root.
Git commits stay local to worktree branch.
Do NOT merge or push - orchestrator handles that.
` : `
**NORMAL MODE**
Working in main repository.
`}
```

## Commands

| Command | Purpose |
|---------|---------|
| `in-worktree` | Check if in worktree (exit 0 = yes) |
| `info` | Get current worktree info (JSON) |
| `root` | Get main repository path |
| `create TYPE SLUG BRANCH` | Create new worktree |
| `path SLUG` | Get worktree path for slug |
| `context PATH` | Generate Task() agent context block |
| `run PATH CMD` | Run command in worktree |
| `git PATH ARGS` | Run git command in worktree |
| `merge SLUG` | Merge worktree branch to main |
| `sync PATH` | Sync state files from worktree |
| `cleanup [--dry-run]` | Remove merged worktrees |
| `relative-path PATH` | Extract worktree-relative path |
| `extract-slug PATH` | Extract slug from any path format |

## Usage in Commands

### /feature Command

Before (50+ lines inline):
```markdown
### Step 1.1.5: Create Worktree (If Preference Enabled)

Check worktree context and preference:

\`\`\`bash
# Check if already in a worktree
IS_WORKTREE=$(bash .spec-flow/scripts/bash/worktree-context.sh in-worktree && echo "true" || echo "false")

# Check worktree auto-create preference
WORKTREE_AUTO=$(bash .spec-flow/scripts/utils/load-preferences.sh --key "worktrees.auto_create" --default "true" 2>/dev/null)
...
# 40 more lines of worktree handling
\`\`\`
```

After (compact pattern):
```markdown
### Step 1.1.5: Create Worktree (If Preference Enabled)

**Handle worktree using centralized skill** (see `.claude/skills/worktree-context/SKILL.md`):

1. Check if worktree auto-create is enabled (preference: `worktrees.auto_create`)
2. If NOT in worktree AND enabled: Create via `worktree-context.sh create`
3. Store `worktree_path` in state.yaml for Task() agents
4. Generate context block for worker prompts
```

### /implement Command (Worker Agents)

Include worktree context in worker prompts:

```markdown
Task(worker):
  prompt: |
    ${WORKTREE_ENABLED ? generate_worktree_context(WORKTREE_PATH) : ""}

    Implement ONE feature from domain memory.
    ...
```

## Path Handling

### The Duplication Bug

When operating in worktrees, paths can get duplicated:
- Bad: `worktrees/epic/004-app/epics/004-app/epics/004-app`
- Good: `epics/004-app`

Use `relative-path` to fix:
```bash
bash .spec-flow/scripts/bash/worktree-context.sh relative-path "worktrees/epic/004-app/epics/004-app"
# Returns: epics/004-app
```

### Extracting Slugs

Extract slug from any path format:
```bash
bash .spec-flow/scripts/bash/worktree-context.sh extract-slug "specs/001-auth/domain-memory.yaml"
# Returns: 001-auth
```

## Related Files

- `.spec-flow/scripts/bash/worktree-context.sh` - Main implementation (540 lines)
- `.spec-flow/scripts/bash/worktree-manager.sh` - Worktree lifecycle management
- `docs/references/git-worktrees.md` - Deep documentation

## Benefits

| Before | After |
|--------|-------|
| 50+ lines inline per command | 5-10 lines referencing skill |
| Duplicated across 3+ commands | Single source of truth |
| Changes require multiple edits | Changes require 1 skill edit |
| Worktree bugs scattered | Worktree bugs centralized |

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.