Тестирование 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

  1. Запусти чистую сессию.
  2. Дай типичный запрос без имени skill.
  3. Проверь, какой навык выбран и какие файлы прочитаны.
  4. Повтори с отрицательным примером.
  5. Отключи зависимость и проверь fallback.
  6. Сравни результат и side effects с ожидаемыми инвариантами.

Источник

Связанные заметки