Григорий Добряков

Howto · разбор

Разбор 12 GitHub · ytrader-bybit

Spec Kit: приёмы работы, когда спека — источник истины, а код — следствие

Спека в репозитории — источник истины, код — следствие. Разбор приёмов GitHub Spec Kit на публичном мультисервисном репозитории: clarify, plan, tasks и contracts до реализации.

CTO Head of AI Architect Tech Lead

Проблема

Наивный вайб-кодинг: один большой промпт → агент сразу пишет код → через час структура непонятна, границы размыты, откат дорогой. На ретро звучит «ИИ не тянет архитектуру» — хотя не было зафиксированного «что строим» и явных открытых вопросов в постановке.

GitHub Spec Kit переводит это в репозиторий: нумерованные specs/00N-*, clarify в spec.md, plan и tasks — реализация после согласования. Ниже — как не превратить SDD в ритуал с пустыми файлами.

Методика

1. Конституция репозитория: .specify/

Перед первой фичей — шаблоны и память проекта, а не «с нуля в чате».

Приём: один раз настроить templates под свой домен (микросервисы, события, API keys) — дальше каждая фича наследует форму, а не стиль случайного промпта.

2. Одна фича — одна папка в specs/

Нумерация NNN-короткое-имя (например 001-model-service, 004-order-manager): параллельные ветки работ, понятный scope в PR и в голове.

Внутри фичи — цепочка файлов, не один SPEC.md на всё:

Файл / каталог Роль
spec.md Что и зачем; user stories; acceptance scenarios
plan.md Архитектурные решения с обоснованием («почему», не «решили так»)
tasks.md Разбивка с зависимостями; что можно параллелить
research.md Внешние ограничения, риски, ссылки
contracts/ Границы между сервисами (сообщения, API) — до кода
checklists/ Gates перед implement
quickstart.md Как проверить фичу руками

Приём: не начинать implement, пока нет plan + tasks; иначе агент строит то, что проще написать, а не то, что согласовано.

3. Clarify — отдельная фаза, не «уточни в чате»

В spec.md секция Clarifications (сессии с датой): вопрос → ответ → зафиксированное решение. Маркеры [NEEDS CLARIFICATION] в тексте спеки запрещают молчаливые допущения.

Пример логики (без привязки к домену): «какой формат сообщений в очереди?» → явный ответ в Clarifications → дальше plan и contracts ссылаются на него.

Приём: пока в spec остаются незакрытые [NEEDS CLARIFICATION], не переходить к plan — иначе план кодирует догадки.

4. Plan с обоснованием, не со списком технологий

В plan каждое нетривиальное решение: альтернатива → почему отвергли → что приняли. Агент при implement тянет не «среднюю температуру по интернету», а ваш контекст из spec + plan.

Приём: спорный пункт (очередь, хранение моделей, auth между сервисами) — только через запись в plan; иначе на code review нечего обсуждать, кроме диффа.

5. Tasks как граф, не плоский TODO

tasks.md: зависимости между задачами, явно выделенное «можно параллелить». Implement по одной задаче с коммитом/тестом — проще откат и проще понять, где агент сошёл с рельс.

Приём: после каждой задачи — прогон checklist фичи; не «всё сразу в конце».

6. Analyze — петля согласованности, не одноразовый gate

Spec Kit предполагает проверку: spec ↔ plan ↔ tasks — противоречия, дубли, пропущенные AC. Это итерация, не галочка перед релизом.

Приём: при смене spec после начала кода — сначала analyze и правка plan/tasks, потом код; иначе drift между «истиной» и репозиторием.

7. Мультисервис: contracts раньше кода

Когда в одном репо несколько сервисов (ws-gateway, order-manager, …), contracts/ в каждой фиче фиксируют сообщения и API до реализации. Иначе второй сервис «догоняет» формат первого в проде.

Приём: общие типы событий и версионирование — в clarify/plan; в #6 это не разбирается (один продуктовый сервис ML).

8. Анти-паттерн, который Spec Kit снимает

Наивный вайб-код SDD через Spec Kit
Один промпт «сделай систему» specify → файл spec
Догадки в голове агента clarify + Clarifications в spec
Код без объяснения выбора plan.md с обоснованием
«Потом допишем тесты» acceptance scenarios в spec, checklists
Монолитный дифф tasks + пошаговый implement

Артефакт

Иллюстрация: github.com/dobryakov/ytrader-bybit — публичный мультисервисный репозиторий с полным циклом Spec Kit: конституция .specify/, нумерованные specs/00N-*, цепочка spec.mdplan.mdtasks.md и contracts/ между сервисами. Разбор опирается на форму артефактов и их согласованность, а не на предметную область.

Для читателя достаточно клонировать репо и пройти один feature-folder по цепочке файлов сверху вниз — без запуска всей системы.

Подпись серии

Где ломается

Для кого и почему

Architect и CTO, которые вводят агентов в разработку: не «какой фреймворк выбрать», а дисциплина артефактов, при которой агент усиливает, а не подменяет проектирование. Если вход ещё в Jira — сначала clarify gate на intake (#11); в репозитории — этот разбор. Дополняет cursor rules в IDE (#7) и eval в релизе (#10): Spec Kit — до кода; eval — после.

Отличие от #6: там — сквозной пример ML-сервиса и ответ на скепсис к ML в проде; здесь — учебник приёмов Spec Kit без углубления в feature store и модели.

Ссылки:

Нужна дисциплина Spec-Driven Development в вашей команде?

Постановка цепочки specify → clarify → plan → tasks так, чтобы агент работал от зафиксированных артефактов, а не от «средней температуры» одного промпта.

Написать на почту

Другие разборы

Серия инженерных разборов: реальная задача → методика → работающий артефакт → честный разбор, где он ломается.

К серии →