Как я автоматизировал превращение вайбкодерского PoC в production-ready MVP

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

За несколько дней с помощью AI собирается работающий PoC. Интерфейс открывается, кнопки нажимаются, основной сценарий проходит. После этого возникает вопрос:

А теперь это можно выкатывать в прод?

И тут обычно выясняется, что за красивым демо скрываются дублирование логики, слабая типизация, отсутствующие тесты, случайная архитектура, забытые debug-логи и один файл на несколько тысяч строк, внутри которого, вероятно, находится вся компания.

В упрощённой инженерной нотации задача выглядит так:

? → ?

Обычно именно на этом этапе начинается моя работа: превратить экспериментальный PoC в поддерживаемый MVP, который можно безопасно передать тестировщикам, другим разработчикам и первым пользователям.

Проблема в том, что команда «сделай production-ready» работает плохо. Production readiness — это не одна задача, а последовательность разных инженерных проверок.

Так появился Pre2Prod — CLI-инструмент, который прогоняет репозиторий через структурированный workflow ревью, планирования, исправления и повторной проверки.

Быстрый старт

Сначала можно посмотреть доступные параметры:

npx pre2prod -h

Проверить окружение и список встроенных ревью:

npx pre2prod doctor
npx pre2prod --list

Запустить полный workflow:

npx pre2prod

Запустить только отдельные стадии:

npx pre2prod -p architecture,correctness

Или одно конкретное ревью:

npx pre2prod \
  -p foundation-immediate-risk-triage \
  --max-iterations 1

Pre2Prod изменяет исходный код, поэтому запускать его стоит только в чистом Git-репозитории и обязательно проверять итоговый diff.

Что делает Pre2Prod

Встроенный workflow включает 41 специализированное ревью, объединённое в девять стадий:

Foundation
→ Architecture
→ Correctness
→ Product
→ Verification
→ Operations
→ Assurance
→ Cleanup
→ Delivery

Проверки охватывают архитектуру, типы, runtime-контракты, тесты, observability, безопасность, зависимости, CI, документацию и готовность релизного артефакта.

Порядок важен. Если сначала обложить проект строгими тестами и delivery-gates, а потом менять архитектуру, можно просто сделать неправильную архитектуру ещё дороже в изменении.

Список ревью хранится в YAML и может быть переопределён под конкретный проект или команду.

Почему не один агент

Самый очевидный вариант — открыть одну длинную сессию агента и попросить его последовательно исправить всё найденное.

У такого подхода две проблемы.

Во-первых, агент, который сам предложил изменение и сам его реализовал, склонен считать результат хорошим.

Во-вторых, длинная история постепенно забивается командами, ошибками, промежуточными решениями и деталями реализации. Высокоуровневое понимание проекта тонет в шуме.

Противоположный подход — создавать нового агента для каждого шага — тоже неидеален: каждый раз приходится заново изучать репозиторий.

В Pre2Prod используются две роли.

Persistent Reviewer

Один Reviewer работает на протяжении всего запуска и сохраняет высокоуровневый контекст проекта.

Результат каждого ревью структурирован:

{
  "blockers": [],
  "non_blockers": []
}

В blockers попадают только проблемы, ради которых оправдан ещё один цикл изменений. Остальные предложения складываются в non_blockers и не запускают Worker.

Это важно: AI-ревьюер способен находить улучшения бесконечно. Если критерием завершения сделать идеальный код, рано или поздно он попытается переписать Linux.

Disposable Worker

Если Reviewer нашёл blocker, Pre2Prod форкает Worker от того самого turn, в котором проблема была обнаружена.

Worker:

  1. получает найденные blockers;

  2. в read-only режиме составляет план;

  3. CLI сохраняет план в PREPROD_PLAN.md;

  4. Worker получает write-доступ;

  5. выполняет план;

  6. больше не используется.

После этого исходный Reviewer заново читает изменённый репозиторий.

Транскрипт Worker не копируется обратно в Reviewer. Reviewer видит результат в файловой системе, а не объяснение Worker о том, почему всё получилось прекрасно.

Получается простой цикл:

Review → Plan → Implement → Re-review

Как это реализовано

Pre2Prod написан на TypeScript и работает через Codex App Server.

Используется небольшой набор методов протокола:

