skill-drying

$npx mdskill add SteelMorgan/1c-agent-based-dev-framework/skill-drying

Compresses skills and rules to reduce token usage without altering agent behavior.

  • Helps optimize agent prompts by removing redundant content when skills exceed about 150 lines.
  • Integrates with SKILL.md files, .mdc rules, subagent prompts, and workflows.
  • Uses a behavioral criterion with five questions to identify and eliminate non-essential fragments.
  • Presents results by applying structured drying rules to maintain clarity and operational efficiency.
SKILL.md
.github/skills/skill-dryingView on GitHub ↗
---
name: skill-drying
description: Сжатие навыков и правил для снижения расхода токенов без потери поведения агента. Используй при ревью навыков на избыточность, когда навык превышает ~150 строк или когда размер промпта критичен. Применяется к SKILL.md, правилам .mdc, промптам субагентов и воркфлоу.
---

# Осушение навыков

## Поведенческий критерий

Для каждого фрагмента задай пять вопросов. Если на все ответ «нет» — фрагмент является водой, удали его.

1. Меняет ли он выбор инструмента или навыка?
2. Меняет ли он порядок шагов?
3. Добавляет ли нетривиальный запрет или путь обработки исключения?
4. Устраняет ли опасную двусмысленность?
5. Необходим ли он для нетривиального контрпримера?

## Правила осушения

### Структура

**П1. Одна норма — один источник истины.** Если политика зафиксирована в правиле `.mdc`, навык не повторяет её. Навык ссылается на правило и добавляет только операционный алгоритм.

**П2. Frontmatter — маршрутизация, тело — новая информация.** Удалять секции `## Назначение`, дословно повторяющие поле `description`. Тело начинается с первого элемента, добавляющего контекст, которого нет в description.

**П3. Один реестр навыков в субагентах.** Перечислять навыки только во frontmatter `skills:`. Тело описывает обязанности, протокол и границы — не каталог зависимостей. `depends_on` в конце файла — для механизма резолюции, не для чтения агентом.

**П4. Межнавыковые дубли — ссылка + дельта.** Если два навыка содержат одно правило (напр. «не проглатывай исключения» в `coding-standards` и `error-handling`), полная версия остаётся в одном месте. Второй навык получает однострочную ссылку.

### Мотивация и пояснения

**П5. Мотивация — одна строка последствия.** Многоабзацные блоки «Почему:» заменяются одним предложением о последствии нарушения. Удалить полностью, если без блока агент ведёт себя идентично.

**П6. Внешние ссылки — убрать URL, оставить маркер.** `[Стандарт ИТС: «Тексты модулей»](https://its.1c.ru/...)` → `Стандарт ИТС: «Тексты модулей»`. Агент не откроет URL, но название стандарта — полезный сигнал для LLM.

**П7. «Источники» и «Связанные ресурсы» — минимизировать.** Удалять блоки с 3-4 ссылками на ИТС. Оставлять перекрёстные ссылки только если они влияют на workflow («после этого навыка — запусти vanessa-run»).

### Примеры

**П8. Один канонический паттерн + один нетривиальный контрпример на правило.** Удалять примеры «неправильно», являющиеся тривиальной инверсией «правильно». Критерии оставления контрпримера — см. «Красные линии».

**П9. Сценарии — в алгоритм.** Несколько однотипных сценариев заменяются одним алгоритмом. Четыре сценария поиска → один каскад `LSP → метаданные → API платформы → БСП → AI` + таблица триггеров.

### Справочный материал

**П10. Большие блоки кода — в `references/`.** Блоки кода >20 строк, служащие справочником для копирования, выносятся в `references/`. В теле навыка остаётся: когда использовать, имя файла, ключевые параметры.

**П11. Структуры данных и диаграммы — в `references/`.** Деревья каталогов, JSON-схемы, ASCII-диаграммы — в приложение. В теле остаются только критичные пути и обязательные поля.

**П12. Сводка-таблица или развёрнутые правила — выбрать одно.** Если в навыке есть оба варианта и навык загружается целиком, сводка дублирует правила. Оставить ту форму, которая компактнее для данного содержания.

## Красные линии — не сушить

- **Точный порядок операций**, нарушение которого ведёт к потере данных (транзакции, блокировки, последовательности rollback/logging)
- **Нетривиальные контрпримеры** — ошибка связана со скрытым поведением платформы, показывает конкретные имена/конструкции которые агент может случайно использовать, или не выводится из правильного примера
- **Границы ответственности агента** («НЕ пишет тесты», «НЕ изменяет protected paths»)
- **Доменные имена API**, которые LLM не знает из обучения (имена функций 1С BSL, CLI-синтаксис)
- **Причинно-следственные цепочки**, влияющие на решения в граничных случаях (напр. «O(N²) по памяти», «счётчиковые транзакции», составные типы в JOIN)

## Процесс

1. Прочитать целевой навык полностью.
2. Применить поведенческий критерий к каждой секции/абзацу.
3. Применить П1–П12 по порядку.
4. Сравнить до/после: убедиться, что поведенческий сигнал не потерян.
5. При наличии `references/` — перенести извлечённые блоки с понятными именами файлов.
6. Обновить `depends_on` и перекрёстные ссылки, если дедупликация изменила расположение нормы.

More from SteelMorgan/1c-agent-based-dev-framework