От идеи до продакшена

Учебный маршрут: строим MVP с AI-агентами.

Модуль 14

Проверки перед показом

Проверяем SEO, качество кода, безопасность и UX/accessibility smoke перед финальной приёмкой.

К практике
1Разбор ситуации
Ситуация

Борис проверяет скрытые риски

После m13 JobTrack уже не выглядит игрушкой.

Вакансии добавляются, данные не исчезают молча, export JSON есть, границы хранения записаны, и перед тем как показывать JobTrack, я почти готов сказать: можно показывать.

И тут вылезает список неприятных вопросов.

— что видно в названии вкладки и при шаринге; — дефолтный favicon, пустой description, мусорный title; — проходят ли сборка, type-check и тесты; — debug-следы, мёртвый код, лишние зависимости; — утечки в export JSON: secrets, session data, лишние поля; — длинные вакансии, которые ломают экран; — проходится ли сценарий с клавиатуры и на mobile.

Это не новая фича. Это аудит: SEO, качество кода, безопасность перед первым нормальным показом.

Плохой prompt тут выглядит полезным:

Проверь проект и исправь всё, что найдёшь.

Слишком широко. Агент за один заход поменяет SEO, перепишет UI, притащит новую библиотеку, поправит тесты и залезет в storage. На экране стало лучше, а я уже не понимаю, что изменилось и зачем — потерял контроль над diff.

Перед первым показом нужен не ремонт всего подряд, а аудит без правок: сначала список проблем, из него — must-fix, и только их я чиню точечно.

Короче, правило простое: увидел слишком много изменений — стоп. Scope расползся — сузить заново, потом дальше.

2Принцип
Теория

Проверки перед показом

Зачем нужен этот модуль

Проверки перед показом — это не ещё один этап разработки и не про новую функцию.

К этому моменту JobTrack прошёл весь путь: от discovery до data boundaries. Новую функцию я не придумываю, MVP не расширяю. Задача теперь другая — поймать скрытые риски перед первым показом.

Пользователь не увидит архитектуру. Он увидит странный title, сломанный mobile, неработающий build, случайный debug-текст, лишние данные в export JSON или поле ввода, которое ломает интерфейс. И это уже не техдолг. Это выглядит так, будто продукту нельзя доверять.

Короче, модуль 14 — промежуточная проверка перед Definition of Done. Я тут не принимаю MVP финально. Я собираю audit report и чиню только то, что блокирует нормальный первый показ. В SPP это делает скилл-чекпоинт pre-show-audit внутри фазы 6.

SPP держит память о проекте в docs/spp/pipeline-state.md: что за продукт, что сделано, какие решения приняты. Поэтому работу можно прервать и продолжить в новой сессии. Следующий модуль — это следующая фаза того же pipeline.

Почему сначала audit report

Потому что prompt в духе проверь и исправь всё — опасная штука. Он смешивает поиск проблем и правки. Агент может найти 20 замечаний, исправить 12, добавить 3 новые идеи и случайно поменять то, что уже работало.

Сначала audit report, без единой правки. Потом я выбираю, что из этого must fix before demo. И только после этого агент лезет в код чинить выбранное. А если правок вдруг набралось слишком много — стоп, пересобираем scope.

Смысл один: не дать последнему осмотру превратиться в новый цикл разработки.

SEO и sharing baseline

Что я смотрю перед показом.

SEO и sharing baseline. Снаружи MVP должен выглядеть как продукт, а не как заглушка: title отражает продукт, description не пустой и не обещает лишнего, favicon не дефолтный, OG title/description/image на месте или записано, почему их пока нет. Robots и sitemap не врут, если проект уже публичный.

Публичный URL обычно появляется только в модуле 15, на первом деплое. Поэтому здесь я проверяю SEO на будущее или на локальном demo, а не требую готовую ссылку прямо сейчас. Для локального demo нормально написать прямо: публичного SEO пока нет, показываю экраном или локальной ссылкой.

Quality gates

Quality gates. Обычно хватает tests, type-check, build и lint — если lint в проекте есть. Команды нет — не выдумывай её. Запиши, что отдельного lint/build/test тут нет, и чем это закрыто: manual fallback, smoke check, clean run. Зелёные проверки не доказывают, что продукт полезен. Зато красные почти всегда значат, что показывать рано.

Code quality audit

