🗂️ ТЗ из множества файлов
Как разбить техническое задание на систему файлов, которую CC читает без потери приоритетов — спека, план, статус, эталоны.
Файл ТЗ на 2000 строк агент читает хуже, чем пять связанных файлов по 200 строк каждый. Дело не в объёме контекстного окна — оно у Claude 5 достаточное. Дело в приоритете: когда «что строим», «в каком порядке» и «что уже сделано» свалены в один текст, агенту приходится каждый раз заново вычленять релевантный кусок из всего документа. У отдельного файла — одна роль: spec.md не меняется от промпта к промпту, todo.md обновляется на каждом шаге. Агент грузит только то, что нужно под конкретную задачу, а не пересканирует всё целиком.
spec.md одно, а в todo.md уже другое. При конфликте агент выбирает версию непредсказуемо: иногда более свежую по контексту диалога, иногда ту, что попалась первой при чтении. Правило простое — у каждого факта одно место хранения, остальные файлы на него только ссылаются.
Файлы multi-file ТЗ
Шесть ролей, которые вместе закрывают то, что раньше пытались утрамбовать в один документ.
| Файл | Роль | Кто обновляет | Когда читает агент |
|---|---|---|---|
spec.md |
ЧТО строим: требования, инварианты, границы | Человек (правки редки, требуют явного согласия) | В начале задачи и при любом сомнении в требовании |
prompt_plan.md |
КАК: фазы, порядок выполнения, зависимости между шагами | Человек или агент — по итогам brainstorming/planning-сессии | Перед стартом фазы, чтобы понять, что делать дальше и от чего это зависит |
todo.md |
ГДЕ мы сейчас: статус шагов, что сделано, что дальше | Агент — после каждого завершённого шага | В начале каждой сессии, чтобы продолжить без пересказа контекста |
INITIAL.md |
Шаблон постановки одной фичи: Feature / Examples / Documentation / Other Considerations | Человек — по одному на фичу перед тем, как отдать её агенту | При старте работы над конкретной фичей |
examples/ |
Эталонные файлы-паттерны: как у нас принято писать компонент, тест, миграцию | Человек — фиксирует паттерн после первой реализации вручную | Перед написанием кода того же типа — агент копирует стиль, а не изобретает |
| ADR | Почему так решили: контекст решения, рассмотренные альтернативы, последствия | Человек (иногда агент — черновик, человек утверждает) | Когда требуется понять мотивацию существующего решения, а не переизобретать его |
Связывание файлов
Два механизма — не взаимозаменяемые, а для разных типов информации.
- Грузится в контекст каждой сессии автоматически, без запроса
- Подходит для того, что нужно агенту почти всегда: инварианты, границы, соглашения по стилю
- Чем больше файлов заимпортировано upfront, тем дороже каждая сессия по токенам
- Агент открывает файл только когда до него доходит очередь по ссылке
- Подходит для объёмного и специфичного: examples/, ADR, детали конкретной фазы плана
- Экономит контекст сессии — незадействованные файлы не грузятся вообще
# Проект
@spec.md
@prompt_plan.md
@todo.md
Детали по фичам — в INITIAL.md конкретной фичи (ссылка в todo.md).
Паттерны кода — в examples/, открывай перед написанием нового файла того же типа.
От идеи до исполнения
Четыре шага между «есть идея» и «код проверен и слит» — каждый со своим файлом-выходом.
spec.md — не раньше, чем на все вопросы есть ответ.todo.md обновляется сразу — это позволяет прерваться и продолжить в новой сессии без пересказа, что уже сделано.Чек-лист: полное ли твоё ТЗ
- ☐ У каждого требования в spec.md есть критерий проверки, который агент не может обойти молча
- ☐ Инварианты (что всегда должно оставаться верным) прописаны явно, а не подразумеваются
- ☐ Границы «что мы НЕ делаем» зафиксированы отдельным пунктом, а не вычисляются от противного
- ☐ На каждый повторяющийся паттерн кода есть файл в examples/
- ☐ Между spec.md, prompt_plan.md и todo.md нет противоречий — факт хранится в одном месте
- ☐ todo.md отражает актуальный статус, а не состояние недельной давности
Подход Cole Medin: перед тем как отдавать фичу агенту, оформи её одним небольшим файлом из четырёх секций. Это не замена spec.md, а промежуточный слой — конкретная фича внутри общего проекта.
- Feature — что нужно сделать, одним-двумя абзацами, без технических деталей реализации
- Examples — ссылки на файлы в examples/, которые задают стиль и паттерн для этой фичи
- Documentation — ссылки на актуальную документацию библиотек, которые фича затрагивает
- Other Considerations — всё, что не влезает в первые три пункта: ограничения окружения, известные подводные камни, что уже пробовали и не сработало
Из INITIAL.md агент собирает подробный PRP (Product Requirements Prompt) — по сути расширенную версию фичи с планом реализации, который затем проходит через собственные validation gates.
Один файл vs множество
| Ситуация | Достаточно одного project-brief | Нужна система из файлов |
|---|---|---|
| Размер задачи | Одна фича или небольшой скрипт, укладывается в пару экранов текста | Проект из нескольких модулей, рассчитан на дни или недели работы |
| Число сессий | Одна-две сессии до готового результата | Много сессий, работа прерывается и возобновляется |
| Повторяемость паттернов | Код не повторяет сам себя, каждый файл уникален | Есть повторяющиеся паттерны (компоненты, эндпоинты, миграции) — нужны examples/ |
| Команда | Один человек держит весь контекст в голове | Несколько человек или сессий — нужна общая точка правды, а не память одного участника |
| Что использовать | Подготовка к проекту — один файл ТЗ | spec.md / prompt_plan.md / todo.md / examples/ / ADR |