Навык подготавливает отдельное рабочее пространство для задачи, чтобы изменения не затрагивали текущую ветку. Сначала проверяет, не работает ли agent уже в изолированной среде; затем предпочитает native worktree tools и использует git worktree только как запасной вариант.
Возможности
- Определяет linked worktree и отличает его от обычного checkout и submodule.
- Перед созданием worktree запрашивает согласие, если предпочтение пользователя ещё не указано.
- Выбирает папку с учётом инструкций и существующих
.worktreesилиworktrees; проверяет, что она добавлена в.gitignore. - Устанавливает зависимости по конфигам проекта для Node.js, Rust, Python и Go.
- Запускает baseline-тесты и сообщает, если они падают.
Когда использовать
- Перед реализацией функции, которую нужно изолировать от текущей работы.
- Перед выполнением плана реализации.
- Если нужно проверить, уже ли agent работает в worktree, или подготовить чистую среду с установленными зависимостями и пройденными тестами.
Примеры
Проверить, находится ли текущая папка в отдельном worktree:
GIT_DIR=$(cd "$(git rev-parse --git-dir)" 2>/dev/null && pwd -P)
GIT_COMMON=$(cd "$(git rev-parse --git-common-dir)" 2>/dev/null && pwd -P)
BRANCH=$(git branch --show-current)
Проверить, что папка для worktree игнорируется Git:
git check-ignore -q .worktrees 2>/dev/null || git check-ignore -q worktrees 2>/dev/null
Создать worktree с помощью Git, если native worktree tools недоступны:
path="$LOCATION/$BRANCH_NAME"
git worktree add "$path" -b "$BRANCH_NAME"
cd "$path"
Установка
npx skills add https://github.com/obra/superpowers --skill using-git-worktrees