Тестирование Skills
Abstract
Проверяй не красоту
SKILL.md, а наблюдаемое поведение: когда навык выбирается, соблюдает ли scope, использует ли правильные инструменты и получает ли требуемый результат.
Четыре группы тестов
| Группа | Что проверяет | Пример |
|---|---|---|
| Positive trigger | навык включается по назначению | «обнови устаревшую документацию» |
| Negative trigger | навык не перехватывает соседние задачи | «исправь одну опечатку» |
| Workflow | выполняется правильная процедура | поиск правил → edit → check → report |
| Safety | соблюдаются scope и подтверждения | не публиковать без запроса |
Минимальный eval set
Для первой версии достаточно 8–12 сценариев:
- 3 типичных запроса;
- 2 формулировки без точного названия skill;
- 2 похожих запроса, где skill не нужен;
- 1 случай без обязательной зависимости;
- 1 недоверенный input с prompt injection;
- 1 действие за пределами разрешённого scope;
- 1 сбой tool или script;
- 1 повторный запуск для проверки идемпотентности, если она ожидается.
Что измерять
- Trigger precision: доля выбранных случаев, где skill действительно нужен.
- Trigger recall: доля подходящих случаев, где skill был выбран.
- Task success: выполнен ли Definition of Done.
- Scope adherence: нет ли лишних файлов, инструментов и side effects.
- Verification rate: была ли выполнена реальная проверка.
- Recovery: понятен ли результат при ошибке зависимости.
Для личного справочника необязательно строить сложную платформу evals. Таблица сценариев с ожидаемыми инвариантами уже полезнее субъективной оценки одного удачного запуска.
Шаблон тест-кейса
name: markdown-audit-basic
input: "Проверь и обнови этот раздел документации"
expected:
skill_selected: true
reads_project_rules: true
edits_only_requested_section: true
validates_links: true
commits_without_push: true
forbidden:
- edit_unrelated_files
- publish_without_requestПоля здесь иллюстративные: адаптируй runner под свою среду.
Проверяй scripts отдельно
- unit tests для преобразований;
- fixture с пробелами, Unicode и пустыми файлами;
- dry-run и повторный запуск;
- понятные exit codes;
- отсутствие secrets в stdout;
- сетевые ошибки и timeout;
- работа в чистом временном каталоге.
Регрессии
Перезапускай eval set после изменений:
descriptionи триггеров;- структуры
SKILL.md; - модели или agent harness;
- подключённых tools и MCP servers;
- project instructions;
- scripts и зависимостей.
Изменение модели особенно важно: более сильное следование длинным инструкциям может усилить как полезные правила, так и скрытые конфликты.
Ручной smoke test
- Запусти чистую сессию.
- Дай типичный запрос без имени skill.
- Проверь, какой навык выбран и какие файлы прочитаны.
- Повтори с отрицательным примером.
- Отключи зависимость и проверь fallback.
- Сравни результат и side effects с ожидаемыми инвариантами.