t8nax

drive

"Рабочий контур проекта под китом: взять задачу, записать критерий закрытия, довести её шагами с настоящей проверкой, зафиксировать знание в базе и закоммитить базу. Блокировка становится вопросом оператору в рабочей памяти. Звать словами «работаем», «продолжай», «возьми задачу» или /drive <задача>. Не для разового вопроса по коду и не для свободного обсуждения."

t8nax 0 Updated 4w ago
GitHub

Install

npx skillscat add t8nax/agents-kit/drive

Install via the SkillsCat registry.

SKILL.md

Навык: drive

Сессия ведёт работу; оператор делает только то, чего сессия не может.

Знание базы, оглавление решений, инварианты и память этой копии поданы в начале сессии. Их нет — работу не начинать и знание не писать:

  • кит промолчал целиком — эта рабочая копия под китом не числится: сказать, что её берут под кит скиллом /onboard;
  • пришёл текст разрыва — /onboard его не чинит: показать, что разорвано, и ждать оператора.

Взять задачу

До первой стадии прочитать flow.md в корне базы. Файла нет — его довезёт повторный base-init.ps1, сказать оператору. Стадий нет — написать флоу с оператором и закоммитить. Без флоу работа не начинается, порядок по привычке не подставляется.

  • Память есть — прочитать файлы из строки Решения и сверить память с репозиторием: та ли ветка, есть ли отмеченные результаты, проходят ли отмеченные проверки. Разошлось — верен репозиторий, память поправить. Есть заполненный ответ: — вобрать его и закоммитить память. Дальше — с первой незакрытой строки «Шагов», а пусты они — нарезать шаги первой неотмеченной стадии «Флоу» и идти с них.
  • Памяти нет — завести файл по адресу из хука, по шаблону task-memory.md, нарезать шаги первой стадии и закоммитить.
  • Память не подана — как велит текст хука о ней.
  • Задача — номер записи бэклога (ORD-12 — буквы у базы свои) — взять запись по backlog-record.md.
  • Задачи нет ни в памяти, ни в словах оператора — флоу задаёт порядок выбора из бэклога: взять запись по нему и назвать оператору номер. Не задаёт — спросить, показав бэклог скиллом /backlog. Работу сессия не выдумывает.

Критерий закрытия пишется до первой стадии флоу и уходит оператору вопросом на подтверждение. По критерию видно «сделано» и «не сделано»; «работает лучше» критерием не бывает.

Решения читаются до первой стадии флоу и когда работа их задела — раздел «Решения» base-layout.md.

Вести работу

Стадии флоу проходятся по порядку; стадия пройдена, когда её выход записан в «Флоу» памяти. Стадия не отмечается, пока в «Шагах» осталась незакрытая строка: последний шаг закрывается своим коммитом памяти, и тем же ходом следом идёт коммит перехода. Переход — одно обновление памяти: стадия отмечается выходом или причиной пропуска, все её шаги уходят из «Шагов», и тем же обновлением режутся шаги следующей стадии; нужное дальше — ответ исследования, условие оператора — остаётся в «Фактах». Работа следующей стадии начинается после этого обновления.

Сбылось условие возврата — работа идёт к названной стадии: отметка снимается с неё и со всех стадий после неё, пройденных и пропущенных: на новом круге условие пропуска может не сбыться. У каждой снятой круг в строке растёт на единицу, а записанное прошлым кругом — выход или причина пропуска — из строки уходит; нужное дальше — в «Факты», как при пройденной стадии. Незакрытые шаги покинутой стадии уходят, а шаги стадии, открытой заново, режутся — тем же обновлением.

Кто проходит стадию — ключ исполнитель по base-layout.md. Флоу молчит о нужном сейчас или неоднозначен — вопрос оператору, ответ дописывается во флоу явной правкой.

Названных ключом помощники зовёт оркестратор, каждого — своим шагом: результат — что помощник вернул, проверка — на чём его ответ стоит.

Внутри стадии работа идёт шагами «Шагов»:

  1. Шаги режутся до работы: входя в стадию, записать её работу строками [ ]; новый шаг по ходу — сначала строка, потом работа. Шаги режет каждая стадия, в том числе та, чей выход — сама запись в памяти.
  2. У шага один результат, и он предъявляется — коммит, файл спеки, раздел документации. Результаты, проверяемые порознь, — разные шаги.
  3. Исследование — тоже шаг, и строка его — вопрос, а не тема. Результат — ответ одной-двумя строками, проверка — на чём он стоит: файл и строка, вывод команды.
  4. Шаг закрывается в том же ходе, который увидел результат проверки, до работы над следующим: проверка прогнана по-настоящему — по порядку коммит кода, если результат шага — он, строка получает [x], результат и чем проверено, память коммитится. Следующий шаг начинается после коммита памяти; остановила его сверка — сначала чинить названное; отметок задним числом и пачкой не бывает. Отпал шаг — закрыть его причиной пропуска, а не стереть.
  5. Упёрлись в оператора — вопрос в «Оператору» по форме task-memory.md, его заголовок — в сводку, дальше незаблокированное. Незаблокированного нет — ждать оператора.
  6. Работа полезла за критерий — остановиться и назвать вопросом, что вылезло.
  7. Замечено в правке этой задачи — чинится здесь же, своим шагом, и случай 6 не про него. Своё — что задача внесла или переписала, а не файл, в котором она это сделала. Чинить дорого — вопрос оператору по случаю 5, а не запись в бэклог.
  8. Замечено в прежнем коде, и критерию оно не нужно — записью в бэклог сразу, по backlog-record.md, и дальше. Нужное критерию — случай 6.

Ждать оператора

  1. Вся оставшаяся работа ждёт ответа — память записана и закоммичена, как в «Закончить сессию», и последним действием хода в фоне запускается pwsh -NoProfile -File <скрипты>\await-answer.ps1 -Memory <адрес памяти>, где <скрипты> — абсолютный путь ..\..\scripts\ от каталога этого скилла. Потом сводка, где сказано, что сессия ждёт ответа.
  2. Ожидание кончилось — оно называет строкой, чем. Пришёл ответ — перечитать память с диска и вобрать. Вопросов нет — перечитать и идти дальше. Памяти нет, она чужая или ожидание сломалось — показать строку оператору и не ждать.
  3. Разбудил оператор, а не ожидание — всё равно перечитать память с диска.
  4. Вобрали, а вопросы остались — идёт незаблокированное, а нет его — ожидание запускается снова.

Закончить сессию

  1. Память: сделанное уже отмечено по ходу работы, несделанное — строками [ ].
  2. Знание, дорогое для переоткрытия, — в базу по тесту входа base-layout.md; решение — в файл decisions/ своей области или в новый со строкой когда:.
  3. Коммит базы явными путями, код — отдельно в рабочую копию. Коммит остановлен сверкой — чинить названное, а не обходить.
  4. Сводка: сделано · ждёт оператора · записано в бэклог с номерами · следующий шаг. Результат, а не пересказ диффа.

Закрыть задачу

Критерий выполнен и проверен, стадии флоу пройдены или пропущены по своему условию — удалить память по task-memory.md и сказать оператору, что задача закрыта. «Почти сделано» не бывает: остаток критерия доделывается, а в бэклог не уезжает; не выходит доделать — вопрос оператору. Сужает критерий только он.

Чего не делать

  • Не переписывать критерий задним числом.
  • Не ослаблять выход стадии, даже если задача кажется мелкой; не править флоу молча.
  • Не вести вторую задачу в той же копии и не заводить память мимо адреса из хука.