initialize
thread/start
thread/fork
thread/goal/set
thread/goal/clear
turn/start

Reviewer запускается в read-only sandbox и возвращает структурированный результат по JSON Schema.

Worker сначала планирует без права записи, после чего отдельный execution-turn запускается с workspace-write.

Сам orchestration engine намеренно небольшой. Он не содержит отдельных реализаций для React, Rust, Solidity или Kubernetes. Основные знания находятся в review prompts.

Благодаря этому тот же движок можно использовать и для других последовательных workflows: security hardening, modernization, compliance preparation или cleanup старого репозитория.

Git и безопасность

По умолчанию Pre2Prod:

  • требует чистый Git working tree;

  • создаёт отдельную ветку;

  • делает checkpoint commit после каждой стадии;

  • не выполняет reset;

  • не очищает пользовательские изменения;

  • не делает deployment;

  • даёт write-доступ только execution-turn Worker.

Есть и более осторожный режим:

npx pre2prod \
  -p foundation-immediate-risk-triage \
  --no-commit

Так можно провести одно ревью, изучить diff и принять решение вручную.

Dogfooding

Первым полноценным подопытным стал сам Pre2Prod.

Это была полезная проверка гипотезы:

Может ли инструмент для очистки вайбкодерских проектов пережить запуск на собственном репозитории?

Просветления он не достиг, но работу нашёл.

В Git-истории появились commits, созданные во время ревью unit tests, integration, contracts, end-to-end, observability и reliability.

Во время dogfooding стало особенно заметно, что production engineering — это не только добавление кода.

Агенты любят создавать новые abstraction layers, adapters, wrappers и конфигурацию. Но иногда лучший production-ready код — тот, который был удалён.

Поэтому cleanup стал отдельной полноценной стадией:

  • dead code;

  • duplication;

  • временные compatibility paths;

  • debug-артефакты;

  • неиспользуемые зависимости;

  • спекулятивные абстракции.

Тестирование workflow

Ключевой интеграционный тест запускает полный цикл через mock App Server:

Reviewer finds blocker
→ Worker is forked
→ plan is generated
→ repository is modified
→ Reviewer re-checks it
→ phase passes

Также есть тесты на аварийное завершение App Server, очистку Worker goal, JSON-RPC transport, CLI, Git, YAML, logging и structured review results.

Перед публикацией выполняется release gate:

pnpm run release:check

Он включает formatting, typecheck, lint, coverage, build, dependency audit, создание npm tarball, чистую установку пакета и smoke test установленного CLI.

Что получилось и чего пока нет

Сейчас Pre2Prod — опубликованный npm CLI с:

  • конфигурируемым YAML-workflow;

  • persistent Reviewer;

  • disposable Workers;

  • structured blockers;

  • Git checkpoints;

  • локальными логами;

  • тестами и release validation.

Но это не магическая кнопка «сделать прод».

Инструмент:

  • не гарантирует отсутствие багов;

  • не гарантирует безопасность;

  • не выполняет deployment;

  • не отменяет code review;

  • не знает бизнес-контекст лучше владельца проекта.

Его задача практичнее: автоматизировать повторяющуюся часть senior engineering работы и привести репозиторий в существенно более пригодное состояние для staging и финальной человеческой проверки.

Попробовать

npx pre2prod -h

Исходники:

https://github.com/vv-bogdanov/pre2prod

Страница проекта на OpenAI Build Week:

https://devpost.com/software/pre2prod

Vibe code the idea. Pre2Prod the product.

