кейс · разработка

Сквозная разработка: от идеи владельца до принятого кода

Так у нас идёт разработка. Владелец подкидывает идею — а дальше её раскачивают, формализуют, планируют, раскладывают на дерево задач и делают волнами агентов, а агенты разных движков критикуют и ревьюят каждый шаг. Каждый шаг — задача в SKEIN, к которой приложено всё: решения, исследования, раунды критики, файлы. Весь путь от идеи до принятого кода можно отследить. Слияние и деплой остаются за человеком.

«Хочу, чтобы…»идея, иногда одной фразой
Отвечает на вопросы3–5 за ход, у каждого варианты и рекомендация
постановкаРаскачка задачиzask
Разведкакод, интерфейс, права, похожие фичи
Черновик постановкидопущения подсвечены
Опрос по рубрикамцель, поведение, границы, интерфейс до иконки, правабатч 1
zask-readyили zask-gaps с пробелами

Технические вопросы zask не решает. Пишет «решают разработчики».

  1. коммент[исходная формулировка] снимок до правки
  2. задача[zask] Повтор платежа переписана на месте
  3. меткиzask zask-gaps
  4. описаниеответы Q → A после каждого батча
  5. меткаzask-ready
  6. связиrelated, дубли закрыты
Отвечает батчамии задаёт конфиг: кто пишет, кто критикует
этап 1Опрос и сбор контекстаzdox
ВедущийClaude, Codex или Grok
Разведка репозиториевсвежие копии, реальный код
Рекап пониманияпри auto решает, нужны ли спека и план
⟦zdox-config⟧ critics.spec = grok, codex, fable · stage3.author = grok · stage4.author = codex · critics.review = grok, codex
  1. захватголовная sk-412 · in_progress
  2. меткаzdox и коммент «взята прогоном»
  3. описаниерекап и реестр исходных задач
  4. эпик«Планирование»
Решает развилкикритики помечают их [USER-DECISION], приходят одним батчем
СТОП-вопросыновая зависимость, сервис, ломка контракта
этапы 2–4Спека, план, тест-планzdox
спека
пишет ведущийчто, зачем, контракты
круг 1
grokcodexfable
READY-FOR-PLANNING
план
пишет grokпотоки и группы
круг 1
grokcodex
PLAN-READY
тест-план
пишет codexматрица покрытия
круг 1
grokcodex
TESTS-READY

Критики работают параллельно. Каждую находку ведущий сверяет с источником. Движок, не давший своих находок, со следующего круга снимают.

  1. задача«Этап 2 · Спека»
  2. задачи«Критика раунд N» → по одной на движок
  3. вложениеspec-r1-grok.md лог каждого критика
  4. коммент«codex#3 отклонено, потому что…»
  5. вложениеspec.md
  6. вложениеplan.md и логи кругов
  7. вложениеtests.md и логи кругов
  8. коммитодин круг критики = один коммит
этап 5Дерево задачzdox
заводит grokтело задачи: выдержка спеки, приёмка, тесты
круг 1
критик полноты codexтребование → задача → тест, без дыр
  1. эпик«Реализация», группы G0…G3
  2. задачикаждая со спекой, приёмкой и тестами в теле
  3. связиblocks: граф зависимостей
  4. вложениеtasks-analyze.md и лог критика
  5. эпик«Ревью кода»
Решает, если ревью не сходитсядва круга без улучшения или критикалы после третьего
Смотрит в любую сессиюtmux attach
этап 6Волны разработкиzdox · zagents · zcoderev

Один исполнитель на репозиторий. Это живая сессия агента в tmux, она ведёт все волны своего потока.

G0 · общий контракт: остальные ждут
skein-api[сокол] · tmux
волна 1ревьюфикс ⟲волна 2ревьюпоток готов
skein-web[ворон] · tmux
волна 1ревьюволна 2ревьюфикс ⟲поток готов
skein-frontend[рысь] · tmux
волна 1ревьюфикс ⟲ревьюволна 2поток готов
Задача → коммитзахватил, сделал, один коммит, закрыл. В конце волны тесты
Ревью волны · zcoderevревьюеры под стек: go, typescript, html-css…
codexgrok
круг 1
Триаж и фиксбольше двух критикалов: ещё круг по фиксам
сокол Поле обязательно или нет? Жду ответа. ведущий Обязательно, см. ИНВ-3 в спеке.
  1. комментреестр: сокол / sokol · skein-api
  2. захват[сокол] в заголовке задачи
  3. коммитодна задача = один коммит
  4. закрыта[агент сокол · волна 412/api/1]
  5. комментсводка волны, «Волна 1» в заголовке группы
  6. задачи[coderev] по одной на движок, отчёт вложением
  7. закрытатаблица находок critical / warning / info
  8. коммент[круг ревью] волна 412/api/1 · круг 2
  9. коммент[ретро] исполнитель пишет трение сразу
  10. коммент[набор] skein-api · волна 2 тесты волны
