Типы шагов

Три типа заданий, и каждый решает свою задачу.

quiz — выбор варианта

Проверка мгновенная: индекс нажатой кнопки сравнивается с correct. Поле why показывается в любом случае, и при верном ответе тоже — объяснение важнее вердикта.

text — короткий ответ

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

code — код с автопроверкой

Каждый тест — это имя и список подстрок, которые обязаны встретиться в ответе:

tests:
  - name: объявлена функция main
    need: ['func main(']

Ограничение честное: это не компиляция и не запуск. Код, который делает вид, что решает задачу, тесты пройдёт. Пишите need так, чтобы случайно совпасть было трудно.