# EnterWorktree

Створює ізольоване Git-робоче дерево (worktree) на новій гілці або перемикає сесію в наявне робоче дерево поточного репозиторію, щоб паралельна чи експериментальна робота могла тривати без втручання в основний checkout.

## Коли використовувати

- Користувач явно каже "worktree" — наприклад "start a worktree", "create a worktree" або "work in a worktree".
- Інструкції проєкту в `CLAUDE.md` чи постійна памʼять спрямовують вас використовувати worktree для поточного завдання.
- Ви хочете продовжити завдання, яке раніше було налаштоване як worktree (передайте `path`, щоб знову увійти).
- Кілька експериментальних гілок мають співіснувати на диску без постійних перемикань.
- Тривале завдання має бути ізольованим від непов'язаних правок у основному робочому дереві.

## Параметри

- `name` (string, необовʼязковий): Імʼя для нового каталогу worktree. Кожен сегмент, розділений `/`, може містити лише літери, цифри, крапки, підкреслення та тире; повний рядок обмежений 64 символами. Якщо відсутній і `path` також відсутній, генерується випадкове імʼя. Взаємовиключний з `path`.
- `path` (string, необовʼязковий): Шлях у файловій системі до наявного worktree поточного репозиторію для перемикання. Має зʼявлятися в `git worktree list` для цього репозиторію; шляхи, що не зареєстровані як worktree поточного репо, відхиляються. Взаємовиключний з `name`.

## Приклади

### Приклад 1: Створення нового worktree з описовим імʼям

```
EnterWorktree(name="feat/okta-sso")
```

Створює `.claude/worktrees/feat/okta-sso` на новій гілці, що базується на `HEAD`, потім перемикає робочий каталог сесії в нього. Усі наступні правки файлів та команди оболонки працюють усередині цього worktree, доки ви не вийдете.

### Приклад 2: Повторний вхід у наявний worktree

```
EnterWorktree(path="/Users/me/repo/.claude/worktrees/feat/okta-sso")
```

Поновлює роботу в раніше створеному worktree. Оскільки ви ввійшли через `path`, `ExitWorktree` не видалить його автоматично — вихід з `action: "keep"` просто повертає в оригінальний каталог.

## Примітки

- Не викликайте `EnterWorktree`, якщо користувач явно не попросив або інструкції проєкту цього не вимагають. Звичайні запити на перемикання гілок чи виправлення помилок мають використовувати звичайні Git-команди, а не worktree.
- При виклику всередині Git-репозиторію інструмент створює worktree в `.claude/worktrees/` і реєструє нову гілку на основі `HEAD`. Поза Git-репозиторієм він делегує налаштованим хукам `WorktreeCreate` / `WorktreeRemove` у `settings.json` для ізоляції, незалежної від VCS.
- Одночасно активна лише одна сесія worktree. Інструмент відмовляється запускатися, якщо ви вже всередині сесії worktree; спочатку вийдіть з `ExitWorktree`.
- Використовуйте `ExitWorktree`, щоб вийти посеред сесії. Якщо сесія завершується, коли ви ще всередині новоствореного worktree, користувача запитають, чи зберегти його, чи видалити.
- Worktree, увійдені через `path`, вважаються зовнішніми — `ExitWorktree` з `action: "remove"` їх не видалить. Це запобіжник для захисту worktree, якими користувач керує вручну.
- Новий worktree успадковує вміст поточної гілки, але має незалежний робочий каталог та індекс. Підготовлені та непідготовлені зміни в основному checkout не видимі всередині worktree.
- Порада з іменування: додавайте префікс типу роботи (`feat/`, `fix/`, `spike/`), щоб кілька одночасних worktree було легко розрізняти в `git worktree list`.
