Аудит навыков¶
dev skills сверяет три среза вашего парка навыков и показывает, где они разошлись:
- Установленные — каждый
SKILL.mdиз глобального каталога навыков (${XDG_CONFIG_HOME:-$HOME/.config}/opencode/skillsили$OPENCODE_SKILLS_DIR). - Зарегистрированные — каждый слаг навыка из реестра автонавыков (
${XDG_CONFIG_HOME:-$HOME/.config}/opencode/auto-skills/config.json): массивыdefault_skills,priorityи всеtask_triggers[*].skills/file_triggers[*].skills. - Используемые — имена навыков, встречающиеся в свежих логах 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).