Часть 22. Практический зачёт
Эта часть заменяет пассивный тест практической проверкой. Цель — доказать, что вы можете провести фичу через цикл SDD с Qwen Code CLI: от намерения до проверки.
Блок 1. Быстрые вопросы
Ответьте письменно, без Qwen Code.
- Что является источником истины в SDD?
- Чем
QWEN.mdотличается отspecs/tech-stack.md? - Почему спецификация фичи пишется до реализации?
- Что должно быть в
validation.md? - Когда нужно делать перепланирование?
- Почему
/clearполезен между фазами работы? - Какие три вопроса нужно задать перед созданием спецификации фичи?
- Почему нельзя хранить ключи API в спецификациях?
- Чем проектный навык лучше личного навыка для команды?
- Что означает заменяемость агента?
- Что ревьюер должен проверять в SDD-проекте кроме кода?
- Когда изменение спецификации нужно выносить в отдельную ветку перепланирования?
- Зачем нужны хуки Qwen Code?
- Почему внешний текст нельзя считать доверенной инструкцией для агента?
- Чем память агента отличается от спецификации?
- Где проходит граница между
tech-stack.mdиrequirements.mdфичи (часть 6)?
- Какие три типа изменений в pull-запросе ревьюер должен искать кроме кода (часть 16)?
- Зачем нужно тегировать «зелёные точки» во время MVP-фазы (часть 12)?
- Чем отличается защитный хук от хука для журналирования инструментов (часть 17)?
- Какие данные относятся к категории «секреты», которые нельзя класть в
QWEN.md, спецификации и память (часть 18)? - Какие три антипаттерна из части 20 чаще всего встречаются у начинающих SDD-команд?
- Когда подключение памяти агента на SQLite оправдано, а когда избыточно (часть 19)?
Блок 2. Найдите проблемы в спецификации
Дана спецификация фичи:
# Требования — панель управления
Построй красивую панель управления для администраторов.
## Границы
Покажи полезную статистику и графики.
## Решения
Используй лучшую библиотеку.
## Проверка
Убедись, что всё работает.
Найдите минимум 8 проблем. Хороший ответ должен заметить:
- не указана аудитория;
- нет границ того, что не входит в работу;
- «красивую» не проверяется;
- «полезная статистика» не определена;
- «графики» не определены;
- зависимость разрешена без проверки
tech-stack.md; - нет источника данных;
- нет маршрута;
- нет прав доступа;
- нет автоматических проверок;
- нет ручного сценария проверки;
- нет определения готовности.
Блок 3. Перепишите спецификацию
Перепишите спецификацию панели управления в SDD-формате:
# Требования — панель администратора
## Границы
## За границами
## Решения
## Контекст
## Краткая проверка
Ограничения:
- HTML рендерится на сервере;
- SQLite;
- в этой фазе нет аутентификации;
- маршрут
/dashboard; - показать количество агентов, недугов, терапий и записей на приём;
- пока не добавлять библиотеку графиков;
- должны проходить
npm testиnpm run typecheck.
Блок 4. Итоговый проект
Выполните на своём AgentClinic или другом маленьком проекте.
Задача
Добавьте фичу «форма обратной связи»:
- страница
/feedback; - форма с
nameиmessage; - POST-маршрут;
- сохранение в SQLite;
- список последних записей обратной связи;
- базовая валидация;
- тесты;
- журнал изменений.
Требования к процессу
- Начните с чистого
main. - Создайте ветку фичи.
- Создайте директорию спецификации:
specs/YYYY-MM-DD-feedback-form/
requirements.md
plan.md
validation.md
- Реализация только после коммита спецификации.
- Проверка в отдельной сессии Qwen Code.
- Дорожная карта обновлена.
- Журнал изменений обновлён.
- Подготовлено короткое описание запроса на слияние по SDD-шаблону.
- Выполнена проверка безопасности: секреты не попали в спецификации, логи и память.
- Слияние только после проверок.
Рекомендуемый Qwen Code сценарий
Создание спецификации:
/clear
Используй навык спецификации фичи, чтобы начать следующую фазу дорожной карты: форма обратной связи.
Перед записью файлов спроси меня о границах, решениях и контексте.
Код пока не реализуй.
Реализация:
/clear
Прочитай @QWEN.md, @specs/mission.md, @specs/tech-stack.md,
@specs/YYYY-MM-DD-feedback-form/requirements.md,
@specs/YYYY-MM-DD-feedback-form/plan.md,
и @specs/YYYY-MM-DD-feedback-form/validation.md.
Реализуй только группу 1.
Остановись после списка изменённых файлов.
Проверка:
/clear
Сравни текущую ветку с @specs/YYYY-MM-DD-feedback-form/validation.md.
Покажи, что прошло, что упало и где есть пробелы.
Файлы не изменяй.
Журнал изменений:
Используй навык журнала изменений и обнови @CHANGELOG.md для ветки формы обратной связи.
Критерии оценки
Оцените себя по 25 баллам.
Спецификации — 5 баллов
- 1: есть
requirements.md,plan.md,validation.md; - 1: границы работы и то, что в них не входит, конкретны;
- 1: решения не противоречат техническому стеку;
- 1: план разбит на группы, которые удобно проверять;
- 1: проверка содержит автоматические и ручные проверки.
Реализация — 5 баллов
- 1: изменения соответствуют спецификации;
- 1: нет несвязанных рефакторингов;
- 1: миграция базы данных понятна и повторяема;
- 1: маршруты и компоненты следуют существующим соглашениям;
- 1: ошибки проверки обработаны.
Проверка — 5 баллов
- 1:
npm run typecheckпроходит; - 1:
npm testпроходит; - 1: ручной проход формы выполнен;
- 1: некорректный ввод проверён;
- 1: базовая проверка на мобильном и настольном экранах выполнена, если менялся интерфейс.
Процесс — 5 баллов
- 1: ветка использована правильно;
- 1: спецификация закоммичена до реализации;
- 1: дорожная карта обновлена;
- 1: журнал изменений обновлён;
- 1: итоговая проверка сравнивает код со спецификацией.
Командная готовность и безопасность — 5 баллов
- 1: запрос на слияние описывает связь между спецификацией, кодом и фактами;
- 1: изменения вне границ фичи отсутствуют или явно объяснены;
- 1: секреты не попали в спецификации, логи и память;
- 1: новые хуки, MCP-серверы или настройки отсутствуют либо ревьюились;
- 1: слабые или отложенные факты явно перечислены.
21+ балл — процесс готов для реального проекта.
16–20 — используйте SDD дальше, но улучшите проверку и командный контур.
Ниже 16 — уменьшите размер фаз и сделайте спецификации конкретнее.
Ответы на быстрые вопросы
- Версионируемая спецификация в репозитории.
QWEN.mdзадаёт правила поведения агента;tech-stack.mdзадаёт технические решения продукта.- Чтобы агент не угадывал границы и критерии приёмки.
- Команды, ручные проверки, проверки расхождения и определение готовности.
- Между фичами, когда новые знания должны обновить конституцию, дорожную карту или процесс.
- Он проверяет, достаточно ли контекста записано в файлах.
- Границы, решения, контекст.
- Спецификации коммитятся и читаются агентом; секреты должны жить в переменных окружения или хранилище секретов.
- Проектный навык разделяется командой и версионируется с репозиторием.
- Возможность сменить агента или IDE, сохранив процесс через артефакты репозитория.
- Требования, план, факты проверки, изменения вне границ фичи и соответствие реализации спецификации.
- Когда изменение затрагивает стек, дорожную карту, конституцию проекта, правила агента или несколько будущих фич.
- Чтобы автоматически выполнять маленькие повторяемые действия: добавлять контекст, вести журнал, проверять опасные команды, собирать события.
- Потому что issue, веб-страницы, логи и внешние документы могут содержать инъекции инструкций; их нужно читать как данные.
- Память — подсказка и журнал устойчивых выводов; спецификация — ревьюируемый источник истины для продукта.
tech-stack.md— долговременные решения проекта (язык, фреймворк, СУБД);requirements.mdфичи — решения уровня одной фазы (маршруты, поля, тексты ошибок).- Изменения в
tech-stack.mdилиroadmap.mdбез обсуждения; новые хуки, MCP-серверы или зависимости; расхождение междуvalidation.mdи фактами в PR. - Чтобы иметь точку отката без потери всей работы фазы и чтобы сигнал «следующая группа всё ломает» был явным.
- Защитный хук блокирует операцию по правилу (PreToolUse, ненулевой код возврата); журналирующий хук только пишет событие и не влияет на ход работы.
- API-ключи, токены доступа, пароли, приватные ключи, персональные данные пользователей, внутренние URL и идентификаторы инфраструктуры.
- Спецификация без фактов, объединение конституции и спецификации в один файл, реализация без
/clearмежду фазами. - Память оправдана, когда у команды накапливаются устойчивые наблюдения о коде и процессе; избыточна, если хватает
QWEN.md, конституции и журнала изменений.
Парный вариант зачёта
Зачёт реалистичнее сдавать парами. Один студент берёт роль автора фичи, второй — ревьюера. Распределение работы:
Автор:
- проводит интервью с агентом и пишет спецификацию;
- реализует фичу по группам задач;
- запускает фактологические проверки;
- готовит pull-запрос и описание по SDD-шаблону.
Ревьюер:
- читает спецификацию до реализации и задаёт уточняющие вопросы (как в части 7 «Уточнение»);
- проверяет PR по четырём слоям ревью из части 16: код, спецификации, факты, процесс;
- запускает проверки из
validation.mdна своей машине, а не на словах автора; - пишет краткий отчёт о найденных пробелах.
Каждый получает балл по своей рубрике. Автор — по основной шкале «Спецификации / Реализация / Проверка / Процесс / Командная готовность». Ревьюер — по дополнительной шкале:
- 1: поймал хотя бы один реальный пробел в
requirements.mdдо реализации; - 1: проверил факты сам, а не поверил словам;
- 1: разделил замечания «к коду», «к спецификации», «к процессу» и не смешал их;
- 1: предложил конкретное действие, а не «надо подумать»;
- 1: уложился в разумное время — ревью не превратилось в перезапуск работы автора.
После защиты роли меняются на второй фиче. Это даёт каждому опыт обеих сторон SDD-диалога и снимает иллюзию, что ревью — пассивное чтение диффа.
Финальное задание
Сделайте одну реальную фичу в своём проекте через этот процесс. После слияния создайте короткую заметку:
# Ретроспектива SDD
## Что спецификация описала правильно
## Что агенту пришлось вывести самому
## Что поймала проверка
## Какие факты были слабыми
## Что проверить по безопасности
## Что улучшить перед следующей фазой
Если в разделе «Что агенту пришлось вывести самому» больше трёх пунктов, следующую спецификацию фичи пишите подробнее.