<< All versions

Skill v1.0.0

currentAutomated scan100/100
shakhruz/mila-companion/flashcards
──Details
PublishedSeptember 28, 2026 at 06:36 AM
Content Hashsha256:f56a2f87b857205b...
Git SHA
──Files
Files (1 file, 11.2 KB)
SKILL.md11.2 KBactive
SKILL.md · 132 lines · 11.2 KB

version: "1.0.0" name: flashcards description: "Флэшкарточки из любого источника (отчёт, книга, урок, закон, расшифровка) — как у NotebookLM, но с источником на каждой карточке, интервальным повторением, тремя типами, ru/uz (латиница и кириллица)/en, картинками в скетч-стиле для канала, PDF для печати, импортом в Anki и квизами в Telegram. Применять при «сделай карточки», «флэшкарточки», «колода для запоминания», «карточки к уроку», «квиз по материалу», «повторение по Anki»."


flashcards — колода, которую запоминают

Навык заведён 25.09.2026 по слову владельца MILAGPT: «пойдём по способностям NotebookLM — генерация флэшкарточек… сделай наш аналог, который будет ещё лучше». Разведка того, как это устроено у Google, есть у старшей. Если коротко, у NotebookLM нет интервального повторения, ссылки на место в источнике, второго языка на карточке, печати и Telegram. У нас всё это есть.

Что получается на выходе

ФайлКому и зачем
cards-<язык>/NN-front.png, NN-back.png1080×1350, скетч на кремовой бумаге: пост, карусель, сторис
print-<язык>.pdfA4, 8 карт на лист, обороты зеркально, линии реза: раздатка на занятие
trainer.htmlтренажёр на телефоне: каталожная карточка с переворотом, свайп вправо — «знаю», влево — «повторить», вверх — «спросить»; кнопки оценки внизу под большой палец; на десктопе клавиши (пробел, ←, →, ↓, ↑); кольцо прогресса; экран итога (сколько знал, что повторить, дата следующей повторки); повторы по Лейтнеру (1·3·7·14·30 дней); язык, режимы «Сегодня · Все · Ошибки»; тёмная тема и «уменьшить движение». Проверен на 360, 390, 430 и 768 px
anki-<язык>-basic.txt, anki-<язык>-cloze.txtимпорт в Anki одной кнопкой: тип, колода и теги уже в заголовке файла
polls-<язык>.jsonквиз-опросы Telegram с правильным ответом и объяснением

Шаг 1. Разговор до колоды (одним сообщением, не анкетой)

Спросите только то, чего не знаете: для кого колода (ученик, клиент, подписчики канала), сколько карт (мало 8 · стандарт 12 · много 20–30), сложность (лёгкая: факты и определения; средняя: связи и причины; трудная: применение и «почему»), языки, куда (канал, печать, тренажёр, Anki). Не ответили — берите стандарт: 12 карт, смесь сложностей, язык собеседника.

Шаг 2. Колода — deck.json

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

json
{
"id": "slug-kolody",
"title": {"ru": "…", "uz_latn": "…", "en": "…"}, // строка или словарь по языкам
"subtitle": {"ru": "…"}, "kicker": {"ru": "Коротко, обычным регистром"},
"source_doc": {"title": "Название источника", "author": "…", "date": "ДД.ММ.ГГГГ"},
"langs": ["ru", "uz_latn", "uz_cyrl", "en"],
"ask_bot": "@имя_вашего_бота", // кнопка «спросить подробнее» в тренажёре
"cards": [
{"id": "c01", "type": "qa", "difficulty": "easy|medium|hard", "tags": ["тема"],
"source": {"section": "Раздел источника", "quote": "дословная фраза ≤30 слов"},
"ru": {"front": "Вопрос?", "back": "Ответ.", "why": "почему это важно", "hint": "подсказка (необяз.)",
"answer": "короткий ответ для квиза", "choices": ["неверный 1", "неверный 2", "неверный 3"]}},
{"id": "c02", "type": "cloze", "ru": {"front": "Каждое {{пятое}} высказывание — требование.", "back": "пояснение"}},
{"id": "c03", "type": "explain", "ru": {"front": "Почему…?", "points": ["мысль 1", "мысль 2", "мысль 3"]}}
]
}

Правила колоды — то, чем она лучше:

  1. Источник у каждой карты: раздел и дословная фраза. Цитата остаётся на

языке оригинала, её не переводят. Нет фразы в источнике — нет карты. Проверка не пропустит карту без источника.

  1. Одна карта — одна мысль. Лицо ≤30 слов, оборот ≤45. Список из пяти пунктов

дробится на карты.

  1. Смесь типов. Примерно половина qa, четверть cloze (пропуск — цифра,

термин, ключевое слово; можно два пропуска), четверть explain («объясните своими словами» + 2–4 опорные мысли на обороте). explain учит понимать, а не угадывать.

  1. `why` на обороте: одна фраза, зачем это знать. Это наш ответ на кнопку

Explain у NotebookLM, только на самой карте.

  1. Неверные варианты для квиза правдоподобны и из того же источника, а не

очевидная чепуха. Без answer и choices карта в квиз не идёт, и это нормально.

  1. Цифры — как в источнике. Не округляйте и не пересчитывайте. Если доля

посчитана на малой выборке, скажите это в why.

  1. Узбекский: пишите uz_latn (латиница 2021+, апостроф ʻ U+02BB в oʻ/gʻ,

ʼ U+02BC). uz_cyrl соберётся сама из латиницы (scripts/translit_uz.py, исключения — месяцы, -tsiya → -ция, korrupsiya). Хотите проверить — задайте uz_cyrl явно. Узбекский текст наружу вычитывает носитель, это правило из humanizer-uz и uzbek-editor.

Шаг 3. Проверка и сборка

bash
S=~/.claude/skills/flashcards/scripts
python3 $S/deck.py check ~/work/<колода>/deck.json # ошибки ✗ исправить, предупреждения ⚠ прочитать
python3 $S/deck.py build ~/work/<колода>/deck.json ~/work/<колода>/out
python3 $S/deck.py render ~/work/<колода>/out # PNG и PDF

У компаньона браузера нет, поэтому render кладёт заявки в ~/work/render-queue/ (очередь хоста, раз в минуту). Готово, когда рядом с каждой заявкой появился .done с "ok": true. Папка колоды обязана лежать внутри ~/work. На 12 карт × 4 языка это ~100 заявок, минут 5–8. Одного языка для канала хватает: build … --lang ru.

Посмотрите 2–3 PNG глазами (Read), прежде чем отдавать: текст не вылез, пропуск виден, источник читается.

Шаг 4. Куда отдать

  • Человеку на телефон — trainer.html файлом. Шрифты внутри, сеть не нужна,

прогресс хранится на его устройстве. Если попросят ссылку — просите старшую выложить страницу.

  • В канал — 3–5 пар PNG каруселью (лицо, потом оборот) по правилам публикации

вашего владельца: пост наружу — после его «да».

  • На занятие — print-<язык>.pdf: печать двусторонняя, переворот по длинному краю.
  • В Anki — anki-*.txt: Файл → Импорт, всё уже размечено.
  • Квиз в Telegram — сначала показ:

python3 $S/deck.py polls out/polls-ru.json --chat <id>, отправка — с --send. Отправлять только в чат, где владелец или ученик попросил квиз. Бот должен быть в этом чате. В группе ответы не анонимны: участники увидят, кто как ответил.

Картинка-иллюстрация (по желанию)

У карты может быть поле "image": "file.png" рядом с deck.json: рисунок встанет над вопросом. Рисунок делайте навыком genimage с фиксированным блоком стиля из mila-studio/prompts/style-sketch.md (карандашный скетч, masterpiece), без текста на картинке: весь текст карта ставит сама. Один рисунок стоит ≈ $0,14. На колоду хватит одного, для обложки или первой карты, а не на каждую карту.

Сколько стоит

Сборка, PNG, PDF, тренажёр, Anki и квизы — бесплатно: всё собирается у нас. Платны только иллюстрации genimage, ≈ $0,14 штука, по желанию. Колода без картинок стоит только вашего времени на deck.json.

Чего навык не делает

  • Не выдумывает факты: всё берётся из источника, который дал человек.
  • Не публикует сам: PNG в канал и квизы — только туда, где попросили.
  • Не хранит прогресс ученика у нас: тренажёр пишет только в его браузер.
All versions