Code quality audit — короткий осмотр, не ревью архитектуры на три дня. Смотрю: нет ли мёртвого кода после прошлых итераций, случайных зависимостей, console.log, debug text, временных флагов, тестовых данных в UI. Плюс TODO без owner, дубли важных значений вроде статусов и источников, и не пролезла ли новая функция мимо scope. Задача — вымести мусор перед показом. Не затевать большой refactor из-за того, что агенту попался уродливый файл.

Security audit

Security baseline. Даже локальный MVP не должен течь данными. Проверяю: .env, ключи, токены, credentials не уехали в Git. secrets не утекли в клиентский код. Пользовательский ввод не вставляется как HTML без защиты, а поля title, company, notes, nextStep не открывают очевидный XSS. Отдельно — export JSON. В нём не должно быть токенов, session data, debug dumps и stack traces. Внешние ссылки — открываются безопасно. README не просит юзера пихать секреты в prompt к ИИ.

Это не pentest. Это baseline. Который всё равно лучше, чем надежда, что до маленького MVP никто не доберётся.

UX/accessibility smoke

UX/accessibility smoke. Перед показом важна не красота, а проходимость сценария: основной путь живой на mobile width, длинные названия вакансий и компаний не ломают layout, empty state понятен, error state есть или его нет — если сценарию он не нужен. Фокус виден при keyboard navigation. У кнопок и полей — понятные labels. Текст не наезжает на соседние элементы. И если storage локальный — юзер это понимает. Полный accessibility audit оставляю на потом. Базовые косяки перед показом ловлю сразу.

Must fix и backlog v2

Находки после аудита раскладываю на две кучи.

Must fix before demo — всё, что ломает запуск или основной сценарий, грозит утечкой данных, портит export, мешает понять продукт или делает публичную ссылку явно сырой.

Backlog v2 — nice-to-have polish, будущие SEO-улучшения, большая accessibility-доработка, refactor без пользовательского эффекта и новые функции.

Главная ошибка — чинить всё подряд. Модуль 14 не расширяет MVP. Его дело — снять риски перед m15.

Если изменений слишком много

Простое правило, если ты не разработчик: агент после аудита предлагает слишком много правок — тормози. Читать каждую строку кода не нужно. Достаточно сказать:

Слишком много изменений для одного шага.
Раздели результат на:
1. must fix before demo;
2. можно отложить в backlog v2;
3. не надо делать сейчас.
Код пока не меняй.

Если агент уже внёс много правок, не проси его продолжать чинить всё подряд. Сначала попроси короткое резюме: что изменилось, зачем, какие проверки надо повторить. Объяснение мутное — откатывай или зови того, кто в коде разберётся.

Гора внезапных правок прямо перед показом — уже повод насторожиться. Никакого геройского допиливания. Стоп — и scope снова у тебя в руках.

Дополнительный материал

Для ознакомления перед практикой

Короткие разборы, которые помогают пройти упражнение без лишнего контекста в основном тексте.

3Практика
Практика

Провести аудит перед показом

Цель практики — проверить твой проект перед финальной приёмкой: SEO/sharing, качество кода, безопасность, UX/accessibility smoke. Не добавляй новые функции. Сначала аудит, потом только подтверждённые must-fix.

Шаг 0. Запусти audit workflow

Начни с SPP и запрети правки до отчёта:

Используй /spp.

Мы на модуле 14. Мой проект уже прошёл m13: данные имеют storage decision и JSON export.

Нужно провести аудит перед показом:
- SEO/sharing baseline;
- quality gates;
- code quality;
- security baseline;
- UX/accessibility smoke.

Сначала сделай audit report без правок.
Не меняй код, тексты, зависимости, storage, export JSON и UI.
После отчёта раздели находки на:
1. must fix before demo;
2. backlog v2;
3. не делать сейчас.

Шаг 1. Проверь SEO и sharing

Полный SEO/sharing-чеклист живёт в одном месте — в дополнительном материале «SEO baseline для MVP». Здесь прогони его, а не переписывай заново. Попроси агента проверить:

  • title;
  • description;
  • favicon;
  • OG title/description/image;
  • robots/sitemap, если проект уже публичный;
  • public URL или честный local demo mode (публичный URL обычно появляется только после деплоя в модуле 15).

Prompt:

Проверь SEO и sharing baseline для моего проекта.

Код не меняй.

Верни таблицу:
| Проверка | Сейчас | Риск | Рекомендация |

Проверь:
- title;
- description;
- favicon;
- OG title/description/image;
- robots/sitemap, если применимо;
- public URL или local demo mode.

