Update SKILL documentation for phase and bug workflows. Clarified branch creation commands to specify main instead of HEAD, emphasized the importance of not committing phase changes to the bug tree, and provided detailed instructions for managing worktrees and agent interactions. Enhanced clarity on handling dependencies and worktree paths to prevent conflicts.
ci / server (push) Failing after 3m36s
ci / client (push) Successful in 20s

This commit is contained in:
Leonid Pershin
2026-08-20 10:29:56 +03:00
parent b14d27dd81
commit 9c49c8b3a6
7 changed files with 82 additions and 28 deletions
+31 -8
View File
@@ -39,26 +39,41 @@ description: Берёт ровно одну фазу из среза в docs/pha
**пропусти**: ветку не создавай, 🔄 не сбрасывай, садись в существующий
worktree. «already exists» здесь не гонка.
Ветка — и есть заявка, потому что git не даст создать её дважды:
Ветка — и есть заявка, потому что git не даст создать её дважды. Указывай **`main`**, не текущий
HEAD: IDE пользователя часто стоит на `bug/…`, и ветка от HEAD утащит фазу на чужую историю.
```bash
git branch phase/25-golden-fixtures
git branch phase/25-golden-fixtures main
```
Команда упала с «already exists» — значит фазу взял другой агент между твоей проверкой и попыткой.
Не спорь, вернись к выбору и возьми следующую.
Ветка создалась — фаза твоя. Сразу пометь её 🔄 в `docs/phases/README.md` **в основном дереве**,
отдельным коммитом, состоящим только из этой строки. Это единственная правка, которую ты делаешь
вне своего worktree, и она нужна по двум причинам: соседние агенты видят занятое, а пустая свежая
ветка ещё ничем не отличается от слитой — по ней одной понять, что фаза в работе, нельзя.
Ветка создалась — фаза твоя. Сразу пометь её 🔄 в `docs/phases/README.md` **на `main`**, отдельным
коммитом из одной этой строки. Соседи читают занятость с `main`, а пустая свежая ветка ещё ничем
не отличается от слитой — по ней одной понять, что фаза в работе, нельзя.
Пометить 🔄 надо **до** первой строчки кода, а не после.
Как доставить этот коммит, зависит от основного дерева (`git -C <корень> branch --show-current`):
- дерево **уже на `main`** — правь README там и коммить. Это единственная правка вне своего
worktree фазы.
- дерево на `bug/…` или другой ветке пользователя — **не** `checkout`, **не** коммить в это
дерево. Одноразовый worktree `main`:
```bash
git worktree add <scratch>/wt-claim-main main
# README ⬜→🔄, commit, затем:
git worktree remove <scratch>/wt-claim-main
```
Пометить 🔄 надо **до** первой строчки кода, а не после. Коммит «Mark phase N…», который уже
уехал в `bug/…`, не revertь и не переписывай историю пользователя — доведи 🔄 на `main` через
`wt-claim-main` (cherry-pick, если коммит тот же).
## Где работать
В своём worktree, а не в общем дереве. Иначе два агента правят одни файлы и роняют друг другу
сборку.
сборку — или, хуже, пишут код фазы в `bug/…` пользователя.
```bash
git worktree add <путь-в-scratchpad>/wt-phase-25 phase/25-golden-fixtures
@@ -67,6 +82,14 @@ git worktree add <путь-в-scratchpad>/wt-phase-25 phase/25-golden-fixtures
Путь — **вне репозитория**; каталог scratchpad этой сессии подходит. Worktree внутри репозитория
засоряет `git status` и попадёт в глаза следующему ревью.
Cursor workspace по умолчанию — корень IDE, не этот worktree. После `worktree add` каждый
`Read` / `Write` / `StrReplace` / `Shell` идёт **абсолютным путём** (или `working_directory`)
внутрь `…/wt-phase-25`. Относительный `docs/phases/README.md` пишется в ветку, которую сейчас
держит пользователь. `git add` / `commit` без `-C` worktree — то же самое.
Занятость чужих фаз читай так: `git show main:docs/phases/README.md` и
`git branch --list "phase/*"` — не рабочую копию на `bug/…`.
Дальше вся работа там. В конце worktree удаляется (`git worktree remove --force`), ветка остаётся.
Что нужно знать про worktree: