8 мин

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

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

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

Почему ответы ИИ часто ведут к лишним переписываниям

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

Типовые причины переписываний

  1. Неполный контекст. Нет текущей архитектуры, не указаны границы ответственности сервисов, неясно, что уже существует и что менять нельзя.

  2. Размытая цель. Фраза вроде «сделай чистую архитектуру» без уточнения приоритетов (скорость разработки, тестируемость, стоимость поддержки, сроки) приводит к тому, что ИИ оптимизирует «в среднем по больнице».

  3. Скрытые ограничения. Например: нельзя добавлять новые базы данных, запрещены фоновые задачи, есть легаси‑протокол, команда не использует определённый язык/фреймворк. Если это не проговорить, модель предложит лишние компоненты.

Симптомы плохого промпта

Вы видите, что модель:

  • «угадывает» доменную модель и термины, которых нет в вашем продукте;
  • добавляет новые сервисы, очереди, кэши и слои «на всякий случай»;
  • ломает зависимости (например, домен зависит от инфраструктуры) или смешивает ответственность модулей;
  • меняет контракт 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[Воркер]

Контрольный вопрос

В конце задайте: «Какие части можно заменить без каскадных правок, и за счёт каких интерфейсов/контрактов?» Если ответ расплывчатый — схема ещё не зафиксирована, и рано переходить к реализации.

Паттерн «Слои и зависимости» для чистой архитектуры

UI на React из промпта
Соберите интерфейс на React на основе согласованных сценариев и контрактов.

Этот паттерн нужен, чтобы ИИ не «размазал» ответственность по проекту и не заставил вас потом переносить логику из контроллеров в сервисы, из сервисов — в домен, а затем обратно. Вы заранее фиксируете правила слоёв и просите модель проверять любые решения через призму зависимостей.

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 готовых шаблонов промптов

  1. Контекст перед стартом (выравнивание понимания)

Ты — {роль}. Домен: {домен}. Цель: {цель}. Текущее состояние: {как сейчас}. Ограничения: {время/бюджет/стек/регуляторика}. Риски: {известные}. Задай до 7 уточняющих вопросов, затем предложи 2 варианта решения и что нужно проверить.

  1. Архитектурная схема (компоненты и потоки)

Опиши архитектуру для {фича} в {система}. Формат вывода:

  • Компоненты (список)
  • Потоки данных (кто → куда → что)
  • Хранилища и ключевые сущности
  • Границы доверия/безопасности
  • Набор решений (ADR) с причинами
  1. Контракты интерфейсов (API/события)

Спроектируй контракты для {интеграция}. Дай:

  • эндпоинты/топики, поля, типы
  • ошибки и коды
  • идемпотентность/версирование
  • примеры запрос/ответ Укажи, какие изменения будут обратно совместимыми.
  1. Требования → ограничения → критерии приёмки (готовность к разработке)

Преобразуй {сырой текст/задача} в:

  • Требования (must/should/could)
  • Ограничения
  • Критерии приёмки (проверяемые)
  • Негативные кейсы Если данных не хватает — перечисли пробелы.
  1. План изменений (минимальный дифф)

Предложи план внедрения {изменение}. Дай:

  • минимальный набор правок по модулям
  • миграции/скрипты
  • флаги/поэтапный релиз
  • откат
  • тесты, которые надо добавить
  1. Ревью (структура → детали)

Проведи ревью {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 требования;
  • ограничения (инфраструктура, сроки, стек, комплаенс);
  • критерии приёмки в измеримом виде (метрики, тесты, ревью);
  • список противоречий и пробелов + уточняющие вопросы.

Это превращает обсуждение из «впечатлений» в проверяемый контракт: что делаем, в каких рамках и как поймём, что готово.

Что значит «Схема до реализации» и как это уменьшает риск переписываний?

Попросите сначала зафиксировать каркас, а не детали:

  1. Компоненты и ответственность (без классов и методов).
  2. Потоки: успешный сценарий, ошибки, фон (если есть).
  3. Модель данных: сущности, связи, жизненный цикл, источник истины.

Выход просите в структурированном виде (таблица/список/диаграмма Mermaid). Пока каркас не принят — не переходите к программированию.

Как зафиксировать слои и зависимости, чтобы ИИ не «размазал» ответственность по проекту?

Запросите у модели:

  • правила слоёв (Домен / Приложение / Инфраструктура / Интерфейсы);
  • матрицу зависимостей (кто кого может импортировать/вызывать);
  • список запрещённых зависимостей (например, домен не знает про БД/HTTP/фреймворки);
  • примеры портов/адаптеров и место сборки зависимостей (composition root).

Практический тест: попросите объяснить, какие переделки предотвратит такая структура (смена БД, смена транспорта, упрощение тестов).

Похожие статьи