# EnterWorktree

Создаёт изолированный Git worktree в новой ветке или переключает сессию в существующий worktree текущего репозитория, чтобы параллельная или экспериментальная работа велась без влияния на основной чекаут.

## Когда использовать

- Пользователь явно говорит «worktree» — например, «создай worktree», «начни worktree» или «работай в worktree».
- Инструкции проекта в `CLAUDE.md` или постоянная память предписывают использовать worktree для текущей задачи.
- Вы хотите продолжить задачу, ранее настроенную как worktree (передайте `path`, чтобы вернуться в неё).
- Несколько экспериментальных веток должны сосуществовать на диске без постоянных переключений checkout.
- Долгую задачу нужно изолировать от несвязанных правок в основном рабочем дереве.

## Параметры

- `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`, затем переключает рабочий каталог сессии в него. Все последующие правки файлов и shell-команды выполняются внутри этого worktree до выхода.

### Пример 2: возврат в существующий worktree

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

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

## Примечания

- Не вызывайте `EnterWorktree`, пока пользователь не попросил явно или инструкции проекта не требуют. Обычные переключения веток или исправления багов должны использовать обычные Git-команды, а не worktrees.
- Когда вызывается внутри Git-репозитория, инструмент создаёт worktree в `.claude/worktrees/` и регистрирует новую ветку на основе `HEAD`. Вне Git-репозитория делегирует настроенным хукам `WorktreeCreate` / `WorktreeRemove` в `settings.json` для VCS-независимой изоляции.
- Одновременно активна только одна сессия worktree. Инструмент отказывается работать, если вы уже внутри сессии worktree; сначала выйдите через `ExitWorktree`.
- Используйте `ExitWorktree`, чтобы покинуть середину сессии. Если сессия завершится, пока вы всё ещё внутри только что созданного worktree, пользователю будет предложено сохранить или удалить его.
- Worktrees, в которые вы вошли через `path`, считаются внешними — `ExitWorktree` с `action: "remove"` не удалит их. Это защитная мера для worktrees, которыми пользователь управляет вручную.
- Новый worktree наследует содержимое текущей ветки, но имеет независимый рабочий каталог и индекс. Застейдженные и незастейдженные изменения в основном чекауте не видны внутри worktree.
- Совет по именованию: префиксируйте типом работы (`feat/`, `fix/`, `spike/`), чтобы несколько параллельных worktrees было легко различить в `git worktree list`.
