"Рабочий контур проекта под китом: взять задачу, записать критерий закрытия, довести её шагами с настоящей проверкой, зафиксировать знание в базе и закоммитить базу. Блокировка становится вопросом оператору в рабочей памяти. Звать словами «работаем», «продолжай», «возьми задачу» или /drive <задача>. Не для разового вопроса по коду и не для свободного обсуждения."
Install
npx skillscat add t8nax/agents-kit/drive Install via the SkillsCat registry.
Навык: drive
Сессия ведёт работу; оператор делает только то, чего сессия не может.
Знание базы, оглавление решений, инварианты и память этой копии поданы в начале сессии. Их нет — работу не начинать и знание не писать:
- кит промолчал целиком — эта рабочая копия под китом не числится: сказать, что её берут под кит скиллом
/onboard; - пришёл текст разрыва —
/onboardего не чинит: показать, что разорвано, и ждать оператора.
Взять задачу
До первой стадии прочитать flow.md в корне базы. Файла нет — его довезёт повторный base-init.ps1, сказать оператору. Стадий нет — написать флоу с оператором и закоммитить. Без флоу работа не начинается, порядок по привычке не подставляется.
- Память есть — прочитать файлы из строки
Решенияи сверить память с репозиторием: та ли ветка, есть ли отмеченные результаты, проходят ли отмеченные проверки. Разошлось — верен репозиторий, память поправить. Есть заполненныйответ:— вобрать его и закоммитить память. Дальше — с первой незакрытой строки «Шагов», а пусты они — нарезать шаги первой неотмеченной стадии «Флоу» и идти с них. - Памяти нет — завести файл по адресу из хука, по шаблону
task-memory.md, нарезать шаги первой стадии и закоммитить. - Память не подана — как велит текст хука о ней.
- Задача — номер записи бэклога (
ORD-12— буквы у базы свои) — взять запись поbacklog-record.md. - Задачи нет ни в памяти, ни в словах оператора — флоу задаёт порядок выбора из бэклога: взять запись по нему и назвать оператору номер. Не задаёт — спросить, показав бэклог скиллом
/backlog. Работу сессия не выдумывает.
Критерий закрытия пишется до первой стадии флоу и уходит оператору вопросом на подтверждение. По критерию видно «сделано» и «не сделано»; «работает лучше» критерием не бывает.
Решения читаются до первой стадии флоу и когда работа их задела — раздел «Решения» base-layout.md.
Вести работу
Стадии флоу проходятся по порядку; стадия пройдена, когда её выход записан в «Флоу» памяти. Стадия не отмечается, пока в «Шагах» осталась незакрытая строка: последний шаг закрывается своим коммитом памяти, и тем же ходом следом идёт коммит перехода. Переход — одно обновление памяти: стадия отмечается выходом или причиной пропуска, все её шаги уходят из «Шагов», и тем же обновлением режутся шаги следующей стадии; нужное дальше — ответ исследования, условие оператора — остаётся в «Фактах». Работа следующей стадии начинается после этого обновления.
Сбылось условие возврата — работа идёт к названной стадии: отметка снимается с неё и со всех стадий после неё, пройденных и пропущенных: на новом круге условие пропуска может не сбыться. У каждой снятой круг в строке растёт на единицу, а записанное прошлым кругом — выход или причина пропуска — из строки уходит; нужное дальше — в «Факты», как при пройденной стадии. Незакрытые шаги покинутой стадии уходят, а шаги стадии, открытой заново, режутся — тем же обновлением.
Кто проходит стадию — ключ исполнитель по base-layout.md. Флоу молчит о нужном сейчас или неоднозначен — вопрос оператору, ответ дописывается во флоу явной правкой.
Названных ключом помощники зовёт оркестратор, каждого — своим шагом: результат — что помощник вернул, проверка — на чём его ответ стоит.
Внутри стадии работа идёт шагами «Шагов»:
- Шаги режутся до работы: входя в стадию, записать её работу строками
[ ]; новый шаг по ходу — сначала строка, потом работа. Шаги режет каждая стадия, в том числе та, чей выход — сама запись в памяти. - У шага один результат, и он предъявляется — коммит, файл спеки, раздел документации. Результаты, проверяемые порознь, — разные шаги.
- Исследование — тоже шаг, и строка его — вопрос, а не тема. Результат — ответ одной-двумя строками, проверка — на чём он стоит: файл и строка, вывод команды.
- Шаг закрывается в том же ходе, который увидел результат проверки, до работы над следующим: проверка прогнана по-настоящему — по порядку коммит кода, если результат шага — он, строка получает
[x], результат и чем проверено, память коммитится. Следующий шаг начинается после коммита памяти; остановила его сверка — сначала чинить названное; отметок задним числом и пачкой не бывает. Отпал шаг — закрыть его причиной пропуска, а не стереть. - Упёрлись в оператора — вопрос в «Оператору» по форме
task-memory.md, его заголовок — в сводку, дальше незаблокированное. Незаблокированного нет — ждать оператора. - Работа полезла за критерий — остановиться и назвать вопросом, что вылезло.
- Замечено в правке этой задачи — чинится здесь же, своим шагом, и случай 6 не про него. Своё — что задача внесла или переписала, а не файл, в котором она это сделала. Чинить дорого — вопрос оператору по случаю 5, а не запись в бэклог.
- Замечено в прежнем коде, и критерию оно не нужно — записью в бэклог сразу, по
backlog-record.md, и дальше. Нужное критерию — случай 6.
Ждать оператора
- Вся оставшаяся работа ждёт ответа — память записана и закоммичена, как в «Закончить сессию», и последним действием хода в фоне запускается
pwsh -NoProfile -File <скрипты>\await-answer.ps1 -Memory <адрес памяти>, где<скрипты>— абсолютный путь..\..\scripts\от каталога этого скилла. Потом сводка, где сказано, что сессия ждёт ответа. - Ожидание кончилось — оно называет строкой, чем. Пришёл ответ — перечитать память с диска и вобрать. Вопросов нет — перечитать и идти дальше. Памяти нет, она чужая или ожидание сломалось — показать строку оператору и не ждать.
- Разбудил оператор, а не ожидание — всё равно перечитать память с диска.
- Вобрали, а вопросы остались — идёт незаблокированное, а нет его — ожидание запускается снова.
Закончить сессию
- Память: сделанное уже отмечено по ходу работы, несделанное — строками
[ ]. - Знание, дорогое для переоткрытия, — в базу по тесту входа
base-layout.md; решение — в файлdecisions/своей области или в новый со строкойкогда:. - Коммит базы явными путями, код — отдельно в рабочую копию. Коммит остановлен сверкой — чинить названное, а не обходить.
- Сводка: сделано · ждёт оператора · записано в бэклог с номерами · следующий шаг. Результат, а не пересказ диффа.
Закрыть задачу
Критерий выполнен и проверен, стадии флоу пройдены или пропущены по своему условию — удалить память по task-memory.md и сказать оператору, что задача закрыта. «Почти сделано» не бывает: остаток критерия доделывается, а в бэклог не уезжает; не выходит доделать — вопрос оператору. Сужает критерий только он.
Чего не делать
- Не переписывать критерий задним числом.
- Не ослаблять выход стадии, даже если задача кажется мелкой; не править флоу молча.
- Не вести вторую задачу в той же копии и не заводить память мимо адреса из хука.