Решает, если красное не уходитпосле трёх кругов
этап 7Финальные тесты и приёмкаzdox
Сверка контрактовмежду потоками
Все integration и e2eкрасное чинит исполнитель этого потока
Мутационный прогонвыжившие мутанты по одному
Приёмкаисходные задачи владельца
  1. коммент[сверка контрактов] пункты, круги
  2. коммент[mutation] выжило, пробелы, фиксы
  3. закрытаисходные задачи с коммитами
  4. закрытодерево снизу вверх, головная последней
Принимает правки скилларетро только предлагает
Слияние и деплойветки zdox не трогает
этап 8Ретроспективаzdox
Журнал трениязаписи [ретро] со всех этапов
Числа прогонаволны, круги, сходимость критики
Предложенные правкифайл, раздел, текст
  1. задачаретро в эпике ретроспектив, связь с головной
вся схема
  1. Идея. Владелец пишет, чего хочет. Иногда одной фразой.
  2. Разведка. zask сначала читает код и интерфейс, чтобы не спрашивать то, что там уже видно. Потом пишет черновик постановки.
  3. Опрос. Вопросы идут батчами по 3–5, у каждого варианты и рекомендация. После каждого батча ответы ложатся в описание задачи.
  4. Вердикт. Блокирующих пробелов нет, поэтому метка zask-ready. Технические решения остаются разработчикам.
  5. zdox берёт задачу. Захватывает её, читает конфиг прогона, смотрит репозитории и задаёт владельцу свои вопросы. Рекап пишется в описание.
  6. Спека. Ведущий пишет её сам: что делаем, зачем, контракты и инварианты. Несущие решения проверяет спайком.
  7. Критика спеки. Критики трёх движков читают спеку параллельно. Ведущий сверяет находки с источником, правит и запускает новый круг. Продуктовые развилки уходят владельцу.
  8. План. План пишет другой движок. Он режет работу на потоки по репозиториям и на группы задач. Его тоже критикуют кругами.
  9. Тест-план. Каждому требованию свой тест и момент прогона: в волне или в финале. И снова круги критики.
  10. Дерево задач. План переносится в SKEIN задачами с зависимостями. Критик полноты проверяет, что ни одно требование не потерялось.
  11. Исполнители. На каждый репозиторий поднимается одна сессия агента в tmux. Репозитории идут параллельно, внутри репозитория строго по порядку.
  12. Волна. Исполнитель берёт группы задач целиком: захватил, сделал, один коммит, закрыл. В конце волны гоняет тесты.
  13. Ревью. Волну проверяет zcoderev: Codex и Grok параллельно, ревьюеры подобраны под стек. Каждый движок пишет отчёт в свою задачу.
  14. Фиксы. Подтверждённые находки чинит тот же исполнитель. Больше двух критикалов значит ещё круг ревью. Ревью не сходится, тогда решает владелец.
  15. Вопрос вместо догадки. Наткнулся на неясность, исполнитель спрашивает ведущего и ждёт. Человек может открыть любую сессию и смотреть.
  16. Следующие волны. Новая волна начинается после ревью предыдущей. Потоки друг друга не ждут, кроме задач с общим контрактом.
  17. Финал. Сверка контрактов между потоками, все integration и e2e, мутационный прогон. Красное чинит исполнитель того потока.
  18. Приёмка. Исходные задачи владельца закрываются с коммитами. Дерево закрывается снизу вверх, головная последней.
  19. Ретро. Трение записывали по ходу. Ретро собирает его и предлагает правки скилла, а принимает их человек. Слияние и деплой тоже за ним.
  20. Всё в SKEIN. От фразы владельца до последнего коммита: задачи, круги критики, отчёты ревью, решения и вопросы. Любой шаг можно найти и открыть.

Задач — очень много. И это нормально.

На одну задачу, поставленную владельцем, в SKEIN вырастает дерево, в котором задач больше, чем вы прочитаете за вечер. Это не беда, а норма работы через агентов: агенты раскладывают работу подробно, потому что им так удобнее её делать и проверять.

дерево одной задачи владельца: задачи · эпики · закрытые

Человека это не накрывает: задачи, которые агент разложил сам, не превращаются в поток уведомлений. Вам приходит только ваше — а дерево ждёт, когда вы спросите «Эй, агент, как там дела?».

Что видно постфактум

  • У каждой задачи — происхождение: человек, агент по поручению или агент сам.
  • Каждое действие привязано к сессии агента: от строки в аудите можно дойти до его чата.
  • Решения, исследования и раунды критики приложены к задачам, а не разбросаны по чатам.
  • Коммиты привязаны к задачам; итог закрытия честный: done, won't do, duplicate, superseded.

Так мы делаем SKEIN самим SKEIN — и всё остальное тоже.

← Все кейсы Кейс: поддержка →