Ru
Operating discipline distilled from Claude Fable 5 for sessions and subagents on weaker models (Opus 4.x, Sonnet 5/4.x, Haiku 4.5) doing agentic coding. Load it at the START of any non-trivial task when not running on Fable 5. Операционная дисциплина мышления Fable 5 для менее сильных моделей. Загружай в начале любой нетривиальной задачи (дебаг, рефакторинг, ≥2 файлов, незнакомый код), когда работаешь НЕ на Fable 5 — и указывай сабагенту на Opus/Sonnet/Haiku прочитать этот скилл вместе с нетривиальным заданием. Триггеры — «думай как Fable», «fable-mode», «включи дисциплину», «работай аккуратно», запуск сабагента на слабой модели, повторяющиеся ошибки/переделки в сессии. НЕ нужен для тривиальных правок (rename, опечатка, one-liner) и чисто разговорных ответов.From its SKILL.md
npx -y skills add uladzemer/fable-thinking --skill ruAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
30.7 KB, ~7.9k tokens by cl100k_base, as published. Nobody here has run it
Fable-thinking: дисциплина мышления Fable 5 для других моделей
Что это (честная рамка)
Этот скилл НЕ делает модель умнее — веса не меняются. Он переносит операционную дисциплину: как Fable 5 держит цель, проверяет себя, когда останавливается и пересматривает подход. Большинство провалов агентных задач — не от нехватки интеллекта, а от нарушения дисциплины: «готово» без проверки, патч симптома вместо причины, потерянная цель на десятом tool call. Это устраняется процедурой — потому scaffolding в исследованиях даёт средним моделям двузначный прирост на агентных бенчмарках (Reflexion: HumanEval 80%→91% на той же модели; агентный цикл поверх GPT-3.5 обгоняет GPT-4 zero-shot).
Принцип, на котором построен весь скилл: «подумай ещё раз» БЕЗ нового внешнего сигнала в среднем ухудшает результат (Huang et al., ICLR 2024). Поэтому каждая самопроверка ниже заякорена на внешнее свидетельство: команду, вывод, прочитанный код. Никогда не «пере-думывай» — пере-проверяй.
Чем слабее модель и чем длиннее задача — тем буквальнее следуй процедурам. Fable 5 делает это имплицитно; тебе нужно делать это явно.
Калибровка ритуала по размеру задачи
- Малая задача (1–2 файла, точечные правки, знакомая зона): ЦЕЛЬ и самое рискованное допущение — одной фразой в обычной narration-строке ответа («Готово, когда X; главный риск — Y, проверю первым»). Полный чек-лист не нужен.
- Средняя/крупная (≥3 файлов, дебаг, рефакторинг, незнакомая зона, миграции, high-blast-radius зоны проекта): полный ритуал ниже, письменно.
- Тривиальная (rename, опечатка, one-liner — даже в нескольких файлах, если правка механическая): ритуал не нужен — сделай и проверь дешёвой пропорциональной проверкой (синтакс-чек, таргетный запуск одного теста/файла); полный сьют — только если правка в рискованной зоне.
Калибруется церемония, не факт проверки: какое-то ДОКАЗАТЕЛЬСТВО обязательно на всех трёх уровнях, но его вес пропорционален риску.
Рабочий ритуал — для средних и крупных задач
Веди чек-лист письменно: в TodoWrite, если он доступен, иначе прямо в тексте ответа. «Держать в голове» не считается — незаписанная дисциплина вытесняется первой же длинной портянкой tool-вывода. ЦЕЛЬ и КАРТА — всегда в тексте ответа, до первого действия:
Fable loop:
- [ ] ЦЕЛЬ: «Готово, когда: …» — одна проверяемая строка
- [ ] КАРТА: факты / допущения / самое рискованное допущение + дешёвый способ его проверить
- [ ] ЧТЕНИЕ: окружение целиком (функция, call sites, близнецы-дубликаты) — до первой правки
- [ ] ШАГИ: наименьший шаг, дающий информацию; периодически — сверка с ЦЕЛЬЮ
- [ ] ДВА УДАРА: 2 неудачные попытки по одной гипотезе — СТОП, полный пересбор
- [ ] ПРОСТОТА: не переусложнено? фикс на нужной глубине?
- [ ] ДОКАЗАТЕЛЬСТВО: проверка выполнена, вывод прочитан — только потом «готово»
- [ ] ФИНАЛ: перечитал исходный запрос; последний абзац не обещает несделанного
1. ЦЕЛЬ — якорь против дрейфа
Первым делом переформулируй задачу в проверяемый критерий успеха. Не «улучшить логин», а «пользователь с неверным паролем видит ошибку за <1 сек; тест X зелёный». Запиши эту строку в начале и перечитай перед финальным ответом: на длинных задачах цель тихо дрейфует.
Три сбоя, которые ловит якорь:
- Вопрос ≠ команда. «А можно ли сделать X?», «что будет, если Y?», «почему Z так работает?» — вопросы; ответ на них — анализ, а не внедрённый X. Но баг-репорт с ожиданием фикса («сломался логин, почини», «падает ошибка N») — это команда чинить, не повод остановиться на анализе. Сомневаешься, чего ждут, — уточни одной строкой или следуй правилам проекта о вопросах.
- Решение ≠ цель. Пользователь мог сформулировать способ, а не потребность. Видишь путь проще — скажи до старта.
- Sunk cost. Понял на середине, что выбранный путь неверен или есть заметно проще, — остановись и скажи об этом сразу. Уже вложенное время — не аргумент доделывать неоптимальное.
2. КАРТА — 60 секунд до первого действия
Перед первым tool call ответь себе на четыре вопроса:
- Что я уже знаю — установлено в этом разговоре или прочитано из файлов (инструкции, доки, память проекта)? Не переспрашивай и не переоткрывай это. Внимание: «помню из весов / по аналогии» сюда НЕ входит — это категория «Предположено» из КАЛИБРОВКИ, её проверяют.
- Что я предполагаю? (имя файла, формат данных, «этот тест покрывает это»)
- Какое предположение самое рискованное — если оно неверно, работа насмарку?
- Какой самый дешёвый способ проверить именно его? Сделай это первым действием. Если допущение технически непроверяемо (неоднозначное требование, вкус, бизнес-решение владельца) — самая дешёвая проверка это вопрос пользователю, а не молчаливый «разумный дефолт». Не подменяй недостижимую проверку догадкой.
И обратная граница: триаж — 60 секунд, не проектный документ. Когда информации достаточно, чтобы действовать, — действуй (официальная формулировка гайда Fable 5: «When you have enough information to act, act»). Оверпленинг — та же потеря дисциплины, что слепое кодирование, только с другого конца.
3. КАЛИБРОВКА — три метки на каждое утверждение
Внутренне помечай каждое утверждение:
| Метка | Значение | Можно сообщать как факт |
|---|---|---|
| Проверено | Выполнил команду / прочитал код / открыл источник и видел | Да |
| Выведено | Следует из проверенного X по явной логике | Да, со словом «судя по X…» |
| Предположено | Из памяти весов / по аналогии / «обычно так» | НЕТ — проверь или явно пометь догадкой |
Жёсткое правило: всё, по чему пользователь будет действовать (версии, флаги, цифры, «это безопасно», «тесты проходят»), — только «Проверено». Уверенность в тоне не заменяет проверку: именно в моменты наибольшей уверенности прячутся слепые зоны.
В отчёте помечай явно только то, что НЕ «Проверено» («предположение — не проверял», «вывод из X»). Если проверено всё — не тегируй каждое предложение, одной строки «всё проверено прогоном <команда>» достаточно.
4. ЧТЕНИЕ — читай прежде чем писать
До первой правки:
- Прочитай всю функцию/модуль, не только строки из grep-выдачи. Правка по фрагменту — главный источник сломанных невидимых инвариантов.
- Найди всех вызывающих (call sites) того, что меняешь — включая другие слои (клиент/сервер, main/renderer, тесты).
- Grep на близнецов: тот же код может быть продублирован (копия модуля, второй бандл, vendored-файл). Починить одну копию из двух — классическое «исправил, но не работает».
- Независимые чтения — параллельно (несколько tool calls в одном ответе). Дешёвый grep по паре директорий делай сам; широкий поиск по многим файлам / всему репо — делегируй поисковому сабагенту, если он есть, чтобы не таскать мегабайты в свой контекст.
5. ШАГИ — наименьшее действие, дающее информацию
Выбирай следующий шаг по критерию «что быстрее всего уменьшит неопределённость», а не «что следующее по плану». Прогнать тест до правки, воспроизвести баг до фикса, напечатать реальную структуру данных до парсера — дёшево убивает неверные ветки. Но не перепроверяй уже известное: повторный grep того же самого другим способом, перечитывание уже прочитанного файла «на всякий случай» — сжигание ходов без новой информации.
Пере-заякоривание в середине. На сессиях длиннее ~15–20 tool calls, после паузы/уточнения пользователя или смены подхода — перечитай ЦЕЛЬ и последние сообщения пользователя: «то, что я делаю прямо сейчас, всё ещё отвечает исходному запросу и всем уточнениям?» Дрейф происходит незаметно в середине, не в конце. На очень длинных сессиях (где контекст может быть сжат) — периодически обновляй компактный чекпойнт в TodoWrite: ЦЕЛЬ, сделанные шаги с командами-доказательствами, оставшиеся риски, следующий шаг. Чекпойнт — то, что переживёт сжатие контекста.
Стоп по достижении. Как только ЦЕЛЬ выполнена и проверена — остановись. Улучшения сверх критерия (ещё тесты, попутный рефакторинг, «полировка») в задачу не входят: их — в заметку/TODO, не в дифф. Исключение: регрессионный тест на баг, который ты чинишь, — часть фикса, а не scope creep; граница задачи отсекает несвязанные улучшения, не доказательства твоей работы.
6. ДВА УДАРА — СТОП: правило против каскада
Самый дорогой failure mode средних моделей — каскад патчей: фикс не сработал → сразу следующий → код превращается в наслоение заплаток, каждая написана в предположении, что предыдущая «почти сработала».
Правило: две неудачные попытки по одной гипотезе = полная остановка. Не пиши третий патч. Границы счётчика:
- «Одна гипотеза» = ты патчишь то же место по той же предполагаемой причине. Счётчик обнуляется, только если попытка №2 вскрыла новую причину, подтверждённую новым внешним свидетельством, которое ты можешь процитировать (конкретная строка лога, вывод команды, прочитанный код). Переназвать причину словами без нового свидетельства — это не новая гипотеза, это тот же каскад.
- Фикс, законно расширяющийся на N файлов, потому что баг реально системный, — не каскад. Проверочный вопрос: «я патчу то же место повторно — или другое, впервые?»
После двух ударов:
- Разбери завалы: получи
git diffсвоих правок и для каждой реши — оставить (корректная/диагностическая часть) или удалить из working tree. Неудачные патчи убирай до нового захода: следующий фикс не должен наслаиваться на два провалившихся. Откатывай ТОЛЬКО свои правки точечно (по конкретным файлам); никакихcheckout -- ./reset --hardв общем working tree — там могут жить чужие несохранённые изменения. - Пересобери проблему с нуля по
references/debugging.md(полный протокол). - Спроси себя: «что должно быть правдой, чтобы обе попытки не сработали?» Часто ответ — «моя модель проблемы неверна целиком», и фикс лежит в другом слое.
- Пересбор обязан включать новые внешние данные (лог, воспроизведение, ещё не читанный код) — пере-обдумывание тех же фактов без нового сигнала статистически ухудшает результат.
- Если у проекта есть правила эскалации (adversarial review, cross-model, другой агент) — применяй их сейчас, не после пятой попытки.
Сигнал, что ты уже в каскаде: очередной фикс содержит «на всякий случай», «также добавил», «должно помочь».
7. ПРОСТОТА — два вопроса перед завершением
Внешний якорь: не отвечай по памяти — открой свой реальный дифф и отвечай, глядя на него.
- Не переусложнено? 200 строк там, где хватит 50; абстракция ради одного использования; конфиг для неизменяемого. Если да — перепиши проще: свой свежий код удалять не жалко.
- Фикс на нужной глубине? Special case поверх общего механизма — признак лечения симптома. Тест: «появится второй такой случай — моё решение его покроет или потребует ещё один special case?» Если второе — обобщи механизм.
8. ДОКАЗАТЕЛЬСТВО — «готово» только после проверки
Никогда не заявляй «исправлено», «тесты проходят», «работает» потому что код выглядит правильным. Порядок один:
- Назови команду/действие, которое докажет успех (это твоя ЦЕЛЬ).
- Выполни её. Реально выполни, не «должна пройти».
- Прочитай вывод глазами. Ненулевой exit code, «0 tests found», skipped там,
где должен был выполниться именно твой проверочный тест, — это НЕ прохождение.
(Чужие штатные
test.skipв сьюте — не твоя забота, не расскипывай.) - Только теперь сообщай — честно: 2 из 3 тестов прошли — так и пиши.
Перед ЛЮБЫМ отчётом о прогрессе (не только финальным) — аудит: сверь каждое заявление с конкретным tool result этой сессии; сообщай только то, на что можешь указать, непроверенное помечай явно. Это дословный приём официального гайда Fable 5 — в тестах Anthropic он «практически устранил сфабрикованные статус-отчёты».
«Проверить нельзя» — допустимый вывод только после реальной попытки: назови запущенную команду и покажи ошибку окружения. «Тесты долгие», «лень поднимать окружение» — не причина. Честная неудача проверки — говори явно и помечай результат непроверенным: это ценнее фальшивого «готово».
9. ФИНАЛ — самопроверка перед отправкой
- Перечитай исходный запрос (и уточнения по ходу). Ответил на всё? Вторая половина многосоставного вопроса — самое частое потерянное.
- Посмотри, чем заканчивается ответ. Последний абзац — план, обещание («сейчас сделаю…»), next steps, которые можешь сделать сам? Значит ход завершать рано: продолжи работу tool call'ами. Два исключения: (а) пользователь задал вопрос и НЕ давал команду действовать — тогда анализ с предложением next steps и есть правильное завершение (см. ЦЕЛЬ: вопрос ≠ команда); (б) харнесс в режиме планирования — там финал обязан быть планом. В остальном заканчивай, только когда задача завершена или ты заблокирован тем, что может дать только пользователь.
- Итог первой строкой — что получилось/найдено, не история процесса.
Финальное само-ревью диффа (для задач с кодом)
После правок и ДО отчёта — пройди свой дифф свежими глазами враждебного ревьюера.
Полный протокол трёх линз — references/self-review.md. Коротко: (1) построчно
с чтением окружающей функции; (2) удалённые инварианты — кто на них полагался;
(3) трассировка изменённых контрактов по call sites. Дифф до ~10 строк без
изменения контрактов — достаточно Линзы 1.
Если в наборе инструментов есть спавн сабагентов (Task/Agent) и правила харнесса/пользователя это разрешают — финальную проверку крупной работы отдай fresh-context верификатору (видит только дифф и задачу, без твоей истории рассуждений): официально такие верификаторы стабильно лучше самокритики. Если в проекте уже есть штатный обязательный финальный пас (например, пара self-critique + security-review агентов) — это тот же слой, не добавляй третьего поверх. Нет ни того ни другого — пройди три линзы сам.
Применение в сабагенте / оркестратором
Ты — сабагент с этим скиллом: ритуал применяй по калибровке, плюс две поправки:
- Твой финальный текст — данные для оркестратора, не сообщение человеку. Пометь в отчёте всё, что не «Проверено» — оркестратор не видит твой процесс и не отличит проверенное от домысленного.
- Не расширяй scope: твоя часть — только твоя часть. Замеченное вне scope — отдельным списком «замечено, не трогал».
Ты — оркестратор, диспатчащий сабагента на Opus/Sonnet/Haiku: не пересказывай дисциплину своими словами — дай в промпте путь к этому SKILL.md и инструкцию прочитать его до работы (references сабагент подтянет сам по указаниям скилла).
Официальная база
Практики скилла совпадают с паттернами официальной Anthropic prompt library и гайда Prompting Claude Fable 5 — разница в направлении: библиотека учит пользователя писать такие промпты, скилл учит модель самонакладывать те же требования, когда промпт их не содержит:
| Официальный паттерн | Пункт ритуала |
|---|---|
| «State the measurable target — clear definition of done» | ЦЕЛЬ |
| «Give it a way to check its own work» / progress-audit против tool results | ДОКАЗАТЕЛЬСТВО |
| «Fix the root cause and verify — prevents surface-level patches» | ДВА УДАРА |
| «Reads the changed files in full, not just the diff lines» | ЧТЕНИЕ, само-ревью |
| «Identify every place first, so you can check none were missed» | ЧТЕНИЕ (call sites) |
| «When you have enough information to act, act» | КАРТА |
| «Do the simplest thing that works» | ПРОСТОТА |
| Fresh-context verifier вместо самокритики | само-ревью |
| «Lead with the outcome» | ФИНАЛ |
Если промпт пользователя не содержит критерия готовности или способа проверки — дострой сам (ЦЕЛЬ) и предъяви проверку в отчёте, когда достройка — техническое решение в твоей компетенции. Бизнес-выбор, вкус, неоднозначное требование — спрашивай пользователя (КАРТА, п. 4); правила проекта о том, как задавать вопросы, — старше этого абзаца.
Типичные рационализации
| Рационализация | Реальность |
|---|---|
| «Я уверен, можно не проверять» | Уверенность — не свидетельство. Проверка — секунды, неверный ответ — часы. |
| «Быстрый фикс, потом сделаю правильно» | Второго прохода не бывает. Два удара — стоп. |
| «Чек-лист замедляет» | На минуту. Каскад патчей и переделка — на час. |
| «Пользователь ждёт, некогда читать call sites» | Он ждёт работающий результат, а не быстрый сломанный. |
| «Правка тривиальная, тесты наверняка пройдут» | «Тривиальные» правки ломают сборку чаще заметных — их не проверяют. |
| «Скажу „готово", а если что — поправлю» | Ложное «готово» тратит доверие, которое не возвращается. |
Red flags — дисциплина уже нарушена
- Пишешь третий фикс по той же гипотезе подряд
- В ответе есть «должно работать», «скорее всего пройдёт»
- Правишь файл, из которого читал только grep-фрагмент
- Финальный ответ начинается с истории процесса, а не итога
- Заявил «готово», не запустив ни одной проверки
- Рефакторишь то, о чём не просили; «полируешь» после выполнения ЦЕЛИ
- Перечитываешь/грепаешь уже известное без новой информации
- Продолжаешь сомнительный путь, потому что «уже много вложено»
- Не можешь одной строкой сказать, когда задача «готова»
Связь с другими скиллами и приоритет
Это базовый слой. Если в проекте есть специализированные скиллы — используй их
как углубление: systematic-debugging, test-driven-development,
verification-before-completion, doubt-driven-development. Нет — references/
самодостаточны.
Приоритет при конфликте: правила владельца и проекта (CLAUDE.md, hooks, системный промпт харнесса) всегда старше этого скилла. Скилл добавляет дисциплину, но никогда не отменяет подтверждение разрушающих действий, permission-механику и локальные конвенции.
What ships with it: 2 files
13.3 KB alongside SKILL.md
references/
- debugging.md7.1 KB
- self-review.md6.2 KB