Не обещай SEO для публичного поиска, если MVP показывается локально.

Шаг 2. Проверь quality gates

Запусти доступные команды проекта. Для типичного JS/TS проекта:

npm test
npm run type-check
npm run build
npm run lint

Если команды нет, не выдумывай. Запиши, что именно отсутствует. Несуществующий script в отчёте — это не качество, а театр.

Prompt:

Проверь quality gates проекта.

Сначала найди доступные npm scripts.
Запусти только существующие проверки:
- tests;
- type-check;
- build;
- lint, если есть.

Верни:
- команда;
- результат;
- если команда отсутствует, чем это покрыто сейчас;
- что блокирует demo.

Шаг 3. Проведи code quality audit

Попроси короткий осмотр без большого refactor:

Проведи code quality audit моего проекта.

Код не меняй.

Проверь:
- мёртвый код;
- случайные зависимости;
- debug-текст, console.log и временные флаги;
- устаревшие TODO без решения;
- дублирование статусов, источников и других важных значений;
- функции, которых нет в MVP scope.

Верни только проблемы, которые могут помешать первому показу.
Большой refactor отправляй в backlog v2.

Шаг 4. Проведи security audit

Проверку JSON export на секреты подробно ты уже делал в модуле 13 — здесь повтори её, а не описывай заново. Проверь baseline безопасности:

Проведи security audit для текущего MVP.

Код не меняй.

Проверь:
- .env, ключи, токены и credentials не попали в Git;
- secrets не попали в client-side код;
- пользовательский ввод не вставляется как HTML;
- нет очевидного XSS-риска в title, company, notes, nextStep;
- export JSON не содержит secrets, session data, debug dumps и stack traces;
- README не просит вставлять персональные данные или secrets в prompt к ИИ.

Раздели находки на must fix before demo и backlog v2.

Шаг 5. Проведи UX/accessibility smoke

Это не полный аудит доступности. Это быстрый проход перед показом.

Проверь:

  • mobile width;
  • keyboard/focus;
  • длинные названия вакансий и компаний;
  • empty state;
  • error state или честное отсутствие error state;
  • понятные labels у кнопок и полей;
  • текст не перекрывает другие элементы;
  • локальное хранение данных объяснено, если оно выбрано в m13.

Prompt:

Проведи UX/accessibility smoke для моего проекта.

Код не меняй.

Проверь основной сценарий:
- открыть приложение;
- добавить вакансию;
- увидеть её в списке;
- изменить status или notes;
- сделать JSON export.

Отдельно проверь:
- mobile width;
- keyboard/focus;
- long text;
- empty/error states;
- labels.

Верни список must fix before demo и backlog v2.

Шаг 6. Раздели must fix и backlog v2

Создай docs/release.md — это журнал приёмки и релиза проекта. Здесь живут audit report и, начиная с модуля 15, Definition of Done и результаты финальной приёмки. Задачи остаются в docs/todo.md, а docs/release.md фиксирует, что и когда проверено.

Собери общий audit report в docs/release.md:

## Audit before demo

### Quality gates
- npm test: ...
- npm run type-check: ...
- npm run build: ...
- npm run lint: ...

### Must fix before demo
- ...

### Backlog v2
- ...

### Not now
- ...

Must fix — только то, что блокирует показ или создаёт риск. Всё остальное уходит в backlog v2.

Шаг 7. Исправь только подтверждённые must-fix

Теперь можно разрешить агенту правки, но только выбранные:

Исправь только подтверждённые must-fix пункты из audit report.

Не добавляй новые функции.
Не меняй storage decision и export JSON format без отдельного решения.
Не добавляй зависимости без объяснения и подтверждения.
Не делай redesign.

Перед правками перечисли:
- какие файлы ожидаешь менять;
- какую проверку повторишь после каждой правки.

Если изменений слишком много, остановись:

Слишком много изменений для одного шага.
Раздели правки на маленькие must-fix задачи.
Код пока не меняй.

Шаг 8. Повтори проверки

После исправлений повтори только релевантные проверки:

  • tests/type-check/build/lint, если были затронуты код или сборка;
  • manual scenario, если менялся UI;
  • export JSON check, если менялись данные;
  • SEO/sharing check, если менялись metadata.

Запиши результат в audit report:

### Re-check
- Что исправлено:
- Какие команды прошли:
- Что проверено руками:
- Что осталось в backlog v2: