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

Почему ответы ИИ часто ведут к лишним переписываниям
ИИ редко «ошибается из вредности» — чаще он честно заполняет пробелы в запросе. Если контекст неполный, цели размыты, а ограничения не названы, модель начинает угадывать: придумывает недостающие детали, выбирает привычные паттерны и «улучшает» систему на свой вкус. В результате вы получаете решение, которое выглядит убедительно, но плохо стыкуется с реальностью проекта — и начинается переписывание.
Типовые причины переписываний
-
Неполный контекст. Нет текущей архитектуры, не указаны границы ответственности сервисов, неясно, что уже существует и что менять нельзя.
-
Размытая цель. Фраза вроде «сделай чистую архитектуру» без уточнения приоритетов (скорость разработки, тестируемость, стоимость поддержки, сроки) приводит к тому, что ИИ оптимизирует «в среднем по больнице».
-
Скрытые ограничения. Например: нельзя добавлять новые базы данных, запрещены фоновые задачи, есть легаси‑протокол, команда не использует определённый язык/фреймворк. Если это не проговорить, модель предложит лишние компоненты.
Симптомы плохого промпта
Вы видите, что модель:
- «угадывает» доменную модель и термины, которых нет в вашем продукте;
- добавляет новые сервисы, очереди, кэши и слои «на всякий случай»;
- ломает зависимости (например, домен зависит от инфраструктуры) или смешивает ответственность модулей;
- меняет контракт API без миграционного плана.
Что считать успехом
Успех — это не «идеальная архитектура в вакууме», а согласованная структура: понятные границы модулей и интерфейсов, минимальное число итераций и ясные контракты. То есть: что принимает/возвращает каждый слой, какие данные хранятся, где проходят транзакции, что считается источником истины.
Архитектурный промпт vs «напиши код»
Запрос «напиши код» уместен, когда решение уже выбрано. Архитектурный промпт нужен раньше: чтобы зафиксировать цели, ограничения и критерии приёмки, сравнить варианты и договориться о структуре — и только потом переходить к реализации и кодингу.
Контекст перед первым запросом: что подготовить заранее
Главная причина лишних переделок — модель начинает проектировать «в вакууме»: угадывает домен, пользователей и ограничения, а затем вы уточняете детали, и архитектуру приходится разворачивать обратно. Чтобы с первого шага получать пригодные решения, подготовьте короткий пакет контекста.
Шаблон «карточка проекта»
Дайте 8–12 строк, которые задают рамки:
- Домен: что это за продукт/сервис и какую проблему решает.
- Пользователи: 2–3 ключевые роли (например, клиент, оператор, админ).
- Сценарии: 3–5 основных действий, ради которых всё строится.
- Ограничения времени/бюджета: дедлайн, допустимый объём работ, команда (1–2 человека или отдел).
- Нефункциональные ожидания: нагрузка (примерно), требования к надёжности/аудиту, критичность данных.
Такой «паспорт» помогает модели не предлагать архитектуру уровня корпорации там, где важнее скорость поставки.
Шаблон «границы системы» (scope и anti-scope)
В двух списках обозначьте:
- Что входит: функции, за которые ваша система отвечает (например, хранение заказов, расчёт стоимости, уведомления).
- Что точно не входит (anti-scope): то, что часто путают с вашей зоной (например, биллинг провайдера, CRM, доставка, аналитический DWH).
Anti-scope особенно полезен: он предотвращает советы «с запасом», которые потом не применяются.
Исходные артефакты: что приложить
Если есть — перечислите и кратко опишите:
- текущую схему/диаграмму компонентов (даже черновик);
- API‑контракты (endpoints, события) или ссылку на спецификацию;
- модели данных/таблицы и ключевые поля;
- существующие ADR/решения (почему выбрали стек, базу, брокер).
Даже неполный набор снижает количество предположений и спорных мест.
Правило объёма: не перегружайте контекст
Дайте самое стабильное: цели, границы, ограничения, 1–2 примера данных. Детали (полные логи, все таблицы, весь код) — по запросу. Хорошая практика: «коротко сейчас, расширю по вопросам».
Мини-пример промпта: попросить модель собрать недостающие вопросы
Ты архитектор. Перед тем как предлагать решение, задай до 12 уточняющих вопросов.
Сгруппируй их по темам: цели, пользователи/сценарии, границы системы (входит/не входит),
данные и интеграции, ограничения (время/бюджет/стек), нефункциональные требования.
Если информации уже достаточно — напиши "вопросов нет" и перечисли принятые допущения.
Вот карточка проекта: <вставьте 8–12 строк>
Вот границы (scope/anti-scope): <вставьте>
Имеющиеся артефакты: <перечень/ссылки>
После ответов на эти вопросы следующий запрос можно формулировать гораздо точнее — и правок станет заметно меньше.
Паттерн «Роли и границы» для управляемых решений
Когда вы просите LLM «придумать архитектуру», она часто отвечает как универсальный советчик: добавляет лишние технологии, расширяет функциональность и расплывается в эссе. Паттерн «Роли и границы» делает запрос управляемым: вы заранее задаёте, кто отвечает, что можно предлагать, что нельзя и в каком виде вы хотите получить результат.
Роли: распределяем ответственность
Задайте 2–4 роли и явно попросите их спорить между собой коротко и по делу. Примеры ролей:
- Архитектор: предлагает варианты структуры, границы модулей, зависимости.
- Инженер по качеству: ищет риск переписываний, оценивает тестируемость и поддерживаемость.
- Продукт: следит за соответствием требованиям и ценностью для пользователя.
- Безопасность: отмечает риски доступа к данным, угрозы и минимальные меры.
Роли здесь не «для театра», а для самопроверки решения с разных сторон, чтобы модель не «уезжала» в одну плоскость.
Границы: запрещаем домыслы
Формулируйте ограничения как «запреты» и «разрешения»:
- Не выдумывай технологии: используй только перечисленные (или предложи 2–3 как опции, пометив как предположения).
- Не добавляй функции без требований: если чего-то не хватает — задай вопросы.
- Не меняй бизнес-правила: оптимизируй реализацию, но не смысл.
- Если информации мало: сначала список уточнений, затем ответ с допущениями.
Формат ответа: меньше текста — больше решений
Попросите один из форматов, которые сложно «размыть»:
- таблица «Решение → Причина → Риски → Митигирования»;
- список решений в стиле ADR (Context/Decision/Consequences);
- «3 варианта + компромиссы» вместо единственного ответа.
Промпт-скелет (копируйте и адаптируйте)
Роли:
- Архитектор
- Инженер по качеству
- Продукт
- Безопасность
Задача: <что нужно спроектировать/решить>
Контекст: <кратко про систему, ограничения, текущие боли>
Ограничения:
- Не выдумывай технологии: <список>
- Не добавляй функции без требований
- Если данных недостаточно — задай до 5 вопросов
Формат ответа:
1) Варианты (2–3)
2) Рекомендация
3) Риски и проверки
Критерии качества:
- Минимум новых сущностей
- Ясные границы модулей
- Обратимая миграция/изменения
Этот паттерн особенно полезен, когда вам нужен не «самый умный ответ», а предсказуемое решение, которое можно обсудить, согласовать и реализовать без лишних переделок.
Паттерн «Требования → ограничения → критерии приёмки»
Если в запросе есть только «сделай сервис Х», модель почти неизбежно додумывает детали: выбирает стек, упрощает безопасность, игнорирует сроки. Результат выглядит правдоподобно, но в вашем проекте быстро ломается — и начинается переписывание. Этот паттерн дисциплинирует диалог: сначала фиксируем, что нужно, затем в каких рамках, и только потом — как поймём, что готово.
1) Требования (must/should/could)
Разделяйте требования по уровню обязательности. Так модель перестаёт «оптимизировать» важное ради второстепенного.
- Must: без этого решение не принимается.
- Should: желательно, но возможны компромиссы.
- Could: бонус, если не мешает остальному.
2) Ограничения
Это не «детали», а границы проектирования. Укажите хотя бы ключевые:
- инфраструктура (облако/он‑прем, Kubernetes/без него, доступные БД);
- лицензии и комплаенс (хранение данных, аудит, шифрование);
- производительность (RPS, задержка, размер данных);
- сроки и команда (сколько недель, какие роли есть).
3) Критерии приёмки (измеримые)
Просите формулировать проверки так, чтобы их можно было подтвердить тестами, метриками или ревью архитектуры.
Примеры критериев:
- P95 время ответа API ≤ 200 мс при 300 RPS
- модули домена не зависят от фреймворков (проверка импортов/границ)
- секреты не попадают в логи; есть ротация ключей
Как попросить модель работать правильно
Добавьте явную инструкцию: найти противоречия и задать уточняющие вопросы до предложения финального решения. Это дешевле, чем правки после.
Ниже — удобный формат «Требование → Почему важно → Как проверим».
Контекст: <1–3 предложения о продукте и пользователях>
Требования:
Must:
- <Требование> → Почему важно: <…> → Как проверим: <метрика/тест/ревью>
- ...
Should:
- ...
Could:
- ...
Ограничения:
- Инфраструктура: ...
- Лицензии/комплаенс: ...
- Производительность: ...
- Сроки: ...
Задача модели:
1) Найди противоречия/дыры в требованиях и ограничениях.
2) Сформулируй 5–10 уточняющих вопросов (по приоритету).
3) Предложи решение, явно привязав каждый пункт к Must/Should и критериям приёмки.
Такой «контракт на входе» делает ответы проверяемыми и снижает шанс, что архитектура поедет в сторону уже на втором уточнении.
Паттерн «Схема до реализации»: компоненты, потоки, данные
Когда вы просите ИИ «сделай сервис/модуль», он часто сразу уходит в детали кода и выбирает структуру наугад. Паттерн «Схема до реализации» заставляет сначала согласовать каркас: какие части системы существуют, как они общаются и какие данные живут внутри. Это снижает риск переписываний, потому что вы правите не реализацию, а схему.
Шаг 1. Компоненты и ответственность (без реализации)
Сначала попросите перечислить компоненты и их роли: UI/API, прикладные сервисы, адаптеры к внешним системам, хранилища, очереди, планировщики. Важно: без классов и методов — только границы и ответственность.
Шаг 2. Ключевые потоки (успех, ошибки, фон)
Дальше — потоки. Минимум три:
- пользовательский сценарий «всё хорошо» (пошагово);
- обработка ошибок (таймауты, валидация, повторные попытки, идемпотентность);
- фоновая обработка (очереди, планировщик, батчи).
Так вы рано обнаружите, где нужны транзакции, события, дедупликация и наблюдаемость.
Шаг 3. Модель данных: сущности, связи, жизненный цикл
Отдельным запросом: сущности, связи, состояния, что является источником истины, как данные создаются/обновляются/архивируются. Это помогает избежать «внезапных» миграций и конфликтов доменных понятий.
В каком виде просить результат
Попросите 1–2 представления на выбор: таблица компонентов, последовательность шагов, Mermaid‑диаграмма.
flowchart LR
UI[Клиент] --> API[API]
API --> SVC[Сервис]
SVC --> DB[(БД)]
SVC --> MQ[(Очередь)]
MQ --> WORKER[Воркер]
Контрольный вопрос
В конце задайте: «Какие части можно заменить без каскадных правок, и за счёт каких интерфейсов/контрактов?» Если ответ расплывчатый — схема ещё не зафиксирована, и рано переходить к реализации.
Паттерн «Слои и зависимости» для чистой архитектуры
Этот паттерн нужен, чтобы ИИ не «размазал» ответственность по проекту и не заставил вас потом переносить логику из контроллеров в сервисы, из сервисов — в домен, а затем обратно. Вы заранее фиксируете правила слоёв и просите модель проверять любые решения через призму зависимостей.
1) Зафиксируйте слои простыми правилами
В промпте задайте четыре слоя и их роль:
- Домен: бизнес‑правила и сущности (без знания о БД, очередях, HTTP).
- Приложение: сценарии/юзкейсы, оркестрация домена, транзакции на уровне операций.
- Инфраструктура: БД, внешние API, брокеры сообщений, файловая система.
- Интерфейсы (delivery/UI): HTTP‑контроллеры, CLI, фоновые воркеры — всё, что «принимает запрос».
2) Попросите матрицу зависимостей (явно)
Просите модель выдать не только текст, но и матрицу «кто кого может вызывать/импортировать». Например:
| Слой → может зависеть от | Домен | Приложение | Инфраструктура | Интерфейсы |
|---|---|---|---|---|
| Домен | ✓ | ✗ | ✗ | ✗ |
| Приложение | ✓ | ✓ | ✗* | ✗ |
| Инфраструктура | ✓** | ✓ | ✓ | ✗ |
| Интерфейсы | ✓ | ✓ | ✓ | ✓ |
* вместо прямой зависимости — через порты/интерфейсы.
** инфраструктура может реализовывать доменные/прикладные порты, но домен не должен её импортировать.
3) Обозначьте «запрещённые зависимости»
Сформулируйте их как жёсткие ограничения:
- Домен не знает про БД, ORM, HTTP, фреймворки, логгеры, конфиги.
- Приложение не вызывает конкретные SDK/клиенты напрямую — только абстракции.
- Контроллеры/хендлеры не содержат бизнес‑правил; максимум — валидация формата и маппинг.
4) Попросите точки расширения (порты/адаптеры)
Чтобы изменения не ломали структуру, попросите примеры:
- Порты:
UserRepository,PaymentGateway,Clock,EventPublisher. - Адаптеры: SQL‑репозиторий, HTTP‑клиент, in‑memory реализация для тестов.
- Фабрики/композиция: сборка зависимостей в одном месте (composition root).
5) Проверка: как это уменьшает переписывания
В конце промпта добавьте требование: «Объясни, какие переделки мы избегаем благодаря правилам слоёв». Хороший ответ привяжет выгоду к практике: смена БД не трогает домен, замена транспорта (HTTP → очередь) не ломает юзкейсы, а тесты пишутся без поднятия инфраструктуры — значит, меньше “перетаскиваний” кода и неожиданных циклических зависимостей.
Паттерн «Интерфейсы сначала»: меньше переделок при изменениях
Главная причина переделок — когда реализация появляется раньше договорённостей. Модель генерирует «красивый» код, а потом выясняется, что другим модулям нужен другой формат данных, другие ошибки, другие события. Паттерн «интерфейсы сначала» переворачивает порядок: сначала фиксируем контракты, затем разрешаем писать реализацию.
С чего начать: контракты на первом месте
Попросите ИИ описать публичные интерфейсы модулей и границы ответственности: какие методы доступны, какие DTO (структуры входа/выхода) используются, какие события публикуются/подписываются, какие классы ошибок возможны.
Важно явно задать требование стабильности: «не меняй контракты без миграционного плана». Тогда любые правки будут оформляться как версия, адаптер или совместимый режим, а не как ломающее изменение.
Примеры вход/выход для ключевых сценариев
Чтобы контракт был проверяемым, запросите 3–5 примеров «запрос → ответ» (или «вход → выход») для основных пользовательских сценариев и одного‑двух негативных кейсов (ошибка валидации, отсутствие доступа). Примеры часто выявляют спорные места раньше реализации: где нужна идемпотентность, какие поля обязательны, как формулировать сообщения об ошибках.
Версионирование без ломки клиентов
Сразу определите, как вводите изменения:
- семантика версий (например, v1/v2 для API или version field в событии);
- правила совместимости: добавление полей допустимо, удаление — только через переходный период;
- миграции: кто и как обновляет клиентов, нужен ли dual-write/dual-read.
Короткий промпт для старта
Сгенерируй публичные интерфейсы модулей, DTO, события и список инвариантов.
Без кода реализации.
Укажи возможные ошибки и правила версионирования.
Не меняй контракты без миграционного плана.
Дай 5 примеров вход/выход для ключевых сценариев.
Этот подход делает изменения управляемыми: вы обсуждаете договорённости один раз, а переписывания сводятся к точечным адаптерам и понятным миграциям.
Паттерн «Варианты и компромиссы» вместо единственного ответа
Одна из причин бесконечных правок — когда ИИ выдаёт «единственно правильное» решение, а позже выясняется, что оно не вписывается в сроки, командные навыки, бюджет, ограничения инфраструктуры или требования безопасности. Паттерн «Варианты и компромиссы» заставляет модель сразу думать как архитектор: предлагать несколько путей и явно показывать цену каждого.
Как формулировать запрос
Просите 2–3 варианта решения и фиксируйте оси сравнения. Рабочая формула: «Дай 3 варианта (быстро внедрить / сбалансировано / максимально надёжно) и сравни по сложности, рискам, скорости внедрения, влиянию на поддержку».
Важно сразу задать «рамку выбора»: ваши ограничения (например, нельзя добавлять новые сервисы, ограничен бюджет на инфраструктуру, команда знает только определённый стек) и критерии приёмки (SLO, время отклика, требования аудита, обратная совместимость).
Отдельный блок про риски
Попросите явный раздел: «Технические риски и как их снизить». Это помогает отсеять варианты, которые красиво выглядят на схеме, но ломаются на миграциях, наблюдаемости, нагрузке или данных.
Пример формулировки: «Для каждого варианта перечисли 3–5 рисков, вероятность/влияние и конкретные меры снижения (тесты, фичефлаги, поэтапный rollout, мониторинг)».
Зафиксируйте предположения
Добавьте требование: «В конце перечисли предположения, которые ты считаешь истинными, и вопросы, которые нужно подтвердить». Так вы быстро увидите, где модель “додумала” за вас: объёмы трафика, консистентность данных, доступность очередей, права на изменение схемы БД.
Критерий выбора: привязка к вашим условиям
Попросите финальный вывод в формате: «Если приоритет X и ограничения Y, выбираем вариант №… потому что…». Тогда рекомендация будет не абстрактной, а привязанной к вашим условиям — и правок станет заметно меньше.
Паттерн «План изменений»: минимальный дифф и миграции
Когда вы просите ИИ «сделать по‑другому», он часто предлагает переписать половину системы — просто потому, что ему проще мыслить целостной картиной. Этот паттерн переключает фокус на управляемые изменения: минимум правок, предсказуемое внедрение и (если нужно) безопасную миграцию данных и контрактов.
Шаблон запроса
Используйте структуру: «что меняем → почему → минимальный дифф → шаги внедрения».
Пример формулировки:
- Что меняем: заменить способ авторизации сервиса X (только входные точки API и слой адаптеров).
- Почему: уменьшить связность, упростить тестирование, убрать дублирование.
- Минимальный дифф: сохранить публичные контракты, не трогать доменную модель, не менять схему БД без необходимости.
- Шаги внедрения: перечисли этапы, чтобы каждый давал рабочий результат.
Границы правок: что можно и нельзя трогать
Сразу задайте рамки, иначе ИИ «оптимизирует» лишнее.
Хорошая формулировка: «Можно менять только модули A и B, и только добавлением новых файлов/классов; модуль C и публичные DTO не трогать; сигнатуры внешних API оставить прежними». Если допустимы исключения — попросите их явно перечислить и обосновать.
Миграции данных и контрактов (если затронуто)
Если изменение касается БД, событий или API‑контрактов, попросите:
- план обратимости (как откатиться без потери данных);
- этапы миграции (например, «двойная запись/чтение», временная совместимость);
- условия завершения (когда можно удалить старый формат);
- риски (что может сломаться на интеграциях).
Цель — не «идеальная схема», а безопасный переход.
Выходные артефакты: задачи для трекера и обновление доков
Попросите результат в виде списка задач для трекера: маленькие, проверяемые, в правильном порядке (подготовка → внедрение → переключение → чистка).
Отдельным пунктом запросите обновления: какие разделы документации поправить, какие примеры/сниппеты устареют, какие тестовые сценарии добавить. Это снижает вероятность ситуации «всё работает, но никто не знает как».
Паттерн «Самопроверка» и чек-листы качества
Даже хороший запрос часто даёт «правдоподобный» ответ с незаметными изъянами: зависимость идёт не в тот слой, контракт не согласован, ошибки замалчиваются. Паттерн «Самопроверка» решает это простым приёмом: вы просите модель сначала выступить в роли ревьюера, а уже затем — внести правки по найденным проблемам.
Как сформулировать самопроверку
Попросите отдельный блок проверки по чек‑листу и запретите «мягкие формулировки». Удобный формат — «проблема → влияние → исправление».
Проведи самопроверку решения.
1) Проверь на противоречия требованиям и критериям приёмки.
2) Пройди чек-лист: слои, зависимости, контракты, обработка ошибок.
3) Укажи пограничные случаи: таймауты, ретраи, частичные сбои.
Формат вывода строго: Проблема → Влияние → Исправление.
После списка проблем дай исправленную версию решения.
Мини-чек-лист для чистой архитектуры
Попросите модель явно подтвердить пункты:
- Слои: где границы (UI/Use Cases/Domain/Infrastructure) и что к чему обращается.
- Зависимости: нет ли ссылок «внутрь» домена из инфраструктуры и наоборот; соблюдён ли DIP.
- Контракты: вход/выход use case’ов, DTO, ошибки; согласованы ли названия и типы.
- Ошибки: как возвращаются и логируются; не теряются ли причины (cause); единый стиль.
Требования к тестам и углам
Добавьте явное требование к тестам: какие нужны (юнит, интеграционные, контрактные — по необходимости) и что именно они доказывают. Отдельно запросите анализ углов: таймауты внешних сервисов, ретраи с backoff, идемпотентность, частичные сбои и восстановление.
Этот паттерн особенно полезен, когда вы хотите уменьшить правки: сначала находите расхождения, затем просите минимальные изменения, закрывающие конкретные пункты чек‑листа.
Паттерн «Ревью в два прохода»: сначала структура, потом детали
Главная причина лишних переписываний — вы начинаете улучшать «как написано», не договорившись «что именно строим». Двухпроходное ревью разделяет эти задачи: сначала проверяем архитектуру и границы, а уже потом — качество реализации. Такой порядок снижает риск, что вы отполируете код, который завтра придётся выкинуть из‑за неверных слоёв или контрактов.
Проход 1: ревью архитектуры
На этом этапе вы обсуждаете не строки кода, а структуру решения. Попросите ИИ оценить:
- Границы и контексты: где заканчивается ответственность модуля/сервиса, что является внешней зависимостью.
- Слои и зависимости: кто на кого имеет право ссылаться, нет ли «обратных» зависимостей.
- Контракты: форматы входов/выходов, стабильность интерфейсов, версии.
- Потоки данных: откуда данные приходят, где валидируются, где хранятся, как обрабатываются ошибки.
Ключевое правило промпта: «если архитектура не согласована — не переходи к реализации». Это дисциплинирует: модель не «убегает» в программирование, пока вы не приняли решения по границам и контрактам.
Дополнительно полезно просить подсветить места будущих правок при росте требований. Например: «какие компоненты сломаются, если появятся роли пользователей», «что изменится при росте нагрузки в 10 раз», «где понадобится кэш/очередь/пагинация».
Проход 2: ревью реализации
Только после того, как структура принята, переходите к деталям исполнения. В этом проходе фокус на:
- Читабельность и единообразие: имена, структура функций, понятные точки входа.
- Дублирование: повторяющаяся логика, отсутствие общего уровня абстракции.
- Обработка ошибок: явные сценарии отказов, сообщения, откаты/идемпотентность.
- Тестируемость: как подменять зависимости, что покрывать юнит‑ и интеграционными тестами.
Короткий шаблон промпта
Используйте, когда хотите заранее найти «минные поля»:
«Сделай ревью в 2 прохода. Проход 1 — архитектура: границы, слои, контракты, потоки данных. Проход 2 — реализация: читабельность, дублирование, обработка ошибок, тестируемость. Если архитектура не согласована — не переходи к реализации. Найди 10 причин, почему это придётся переписать, и предложи, как предотвратить каждую.»
Эта техника особенно хорошо работает как регулярный ритуал: вы получаете предсказуемый формат обратной связи и меньше “сюрпризов” на этапе изменений.
Набор шаблонов промптов и правила адаптации под проект
Ниже — набор «скелетов» промптов, которые удобно копировать и заполнять переменными. Держите их в одном месте (например, на внутренней странице /docs/prompts), чтобы команда использовала одинаковый формат входных данных и результата.
6 готовых шаблонов промптов
- Контекст перед стартом (выравнивание понимания)
Ты — {роль}. Домен: {домен}. Цель: {цель}. Текущее состояние: {как сейчас}. Ограничения: {время/бюджет/стек/регуляторика}. Риски: {известные}. Задай до 7 уточняющих вопросов, затем предложи 2 варианта решения и что нужно проверить.
- Архитектурная схема (компоненты и потоки)
Опиши архитектуру для {фича} в {система}. Формат вывода:
- Компоненты (список)
- Потоки данных (кто → куда → что)
- Хранилища и ключевые сущности
- Границы доверия/безопасности
- Набор решений (ADR) с причинами
- Контракты интерфейсов (API/события)
Спроектируй контракты для {интеграция}. Дай:
- эндпоинты/топики, поля, типы
- ошибки и коды
- идемпотентность/версирование
- примеры запрос/ответ Укажи, какие изменения будут обратно совместимыми.
- Требования → ограничения → критерии приёмки (готовность к разработке)
Преобразуй {сырой текст/задача} в:
- Требования (must/should/could)
- Ограничения
- Критерии приёмки (проверяемые)
- Негативные кейсы Если данных не хватает — перечисли пробелы.
- План изменений (минимальный дифф)
Предложи план внедрения {изменение}. Дай:
- минимальный набор правок по модулям
- миграции/скрипты
- флаги/поэтапный релиз
- откат
- тесты, которые надо добавить
- Ревью (структура → детали)
Проведи ревью {PR/фрагмент кода/дизайн}. Сначала структура: границы модулей, зависимости, контракты. Потом детали: читаемость, ошибки, тесты. Формат: «Найдено → Почему важно → Как исправить → Приоритет».
Какие «переменные» стоит стандартизировать
Минимальный набор: {домен}, {цель}, {аудитория/пользователь}, {ограничения}, {не делать}, {формат вывода}, {уровень детализации} (черновик/план/спека).
Как внедрить в команду и как мерить эффект
Зафиксируйте в /docs/prompts обязательные поля для запроса и единый формат ответа (например, «Вопросы → Варианты → Рекомендация → Риски → Следующие шаги»).
Эффект удобно измерять простыми метриками: число итераций до принятого решения, объём переделок (строки/файлы/время), частота изменений публичных интерфейсов и количество багов на интеграциях после релиза.
Как эти паттерны применять на практике в TakProsto.AI
Если вы используете TakProsto.AI как платформу для vibe‑coding, эти паттерны дают максимальный эффект именно за счёт «договорённостей до реализации». Практический подход такой:
- Начинайте с Planning Mode: прогоняйте «карточку проекта», scope/anti-scope и паттерны «Роли и границы» + «Требования → ограничения → критерии приёмки», пока не согласуете решения.
- Переходите к реализации только после фиксации контрактов («Интерфейсы сначала») и «Схемы до реализации» — это особенно полезно, когда дальше TakProsto.AI сгенерирует UI на React, бэкенд на Go и PostgreSQL, а для мобайла — Flutter.
- Пользуйтесь снапшотами и откатами: при архитектурных изменениях держите точки возврата, чтобы экспериментировать с вариантами без риска «сломать всё».
- Если нужно подключить существующую команду или легаси, помогает экспорт исходников: вы сохраняете принятые границы модулей и проверяете их обычными ревью/линтерами.
Отдельно, для проектов с требованиями к хранению данных, важно, что TakProsto.AI работает на серверах в России и использует локализованные/opensource LLM‑модели — без отправки данных за пределы страны. А если вы хотите снизить стоимость экспериментов, можно стартовать с бесплатного тарифа и перейти на pro/business/enterprise по мере роста; также у платформы есть программы получения кредитов за контент и реферальные приглашения.
FAQ
Почему ответы ИИ часто приводят к лишним переписываниям?
ИИ заполняет пробелы в запросе правдоподобными допущениями: домысливает доменную модель, выбирает «типовой» стек и добавляет компоненты «на всякий случай». Когда вы уточняете реальный контекст (границы, запреты, существующие контракты), эти допущения рушатся — и решение приходится переделывать.
Практика: сначала фиксируйте цели, ограничения и критерии приёмки, а уже потом просите варианты архитектуры.
Какой контекст подготовить перед первым архитектурным запросом к ИИ?
Минимум, который даёт большой эффект:
- Карточка проекта (8–12 строк): домен, роли пользователей, 3–5 сценариев, сроки/команда, нефункциональные ожидания.
- Scope/anti-scope: что входит и что точно не входит.
- Артефакты: текущая схема компонентов, API-контракты, ключевые таблицы/сущности, ADR (если есть).
Этого достаточно, чтобы модель меньше «угадывала» и реже предлагала лишнее.
Какие симптомы указывают на «плохой промпт»?
Признаки, что промпт недостаточно точный:
- в ответе появляются термины и сущности, которых нет в вашем продукте;
- предлагаются очереди/кэши/сервисы без явной причины;
- меняются контракты API без плана миграции;
- нарушаются зависимости слоёв (домен «знает» про БД/HTTP/ORM).
Если видите такое — остановитесь и добавьте границы и запреты в запрос.
Что считать «успешным» ответом ИИ по архитектуре?
Успех — это согласованные границы и контракты, а не «идеальная архитектура в вакууме». Хорошие критерии:
- понятные модули и ответственность каждого;
- измеримые критерии приёмки (SLO, тестируемость, обратная совместимость);
- минимум новых сущностей и технологий;
- явно описанные интерфейсы (вход/выход, ошибки, события).
Если это зафиксировано, дальнейший кодинг обычно идёт с меньшим числом итераций.
Когда уместно просить ИИ «написать код», а когда — сначала архитектуру?
Просить «напиши код» стоит, когда вы уже приняли решения о:
- структуре модулей и слоях;
- публичных контрактах (DTO, события, ошибки);
- ограничениях (стек, инфраструктура, запреты);
- критериях приёмки.
До этого лучше просить варианты, компромиссы и вопросы на уточнение, иначе вы получите красивую реализацию неподходящего решения.
Зачем нужен список anti-scope и как он помогает уменьшить переделки?
Scope/anti-scope снижает риск «разрастания» решения.
- Scope отвечает на вопрос: «За что мы отвечаем?».
- Anti-scope: «За что мы точно не отвечаем (даже если похоже)?».
Практика: добавляйте anti-scope отдельным списком в каждый архитектурный промпт — это уменьшает вероятность, что модель добавит лишние интеграции или подсистемы.
Как использовать паттерн «Роли и границы», чтобы ответ был управляемым?
Сформулируйте роли и попросите их коротко спорить по делу:
- Архитектор: варианты структуры и границ модулей.
- Инженер по качеству: риски переписываний, тестируемость, поддерживаемость.
- Продукт: соответствие ценности и требованиям.
- Безопасность: минимальные меры и риски доступа к данным.
Дополнительно задайте границы: «не выдумывай технологии», «не добавляй функций без требований», «если данных мало — сначала вопросы».
Как применять паттерн «Требования → ограничения → критерии приёмки»?
Попросите модель оформить входные данные так:
- Must/Should/Could требования;
- ограничения (инфраструктура, сроки, стек, комплаенс);
- критерии приёмки в измеримом виде (метрики, тесты, ревью);
- список противоречий и пробелов + уточняющие вопросы.
Это превращает обсуждение из «впечатлений» в проверяемый контракт: что делаем, в каких рамках и как поймём, что готово.
Что значит «Схема до реализации» и как это уменьшает риск переписываний?
Попросите сначала зафиксировать каркас, а не детали:
- Компоненты и ответственность (без классов и методов).
- Потоки: успешный сценарий, ошибки, фон (если есть).
- Модель данных: сущности, связи, жизненный цикл, источник истины.
Выход просите в структурированном виде (таблица/список/диаграмма Mermaid). Пока каркас не принят — не переходите к программированию.
Как зафиксировать слои и зависимости, чтобы ИИ не «размазал» ответственность по проекту?
Запросите у модели:
- правила слоёв (Домен / Приложение / Инфраструктура / Интерфейсы);
- матрицу зависимостей (кто кого может импортировать/вызывать);
- список запрещённых зависимостей (например, домен не знает про БД/HTTP/фреймворки);
- примеры портов/адаптеров и место сборки зависимостей (composition root).
Практический тест: попросите объяснить, какие переделки предотвратит такая структура (смена БД, смена транспорта, упрощение тестов).