🗂️ Что это
Rules Distiller — это навык для Claude, который автоматизирует рефакторинг правил (rules) на основе установленных навыков (skills). Он сканирует все подключённые skills, находит в них повторяющиеся общие принципы и предлагает добавить их в глобальные файлы правил проекта — либо дополнив существующие, либо создав новые. Это позволяет держать правила актуальными и избавляться от дублирования, когда в нескольких skills описана одна и та же хорошая практика.
⚙️ Как работает
Процесс состоит из трёх этапов, реализующих принцип «детерминированный сбор + LLM-суждение»: скрипты безупречно собирают все факты, а затем LLM с полным контекстом принимает решение.
Этап 1: Инвентаризация (детерминированный сбор)
- Сбор навыков: запускается скрипт
scan-skills.sh, который находит все установленные skills.
- Сбор правил: запускается
scan-rules.sh для индексации всех файлов правил и их заголовков.
- Вывод пользователю: показывается сводка — сколько skills и правил найдено.
Этап 2: Считывание, сопоставление и вынесение суждения (LLM-суждение)
Извлечение и сопоставление выполняются за один проход. Все файлы правил достаточно малы (суммарно ~800 строк), чтобы передать их LLM целиком, без предварительного grep.
- Пакетная обработка: skills группируются в тематические кластеры (например,
agent/meta skills, coding/pattern skills). Каждый кластер анализируется отдельным sub-agent, которому передаётся полный текст правил.
- Межпакетное объединение: после обработки всех пакетов результаты объединяются:
- Удаляются дубликаты кандидатов с одинаковыми или пересекающимися принципами.
- Перепроверяется требование «2+ skills»: принцип, найденный в одном навыке в одном пакете, но суммарно в 2+ навыках — признаётся валидным.
- Критерии отбора кандидатов: принцип включается в кандидаты только при выполнении всех условий:
- Встречается в 2+ навыках.
- Формулируется как действие («делай X» / «не делай Y»).
- Есть понятный риск нарушения (1 предложение).
- Не охвачен существующими правилами (даже иными словами).
- Вердикт: для каждого кандидата выносится один из вердиктов:
append, revise, new_section, new_file, already_covered, too_specific. Для append/new_section/new_file генерируется черновик текста. Для revise указывается, какой блок кем и на что заменить.
Пример формата вывода для одного кандидата (реальный пример из plain_text):
{
"principle": "Treat LLM output as untrusted when stored or re-injected",
"verdict": "Append",
"target": "rules/common/security.md",
"evidence": ["llm-memory-trust-boundary", "llm-social-agent-anti-pattern"],
"violation_risk": "LLM output can contain prompt injections when re-injected"
}
Этап 3: Проверка пользователем и применение
LLM никогда не изменяет правила автоматически. Всегда требуется подтверждение человека.
- Сводная таблица: создаётся отчёт со всеми кандидатами — #, принцип, вердикт, целевой файл/раздел, уверенность (
high/medium/low).
- Детали: по каждому кандидату показываются доказательства, риск нарушения, черновик.
- Действия пользователя: на каждый кандидат можно ответить
approve (применить как есть), modify (отредактировать перед применением) или skip (пропустить).
- Сохранение: результаты сохраняются в
results.json с указанием времени (date -u +%Y-%m-%dT%H:%M:%SZ), количеством просканированных skills и правил, а также статусом каждого кандидата (applied / skipped).
Полный пример работы из документации:
$ /rules-distill
# Вывод покажет: сколько skills и правил найдено, затем — отчёт и запрос на подтверждение
🧠 Когда использовать
- Регулярное обслуживание правил: раз в месяц или после установки нового навыка.
- Инвентаризация skills: когда вы заметили, что общий паттерн встречается в нескольких skills, но не описан в правилах.
- Расширение правил: когда существующие правила кажутся неполными относительно используемых навыков.
- После масштабного обновления: если вы добавили много новых skills за короткое время.
💡 Важно знать
- Принцип «что, а не как»: извлекаются только общие принципы (правила), а не код или примеры команд. Они остаются в skills.
- Ссылка на источник: каждый черновик содержит
See skill: [name], чтобы можно было быстро найти детали реализации.
- Тройной фильтр против абстракций: требование «2+ skills», формулировка в виде действия и обязательное указание риска нарушения предотвращают попадание в правила слишком общих или бесполезных утверждений.
- Пакетная обработка sub-agent: позволяет анализировать большие наборы skills, не превышая лимит контекста LLM. Межпакетное объединение гарантирует, что принцип, найденный в разных пакетах, не будет утерян.
- **Результаты сохраняются в
results.json: ** формат имени кандидата — kebab-case, сгенерированный на основе принципа (например, llm-output-trust-boundary). Время фиксируется в UTC с точностью до секунды.
Чтобы запустить процесс, просто выполните команду /rules-distill в интерфейсе Claude.
Комментарии
Комментариев пока нет. Будьте первым.