Школа вайб-кодинга: как я сделал курс, после которого мой сайт ребёнку больше не нужен
Курсы «программирование с нейросетью» учат копировать промпты: игра появляется, понимания нет. Я собрал школу, где проверяют не память, а результат, где каждый шаг можно не читать, а пройти как визуальную новеллу или послушать, и где ребёнок в конце работает в обычном взрослом инструменте — без моего сайта.
Курсы «программирование с нейросетью» обычно учат копировать промпты. Игра появляется, понимания нет — и первая же поломка заканчивает историю. Я собрал школу, где проверяют результат, а не память; где ребёнок, который не читает, проходит тот же урок как визуальную новеллу или слушает его; и где в конце он работает в обычном взрослом инструменте без моего сайта. Ниже — что оказалось важным и что я переделывал.
С чего началось
Ребёнок собирает игру с нейросетью за десять минут. Игра работает, ребёнок доволен, родитель доволен. Спрашиваешь: а почему герой падает быстрее, чем в начале? Ответа нет.
Это и есть развилка. Можно оставить как есть — получится развлечение, которое выглядит как обучение. А можно потребовать понимания — и тогда придётся придумать, как его проверять, потому что квиз в конце урока проверяет не то.
Приёмка вместо теста
Тест показывает, что ребёнок запомнил слова. Он ничего не говорит о том, работает ли то, что он сделал.
Поэтому на старшей ступени вместо квиза стоит приёмка: список проверяемых пунктов, который ребёнок отмечает сам. Не «интересно ли получилось», а «открывается по ссылке с телефона», «друг разобрался без моих объяснений», «после последнего изменения ничего не сломалось».
А в конструкторе для средней ступени проверка встроена в кнопку публикации. Собрал игру одной фразой к ИИ — опубликовать нельзя. Сначала поменяй сам хотя бы две настройки и ответь на пару вопросов о том, как игра устроена. Проверка считается на сервере, из браузера её не обойти.
Это не про строгость. Это единственный способ превратить промптинг в понимание причины и следствия: пока ты не потрогал руками, ты не знаешь, что от чего зависит.

Ещё до текста шаг задаёт вопрос и ждёт ответа про себя. Приём называется «сначала предскажи»: угадать результат до запуска учит быстрее, чем разбор после. Ошибся — запомнил навсегда; угадал — понял, что уже умеешь.
Дети, которые не читают
Первая версия курса была текстовой: короткий шаг на две-четыре минуты, потом практика. Для читающего ребёнка это отлично работает.
Проблема в том, что часть детей просто не читает. Не «не может» — не хочет, и никакие уговоры это не меняют. Обычный курс теряет их на втором уроке, и дело не в способностях: форма подачи не совпала с человеком, а другой формы не предложили.
Поэтому у каждого шага появился второй режим — визуальная новелла. Тот же самый материал, но репликами: фон меняется по сцене, у героя меняется выражение лица, в местах, где раньше был вопрос «как думаешь?», теперь настоящий выбор с последствиями.


Там, где в тексте стоит вопрос «как думаешь?», в новелле настоящий выбор — и герой отвечает по-разному в зависимости от того, что ребёнок выбрал.
Сейчас таких глав 78 — по одной на каждый шаг двух старших ступеней. Отметки о прохождении общие: прочитал текстом, зашёл в новеллу — шаг уже засчитан, и наоборот. Как проходить, дело вкуса.
Технически это оказалось интереснее, чем я ожидал. Главы и уроки должны рассказывать одно и то же, а правятся отдельно — значит, разъедутся обязательно. Поэтому в сборке стоит проверка: у каждой главы записан хеш урока, по которому она сделана. Правится урок — сборка падает и требует перечитать главу. Не «надо не забыть», а машина, которая не пускает.
Отдельная находка: JavaScript-регулярки со словами не работают на кириллице — \b считает буквой только латиницу. Половина проверок текста молча пропускала русские слова, пока я не выяснил, почему.
Третий способ: не читать вообще
Новелла закрыла одну дыру и обнажила вторую. Реплик меньше, чем текста, они короче и держат внимание — но это по-прежнему чтение. Ребёнку, которому не даётся сам процесс, я предложил тот же барьер, только покрасивее.
Поэтому у новеллы появился голос. Озвучены все 2829 реплик курса — 4,6 часа речи, обе старшие ступени целиком и младшая. Голос по умолчанию молчит: включается из меню, а не бьёт из телефона у того, кто просто открыл ссылку. И замолкает, как только ребёнок отвечает на вопрос, — иначе получилось бы, что кто-то посторонний подсказывает через плечо.

