Перейти к содержанию

Аудит навыков

dev skills сверяет три среза вашего парка навыков и показывает, где они разошлись:

  1. Установленные — каждый SKILL.md из глобального каталога навыков (${XDG_CONFIG_HOME:-$HOME/.config}/opencode/skills или $OPENCODE_SKILLS_DIR).
  2. Зарегистрированные — каждый слаг навыка из реестра автонавыков (${XDG_CONFIG_HOME:-$HOME/.config}/opencode/auto-skills/config.json): массивы default_skills, priority и все task_triggers[*].skills / file_triggers[*].skills.
  3. Используемые — имена навыков, встречающиеся в свежих логах OpenCode (вспомогательная оценка).

Дрейф важен, потому что система автонавыков (модуль 53-auto-skills.sh) может только предлагать известные ей навыки и только разрешать реально установленные. Когда три среза расходятся, вы либо отправляете подсказку, которая указывает в никуда, либо носите установленный навык, который никогда не предложат.

Запуск

dev skills                 # человекочитаемый отчёт (советующий, выход 0)
dev skills --strict        # выход 1, когда broken > 0 или конфиг не парсится
dev skills --json          # машиночитаемая сводка (счётчики + списки)
dev skills --since 90      # глубина поиска использований 90 дней (по умолчанию 30)
dev skills --help          # полная справка по флагам

Инструмент советующий: он всегда выходит с кодом 0, кроме случая с флагом --strict. Его безопасно гонять в CI как мягкий сигнал, а с --strict — как жёсткий гейт.

Как читать итоговую строку

Каждый запуск завершается строкой:

SKILLS AUDIT SUMMARY: installed=N registered=M broken=B unregistered=U oversize=O duplicates=D used_recently=R
Поле Значение Действие
broken Есть в config.json, но нет SKILL.md на диске Переустановить навык или удалить устаревшую запись
unregistered SKILL.md есть, а имени нет в config.json Зарегистрировать (нужный) или удалить (мёртвый)
oversize SKILL.md длиннее 400 строк Разбить или сократить файл — реальный сигнал к обслуживанию
duplicates Одно имя навыка в нескольких местах Убрать лишнюю копию (часто симлинк или старый бандл)
used_recently Незарегистрированные навыки с упоминаниями в логах Оставить — они в активном использовании
stale-config config.json отсутствует или не парсится Перегенерировать, перезапустив модуль 53

Порядок работы

1. Зарегистрировать нужные

Для каждого unregistered-навыка, который одновременно used_recently, добавьте его в реестр автонавыков. Либо перезапустите модуль (модуль 53 выполняется при bash setup.sh, либо перезапустите step_auto_skills), либо отредактируйте ~/.config/opencode/auto-skills/config.json и впишите слаг в нужный массив task_triggers[*].skills / file_triggers[*].skills (или default_skills). Держите в синхроне таблицы триггеров в 53-auto-skills.sh.

2. Удалить мёртвые

Для unregistered-навыков без признаков used_recently удалите каталог со SKILL.md. Это накладной расход без пути к предложению.

3. Починить сломанные ссылки

Для broken-навыков либо установите недостающий SKILL.md, либо удалите устаревший слаг из config.json, чтобы система перестала предлагать то, чего нет.

4. Разбить разросшиеся навыки

Для oversize-навыков разбейте SKILL.md на сфокусированные навыки или сократите инструкции. Разросшиеся файлы замедляют агента и размывают сигнал триггера.

Флаги

Флаг Эффект
--json Выдать JSON-объект со счётчиками и списками имён (сборка через python3)
--strict Выйти с кодом 1, когда broken > 0 или stale-config
--since N Глубина поиска использований в N дней (по умолчанию 30)
--help Показать справку и выйти

Переопределения окружения

  • OPENCODE_SKILLS_DIR — где сканируются установленные навыки.
  • AUTO_SKILLS_CONFIG — путь к config.json автонавыков.
  • OPENCODE_LOG_DIR — где лежат *.log для оценки использований (по умолчанию $HOME/.local/share/opencode/log).