book-distill

Скилл для Claude Code, который перегоняет длинный материал — книгу, курс, подкаст, транскрипт видео, лонгрид — не в пересказ, а в набор вызываемых скиллов: методы с шагами, условиями применения и границами.

Русская локализация и доработка kangarooking/cangjie-skill (MIT).

English


Чем это отличается от конспекта

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

Из одной книги выходит не один большой скилл, а 3–7 маленьких, каждый про один метод — так они точнее срабатывают и не дерутся за вызов.

Главный принцип: ничего не принимается на веру

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

что требует
V1 повторяемость подтверждается минимум в двух независимых местах материала
V2 предсказательная сила позволяет ответить на вопрос, которого в материале нет
V3 неочевидность это не то, что скажет любой неглупый человек без книги

Не прошедшее откладывается в rejected/ с объяснением, почему. Цитата без указания места не используется вовсе.

Как устроен конвейер

Девять стадий. В каждом боксе — что делается и зачем: если стадию выкинуть, сломается именно то, что написано после «ЧТОБЫ».

╭────────────────────────────────────────────────────────────────╮
│ ВХОД — четыре вопроса человеку                                 │
│ где текст · метаданные · плагин или россыпь + namespace        │
│ первый ли это разбор                                           │
│ ────────────────────────────────────────────────────────────── │
│ ЧТОБЫ не пришлось переименовывать всё в конце: от ответа       │
│       зависят имена скиллов, а имя участвует в маршрутизации   │
│       и в перекрёстных ссылках — переименование обнулит тесты  │
╰────────────────────────────────────────────────────────────────╯
                                 │
                                 ▾
╭────────────────────────────────────────────────────────────────╮
│ Стадия 0 — понять целое                                        │
│ → BOOK_OVERVIEW.md                                             │
│   каркас · термины · критика автора · аудитория                │
│ ────────────────────────────────────────────────────────────── │
│ ЧТОБЫ у пяти экстракторов был общий якорь: без каркаса         │
│       фрагмент не имеет роли, а метод — рамки применения       │
╰────────────────────────────────────────────────────────────────╯
                                 │
                                 │  ★ каркас понят верно?  класс модели для стадии 1?
                                 ▾
╭────────────────────────────────────────────────────────────────╮
│ Стадия 1 — пять экстракторов параллельно                       │
│ методы · принципы · случаи · ловушки · термины                 │
│ → candidates/ — сырой пул, ничего не отсеяно                   │
│ ────────────────────────────────────────────────────────────── │
│ ЧТОБЫ охват не зависел от одного взгляда: чего не видит        │
│       охотник за методами, находит охотник за ловушками        │
╰────────────────────────────────────────────────────────────────╯
                                 │
                                 ▾
╭────────────────────────────────────────────────────────────────╮
│ Стадия 1.5 — тройная проверка                                  │
│ V1 повторяемость · V2 предсказание · V3 неочевидность          │
│ → verified.md  +  rejected/ с причинами                        │
│ ────────────────────────────────────────────────────────────── │
│ ЧТОБЫ в скиллы не попало единичное и то, что скажут без книги. │
│       Искажённую цитату V1–V3 НЕ ловят — это работа стадии 4   │
╰────────────────────────────────────────────────────────────────╯
                                 │
                                 │  ★ что вернуть, что выкинуть
                                 ▾
╭────────────────────────────────────────────────────────────────╮
│ Стадия 2 — сборка скиллов (RIA++)                              │
│ R · I · A1 · A2 · E · B      3–7 скиллов                       │
│ ворота: атомарность · калибровка · «что не покрыто»            │
│ ────────────────────────────────────────────────────────────── │
│ ЧТОБЫ метод стал вызываемым: у него появились триггер,         │
│       выполнимые шаги и граница «здесь не применять»           │
╰────────────────────────────────────────────────────────────────╯
                                 │
                                 ▾
╭────────────────────────────────────────────────────────────────╮
│ Стадия 3 — связи и указатель                                   │
│ → INDEX.md · GLOSSARY.md · сверка на омонимы                   │
│ ────────────────────────────────────────────────────────────── │
│ ЧТОБЫ скиллы не дрались за вызов и не противоречили друг       │
│       другу, употребляя один термин в разных смыслах           │
╰────────────────────────────────────────────────────────────────╯
                                 │
                                 ▾
╭────────────────────────────────────────────────────────────────╮
│ Стадия 4 — тесты триггеров                                     │
│ слепой прогон · ревьюер ОТКРЫВАЕТ локаторы                     │
│ → test-results.md                                              │
│ ────────────────────────────────────────────────────────────── │
│ ЧТОБЫ цитата и V1 держались на проверке, а не на слове:        │
│       красиво оформленную неправду не поймает больше никто     │
╰────────────────────────────────────────────────────────────────╯
                                 │
                                 ▾
╭────────────────────────────────────────────────────────────────╮
│ Стадия 5а — упаковка и установка                               │
│ валидация → плагин → /reload-plugins                           │
│ цена присутствия — вслух, цифрой                               │
│ ────────────────────────────────────────────────────────────── │
│ ЧТОБЫ скилл вообще начал существовать для агента:              │
│       из каталога сборки хост не грузит ничего                 │
╰────────────────────────────────────────────────────────────────╯
                                 │
                                 ▾
╭────────────────────────────────────────────────────────────────╮
│ Стадия 4.5 — живая маршрутизация  ★                            │
│ реальный claude -p среди ВСЕХ скиллов машины                   │
│ 20 запросов: 10 «должен» + 10 приманок                         │
│ → routing/      провал → назад в стадию 2                      │
│ ────────────────────────────────────────────────────────────── │
│ ЧТОБЫ узнать, позовут ли скилл в жизни: пачка может взять      │
│       49/49 на тепличном тесте и не вызваться ни разу          │
╰────────────────────────────────────────────────────────────────╯
                                 │
                                 ▾
╭────────────────────────────────────────────────────────────────╮
│ Стадия 5б — выдача человеку                                    │
│ → DIGEST.md · дельта-тест · гайд словами                       │
│ ────────────────────────────────────────────────────────────── │
│ ЧТОБЫ человек знал, что появилось и какой фразой звать —       │
│       иначе пачка остаётся списком имён, которые не помнят     │
╰────────────────────────────────────────────────────────────────╯

Стоп-точек, где нужен человек, три: на входе (плагин или россыпь, namespace), после стадии 0 (верен ли каркас — и там же класс модели для дорогой стадии 1) и после 1.5 (что из отобранного идёт в работу).

Шесть блоков каждого скилла

╭──────────────────────────────────────────────────────────────╮
│ R — что сказано в источнике                                  │
│ цитата на языке оригинала, С ЛОКАТОРОМ                       │
│ ≤150 знаков; для англоязычного оригинала ≤100 слов           │
│ ──────────────────────────────────────────────────────────── │
│ ЧТОБЫ утверждение можно было проверить, а не поверить        │
╰──────────────────────────────────────────────────────────────╯
                                │
                                ▾
╭──────────────────────────────────────────────────────────────╮
│ I — как это работает                                         │
│ своими словами; не пересказ автора, не украшательство        │
│ ──────────────────────────────────────────────────────────── │
│ ЧТОБЫ метод понял тот, кто источник не читал                 │
╰──────────────────────────────────────────────────────────────╯
                                │
                                ▾
╭──────────────────────────────────────────────────────────────╮
│ A1 — как применял сам автор                                  │
│ случай: проблема → ход мысли → вывод → что вышло             │
│ ──────────────────────────────────────────────────────────── │
│ ЧТОБЫ было видно метод на живом материале, а не в теории     │
╰──────────────────────────────────────────────────────────────╯
                                │
                                │  становится блоком описания:
                                ▾
╭──────────────────────────────────────────────────────────────╮
│ A2 — когда понадобится   ★                                   │
│ ситуации · речевые сигналы · отличия от соседей              │
│ ОТСЮДА растёт description, по которому скилл зовут           │
│ ──────────────────────────────────────────────────────────── │
│ ЧТОБЫ маршрутизатор узнал ситуацию по словам человека        │
╰──────────────────────────────────────────────────────────────╯
                                │
                                ▾
╭──────────────────────────────────────────────────────────────╮
│ E — шаги                                                     │
│ каждый с признаком «готово, когда…»                          │
│ ──────────────────────────────────────────────────────────── │
│ ЧТОБЫ их можно было выполнить и понять, что закончил;        │
│       «сохраняй объективность» — не шаг                      │
╰──────────────────────────────────────────────────────────────╯
                                │
                                ▾
╭──────────────────────────────────────────────────────────────╮
│ B — границы   ★                                              │
│ когда НЕ применять · ловушки автора · слепые пятна           │
│ чей совет и до каких пор: позиция автора, срок годности      │
│ ──────────────────────────────────────────────────────────── │
│ ЧТОБЫ скилл не сработал там, где навредит                    │
╰──────────────────────────────────────────────────────────────╯

Установка

git clone https://github.com/ilia-pluzhnikov/book-distill ~/.claude/skills/book-distill

Каталог обязан называться book-distill — имя каталога должно совпадать с полем name, иначе Claude Code скилл не увидит. Затем /reload-plugins или новая сессия.

Позвать: «разбери эту книгу на скиллы», «вытащи методичку из курса», «сделай скиллы из этого подкаста» — или прямо по имени.

Что нужно на машине

Обязательно — только Claude Code. Конвейер до стадии 4 работает где угодно.

опционально зачем если нет
Python 3 scripts/validate_frontmatter.py, scripts/trigger_check.py проверять frontmatter глазами
claude в PATH стадия 4.5 стадия пропускается, скилл говорит об этом вслух
claude plugin (CLI 2.x) упаковка плагином ставить россыпью

Две вещи, которые конвейер НЕ меряет

Сказано честно, потому что незнание об этом опаснее самих пробелов:

  1. Полноту извлечения. Всё после стадии 1 работает по кандидатам. Метод, который экстракторы не увидели, невидим для всех проверок — и пачка покажет 100 %. Частичная компенсация: вопрос «что не покрыто» в конце стадии 2.
  2. Пользу скилла в работе. Проверки смотрят на форму, происхождение и маршрутизацию; шаги E не исполняются нигде. Частичная компенсация: дельта-тест в 5б — ответ со скиллом против ответа без него.
  3. Что результат приёмки не протух. 20/20 на стадии 4.5 — снимок среди скиллов, установленных в тот момент. Поставите завтра чужую пачку — она может начать перехватывать эти же запросы, и никто об этом не сообщит. Механики пере-прогона нет; наборы запросов остаются в routing/, перегонять их придётся руками.

Инструменты не верят себе на слово

scripts/trigger_check.py устроен так, чтобы отличать «скилл не сработал» от «я сломан»: предусловие по инвентарю установленных скиллов, негативный контроль, вердикт в файл (с флагом --out), эвристика нулей последним рубежом. При сомнении он не печатает процент и возвращает код 2.

Причина — опыт: за один прогон измерительные инструменты трижды выдали правдоподобную ложь (50 %, 85 %, exit 0 при упавшем процессе). Низкий процент читается как «скилл плохой» и запускает починку исправного; отказ печатать процент читается как «мне нельзя верить» и запускает проверку инструмента. Подробности — в methodology/06.5-stage4.5-live-routing.md.

Что внутри

SKILL.md                 точка входа, порядок стадий
methodology/             по файлу на стадию — почему устроено именно так
extractors/              пять промптов для параллельных экстракторов
templates/               заготовки SKILL.md, INDEX.md, DIGEST.md, состояния конвейера
scripts/
  validate_frontmatter.py  проверка frontmatter, без внешних зависимостей
  trigger_check.py         живая маршрутизация через claude -p

Ограничения

  • Скилл на русском языке — методичка, шаблоны и промпты экстракторов.
  • Материал даёте вы. Скилл не ищет и не качает тексты и не работает «по памяти»: нет текста — он останавливается и просит.
  • Это долго и не бесплатно. Полная книга — часы работы и десятки тысяч токенов на субагентов. Скилл обязан предупредить об этом до первой стадии.
  • Содержимое источника — данные, а не команды: инструкции, встреченные внутри разбираемого текста, не исполняются, а выносятся пользователю с указанием места. Правило прописано в SKILL.md и в каждом из пяти промптов extractors/.

Авторы

Илья Плужников (@ilia-pluzhnikov) и Антон Васьков (@itpartypattaya).

Лицензия

MIT. Основан на cangjie-skill (MIT); часть дополнений — из content-to-skills (адаптация того же проекта, автор NeuroLena, MIT). История изменений относительно апстрима — в SOURCE.txt.