Комментарии (9)


  1. thehaffk
    22.07.2026 13:14

    "Claude, make my vibecoded app prod-ready. Fan out subagents. Use best practises, don't make mistakes"


    1. vvbogdanov Автор
      22.07.2026 13:14

      С таким промптом как повезет, особенно если они будут параллельно работать. Воркфлоу в моем проекте систематизирует процесс - 40 последовательных ревью на разные темы. Можете показать проекты, которые вы довели до прода или близко подобным промптом?


  1. OlegKostrikin-Dev
    22.07.2026 13:14

    О, у меня почти такая же схема, только с ревьюером наоборот — он не постоянный, а каждый раз новый. Специально. Свежая сессия с одним и тем же чеклистом на каждый PR: у неё нет «вчера», она не привыкает к коду и не замыливается. Пару раз ревьюверы ловили мои собственные баги, которые я в упор не видел. А контекст проекта живёт не в ревьюере, а в репозитории — есть реестр правил, сессия читает его перед ревью.

    А у постоянного ревьюера не замечали эффекта привыкания?

    Логика такая: если он один раз пропустил какой-то сомнительный паттерн, дальше этот паттерн сидит у него в контексте уже как норма — и он будет пропускать его всегда. Я из-за этого страха и ушёл на свежие сессии, но живого сравнения двух схем у меня нет — интересен ваш опыт.


    1. vvbogdanov Автор
      22.07.2026 13:14

      Ну у меня контекст хранится только в пределах одного батча ревью - тоесть на примерно 40 фаз (иначе очень много времени уходит на бутстрап ревью на каждую фазу - чтобы агенту погрузиться в проект). При повторном перезапуске контекст новый. Можно запустить несколько раз по очереди и это будет как дать на доработку проект 3-м разным специалистам по очереди.


  1. OlegKostrikin-Dev
    22.07.2026 13:14

    Тогда наши подходы ближе, чем я думал — «дать проект трём разным специалистам по очереди» у меня оформилось в отдельную практику: периодические проходы по всему корпусу (документации, кода, дизайн системы и тд) несколькими агентами с разными фокусами (код, доки, хозяйство репозитория). Работает неожиданно хорошо — последний такой проход нашёл дыру, которую ревью на PR не поймало бы в принципе, потому что она жила между диффами.

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


    1. vvbogdanov Автор
      22.07.2026 13:14

      У меня на каждую фазу ревью, если найдены блокеры сразу запускается воркер, который создает план исправлений всех блокеров и вторым шагом (/goal) исправляет их, потом управление возвращается ревьюверу и он проверяет за воркером. И так пока не будет блокеров или исчерпается количество ревью на фазу. Потом ревьювер переходит к следующей фазе. Тоесть у меня не только ревью, а сразу с исправлением.

      Вот полный список ревью фаз:

      Foundation

      • Immediate Risk Triage

      • Reproducible Local Run

      • Core Scope & Critical Journeys

      • Critical Smoke Baseline

      Architecture

      • System Shape & Dependency Boundaries

      • Data Model & Persistence

      • Dead Code & Dependency Cleanup

      • Simplification & Deduplication

      Correctness

      • Type Safety

      • Runtime Contracts

      • Error Handling

      • Failure Diagnostics

      • Data Integrity & Migrations

      • Consolidation & Cleanup

      Product

      • UX Completeness

      • Accessibility

      • Interaction & UI Cleanup

      Verification

      • Core Unit & Invariants

      • Integration

      • Contracts & Compatibility

      • End-to-End Critical Journeys

      • Test Suite Cleanup & Stability

      • Static Analysis & Formatting

      Operations

      • Observability

      • Reliability & Operability

      • Performance & Resource Efficiency

      • Instrumentation & Runtime Cleanup

      Assurance

      • Application Security Hardening

      • Privacy & Sensitive Data

      • Legal & Compliance Readiness

      Cleanup

      • Dead Code & Unused Surface

      • Dependencies, Scripts & Configuration

      • Duplication & Consolidation

      • Temporary, Legacy & Debug Artifacts

      • Owned Code Reduction

      Delivery

      • CI Quality Gates

      • Release Artifact Integrity

      • Secure Supply Chain

      • Deployment Readiness

      • Staging Verification

      • Documentation & Repository


  1. OlegKostrikin-Dev
    22.07.2026 13:14

    Список фаз впечатляет!

    Особенно то, что цикл «ревьювер → воркер с планом исправлений → перепроверка» замкнут автоматически — у меня этот шаг пока ручной.

    Пару фаз из вашего списка утащу себе в чеклист (Dead Code & Dependency Cleanup и Test Suite Stability — ровно мои болевые точки).

    Спасибо за развёрнутые ответы, удачи с инструментом — выглядит круто!


    1. vvbogdanov Автор
      22.07.2026 13:14

      Можете подсмотреть промпты для фаз. Я их пока не вылизывал, но как начальная точка - норм: https://github.com/vv-bogdanov/pre2prod/blob/main/resources/phases.yaml


      1. OlegKostrikin-Dev
        22.07.2026 13:14

        Спасибо большое!