opencode-command-hooks — плагин

Плагин OpenCode: хуки на вызовы инструментов и субагентов описываются в конфиге, вывод команд попадает в контекст.

  • 64 ★ репозитория
  • Последний коммит
Плагин

Широкий доступ

Почему такой уровень

  • Плагин выполняет произвольные команды оболочки из конфигурации, в том числе из файлов проекта.
  • Вывод команд попадает в контекст агента, и секреты в нем станут видны модели.
Все причины и проверки

shanebishop1/opencode-command-hooks

Установка

Работает в

Ручная установка

Текст для агента

Добавь `"plugin": ["opencode-command-hooks"]` в `opencode.json`. Создай `.opencode/command-hooks.jsonc` с хуком на фазу `after` для `task` и командами проверки, затем перезапусти OpenCode и проверь, что вывод попал в сессию.

Доступ и проверки

Как мы проверяем

Широкий доступИнструмент может менять данные, выполнять команды или работать с секретами.

  • Плагин выполняет произвольные команды оболочки из конфигурации, в том числе из файлов проекта.
  • Вывод команд попадает в контекст агента, и секреты в нем станут видны модели.

Это чужой код. Посмотрите файлы в репозитории перед установкой.

Что делает

opencode-command-hooks запускает команды оболочки по событиям OpenCode: до и после вызова инструмента, при старте сессии и при простое. Хуки описываются в `opencode.json`-подобном файле `command-hooks.jsonc` или прямо в служебной шапке `.md`-файла субагента, рядом с его инструкциями. Поле `inject` отправляет вывод команды в сессию, чтобы агент прочитал результат линтера или тестов и исправил ошибки. Поле `toast` выводит уведомление в интерфейсе. Фильтр `when.toolArgs` срабатывает только на нужные аргументы, например на запись в файлы `.ts`. Команды идут по порядку, а сбой хука не останавливает работу инструмента.

Для кого. Пользователям OpenCode с несколькими субагентами, которым нужна автоматическая проверка кода после каждого шага без лишних обращений к оркестратору.

Подходит, если

  • После каждой работы субагента `engineer` нужно прогнать линтер, проверку типов и тесты.
  • Результат `npm test` должен попадать в контекст сам, без просьбы к агенту вызвать bash.
  • Запись в файлы `.ts` или `.js` должна запускать форматтер.
  • Конфигурацию агента удобно держать в одном `.md`-файле вместе с хуками.
  • При простое сессии надо отправить локальное уведомление.

Не подходит, если

  • Работа идет в Claude Code или Codex: плагин встраивается только в OpenCode.
  • Хук должен блокировать вызов инструмента при сбое: здесь команды лишь сообщают результат.
  • На OpenCode 2 нужны всплывающие уведомления: там они пока недоступны.

Пример запроса к агенту

Добавь хук: после каждого вызова субагента `engineer` запускать линтер, проверку типов и тесты и отправлять вывод в сессию.

Ограничения

Плагин не создан командой OpenCode и не связан с ней. Хуки ждут завершения команд, поэтому долгая проверка задерживает следующий шаг. Вывод обрезается до 30 000 знаков по умолчанию, лимит задает `truncationLimit`. При массиве команд `inject` и `toast` берут вывод последней. На OpenCode 2 всплывающие уведомления пока не показываются, остальное работает. Подстановки вида `{args.key}` работают в `inject` и `toast`, а в самих командах аргументы читаются из файла, путь к которому лежит в `OPENCODE_HOOK_ARGS_FILE`.

Как отключить. Уберите `opencode-command-hooks` из массива `plugin` в `opencode.json`. Файлы `command-hooks.jsonc` и блоки `hooks` в шапках файлов удалите вручную.

Частые вопросы

Как подключить плагин к OpenCode?

Добавьте `"plugin": ["opencode-command-hooks"]` в `opencode.json`. Конфигурация работает без изменений на OpenCode 1.x и на OpenCode 2, где допустим и ключ `plugins`.

Где хранятся хуки?

Глобальные лежат в `~/.config/opencode/command-hooks.jsonc`, проектные в `.opencode/command-hooks.jsonc`. По умолчанию они объединяются, а `overrideGlobal: true` отключает глобальные хуки для того же события.

Как отправить результат тестов агенту?

Задайте `run: "npm test"` и `inject` с подстановками `{stdout}`, `{stderr}` и `{exitCode}`. Вывод попадет в сессию после события, и агент прочитает его сам.

Блокирует ли хук вызов инструмента при ошибке?

Нет. Хуки ждут команды, но сбой не останавливает инструмент. Команды идут по порядку, даже если предыдущая завершилась ошибкой.

Как ограничить хук нужными аргументами?

Используйте `when.toolArgs` с точным значением, маской `glob` или регулярным выражением `regex`. Хук срабатывает, когда совпали все указанные аргументы, а значения доступны в шаблонах как `{args.filePath}`.

Обсуждение

Вопросов и отзывов пока нет.

Плагины

Плагин для OpenCode Desktop на Windows задает границы правок, проверяет команды и сверяет итоги тестов с текущим кодом.

ПлагинРасширенный доступ113Звезды репозитория

Плагин для OpenCode, который превращает сессию в команду агентов во главе с архитектором и ведет работу по фазам плана

ПлагинШирокий доступ526Звезды репозитория

Телеграм-бот для OpenCode: ставит задачи агенту, следит за ходом работы и переключает модели с телефона, пока OpenCode работает на вашем компьютере

CLIШирокий доступ1,4 тыс.Звезды репозитория

Набор хуков Claude Code с голосовыми сигналами: звук на старте сессии, вызове инструмента, ответе агента и других событиях.

ПлагинМинимальный доступ572Звезды репозитория

Плагин для OpenCode подключает облачный сервис Morph и сливает частичные правки с файлом без точного поиска строк.

ПлагинРасширенный доступ170Звезды репозитория

Плагин для OpenCode ищет по истории разговоров во всех проектах: по словам, регуляркам, с опечатками и по файлам.

ПлагинМинимальный доступ132Звезды репозитория

Коротко о README

Автор объясняет, что автоматическая проверка состояния кода полезна, когда работает флот субагентов, а просьба к оркестратору вызвать `bash` недетерминирована и дорога. Плагин оборачивает хуки, которые OpenCode уже открывает наружу.

Бейдж для README

Сообщить о проблеме