Files
dev-skills/av-dev-tasks/skills/tasks/references/task-research.md
T
avandClaude Opus 5 00ddfb0dde av-dev-pm расколот на av-dev-docs и av-dev-tasks
Плагин владел двумя разными вещами сразу — документацией проекта и учётом работ,
— и это мешало обеим. Канон нельзя было поставить без задач, задачи без канона, а
язык проектных текстов лежал внутри скилла canon и потому принадлежал половине.
Теперь плагина два, каждый ставится сам по себе.

av-dev-docs: скиллы canon, docs, init; агенты doc-consistency, doc-code-drift,
doc-wording; скрипт docs.py. av-dev-tasks: скиллы tasks, session; агенты
task-form, task-wording; скрипт tasks.py.

Между собой они зовутся через пространство имён, а не по пути в чужое дерево.
Все относительные ссылки, пересекшие границу плагина, сняты: tasks больше не
указывает в canon, canon не указывает в tasks. Вместо ссылки — имя скилла и
оговорка, что вызов может не разрешиться, и это исход, а не поломка.

То, что нужно обоим дословно, стало вторым общим домом. Словарь «Сопровождение и
эксплуатация» назван в трёх местах трёх плагинов — секция роадмапа, раздел
«Эксплуатация» в architecture.md, тема ревью operations — и ни один из трёх им не
владеет; он уехал в shared/operations.md, а canon.md и скилл задач везут копии.
Три перечня «чем держат проект» уже разъезжались на «метриках и логах» против
«мониторинга», так что ссылка тут не годится: плагин, поставленный в одиночку,
получил бы указатель в никуда. Тем же способом язык: у av-dev-tasks появилась
своя копия language.md.

Копий стало 18 при 8 домах.

Переименования разведены по смыслу, а не заменой строки: где речь о каноне —
av-dev-docs, где об учёте задач — av-dev-tasks. В пайплайне таких мест
одиннадцать, и оба адресата там встречаются вперемешку.

Журналы (DECISIONS, TODO, HISTORY) намеренно не тронуты: они описывают состояние
на момент записи. По той же причине оставлена наблюдённая строка в комментарии
docs.py — она цитирует конфиг живого проекта, а не называет плагин.

Не входит в этот заход и названо отдельно: слияние canon и docs в один скилл,
разделение docs/.pm.json на два конфига и переезд openspec в пайплайн.

Гейт зелёный: копии, фронтматтеры, диаграммы, json. Оба скрипта прогнаны после
переезда — docs.py version и tasks.py check на фикстуре.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-09 14:06:26 +03:00

6.3 KiB

🔬 research — исход работы знание, а не изменение системы

Ответ на вопрос, замер, разведка, проработка сырой мысли. Приёмка — записанный ответ, а не изменённый код.

Общая форма записи (мета, слаг, строка индекса) — task-format.md. Здесь только то, что у этого типа своё.

Схема

Заголовок отвечает на о чём разведка (предмет, а не действие)
Обязательные разделы Вопрос, Куда ляжет ответ
Допустимые сверх того Рамки, Вопросы
Поле места Категория — полка домена беклога
Цель (goal:<слаг>) нет
Индекс BACKLOG.mdSPRINT.md
Берётся в спринт да — но только с заполненным «Вопросом»

Критериев приёмки у research нет, и это не поблажка. Критерии в форме «оракул: тест» разведке натянуты: проверять нечего, пока ответа нет. Её приёмка описывается раздельно — вопрос, на который отвечаем, и место, куда ляжет ответ.

Заголовок формы действия не несёт намеренно. Что делать, ещё неизвестно, и заголовок-действие обещал бы решённость, которой нет. «Подсказка следующего хода», а не «Сделать подсказку следующего хода».

Этот тип вобрал прежний [idea]

Тип idea упразднён. Он значил не род работы, а состояние незаполненности — «первый, второй или третий вопрос теста готовности не отвечается», — а состояние типом быть не может: оно меняется по мере того, как запись дописывают, а тип меняют командой.

Теперь это состояние называется честно: research без раздела «Вопрос» — это сырьё.

сырьё разведка
Раздел Вопрос пуст или отсутствует заполнен
sprint take отказ берёт
Место в секции беклога конец, check --fix сносит туда сам среди прочих
tasks.py list --raw показывает нет

Порядка «по важности» в беклоге по-прежнему нет. Этот порядок производен от типа и заполненности, а не назначен человеком, — потому его и проверяет машина, и потому он не противоречит правилу «порядка нет, есть цель».

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

Алгоритм

  1. Записать вопрос одной фразой. Не тему, а вопрос: не «Разобраться с выводом в терминалах», а «Какими символами рамки печатаются одинаково в Терминале, iTerm и tmux». Вопроса ещё нет — запись заводится сырьём и лежит в конце секции, пока вопрос не появится.
  2. Назвать, куда ляжет ответ: docs/research/<slug>.md, ADR, тело этой задачи. Место называется заранее, иначе ответ остаётся в переписке, а через квартал разведку заказывают заново.
  3. Ограничить рамками, если разведка может утечь: сколько времени, какие источники, что заведомо вне.
  4. Провести разведку и записать ответ по названному адресу. Числа — с провенансом: с командой или условиями, которыми получены. Число без источника проход ревью обязан читать как условие, а не как замер.
  5. Разложить исход на задачи — если он их родил. Разведка кончается одним из трёх: заведены задачи, записано знание, отказ. Отказ — полноправный исход: «проверили, не проблема» экономит спринт.
  6. Закрытьclose <слаг> --implemented, когда ответ записан. Файл удаляется: запись ответа и есть след, второго не нужно. Ушла без ответа — close --reason, и строка уезжает в REJECTED.md.

Что видит машина, а что человек

check и sprint take смотрят на наличие непустых разделов Вопрос и Куда ляжет ответ, считают сырьё отдельной строкой здоровья и держат его в конце секции. Годность вопроса — человеку: «вопрос это или тема» машина не различает, и check о годности молчит намеренно.

Штурм сырья, дробление исхода на задачи и тест «части мерджатся порознь» — split.md.