Skip to content
Все посты /

Skillpulse: ваши AI-скиллы летят вслепую без телеметрии

PostToolUse хук, который логирует каждую активацию скилла в локальный JSONL. Ни один существующий инструмент не отслеживает, выполнила ли модель инструкции скилла.

#context-engineering #claude-code #agents #telemetry #local-first

Вы устанавливаете 16 скиллов. Видите, как они срабатывают. Но вот вопрос, который никто не задает: модель действительно им следует?

Я проверил каждый инструмент телеметрии в экосистеме Claude Code — встроенный OTel, claude_telemetry, claude-code-otel, даже метрики платформы skills.sh. Ни один из них не отслеживает adherence. Они говорят, что скилл загрузился, но не то, выполнила ли модель его инструкции.

Поэтому я сделал skillpulse.

Разрыв

Встроенный OpenTelemetry Claude Code (через CLAUDE_CODE_ENABLE_TELEMETRY=1) захватывает общие метрики: длительность сессии, токены, стоимость, вызовы инструментов. С OTEL_LOG_TOOL_DETAILS=1 он даже записывает skill_name в события tool result. Но это сигнал загрузки, а не следования.

Разница принципиальна. Скилл может успешно загрузиться и быть полностью проигнорирован моделью. Без отслеживания adherence вы оптимизируете вслепую.

ИнструментОтслеживает загрузкуОтслеживает следование
Встроенный OTelДаНет
claude_telemetryНетНет
claude-code-otelНетНет
skills.shТолько установкиНет
skillpulseДаДа (planned)

Как это работает

Skillpulse — это PostToolUse хук, который срабатывает на каждый вызов Skill tool. Он пишет одну строку JSONL на активацию:

{
  "skill_id": "signum:signum",
  "timestamp": "2026-03-11T08:48:18Z",
  "session_id": "20260311_114818_93074",
  "loaded": true,
  "followed": null,
  "plugin_name": "skillpulse"
}

Реализация — 60 строк bash. Несколько проектных решений:

2-секундный watchdog. PostToolUse хуки выполняются синхронно — зависший хук блокирует всю сессию. Skillpulse запускает self-kill watchdog, который отправляет SIGKILL через 2 секунды. На практике хук завершается за <50ms.

Фильтр только Skill. PostToolUse срабатывает на каждый вызов инструмента — Read, Write, Bash, все подряд. Skillpulse проверяет tool_name == "Skill" и немедленно выходит для всего остального. Нулевой overhead на не-скилловых вызовах.

Append-only JSONL. Никакой базы данных, ротации, конфигурации. Один файл в ~/.local/share/emporium/activation.jsonl. Переживает крэши, легко инспектировать, тривиально бэкапить.

Что я узнал из 4 записей

Да, четырех. Skillpulse был создан 4 марта и потом… не установлен. Классика. Я исправил это сегодня.

Но даже 4 записи рассказали кое-что полезное:

Skill                       Acts  Sess  Load%  Age
-----------------------------------------------------
herald:news-digest             2     2  100%   7d
arbiter                        1     1  100%   7d
signum:signum                  1     1  100%   7d

Три скилла покрывают все активации. У меня установлено 16. Это 81% dormancy rate. Большинство моих скиллов — мертвый груз, потребляющий контекстные токены.

Агрегатор

90-строчный Python скрипт читает JSONL и выдает per-skill статистику:

python3 scripts/aggregate.py          # таблица
python3 scripts/aggregate.py --json   # для пайплайнов

Никаких зависимостей. Читает timestamps, группирует по skill_id, вычисляет частоту, уникальные сессии, loaded rate и дней с последней активации.

Куда это ведет

Skillpulse — это Phase 1 более крупного пайплайна, который я называю EvoSkill — скиллы, которые улучшают себя на основе данных использования.

Пайплайн:

skillpulse (лог)
    |
aggregator (статистика)
    |
bench (тест на задачах)
    |
evolver (предлагает улучшения)

Поле followed сейчас null — для его заполнения нужен tool-pattern fingerprinting, определяющий, выполнила ли модель ожидаемое поведение скилла. Это сложная часть, и я намеренно откладываю ее, пока не наберется достаточно данных активации для валидации подхода.

Вещи, которые я осознанно пропускаю на текущем масштабе (<20 сессий/неделю, 16 скиллов):

  • Hotelling T-squared drift detection — нужно 50+ траекторий на скилл
  • Bayesian calibration — нужны размеченные outcome-данные
  • Hierarchical routing — актуально при 50+ скиллах
  • Automated gates — human review пока мой gate

Исследования, на которых это основано: EvoSkill, AutoSkill и ASI drift framework.

Попробуйте

claude mcp add-json skillpulse '{"source": {"source": "url", "url": "https://github.com/heurema/skillpulse.git"}}'

Код: github.com/heurema/skillpulse

Все данные остаются локально. MIT лицензия. Нулевые зависимости — только bash и jq.