Интересного тут ровно одно место. Курс правится каждый день, а озвучка — не текст, её нельзя пересобрать бесплатно. Поэтому имя каждого аудиофайла содержит хеш реплики, по которой он сделан: правится урок — переозвучивается одна строка, а не весь шаг. Полный прогон нужен один раз, дальше десятки строк на партию.
А ещё текст под озвучку пришлось переписать — это оказалось отдельной работой, а не кнопкой «прочитать вслух». Синтез читает «Роблокс» набором латинских букв, DECISIONS.md — по буквам, а в слове «стоит» ставит ударение наугад и промахивается в половине случаев. 45 названий записаны произношением, имена файлов заменены смыслом, омографы разведены. Девять английских строк оставлены как есть: «Use this template», «command not found» — это надписи, которые ребёнок увидит на экране своими глазами, и переводить их вслух было бы враньём.
Устроено так, что голос не может сломать курс: движок сначала спрашивает индекс файлов рядом с аудио. Нет файлов — нет индекса — в меню просто нет пункта «Голос», и ни одного запроса за озвучкой не уходит.
Гейт, который знает, о чём молчит движок
Старшая ступень — это пять треков на выбор: моды для Minecraft, игра в Roblox, игра внутри Telegram, Godot и публикация в Steam. Курс сам называет старт с пустой папки «способом утонуть», а три трека из четырёх при этом начинались именно с неё.
Теперь у каждого есть заготовка на GitHub. Но ценность там не в коде — код небольшой. Ценность в проверке, которая стоит внутри.
У каждого движка своя тихая беда, о которой он не сообщает вовсе:
- Minecraft не скажет, что датапак не загрузился из-за лишней запятой в JSON. Просто ничего не произойдёт, и ни слова в чате.
- Godot не сообщит, что
is_action_pressed("jmup")с опечаткой навсегда возвращает «нет». Ребёнок будет искать ошибку в коде движения. - Roblox молча не запустит скрипт с неправильным именем файла.
- Мини-апп в Telegram с радостью опубликует токен бота — а страница мини-аппа публична целиком.
Взрослый разработчик это знает и проверит. Ребёнок ищет ошибку не там, где она есть, не находит и делает вывод, что не способен. Проверка называет файл и строку словами: не «ошибка», а «строка 9 ссылается на функцию, которой нет».
Три заготовки из пяти при первом же прогоне показывают красный крестик — и это задумано. Проверка требует ответить, что ты строишь, прежде чем пускать дальше: пока не заполнено название игры и описание, публикация не работает. Ровно то, чему учит один из первых шагов курса, только требует машина, а не текст.
Тексты, которые не исключают половину детей
Русское прошедшее время склоняется по роду. «Ты сделал», «ты сам справился», «ты уверен» — читается мальчиком, а девочку тихо выносит за скобки.
Я ловил это глазами, ловил плохо и постоянно пропускал. Теперь ловит сборка: отдельная проверка ищет родовые формы по всему курсу — по 84 шагам и 78 главам. Лечится будущим временем, безличными оборотами или настоящим: не «ты сделал», а «ты сделаешь» или «получилось».
Мелочь, о которой не думаешь, пока не начнёшь искать целенаправленно. И которая решает, продолжит девочка курс или почувствует, что он не для неё.
Ребёнок уходит со своим инструментом
Самая частая беда детских курсов — привязка к платформе. Конструктор работает, пока открыт сайт курса. Курс закончился, и вместе с ним закончилось всё, что ребёнок «умел».
Поэтому старшая ступень устроена наоборот: она заканчивается тем, что мой сайт становится не нужен. Проект живёт в его репозитории, собирается его командой, выкатывается на его сервер. Сертификат подтверждает не «прошёл курс», а что именно построено: проект, живая ссылка, репозиторий — и проверяется публично по короткому коду.

Старшая ступень — это семь модулей ядра и пять треков на выбор. Ребёнок проходит их не по отдельности, а на материале своего проекта.
Это неудобно с точки зрения удержания и правильно с точки зрения того, зачем всё затевалось.
Что дальше
Три ступени написаны целиком: 84 шага, от «тапни картинку» до своего сервера. Курс живёт на school.nikam.dev, открывается и в браузере, и как приложение внутри Telegram.
Озвучка закрыта: 2829 реплик, 4,6 часа — новеллу теперь можно слушать, а не читать. Дальше английская версия: там отдельная история про то, что законы о детских данных в США и ЕС делают архитектурным решением, а не абзацем в условиях.
Полный разбор продукта — в кейсе про школу.
Частые вопросы
Что такое вайб-кодинг?
Создание программ и игр через описание задачи словами: человек придумывает и проверяет, а код пишет ИИ. Главный навык здесь не синтаксис, а умение ясно объяснить задачу и оценить результат.
С какого возраста и сколько стоит?
С 7 лет, три ступени под возраст. Курс бесплатный целиком и платным не станет: ни рекламы, ни платных разблокировок. Платными бывают только сторонние ИИ-инструменты — на младших ступенях хватает бесплатных.
Чем это отличается от курса, где дают промпты?
Проверкой. Чтобы опубликовать игру, собранную с ИИ, ребёнок должен сам поменять в ней хотя бы две вещи и ответить, как она устроена. Пока не ответил, кнопка публикации не работает.
Что делать, если ребёнок не любит читать?
У каждого шага двух старших ступеней есть режим визуальной новеллы: тот же материал репликами, с фонами, эмоциями героя и выбором. 78 глав. А новеллу можно ещё и слушать — озвучены все 2829 реплик курса, 4,6 часа. Отметки о прохождении общие, так что способ прохождения — дело вкуса.
Какие данные ребёнка собираются?
Только придуманный им ник. Ни имени, ни возраста, ни фото, ни школы. Учиться и собирать игры можно вообще без регистрации; аккаунт заводит взрослый, и он же может удалить всё одной командой.
Ребёнок останется привязан к вашей платформе?
Наоборот, это цель курса. Старшая ступень заканчивается тем, что проект живёт в его собственном репозитории, собирается его командой и выкатывается на его сервер. Наш сайт ему больше не нужен.